Wikibooks
enwikibooks
https://en.wikibooks.org/wiki/Main_Page
MediaWiki 1.47.0-wmf.14
first-letter
Media
Special
Talk
User
User talk
Wikibooks
Wikibooks talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
Cookbook
Cookbook talk
Transwiki
Transwiki talk
Wikijunior
Wikijunior talk
Subject
Subject talk
TimedText
TimedText talk
Module
Module talk
Event
Event talk
Aros/Developer/Docs
0
13107
4656256
4656251
2026-08-04T12:20:57Z
Jeff1138
301139
4656256
wikitext
text/x-wiki
{{ArosNav}}
==A technical overview of AROS==
Google translation [http://translate.google.com/translate?hl=en&sl=auto&tl=de&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs German], [http://translate.google.com/translate?hl=en&sl=auto&tl=fr&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs French], [http://translate.google.com/translate?hl=en&sl=auto&tl=it&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Italian], [http://translate.google.com/translate?hl=en&sl=auto&tl=es&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Spanish], [http://translate.google.com/translate?hl=en&sl=auto&tl=hi&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Hindi], [http://translate.google.com/translate?hl=en&sl=auto&tl=zh-CN&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Chinese],
[http://translate.google.com/translate?hl=en&sl=auto&tl=ru&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Russian],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pl&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Polish],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pt&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Portuguese]
{{Uncited}}
AROS,<ref>[http://aros.sourceforge.net/download.php References and sources]</ref> like AmigaOS (TM), is a [[w:Message passing|message-passing]], [[w:Preemption (computing)|preemptive]] [[w:Multitasking|multitasking]] [[w:Operating system|OS]].
It uses [[w:Reentrant (subroutine)|re-entrant]] shared libraries to save memory space.
AROS is based around an executive library kernel (Exec) and two other libraries:
* Exec (the "kernel", which is not a kernel in the modern sense),
* Intuition (graphics and GUI, integrated into the system) and
* AmigaDOS (Disk Operating System, the Metacomco's Tripos modified to work with Exec).
The design philosophies of AmigaDOS and Intuition are rather different, the former adopting a C-like API and the latter creating an [http://www.basden.demon.co.uk/amiga/amiga.oo.html object-oriented], message passing aware environment for the programmer. The system base is the only absolute address in AmigaOS (located at 0x00000004) this does differ with AROS as AROS SysBase is automatically provided (no $4) but everything else is dynamically loaded. The OS is well known for delivering high performance due to its close connections with the hardware, while simultaneously having the flexibility to support re-targetable graphics (Cybergraphics) and retargetable audio subsystems (AHI).
: Diagram showing relationships of libraries to system needed
Remember, AROS is a [http://en.wikibooks.org/wiki/Aros/Developer/ABIv1 research] operating system, and while all contributions to the base AROS code are welcome, please contact the dev list first for any core changes. Writing applications for AROS does not have this requirement.
While AROS appears and feels almost feature complete, it is still [[Aros/Developer/IncompleteAPIs|missing a small number of functions]] from the Amiga API - as well as a few implementations of [[Aros/MissingFunctionaility|core functionality]]. There are also a number of user applications that, while not strictly part of the AmigaOS 3.1 environment, need to be written.
[https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1201 This thread provides] information for setup, [http://www.aros.org/documentation/developers/index.php documentation] and whether you are interested in core OS changes and/or writing/porting software apps
*you compile directly under AROS, which can be running on either real hardware, virtual hardware
*in hosted mode under linux/window, cross-compile from that host OS (save your files as ISO-8859-15 encoding instead of UTF-8)
The repository for the [https://github.com/aros-development-team/AROS current development version ABIv1], the [https://github.com/deadw00d/AROS/tree/alt-abiv0 repository for current stable PC version ABIv0 with backported ABIv1 features is located which is used on AROS One and Icaros x86 based distros]
Any [https://github.com/aros-development-team/AROS/issues bugs / issues can be added]
We have a [https://arosdevteam.slack.com/archives/CUFV48U3H slack here], discord on [https://discord.gg/UKp9qdEBuQ Discord@AmigaDev],
==Software Development for AROS==
===Programming languages===
Apart from 'The Developer Environment', which primarily supports C/C++ code, there are other programming languages available for AROS:
'''Scripting'''
:[[Aros/User/DOS|DOS]], included in all
:[[Aros/Developer/Docs/LUA|LUA]], included in all or [http://www.airsoftsoftwair.de/en/prod_hollywood.html Hollywood]
:REXX [[Aros/Developer/Docs/Rexx|Regina (AROS' ARexx)]], included in all
:Python [ Info], included in Icaros
:Ruby [http://www.ruby-lang.org/en Info]/[http://archives.aros-exec.org/index.php?function=browse&cat=development/language download]
'''Basic'''
:[http://amos.pspuae.com/AmosProManual/contents/c1.html '''Amos Pro'''] [http://amos.pspuae.com/index.php?action=forum#1 compatible] [http://www.amigacoding.com/index.php/Main_Page commands] (all incomplete)
::[http://sourceforge.net/projects/xamos/ X-Amos]
::[http://sdlbasic.sourceforge.net/ SDLBasic] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://alvyn.sourceforge.net/ Alvyn] ([http://www.dusabledanslherbe.eu/AROSPage/MISC.14.html download])
::[[Aros/Developer/Basic/Basic4SDL|Basic4SDL]] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://www.ultimateamiga.co.uk/index.php?topic=9425.0 Project Deimos],
:'''Blitz Basic''' [http://aros-exec.org/modules/newbb/viewtopic.php?post_id=46537#forumpost46537 none on AROS]
:: [http://www.amiforce.de/main.php Amiblitz] on JanusUAE amiga(TM) emulator
:'''Amiga Basic'''
:: [ ACEBasic]
'''Misc'''
:[[Aros/Developer/Docs/E|AmigaE Portable E]]
:[https://ae.arosworld.org/index.php?board=11.0 FreePascal FPC Aros-Exec thread], [http://archives.aros-exec.org/index.php?function=browse&cat=development/language Download], FreePascal for AROS has its own [http://fpcaroswiki.alb42.de/ Wikibook],
:[[Aros/Developer/Docs/LLVM|LLVM]],
===Where to get the C/C++ Environment===
If you want to develop for AROS, its generally easier to be running linux hosted AROS development environment especially for C++, cross compiling the code. That's how most developers now are doing it. g++ is used to compile owb web browser as well as some other AROS software. If you were hoping for a rich set of C++ libraries or classes defined for the OS feature set, you might be disappointed.
AROS Native compiling is possible, but you're much more likely to run into the odd bug(s) in the dev environment since it gets little testing and fixing by other developers.
Is there a sftp software or scp over ssh available?
Maybe. At least the security part would be handled by [https://github.com/jens-maus/amissl amissl] [https://archives.arosworld.org/index.php?function=browse&cat=network/misc port]. DOpus5 has recently added sftp support. See here for a [https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1974&highlight=ssh&pid=12073#post_12073 ssh scp client]
[https://arosdevteam.slack.com/join/shared_invite/enQtOTc4Mzg0NDIzNzQ0LWQ2NWZmNmMwNGIwNGEyNTgxNzU3MGFjMTk3ZThmOTQ1MTVjMzhmNTllYWQ0ZTUxMjBjMGE0Y2VjMDJmNTc5MzI#/shared-invite/email Slack Dev Forum]
====Cross compilers from Windows or Linux====
*Windows WSL2 walkthrough can be [https://arosnews.github.io/how-to-cross-compile-aros-hosted-wsl/ found here]
you want to build AROS. No problem.
Here are instructions for 64-bit:
https://github.com/deadw00d/AROS/blob/master/INSTALL.md
Here are instructions for 32-bit:
https://github.com/deadw00d/AROS/blob/alt-abiv0/INSTALL.md
And as always has been the case you can use the contrib archive to 'obtain' the development directory which contains the /native/ AROS gcc compiler and tools. That compiler is used to build AROS itself but can be used outside the AROS build process by providing --sysroot with indicated directory to cross compile for AROS.
=====Older guides for Linux hosted compiler=====
Please install these packages before moving to next step. Below is a reference list for Debian-based distributions. Reference build system was Ubuntu 18.04/20.04 amd64.
subversion git-core gcc g++ make gawk bison flex bzip2 netpbm autoconf automake libx11-dev libxext-dev libc6-dev liblzo2-dev libxxf86vm-dev libpng-dev gcc-multilib libsdl1.2-dev byacc python-mako libxcursor-dev cmake zsh mingw64
Do all of these operations under home directory of your user or another directory where your user has write permissions.
Specifically, in a section "Linux-i386", be sure first to build the cross-compiler (toolchain-alt-abiv0-i386) and only then AROS itself (alt-abiv0-linux-i386).
Clone & build
<pre>
$ mkdir myrepo
$ cd myrepo
$ git clone https://github.com/deadw00d/AROS.git AROS
$ cd AROS
$ git checkout alt-abiv0
$ cd ..
$ cp ./AROS/scripts/rebuild.sh .
$ ./rebuild.sh
</pre>
Now to the build selection below - Linux-i386
Select toolchain-alt-abiv0-i386 - Select alt-abiv0-linux-i386 (DEBUG)
Start AROS by:
<pre>
$ cd alt-abiv0-linux-i386/bin/linux-i386/AROS
$ ./Arch/linux/AROSBootstrap
</pre>
Pc-i386 Select toolchain-alt-abiv0-i386 (if not built yet) - Select alt-abiv0-pc-i386
ISO image available in alt-abiv0-pc-i386/distfiles
Now that we have linux-hosted build, we can resume native (option 2).
Run ./rebuild.sh and selection option 2. Wait until it finished, then:
<pre>
$ cd alt-abiv0-pc-i386
$ make
</pre>
Now
<pre>
$ make bootiso
</pre>
Now, your compiler is located in toolchain-alt-abiv0-i386 directory and named i386-aros-gcc. Includes are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/include and libraries are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development.lib.
This is how then can be passed to the compiler:
/home/xxx/toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot /home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development -L/home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/lib
../toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot bin/linux-i386/AROS/Development local/helloworld/helloworld.c -o local/helloworld/helloworld
Another method was using Debian like distros and download the gimmearos.sh script (on [http://archives.aros-exec.org/index.php?function=browse&cat=development/cross aros-archives]) to setup the developer environment by downloading necessary packages ...
The gimmearos script is a good start in that direction, building the cross compilers and hosted AROS environment, but gimmearos.sh might be out of date or not be completely compatible with any given linux distro.
In order to do that, you have to compile AROS yourself. Download AROS source archive not contrib. Compile AROS by entering the main directory
./configure
make
([http://aros.sourceforge.net/documentation/developers/compiling.php More on compiling AROS]). The result will be a basic AROS system without development tools.
To compile C++ on Linux, type 'make gnu-contrib-crosstools', creating the cross-compilers in ./bin/linux-i386/tools/, named i386-aros-gcc, etc.
'''Note''': Currently, to make the cross compilers usable copy 'collect-aros' from tools/ to tools/i386-aros/bin/. At the moment the cross compilers if used from the Linux command line will only find it when it's there.
If you want to compile native compilers (the Developer Environment), type 'make contrib-gnu-gcc', creating native compilers in AROS' System:Development/bin directory.
When the output needs to be stripped <code>--strip-unneeded --remove-section .comment</code>
The Obj-C backend should build out of the box.
Open contrib/gnu/gcc/mmakefile.src and search for the line which contains "--enable-languages" and add "objc" to the list of languages that follows it.
--enable-languages=c,c++,objc
Better make it—enable-languages=c,c++,objc,obj-c++
ObjC++ is broken as soon as you try to use exceptions, but that might change in future GCC versions and it does not hurt having it there already.
Do you need a cross-compiler or a real compiler? In the first case you can get away with just downloading the proper gcc archive, apply the patch and proceed with the normal gcc build. In the case of a real cross-compiler then when downloading the contrib sources, also need to download the normal sources, place the contrib sources into a directory called contrib, need to install autoconf+automake+perl+python, call ./configure, cd into the subdirectory and type make.
to rebuild GCC with host == build == target == i386-pc-aros. So just get the vanilla sources and apply the patches without bothering about the build system?
[https://vmwaros.blogspot.com/2019/10/a-pre-configured-development-machine.html pre-configured VM environment vmware virtual machine to develop AROS and AROS software]
'''64 bit'''
'''32 bit'''
A good option for multiple OS is [https://axrt.org/index.php?tab=download-aros AxRuntime lets developers compile their Amiga API-based applications as Linux binaries being able to utilize modern development tools available on Linux, like IDEs, debuggers, profilers, etc]
====Native compilers for AROS====
Namely gcc for C or g++ for C++ are supplied with the [[Aros/Developer/Docs#The Developer Environment|Developer Environment]], which is already '''setup''' and part of any current AROS distribution like AROS One or the nightlies
* Current GCC 6.5 (32bit) though moving to 10.5 and 15.1 (64bit)
* Older software components. GNU GCC 4.x GNU BinUtils, GNU Fileutils 4.x, GNU Textutils and others.
On single partition systems and the Boot ISO, the AROS Developer environment is installed under "SYS:Development/". Systems with multiple partitions - such as a Work: partition - tend to install it to there instead, however it can be installed manually to any location. Please remember, if moving, that you will need to correct the Development packages 'install location' env variable to point to the new locations root - look in SYS:S/startup-sequence.
<pre>
Assign Development: SYS:Development
Assign C: Development:bin ADD
</pre>
In the aros build instructions. you need to check out contrib and/or ports into your AROS source directory, as subdirs. then, assuming you are building in an external build dir, as you should, you simply configure and "make contrib" for instance or whatever submodule you might want to build.
===Beginners Tutorials in C C++===
As AROS is [http://eab.abime.net/showthread.php?t=29856 C based] API compatible to AmigaOS 3.x, so most of the information on programming C on the Amiga applies to AROS as well. Please note that there is a lot of AmigaOS 1.3 (1985-1989) and [https://www.markround.com/amigaguide AmigaOS AOS 2.x (1990-1992)] information around but OS3.1 is recommended but limited in amount.
Brief overview of what is required to write AROS Applications
# Using [[Aros/Developer/Docs/Libraries/Intuition|Intuition]] for basic screens/windows
# Using graphics within windows via 8bit [[Aros/Developer/Docs/Libraries/Graphics|graphics]] and so onto 15-16-24bit [[Aros/Developer/Docs/Libraries/CGFX|cybergraphx]]
# Load and save work to [[Aros/Developer/Docs/Libraries/DOS|dos]] disk drives
# Using the [[Aros/Developer/Zune|ZUNE GUI Environment]]
Writing native games require this extra information
# Using [[Aros/Developer/AHIDrivers|AHI audio hardware independent API]]
# Using USB joystick/joypad with the Poseidon USB stack through [[Aros/Developer/Docs/Libraries/LowLevel|LowLevel]] library
Additional features that could be added later
# Adding additional [[Aros/Developer/Docs/Libraries/Locale|Locale]] language translations to your program
# Adding a [[Aros/Developer/Docs/Rexx|AREXX/Regina]] port to your application
# Executing Amiga(TM) [[Aros/User/DOS|DOS]] commands from your application
# Using [[Aros/Developer/Docs/Libraries/Icon|icons]] (.info files) and icon tooltypes (stack, version, and program startup options)
# Local couch or IP based SANA2 networking co-op multi player gaming support
Most AmigaOS programming books are nowadays very much out of date as most are from the late 1980s and do not cover later amigaOS releases like 3.1 for example, Rob Peck's book "Programmer's Guide to the Amiga". The Amiga ROM Kernel manuals aka RKMs like Libraries (3rd edition), Devices (), the AmigaDOS manual (3rd edition) and the Style Guide may have their uses. There are some reference examples from AmigaMail and Devcon notes (available again on an Amiga developers CD 2.1).
For Arexx then "The Amiga Programmer's Guide to ARexx" by Eric Giguere, which was published by Commodore is useful as well as an "Arexx Cookbook".
Curly brackets missing - try SHIFT + ALT + 7 or 0.
* Beginners C Guide [http://www.iu.hio.no/~mark/CTutorial/CTutorial.html C Tutorial],
* [http://thecguru.com/ C for beginners],
* [http://fresh2refresh.com/c/c-basic-program/ C programming basics] for students,
* [https://www.edx.org/courses Free Online course] from American Universities
* Reference Amiga [http://amigadev.elowar.com/ API reference].
* AROS based c source can be found [[Aros/Developer/Docs/Examples|here]] and lots of example code can be found inside [https://github.com/aros-development-team AROS sources] themselves and from the contrib section of the archives from [https://github.com/aros-development-team/contrib Aros site], and study the AROS applications source code, e.g. the test programs from the Tests drawer (folder/directory). Take a look at the code of some smaller AROS programs might be a better and more up to date guide. Some old Os3 [http://www.blackfiveservices.co.uk/amiga-c/ here]
When you upload your builds, please write the architecture (like i386-aros, x86_64-aros, etc.) in the archive name
and it is also advisable to write in the field "Requirements" what ABI (ABIv11, ABIv0 or ABIv1)
===Compiling C/C++ Code===
Native, although we have a IDE Integrated Development Environment (Murks), it does lack a debugger. Whilst others use a combination of a text editor and shell to edit code. Most though use an AROS hosted on Linux to take advantage of the better GCC tools like GDB and various IDEs.
Open shell - its a menu option at the top left of Wanderer (desktop). Or by using the right Win key and w (or F12 and w) within the directory with the source code. Type in
sh
to change the amiga shell into a unix shell. You can then type in ls (unix equivalent to amiga dir). Take a look [http://en.wikibooks.org/wiki/Linux_commands here] for more commands.
For a single file program-name.c or program-name.cpp
gcc -o program-name program-name.c
or
g++ -o program-name program-name.cpp
or
g++ -o test -Wall -g main.cc texturelib.cpp xmodelib.cc -lsdl -lgl
To close the shell, click on the top left-hand corner to close (twice). Once to get back the aros shell and then again to close finally. Use [http://freshmeat.net/projects/cksfv/ cksfv] as a test.
Some source code requires the addition of Amiga API libraries, like dos, which you can flag at the compile time as
gcc -o julia.exe julia.c -ldos
For DOS use -ldos as example and if you are compiling mui codes it will be -lmui or intuition -lintuition. Other missing symbols are due to linker libraries being necessary for linking in functions that aren't in the standard C libraries. For example some source code would need added
-lz or -lm or -lpng or -larosc etc.
use this in unix line command mode to search for 'search-item' in many .c files (*.cpp for c++, etc.)
grep -l 'search-item' *.c
If the program is not executable, try using parameter fno-common
"Delete #?.o"? Or if you are using abcshell then "rm *.o"
:''More information: [[Aros/Developer/Porting software]]''
=== How to make Apps have AROS 64-bit specific support code ===
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
AROS64 already uses 64bit addressing, it just doesn't setup the MMU for more than 4GB physical memory currently.
When porting software to AROS64 it is "mostly" a case of converting ULONG's that are used to store pointers, into IPTR's instead, etc. Another quirk, is making sure items on the stack are the correct size by using the STACKED attribute for them.
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
compiling mui stuff for aros setting -std=gnu99 is necessary, had -std=c99 usually
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order.
crash which suggest memory corruption. From my experience porting from 32-bit to 64-bit these kinds of errors can happen if a pointer is passed somewhere via ULONG variable. Then half of the pointer is cut.
To generate this error, please run AROSBootstrap with -m 1024. This will allocate heap to 64-bit address space which will make these errors immediatelly visible. These types of crashes are hard to debug. Disabled as little code as possible to stop corruption from occurring and then try to read from the code where it can be broken
Crashing in tslf_freevec is another symptom of memory corruption and these memory corruptions will manifest differently on different setups.
==Coding conventions==
As the AROS core source is a shared developer experience, there are rules regarding structure and style. When it comes to your creating your own app and coding, the structure and style should be your own, i.e. you should enjoy what you do and do it so that you can understand what is going on.
===Layout===
<syntaxhighlight lang="c">
static void 1st_function()
{
program
exit(0);
}
int main(void)
{
1st_function();
2nd_function();
3rd_function();
return 0;
}
</syntaxhighlight>
<syntaxhighlight lang="c">
struct Screen * openscreen(void);
struct Window *openwindow(struct Screen *screen, const char *title, LONG x, LONG y, LONG w, LONG h);
VOID 1st_function();
VOID 2nd_function();
int main(int argc, char **argv)
{
program
return 0;
} /* main */
VOID 1st_function()
{
}
VOID 2nd_function()
{
}
</syntaxhighlight>
===General style===
This code is used by many people and therefore you should keep some things in mind when you submit source code:
* Keep things simple
* Keep the source clean
* Always know what you are doing, if not flag it and describe what needs to be done...
* Explain clearly/simply what you are doing
* Remember that you write code once but that it is read many times by many people
===Comments===
AROS uses some of the comments in the source to generate the documentation. Therefore it's necessary to keep a certain format so the tools can find their information. Other comments are ignored but they should explain what you thought when you wrote the code. If you really can't think of an explanation, then don't write the code a second time like this:
<pre>
/* This adds 1 to t */
t ++;
</pre>
What we think of is this:
<pre>
/* Go on with next element */
t ++;
</pre>
===Formatting===
This is only '''IMPORTANT''' if you are going to work on the core AROS code or contrib but not applications which may reside outside like on AROS Archives or other websites.
<syntaxhighlight lang="c">
{
/* a */
struct RastPort * rp;
int a;
/* b */
rp = NULL;
a = 1;
/* c */
if (a == 1)
printf ("Init worked\n");
/* d */
if
(
!(rp = Get_a_pointer_to_the_RastPort
(
some
, long
, arguments
)
)
||
a <= 0
)
{
printf ("Something failed\n");
return FAIL;
}
/* e */
a = printf ("My RastPort is %p, a=%d\n"
, rp
, a
);
return OK;
}
</syntaxhighlight>
Looks ugly, eh ? :-) Ok, here are the rules:
<pre>
If several lines contain similar code, put similar things below each other (see a and b);
Put spaces between operands and operators
Put braces {}, brackets [] and parentheses () below each other (d) if there is much code between.
Brackets and parentheses may be in one line if the code between is small (c)
Indent by 4 Spaces. Two indent levels may be abbreviated by one tab.
</pre>
'''Before committing please normalize the indentation - if you have a mixture of tabs and spaced - please always use spaces, 1 tab = 4 spaces.'''
The reasons for this are:
# While some editors can use an arbitrary sizes for tabs, it's a bit complicated to tell another editor which tab size was used by the one used to write the code.
# Most code in AROS was written this way and your code should look like the rest.
# You can print this code on any printer without special tools to "fix" the tabs.
# Most editors have smart tabs which do exactly this. If your editor doesn't, write a bug report.
If you have a function with many arguments (d, e) you should put the parentheses in lines of their own and each argument in one line (d) or put the first argument behind the opening parentheses (e) and each following argument in a line of its own with the comma in front. The closing parentheses is in a line of its own and aligned with the beginning of the expression (i.e. the a and not the opening parentheses or the printf()).
Use a single blank line to separate logical blocks. Large comments should have a blank line before and after them, small comments should be put before the code they explain with only one blank line before them.
If you see any TABS in AROS core sources then the suggestion is to "detab the file and commit that separately" either before or afterwards from making functionality changes. Make two commits instead of one. This makes it easier for others to see the real changes instead of having to dig through multiple lines of irrelevant diffs.
===Eliminating Global Variables===
i.e. pass variables to functions (local scope) or classes making it easier to track and debug your code.
Any time you find that you need a particular thing in 'a lot of different places', chances are that all those places are conceptually related, and so you can create a class, a namespace, a function, or some other higher-level organizational unit to represent that relationship. This makes the program easier to understand.
Bad Designs
* All variables are global.
* There are no standalone functions, only sub-procedures which act on the global variables.
* Every sub-procedure is at least 500 lines to several thousand
* Every sub-procedure has more than one task to perform
* Copy-paste is preferred to writing methods, AND subtle changes are made in the middle of the code
Good Designs
* structure program into functions (C or basic) - top-down procedural approach
* put in class(es) (freepascal or C++) - the object is fixed and you use methods to access the object
<pre>
class String_List
{
private:
list<string> m_List; // member
public:
void read_strings() { /* read strings into m_List */ }
void print_strings() { /* write contents of m_List to stdout */ }
void sort_strings() { /* sort contents of m_List */ }
void sort_strings_reverse() { /* reverse-sort contents of m_List */ }
void unique_strings() { /* remove duplicate strings */ }
};
int main()
{
String_List myList; // local
myList.read_strings();
myList.sort_strings();
myList.print_strings();
myList.sort_strings_reverse();
myList.print_strings();
myList.unique_strings();
myList.print_strings();
return 0;
}
</pre>
This way it is very easy to replace the list with new list for debugging purposes, or replacing the methods without replacing the list, when you want different results. You only have to replace the content of the local variables.
So create the structure that matches your data (linked lists, trees, arrays, etc.) and what to do with them (sorting, searching, etc.)
<pre>
.h usually contain #define #include typedef enum struct extern screen and window definitions (data structures)
.c should contains functions and algorithms
</pre>
One way to look at it is that menu headings act as the .c file and sub-menu headings as functions.
When you start a project, you place a couple of declarations in the include file. As the project continues, you place more and more declarations in the include file, some of which refer to or contain previous declarations. Before you know it, you have a real mess on your hands. The majority of your source files have knowledge of the data structures and directly reference elements from the structures.
Making changes in an environment where many data structures directly refer to other data structures becomes, at best, a headache. Consider what happens when you change a data structure.
Use good variables names to help clarify code and only comment when you need to explain why a certain programming approach was made.
You're Refactoring Legacy Code, you see a global, you want to get rid of it. How do you do this?
Exactly what to do depends on how the global is used. The first step is to find all uses of the global throughout the code, and get a feel for what the significance of the variable is and how it relates to the rest of the program. Pay particular attention to the "lifetime" of the variable (when it gets initialized, when it is first used, when it is last used, how it gets cleaned up). Then, you will probably make the global a data member of a class (for OO languages), or you will write some get/set functions. Converting to the Singleton Pattern is common, but you may discover that it makes more sense for the data element to be a member of an existing singleton, or maybe even an instance variable.
# Create a basic read method, either as a class or a global function. Replace all reads with the access method, but leave the variable defined as a global.
# Review each of the writes to the method and extract action functions one at a time. Unless two operations are coded identically in the original code, extract each write access separately.
# Change the variable scope from global to local.
# Analyze similar action functions to determine if any can be merged, i.e., there are no functional differences in the results of the function, just differences in the implementation details.
# Review the calls to the read method and see if a more complex functionality should be applied. Follow the approach for writes and unless implementations are identical, create separate access functions.
# Analyze the access functions for duplication.
As returning variables by "passing by value" are forgotten, so "passing by reference" is often used instead. The reference is a pointer to the variable so the value is remembered when returned.
Alternatives
* Hidden Globals
* Singleton Pattern
* Database or TupleSpace
* Context Object
* Dependency Injection
* Stateful Procedures
==AROS/AmigaOS APIs and Docs==
<pre>
Library:
- Private data structure
- Many public access methods
Device:
- Private data structure
- Two (BeginIO/AbortIO) access methods
Resource:
- Public data structure
- *NO* access methods
</pre>
And, being Amiga OS-compatible, there are exceptions to all of these.
===System Libraries===
The [http://aros.sourceforge.net/documentation/developers/app-dev/index.php AROS Guide To Libraries] can be used as a guide to individual commands and Old Dev Docs are used in application programming.
The generated [http://aros.sourceforge.net/documentation/developers/autodocs/ Aros AutoDocs HTML Read] or download [http://aros.sourceforge.net/download.php docs-html.bz2 from here].
Amiga/Aros styles libraries are very different from windows and linux libs. Typical .so/dll libraries are foreign to most Amiga-like OS
*[[Aros/Developer/Docs/Libraries/AROSC|arosc.library]]
*[[Aros/Developer/Docs/Libraries/AmigaGuide|amigaguide.library]]
*[[Aros/Developer/Docs/Libraries/ASL|asl.library]]
*[[Aros/Developer/Docs/Libraries/Bullet|bullet.library]]
*[[Aros/Developer/Docs/Libraries/BSDsocket|bsdsocket.library]]
*[[Aros/Developer/Docs/Libraries/CAMD|camd.library]]
*[[Aros/Developer/Docs/Libraries/Codesets|codesets.library]]
*[[Aros/Developer/Docs/Libraries/CGFX|cybergraphics.library]]
*[[Aros/Developer/Docs/Libraries/CGXVIDEO|cgxvideo.library]]
*[[Aros/Developer/Docs/Libraries/Commodities|commodities.library]]
*[[Aros/Developer/Docs/Libraries/DataTypes|datatypes.library]]
*[[Aros/Developer/Docs/Libraries/DiskFont|diskfont.library]]
*[[Aros/Developer/Docs/Libraries/DOS|dos.library]]
*[[Aros/Developer/Docs/Libraries/Exec|exec.library]]
*[[Aros/Developer/Docs/Libraries/Expansion|expansion.library]]
*[[Aros/Developer/Docs/Libraries/FreeType2|freetype.library]]
*[[Aros/Developer/Docs/Libraries/GadTools|gadtools.library]]
*[[Aros/Developer/Docs/Libraries/Graphics|graphics.library]]
*[[Aros/Developer/Docs/Libraries/Icon|icon.library]]
*[[Aros/Developer/Docs/Libraries/Identify|identify.library]]
*[[Aros/Developer/Docs/Libraries/IFFParse|iffparse.library]]
*[[Aros/Developer/Docs/Libraries/Intuition|intuition.library]]
*[[Aros/Developer/Docs/Libraries/Keymap|keymap.library]]
*[[Aros/Developer/Docs/Libraries/Layers|layers.library]]
*[[Aros/Developer/Docs/Libraries/Locale|locale.library]]
*[[Aros/Developer/Docs/Libraries/LowLevel|lowlevel.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingBas|mathieeesingbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubBas|mathieeedoubbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingTrans|mathieeesingtrans.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubTrans|mathieeedoubtrans.library]]
*[[Aros/Developer/Docs/Libraries/Mathtrans|mathtrans.library]]
*[[Aros/Developer/Docs/Libraries/MUIMaster|muimaster.library]]
*[[Aros/Developer/Docs/Libraries/Partition|partition.library]]
*[[Aros/Developer/Docs/Libraries/PopUpMenu|popupmenu.library]]
*[[Aros/Developer/Docs/Libraries/OOP|oop.library]]
*[[Aros/Developer/Docs/Libraries/Regina|regina.library]]
*[[Aros/Developer/Docs/Libraries/Reqtools|reqtools.library]]
*[[Aros/Developer/Docs/Libraries/RexxSysLib|rexxsyslib.library]]
*[[Aros/Developer/Docs/Libraries/ScreenNotify|screennotify.library]]
*[[Aros/Developer/Docs/Libraries/TTEngine|ttengine.library]]
*[[Aros/Developer/Docs/Libraries/Thread|thread.library]]
*[[Aros/Developer/Docs/Libraries/Utility|utility.library]]
*[[Aros/Developer/Docs/Libraries/Xadmaster|xadmaster.library]]
*[[Aros/Developer/Docs/Libraries/Workbench|workbench.library]]
*[https://github.com/aros-development-team/AROS/commit/c82e86b8480277998014cc327b56c7664023a52f ClassAct Reaction boopsi class]
===AROS Subsystems===
# [[Aros/Developer/Zune|Zune MUI compatible GUI]]
# [[Aros/Developer/AROSAppPackages|AROS Application Packages]]
# AHI Audio Drivers - [[Aros/Developer/AHIDrivers|Usage]]/[[Aros/Developer/AHIDriversDev|Development]]
# AROSTCP Sana2 Network Interface Drivers - [[Aros/Developer/NICDrivers|Usage]]/[[Aros/Developer/NICDriversDev|Development]]
# [[Aros/Developer/AmiSSL|AmiSSL]]
# gfx.hidd/cybergraphics Video Drivers - [[Aros/Developer/GfxDrivers|Usage]]/[[Aros/Developer/GfxDriversDev|Development]]
# IO Device Drivers - [[Aros/Developer/IODeviceDrivers|Usage]]/[[Aros/Developer/IODeviceDriversDev|Development]]
# USB Device Drivers - [[Aros/Developer/USBDrivers|Usage]]/[[Aros/Developer/USBDriversDev|Development]]
# PCI Device Drivers - [[Aros/Developer/PCIDrivers|Usage]]/[[Aros/Developer/PCIDriversDev|Development]]
# [http://www.libsdl.org/ SDL] [https://github.com/search?q=repo%3Aaros-development-team%2Fcontrib%20SDL2&type=code SDL2 commits], [https://github.com/aros-development-team/contrib/commit/c62c3c425c35bac19dadc23be092b0b13a66c76c SDL3 initial commit], []
# [[w:Gallium3D|Gallium 3D]] [http://www.mesa3d.org/ openGL aka Mesa] - [[Aros/Developer/OpenGL|Usage]]/[[Aros/Developer/OpenGLDev|Development]] [http://www.swiftless.com/opengltuts.html Swfitless]
# A small subset of GTK2 through [http://sourceforge.net/projects/gtk-mui/ MUI-GTK]
# Cairo 2D Engine - [[Aros/Developer/Cairo|Usage]]/[[Aros/Developer/Cairo|Development]]
# [[Aros/Developer/Scalos|Scalos desktop API and plugin modules]]
# [[Aros/Developer/VHI|VHI video driver]]
====HIDDs====
*[[Aros/Developer/Docs/HIDD/HIDDClass|hiddclass.hidd]]
*[[Aros/Developer/Docs/HIDD/Graphics|graphics.hidd]]
*[[Aros/Developer/Docs/HIDD/VesaGfx|vesagfx.hidd]]
*[[Aros/Developer/Docs/HIDD/ATI|radeon.hidd]]
*[[Aros/Developer/Docs/HIDD/NVidia|nvidia.hidd]]
*[[Aros/Developer/Docs/HIDD/Nouveau|nouveau.hidd]]
*[[Aros/Developer/Docs/HIDD/Kbd|kbd.hidd]]
*[[Aros/Developer/Docs/HIDD/Mouse|mouse.hidd]]
*[[Aros/Developer/Docs/HIDD/i2c|i2c.hidd]]
*[[Aros/Developer/Docs/HIDD/IRQ|irq.hidd (deprecated)]]
*[[Aros/Developer/Docs/HIDD/PCI|pci.hidd]]
*[[Aros/Developer/Docs/HIDD/PCIPC|pcipc.hidd]]
*[[Aros/Developer/Docs/HIDD/Serial|serial.hidd]]
*[[Aros/Developer/Docs/HIDD/Thunderbolt|thunderbolt.hidd]]
https://github.com/aros-development-team/AROS/commit/4f02ea691799aff3a01f60cfa5f9182c82fc57a8
HIDD are used for device/peripheral low level hardware support drivers. The HIDD system is split up into a collection of classes with a strict inheritance hierarchy. A HIDD class implements a device driver for a single device or in rare cases a group of devices and provides an interface for other programs and devices to access.
In order to maintain portability of interfaces across a wide range of hardware this interface will in general not present the raw interface to the underlying hardware. Instead it will present a generic interface that describes many different hardware implementations. This allows for the best reuse of both interfaces and code.
HIDD API is heavyweight though. You need to open a HIDD library, open oop.library, instantiate an object (even if there's no object); and object calls are more costly compared to plain library calls.
Basically your task is to implement a subclass of hidd.ata.bus for your hardware. just implementing the XXXATA__Hidd_ATABus__xxxxxx methods for the Amiga chipset - and appropriate versions of the interface_xxx.c file(s). pretty much everything in probe.c could be ignored - just write a replacement scan for relevant amiga devices and store whatever info you need in the bus data? only the "SUPPORT_LEGACY" blocks might be related.
You do not need to depend on PCI API. PCI is just a way to discover the hardware on PCs, etc.
<hidd/pci.h> includes (at some depth) <interface/HW.h>, which defines IID_HW. This comes from the 'generic' HIDD class in:
rom/hidds/hidd/hiddclass.conf
did not split up HIDD and HW because they are always used in pair. It's the same as hidd/pci.h bringing definition for: PCI, PCIDriver and PCIDevice. PCI is actually PCIHW, just the name was not changed for backwards compatibility reasons. HW is a 'hub' where HIDD instances plug in.
ATA HIDD aoHidd_ATABus_Use32Bit value is completely ignored unless ata.device first detects correct command line parameter.
Yes. Unfortunately I was unable to find any comment in code or svn history with explanations. Looked at Linux source, there 32-bit PIO is also controller driver's property. Some of them enable it, some don't.
Actually, switching the default to ON should be safe. ata.device is fail-safe at this because during IDENTIFY command it validates upper 16 bits, and if they appear to be zeroes in all 128 longwords, then 32-bit mode is switched off. But, nevertheless, I know how tricky hardware can be, so I decided not to change original behavior. If you think it's wrong in some cases, then it's possible to add one more attribute like aHidd_ATABus_Default32Bit. If set to YES, then this means that 32-bit PIO is safe to use by default.
====Devices====
*[[Aros/Developer/Docs/Devices/ATA|ata.device]]
*[[Aros/Developer/Docs/Devices/Console|console.device]]
*[[Aros/Developer/Docs/Devices/Narrator|narrator.device]]
*[[Aros/Developer/Docs/Devices/Printer|printer.device]]
*[[Aros/Developer/Docs/Devices/Trackdisk|trackdisk.device]]
*[[Aros/Developer/Docs/Devices/AmberRAM|amberram.device]]
*[[Aros/Developer/Docs/Devices/Timer|timer.device]]
*[[Aros/Developer/Docs/Devices/|.device]]
The Amiga used [[Aros/Developer/Docs/Devices|Devices]] to communicate with [http://aros-exec.org/modules/newbb/viewtopic.php?start=0&topic_id=3475&viewmode=flat&order=ASC additional hardware]. AROS has replaced these hardware devices with hidd equivalents but some are still retained for backwards compatibility.
Local libraries/devices/handlers,etc. are supposed to override the ones in ROM if their version is higher than the one in ROM.
Here is the list of commands exec default:
{| class="wikitable"
| CMD_CLEAR
| Purge the buffer of the device
|----
| CMD_READ
| Playback Control
|----
| CMD_STOP
| Stopped the activity of the device
|----
| CMD_FLUSH
| Empty the queue of commands
|----
| CMD_RESET
| Reset a device
|----
| CMD_WRITE
| Playback Control
|----
| CMD_INVALID
| Create an error
|----
| CMD_UPDATE
| Gets updated device
|----
| CMD_START
| Will restart the device
|----
|}
While most other "stuff you communicate with" in AmigaOS are devices <ref>AMIGA ROM Kernel Reference Manual: Devices, 3rd Edition. Commodore-Amiga, Inc. Addison-Wesley, 1991. {{ISBN|0-201-56775-X}}</ref> that share a [http://gega.homelinux.net/AmigaDevDocs/ common base interface]. [[Aros/Developer/Docs/Devices1.3|OS 1.3 Device Drivers]].
====Handlers====
:[[Aros/Developer/Docs/Handlers/Pipe|pipe.handler]]
:[[Aros/Developer/Docs/Handlers/Port|port.handler]]
:[[Aros/Developer/Docs/Handlers/SFS|sfs.handler]]
:[[Aros/Developer/Docs/Handlers/FAT|fat.handler]]
:[[Aros/Developer/Docs/Handlers/PFS|pfs.handler]]
:[[Aros/Developer/Docs/Handlers/NTFS|fuse.handler]]
:[[Aros/Developer/Docs/Handlers/FFS|ffs.handler]]
filesystem handlers have their own separate system consisting of completely differently structured messages that dos.library use to pass requests (for things like reading, writing, getting directory contents etc.) to them. AROS originally went with implementing filesystem handlers as devices, which might arguably be more consistent with the rest of the AmigaOS API but which is quite incompatible with AmigaOS itself. However, it made it far harder to port filesystems and the gains were comparatively small, and so there's been a long standing goal of fixing this incompatibility. It has now, June 2011, been reintroduced to all AROS flavors.
are argstr and argsize valid for the handler startup environment?
DOS/RunHandler() calls DOS/CreateNewProcTags(), and then CallEntry() (in rom/dos/exit.c) to start the handler, so yes, argstr and argsize are *present* in the call signature of the handler.
Granted, argstr will be NULL and argsize 0, but those values *are* passed to the handler function using:
<pre>
AROS_UFC3(ULONG, entry,
AROS_UFCA(STRPTR, argptr, A0),
AROS_UFCA(ULONG, argsize, D0),
AROS_UFCA(struct ExecBase *, SysBase, A6));
</pre>
Creating your own [without the whole build tree http://pagesperso-orange.fr/franck.charlet/temp/radeon.zip] and then
<pre>
make stub
make
make install
</pre>
SFS has two Root blocks, one at the start and one at the end of the disk. The Root blocks both contain the same information. They hold various information about the disk structure and have the locations of some important blocks used by the filesystem.
The Root ObjectContainer contains the Root directory Object. The name of this Object is the name of the volume. It is identical to a normal directory Object.
The Bitmap is used to keep track of free space. Each bit in a bitmap represents a single block. A set bit indicates a free block and a cleared bit a used block.
AdminSpaceContainers are used to keep track of space which has been reserved for storing administration blocks. Only the Bitmap, the Root blocks and the actual data stored in files aren't stored in administration space. Administration space is allocated in chunks of 32 blocks at a time. A single AdminSpaceContainer can hold information about a large number of such areas each of which has its own little bitmap of 32 bits.
Extents are stored in a B-Tree. The Root block holds a pointer to the root of the Extent B-Tree. Extents keep track of space in use by a specific file. Each fragment a file consists of has its own Extent. Extents are in a double linked list. The list can be used to locate the next or previous fragment of a file.
Below is the standard block header. This header is found before EVERY type of block used in the filesystem, except data blocks. The id field is used to check if the block is of the correct type when it is being referred to using a BLCK pointer. The checksum field is the SUM of all LONGs in a block plus one, and then negated. When applying a checksum the checksum field itself should be set to zero. The checking a checksum the checksum is okay if the result of the checksum equals zero. The ownblock BLCK pointer points to the block itself. This field is an extra safety check to ensure we are using a valid block.
Field Type Description
id ULONG The id field is used to identify the type of block we are dealing with. It is used to make sure that when referencing a block we got a block of the correct type. The id consist of 4 bytes and each blocktype has its own unique foure letter code.
checksum ULONG This field contains the sum of all longs in this block, plus one and then negated. The checksum can be used to check if the block hasn't been corrupted in any way.
ownblock BLCK Points to itself, or in other words, this field contains the block number of this block. This is yet another way to check whether or not a block is valid.
<pre>
struct fsBlockHeader {
ULONG id;
ULONG checksum;
BLCK ownblock;
};
</pre>
The algorithm to calculate the checksum of a block:
<pre>
ULONG calcchecksum(struct fsBlockHeader *block, LONG blocksize} {
ULONG *data=(ULONG *)block;
ULONG checksum=1;
block->checksum=0;
while(blocksize>0) {
checksum+=*data++;
blocksize-=4;
}
return(-checksum);
}
</pre>
A Root block contains very important information about the structure of a SFS disk. It has information on the location and size of the disk, the blocksize used, locations of various important blocks, version information and some filesystem specific settings.
A SFS disk has two Root blocks; one located at the start of the partition and one at the end. On startup the filesystem will check both Roots to see if it is a valid SFS disk. If either one is missing SFS can still continue (although at the moment it won't).
A Root block could be missing on purpose. For example, if you extend the partition at the end (adding a few MB's) then SFS can detect this with the information stored in the Root block located at the beginning (since only the end-offset has changed). Same goes for the other way around, as long as you don't change start and end point at the same time.
When a Root block is missing because the partition has been made a bit larger, then SFS will in the future be able to resize itself without re-formatting the disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
version UWORD The version of the filesystem block structure. You can check this field to identify what version of the filesystem your dealing with it and to see if you can handle this structure correctly. Don't try to interpret the disk's structure when this field contains an unknown version number!
sequencenumber UWORD Used to identify which Root block was written last in case the sequencenumber on both Root blocks don't match.
datecreated ULONG Creation date of this volume. This is the date when the disk was last formatted and will never be changed.
bits UBYTE Various settings, see below.
<pre>
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
reserved1 ULONG[2] Reserved, leave zero.
firstbyteh ULONG High 32-bits of a 64-bit number. This is the first byte of our partition relative to the start of the disk.
firstbyte ULONG Low 32-bits of a 64-bit number.
lastbyteh ULONG High 32-bits of a 64-bit number. This is the last byte (exclusive) of our partition relative to the start of the disk.
lastbyte ULONG Low 32-bits of a 64-bit number.
totalblocks ULONG The total number of blocks this partition consists of.
blocksize ULONG The size of a block of this partition.
reserved2 ULONG[2] Reserved, leave zero.
reserved3 ULONG[8] Reserved, leave zero.
bitmapbase BLCK Block number of the start of the Bitmap.
adminspacecontainer BLCK Block number of the first AdminSpaceContainer.
rootobjectcontainer BLCK Block number of the ObjectContainer which contains the root of the disk (this is where the volume name is stored).
extentbnoderoot BLCK Block number of the root of the Extent B-Tree.
reserved4 ULONG[4] Reserved, leave zero.
</pre>
<pre>
struct fsRootBlock {
struct fsBlockHeader bheader;
UWORD version;
UWORD sequencenumber;
ULONG datecreated;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
ULONG reserved1[2];
ULONG firstbyteh;
ULONG firstbyte;
ULONG lastbyteh;
ULONG lastbyte;
BLCK totalblocks;
ULONG blocksize;
ULONG reserved2[2];
ULONG reserved3[8];
BLCK bitmapbase;
BLCK adminspacecontainer;
BLCK rootobjectcontainer;
BLCK extentbnoderoot;
ULONG reserved4[4];
};
</pre>
AdminSpaceContainers are used to store the location and bitmap of each administration space. The AdminSpaceContainers are located in a double linked list and they contain an array of fsAdminSpace structures. There is one fsAdminSpace structure for every administration space on disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
next BLCK The next AdminSpaceContainer, or zero if it is the last in the chain.
previous BLCK The previous AdminSpaceContainer, or zero if it is the first AdminSpaceContainer.
bits UBYTE The number of bits in each in the bits ULONG in the fsAdminSpace structure.
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
adminspace struct fsAdminSpace An array of fsAdminSpace structures. The size of the array is determined by the current blocksize.
<pre>
struct fsAdminSpaceContainer {
struct fsBlockHeader bheader;
BLCK next;
BLCK previous;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
struct fsAdminSpace adminspace[0];
};
</pre>
Field Type Description
space BLCK The first block of an administration space.
bits ULONG A small bitmap which is used to determine which blocks in an administration space are already in use. The number of bits in this bitmap is determined by the bits field in the AdminSpaceContainer.
<pre>
struct fsAdminSpace {
BLCK space;
ULONG bits;
};
</pre>
The fsBitmap structure is used for Bitmap blocks. A bitmap block is used to keep track of which space is in use and which isn't for a particular area of a disk. All bitmap blocks together keep track of the free space for an entire disk. The location of the first bitmap block is known and all other bitmap blocks are stored in order after the first one.
Field Type Description
bheader struct fsBlockHeader Standard block header.
bitmap ULONG An array of ULONG's. These hold the actual information on which blocks are in use and which aren't.
<pre>
struct fsBitmap {
struct fsBlockHeader bheader;
ULONG bitmap[0];
};
</pre>
Each bit in a bitmap block (except for the block header) represents a single block. If the bit is set than the block is free, and if the bit is clear then it is full. The first ULONG in the bitmap area of the first bitmap block represents blocks 0 through 31 on the disk. Bit 31 of this ULONG is block 0, 30 is block 1, and so on. Bit 0 of the first ULONG represents block 31.
Below is a table to clarify how bitmaps work even further. The first column is the bitmap block number, the second column is the number of the ULONG in the bitmap array. The third column is the bit number in this ULONG, and the last column is the block which this specific bit, in this specific bitmap block represents.
We'll assume here that a bitmap block has room for 120 ULONG's (meaning there is room for storing 32 * 120 bits).
<pre>
Bitmap block ULONG number Bit number Block represented
1 (first) 0 31 0
1 0 30 1
... ... ... ...
1 0 1 30
1 0 0 31
1 1 31 32
... ... ... ...
1 2 31 64
1 2 30 65
... ... ... ...
1 119 0 3839
2 0 31 3840
2 0 30 3841
... ... ... ...
</pre>
The last bitmap block doesn't need to be completely used. The unused bits (which belong to blocks which do not exist) all have to be clear, to indicate that these blocks are in use.
The fsObjectContainer structure is used to hold a variable number of fsObjects structures (Objects) which have the same parent directory. Each ObjectContainer must contain at least one Object. If there is space in the ObjectContainer not used by the variable number of Objects then that space is zero filled. Objects always start at 2-byte boundaries, which means sometimes a padding byte is inserted between two Objects.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the parent Object, or 0 if this object has no parent (which is only the case for the Root directory).
next BLCK The next ObjectContainer belonging to this directory, or zero if it is the last in the chain.
previous BLCK The previous ObjectContainer belonging to this directory, or zero if it is the first ObjectContainer in this directory.
object struct fsObject A variable number of fsObject structures. The number of structures depends on the individual sizes of each fsObject structure and the blocksize. These structures are located directly after each other with at most 1 byte of padding between them to get the structures aligned on a 2 byte boundary.
<pre>
struct fsObjectContainer {
struct fsBlockHeader bheader;
NODE parent;
BLCK next;
BLCK previous;
struct fsObject object[0];
};
</pre>
fsHashTable is the structure of a HashTable block. It functions much like the hash table found in FFS user directory blocks, except that it is stored in a separate block. This block contains a number of hash-chains (about 120 for a 512 byte block). Each hash-chain is a chain of Nodes. Each Node has a pointer to an Object and a pointer to the next entry in the hash-chain. Using such a hash-chain you can locate an object quickly by only knowing its name.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the directory Object this HashTable block belongs to.
hashentry NODE An array of Nodes. Each Node represents the start of a hash-chain (singly linked). A hash-value is calculated using the name of a file or directory, and this value determines in which chain the Object is linked. If there are no entries in a hash-chain then the hashentry value is zero.
<pre>
struct fsHashTable {
struct fsBlockHeader bheader;
NODE parent;
NODE hashentry[0];
};
</pre>
To calculate the hash-value using a name of an Object as input use these routines:
<pre>
UWORD calchash(UBYTE *name) {
UWORD hash=0;
/* Calculates a hash value over the passed in string.
The end of the string can be either a NUL byte or a
slash. The hash function is the same as the one
used in FastFileSystem set to international mode. */
while(name[hash]!=0 && name[hash]!='/') {
hash++;
}
while(*name!=0 && *name!='/') {
hash=hash*13+upperchar(*name++);
}
return((UWORD)(hash % (UWORD)((blocksize-sizeof(struct fsHashTable))>>2)));
}
UBYTE upperchar(UBYTE c) {
if((c>=224 && c<=254 && c!=247) || (c>='a' && c<='z')) {
c-=32;
}
return(c);
}
</pre>
The BNodeContainer is used to store B-Trees. Currently only one B-Tree is in use by this filesystem and it is used to store the location of file data. The fsBNodeContainer structure contains two other structures. The fsBlockHeader structure and the BTreeContainer structure.
Field Type Description
bheader struct fsBlockHeader Standard block header.
btc struct BTreeContainer Contains information about the B-Tree and its nodes contained in this block.
<pre>
struct fsBNodeContainer {
struct fsBlockHeader bheader;
struct BTreeContainer btc;
};
</pre>
First try and locate the Root block. It should start with "ROOT". SFS has two of these, one at the start of the partition and one at the end. One of the fields contains the block size, which will be the size of all important SFS blocks.
The root block has the root object container, which contains information about files and directories in the root directory. The object
containers basically hold one or more smaller structures that represent files and directories. Scanning them all should give you a list of
files and directories.
The root block also has the root of the Extent B-Tree. This is a standard B-Tree structure (not a binary tree) that is used commonly in
all kinds of system, you can read about how they work on Wikipedia if needed. The B-Tree holds the information about *where* all the data is
located for your files.
To recover your files, I'd do this:
* Find one of the root blocks, if not present, then figure out the block size your disk was using, and scan every block in turn to see if it
looks like an ObjectContainer (check the fsBlockHeader's ID, check if the ownblock number is equal to the block you are currently scanning,
and check its checksum). So if you currently have block 12, and you see a block with the correct id, and ownblock = 12 and its checksum is good,
then that's probably a valid ObjectContainer.
* With all the ObjectContainers found, you can extract filenames and directory names from these, but also the number of their first data
block (in the field data) and the file size. For small files (less than blocksize) this data block will be enough to recover the data.
For larger files, you might be lucky and all the remaining blocks are found after the first one (if the file was defragmented). You can't be
sure of that though so...
* For larger files, you need to find all the BNodeContainers. You could scan these in the same way you found all the ObjectContainers (look for
blocks with the correct id, ownblock number and checksum).
* With all the BNodeContainers found, you can try looking up the first data block of a file in the B-Tree structure. This is a bit complicated
-- the B-Tree consists of non-leaf nodes (blocks that only contain pointers to other B-Tree blocks), the isLeaf flag indicates this. Or it
can be a B-Tree leaf block. The leaf blocks contain extra information per entry (see https://hjohn.home.xs4all.nl/SFS/extents.htm)
<pre>
struct fsExtentBNode {
ULONG key;
ULONG next;
ULONG prev;
UWORD blocks;
};
</pre>
The key should be a block of a file (the first of a range), that is 1 to 65535 block long (depending the "blocks" field). If the file is split
up into more parts, then "next" will contain block number of the next range of blocks. You need to look this up again in the B-Tree
structure to find out how large it is.
You can for the most part ignore the other structures (bitmap, admin containers). The fsObjects and B-tree containers is what you'll need to
recover the data.
====Resources====
<pre>
rom/storage/mmakefile.src
rom/storage/storage.conf
rom/storage/storage_device.c
rom/storage/storage_ids.c
rom/storage/storage_init.c
rom/storage/storage_intern.h
rom/storage/storage_mount.c
rom/storage/storage_unit.c
</pre>
<pre>
rom/storage/includes/device.h
rom/storage/includes/unit.h
rom/storage/includes/volume.h
rom/storage/storage_intern.h
</pre>
<pre>
</pre>
*[[Aros/Developer/Docs/Resources/ACPI|acpi.resource]]
*[[Aros/Developer/Docs/Resources/Battclock|battclock.resource]]
*[[Aros/Developer/Docs/Resources/Bootloader|bootloader.resource]]
*[[Aros/Developer/Docs/Resources/Cia|cia.resource]]
*[[Aros/Developer/Docs/Resources/Filesystem|FileSystem.resource]]
*[[Aros/Developer/Docs/Resources/Hostlib|hostlib.resource]]
*[[Aros/Developer/Docs/Resources/Kernel|kernel.resource]]
*[[Aros/Developer/Docs/Resources/Misc|misc.resource]]
*[[Aros/Developer/Docs/Resources/Processor|processor.resource]]
==Debugging Code==
Please use the [http://sourceforge.net/tracker/?group_id=43586&atid=439463 AROS Bug Tracker] if any issues are found.
GRUB Command line list
<pre>
sysdebug
usbdebug - allows to see Poseidon's log in debug output
</pre>
How do I get debugging out of InitResident ? If running i386 hosted on linux sysdebug=initresident on command line.
This way you can enable any of listed flags. sysdebug=all stands for "everything"
Have an executable (crosscompiled C++ code) which has 6 MB size on disk, but after loading it in memory, 250 MB RAM is taken. Any software that would split AROS executable into ELF part which would show actual size values?
readelf -S executable
it will show you all sections in elf file, including sizes and requested alignment.
objdump -h filename
That's will give you a quick overview of the sections and sizes. Ignore all the .debug.* sections.
Would hazard a guess that you have a large .bss section. That's pretty common in C++.
Next step:
nm—size-sort filename | grep ' [bB] '
The last few will be your biggest consumers. Would suggest -C to demangle the symbols... ;)
Suggest profiling the program (just use some printf's in the main loop for time spent in each part), it usually is quite easy to spot slow parts in games or apps.
If someone has '#define IPTR ULONG' somewhere. To see where that define is, redefine IPTR in the source code that fails, just above the line that fails, and the preprocessor will tell you where it was defined first.
===How to setup gdb with AROS/hosted===
Download AROS sources (AROS-xxxxxxxx-source.tar.bz2, where xxxxxxxx is the current date) and AROS contrib sources (AROS-xxxxxxxx-contrib-source) from
Untar-bzip2 and cd to the unpacked archive directory.
> tar -xvjf AROS-xxxxxxxx-source.tar.bz2
> cd AROS-xxxxxxxx-source
Check the link to "contrib" (contrib-source) inside directory, e.g. correct like this:
> rm contrib
> ln -s ../AROS-xxxxxxxx-contrib-source.tar.bz2 contrib
Make sure you have the correct locale setting, otherwise compilation will fail at some point. See [http://aros.sourceforge.net/documentation/developers/compiling.php#setting-the-locale-to-iso8859 here] (or link below) for more on that. You might have to enter this:
> export LANG="en_US.ISO-8859-1"
Now configure for a debug build - see "./configure --help" for more - here are two examples:
> ./configure—enable-debug=stack,modules,symbols
> ./configure—enable-debug=all
You may "make" now, or choose a separate directory for your build (e.g. for easy removal), for example if compiling for i386 architecture you could create a directory like this:
> mkdir linux-i386
> cd linux-i386
> ../AROS/configure—enable-debug=stack,symbols,modules
When done configuring you're ready to go:
> make
Building AROS takes some time - minutes on fast machines (e.g. 2.5 GHz quadcore), up to hours on slower machines.
The result will be AROS Linux hosted with gdb debugging enabled.
See aros.org documentation for more on compiling AROS, including more [http://aros.sourceforge.net/documentation/developers/compiling.php --enable-debug] options.
When finished, enter bin/linux-i386/AROS directory (replace "linux-i386" with your compilation target platform, e.g. linux-x86_64, etc.) inside the unpacked archive directory. This directory contains the required .gdbinit file for properly running AROS inside gdb.
> cd bin/linux-i386/AROS
Run AROS (here: with 128MB of memory) from gdb:
> gdb—args boot/aros-unix -m 128
or
> gdb—args boot/arosboot -m 128
(gdb) r
Watch the shell output - in case AROS complains about "LoadKeyCode2RawKeyTable: Loading "DEVS:Keymaps/X11/keycode2rawkey.table" failed!" you should also see some instructions on how to create a keymap table. (see link above "more on compiling", too.)
Quit gdb, and try default keymap table:
(gdb) q
The program is running. Quit anyway (and kill it)? (y or n) y
> cd ../../..
> make default-x11keymaptable
Re-run AROS, as described above. Try e.g. RAros (= right windows key) + W to open a shell. If this doesn't work you have to create a keymap table yourself, quit gdb again, and make a new keytable:
> make change-x11keymaptable
A window will open. Watch the window's title bar, and follow the instructions.
When done, re-run AROS. RAros + W should now open a shell.
Next, compile your program with gdb support.
When you start GDB is there a warning which says
warning: File "<whatever>/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to ...
If so start gdb with "-ix .gdbinit"
<pre>
Summary - In short:
* build AROS with debugging support (i.e. ./configure --enable-debug=all)
* build your application with debugging support (i.e. option -g)
* run AROS in the GNU debugger (you may use the GUI frontend "ddd" which simplifies usage a bit)
* start your application
* use the commands "findaddr" and "add-symbol-file" as written in the debugging manual
* if the debugger doesn't find the source code of your application use the "dir" command of the debugger.
</pre>
===How to use gdb===
In AROS open a shell, then (in host shell) use CTRL-Z to go into gdb. Use "b Exec_CreatePool" (one of the functions used early on by startup code in programs) to add a breakpoint, then "cont" and gdb will interrupt somewhere early during startup of "program". Use "bt" to show backtrace and "loadseg" for "??" entries. One of them will be for "program". After that you can use "disassemble program".
One thing you need to make sure is that .gdbinit you have in your build directory is the same as in source tree. It has been modified some time ago, but the build system does not refresh it - you need to copy it manually
To recap, please read our debugging [http://aros.sourceforge.net/documentation/developers/debugging.php manual]:
To detect segfaulting when loading, try...
./configure—enable-debug—with-optimization="-O2"
Because crash or no crash may depend on optimization. For newer compilers maybe this helps...
--with-optimization=-"-O2 -fno-strict-aliasing"
One way to make crashes less random (more easily reproducible) is to activate the munging of free memory in rom/exec/freemem.c which is normally commented out:
<pre>
Index: freemem.c
===================================================================
--- freemem.c (revision 34289)
+++ freemem.c (working copy)
@@ -154,11 +154,12 @@
* created with their TCB placed in the tc_MemEntry list. The workaround
* is to avoid munging when FreeMem() is called with task switching disabled.
*/
+
/* DOH! it doesn't work even this way. What's wrong???
- *
- * if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
- * MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
*/
+
+ if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
+ MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
}
</pre>
Mungwall can be turned on at runtime. Currently this works in all hosted versions. Just specify "mungwall" on kernel command line and it works. It can work on native too. In order to enable it you need to parse kernel command line, and if "mungwall" is present, set EXECF_MungWall bit in IntExecBase.IntFlags.
This needs to be done before the first AllocMem() for obvious reasons. And never reset back this flag! If you change it on a working system, you are doomed.
Hosted ports do the processing in rom/exec/prepareexecbase.c --enable-debug=mungwall option in configure still works but is going obsolete. A kludge in rom/exec/allocmem.c is responsible for this and it needs to be removed when the transition is done.
BTW, on i386-pc port it can be activated by "mungwall" argument on command line, you don't need to rebuild AROS.
New mungwall affects not only AllocMem()/FreeMem(), but also pools. I also tested it with AllocAbs(), seems to work correctly.
Runtime mungwall works on:
* pc-i386
* pc-x86_64
* linux-i386
* linux-x86_64
* darwin-x86
* linux-ppc
Works on all hosted ports, if the port itself is working.
* amiga-m68k
* Not on sam440-ppc and efika-chrp-ppc, even if they would be able to be built at moment. Does not work on (for now, need NVRAM support)
When starting my freshly rebuilt i386-linux-aros which was compiled with full debugging support I get sometimes the error "Program exited with code 0377". Add the following to your .gdbinit:
set follow-fork-mode child
Here are some of the custom AROS gdb functions (defined in ".gdbinit" file) to resolve "in ?? ()" entries in backtrace:
<pre>
#0 0xb7ffd424 in __kernel_vsyscall ()
#1 0xb7e2a657 in sigsuspend () from /lib/libc.so.6
#2 0xb7c63900 in ?? ()
#3 0xb7c640e3 in ?? ()
#4 0xb7c641e0 in ?? ()
</pre>
You can use
loadseg 0xb7c63900
loadframe 2
or
loadbt
and some others. Use "help " for a little help text. If the commands do not work try "loadkick" first.
Use "thistask", "taskready", "taskwait" to get list of AROS tasks. "bttask " shows backtrace of a task which is in ready or in wait queue and "loadseg" to resolve "??" entries in it's backtrace ("loadframe" would not work as it assume current running task).
===Native debugging tools for AROS===
to enable debugging at boot time entering the GRUB menu editing line (E key) and adding "debug=memory" to your boot line, then press Ctrl+X to complete booting.
SYS:Tools/Debug/'''Bifteck'''
Open a shell and enter the line below to run Biftek and grab the debug messages collected in RAM into a text file.
tools/debug/bifteck > ram:debug.txt
and certainly does not open a window. It is a shell tool and only dumps data located from the debug location.
It is therefore important to 'catch' that debug data as soon as possible (before it gets overridden). You should invoke bifteck at the first opportunity before doing anything else. You can use the TO option to store bifteck output to a file or you can pipe it manually to a file.
SYS:Tools/Debug/'''Sashimi''' - displays error messages
One suggestion is to do a bug() debugging. Each time bug() is executed it will be output on sashimi.
You include <aros/debug.h> and place bug("something\n"); in your source code at location though which control passes.
To get the output - open an aros shell
SYS:Tools/Debug/sashimi > RAM:out.txt
'''Ctrl C''' to end the output to the RAM Disk.
# open shell, and type
# ram: (to switch to ram drive)
# System:Tools/Debug/Sashimi > mylogfile.txt
# open AHI prefs using wanderer (or use another opened shell)
# play test sound
# close AHI prefs
# shell still open with Sashimi running: press ctrl-c to break Sashimi and return to prompt.
# in shell: copy mylogfile.txt System: (or to your required location)
SYS:Utilities/'''Snoopy''' - monitors OS function calls, run "Sashimi" to see Snoopy's output
SYS:Tools/'''WiMP''' - the Window (and Screens) Manipulation Program
You can use the -E option of gcc to find out how preprocessor macros are expanded.
===Errors===
crash in strcasecmp usually means that one of its arguments is NULL.
empty space between these two names, prossibly some invisible character
Old Amiga [http://www.amigacoding.com/index.php?title=Guru_codes&redirect=no Guru Codes]
If the crash is in intuition. Sometimes, if it relates to text, a null pointer sets it off.
an uninitialised pointer can have any address (this is a common fault).
Compiling on 64bit, Many old code would not properly typecast when doing pointer-integer conversions and thus at least throw a warning. This can easily be located and fixed.
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
* Fix (change IPTR/SIPTR back to ULONG/LONG) the few places which really rely on ULONG/LONG being exactly 32 bit. That's for things like pixel (ARGB) buffers, structs written/read to disk, colormaps, but probably not much else.
Then again, many current compilers also throw a warning when you try to assign a pointer value to an integer and the integer is possibly too small. This happens under .NET for example when a 64 bit pointer is assigned to something like an ULONG - so exactly the case which you described.
=== AI ===
<---
Model <---> Agent ---> End user
Gemini LMStudio
etc
Recent, self hosting on laptops, mini pcs or desktops with '''quantization''' 4bit has reduced memory requirements but still require 16Gb+
*[https://lmstudio.ai/download LMstudio single gpu],
Google Gemma 4 Model
*[ 12B QAT]
Alibaba Cloud's [https://huggingface.co/ Qwen] team series of large language models LLMs
*[https://huggingface.co/models?other=qwen3 Qwen 3], [],
*[https://huggingface.co/models?other=qwen2 Qwen 2], [https://huggingface.co/Qwen/Qwen2.5-Coder-32B qwen 2.5 Coder],
Small Claude Model
*[https://github.com/sipeed/picoclaw picoclaw]
Bigger LLMs but with settings
*[https://ollama.com/download Ollama single gpu]
*[https://github.com/ggml-org/llama.cpp/releases llama.CPP multi gpus],
*[ VLM multiple gpus],
#Training learning using 1+ high end GPUs at least 16GB VRAM per GPU card or 64Gb+ of unified, 16Core CPU with at least 64Gb of RAM system memory, though training can take weeks
#Inference with custom asics or GPUs
=== Linux ===
<syntaxhighlight lang="c">
/* 1. Header for your name,date,purpose of program.
2. Pre-processor directives. This will include the #includes for files you want to add.
3. Includes for function prototypes if necessary.
4. Main()
Create Pointers for Libraries and any Window you want to open.
5. Open necessary libraries.
6. Check if open exit program if fail.
7. Open a window exit program if fail.
8. Add your program
9. Close Window
10 Close Libraries.
11 End Program. */
/* standard os included headers <.h> */
#include <dos/dos.h>
#include <dos/dosasl.h>
#include <dos/dosextens.h>
#include <dos/exall.h>
#include <dos/rdargs.h>
#include <exec/memory.h>
#include <exec/types.h>
#include <utility/utility.h>
#include <intuition/intuition.h>
/* define as unresolved external references (proto/xxx.h) and compiler will link to auto(matically) open library */
#include <proto/arossupport.h>
#include <proto/dos.h>
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/graphics.h>
#include <proto/cybergraphics.h>
#include <proto/datatypes.h>
#include <proto/icon.h>
#include <workbench/workbench.h>
#include <workbench/icon.h>
#include <datatypes/pictureclass.h>
#include <proto/muimaster.h>
#include <libraries/mui.h>
#include proto/bsdsocket.h
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* my own headers ".h" */
#define CTRL_C (SetSignal(0L,0L) & SIGBREAKF_CTRL_C)
#define isDir(fib) ((fib)->fib_DirEntryType >= 0)
#define ARG_TEMPLATE "FILE/A,ALL/S,QUIET/S,W=WIDTH/N,H=HEIGHT/N,M=METHOD,DEFTOOL"
int main(void)
{
return retval;
} /* main */
</syntaxhighlight>
If you used c++, there is not yet c++ support in our shared library system.
The easiest way to create / compile a shared library would be to use the AROS build system but the libraries can be created manually. You have to create a ROMTAG structure and some header files.
A shared library is built with the %build_module macro with a line like this:
%build_module mmake=MetaTarget modname=mylib modtype=library files=SourceFiles
This macro can build different AROS module types, like devices, Zune classes, HIDDs, etc.
<pre>
##begin config
version 1.0
##end config
##begin functionlist
void func1(LONG a, LONG b)
int func2(char *s, ULONG a)
##end functionlist
</pre>
There is more [http://aros.sourceforge.net/documentation/developers/sys-dev/libraries.php here]
Alternatively,
<pre>
#ifndef LIB_H
#define LIB_H
#define __NOLIBBASE__
#include <exec/libraries.h>
#include <exec/semaphores.h>
#include <dos/dos.h>
#ifdef __AROS__
//#include <aros/debug.h>
#define reg(x)
#define __saveds
#endif
#define USESYSBASE struct ExecBase *SysBase = Base->My_SysBase;
struct MyTestBase
{
struct Library My_Test_Lib;
struct ExecBase *My_SysBase;
APTR My_SegList;
int testint;
};
#endif
</pre>
<pre>
/*--------------------------------------------------------------------------*/
/* Resident header written for mytest.library */
/*--------------------------------------------------------------------------*/
#define __NOLIBBASE__
#define VERSION 1
#define REVISION 0
#define LIBHEADNAME mytest
#define LIBHEADNAMESTR "mytest"
#define COMPDATE "04.10.2015"
#define VERS "1.0"
#define LIBBASETYPE struct MyTestBase
#define LIBBASETYPEPTR LIBBASETYPE *
#include <aros/debug.h>
#include <exec/exec.h>
#include <proto/exec.h>
#include <exec/resident.h>
#include <exec/nodes.h>
#include <exec/libraries.h>
#include <aros/symbolsets.h>
#include "lib.h"
const UBYTE lib_name[] = LIBHEADNAMESTR ".library";
const UBYTE lib_id[] = "$VER: " LIBHEADNAMESTR ".library " VERS " (" COMPDATE ") by ALB42\n";
extern const APTR FuncTable[];
AROS_UFP3 (LIBBASETYPEPTR, InitLib,
AROS_UFPA(LIBBASETYPEPTR, Base, D0),
AROS_UFPA(BPTR, seglist, A0),
AROS_UFPA(struct ExecBase *, sysbase, A6)
);
static struct LibInitStruct
{
IPTR LibSize;
const APTR *FuncTable;
const struct DataTable *DataTable;
APTR InitFunc;
}
const LibInitStruct =
{
sizeof(LIBBASETYPE),
FuncTable,
NULL,
(APTR)InitLib
};
const struct Resident romtag =
{
RTC_MATCHWORD, /* match word */
(APTR)&romtag, /* back pointer */
(APTR)(&romtag + 1), /* skip pointer */
RTF_AUTOINIT | RTF_EXTENDED,/* flags */
VERSION, /* version */
NT_LIBRARY, /* type of module */
0, /* init priority */
(STRPTR)lib_name, /* module name */
(STRPTR)lib_id + 6,
(APTR)&LibInitStruct,
REVISION, NULL
};
AROS_UFH3 (LIBBASETYPEPTR, InitLib,
AROS_UFHA(LIBBASETYPEPTR, Base, D0),
AROS_UFHA(BPTR, seglist, A0),
AROS_UFHA(struct ExecBase *, sysbase, A6)
)
{
AROS_USERFUNC_INIT
Base->My_SegList = seglist;
Base->My_SysBase = (APTR)sysbase;
Base->testint = 0;
USESYSBASE
bug("InitLib\n");
if (!set_open_libraries())
{
set_close_libraries();
return NULL;
}
return Base;
AROS_USERFUNC_EXIT
}
AROS_LH1(LIBBASETYPEPTR, LibOpen,
AROS_LHA (ULONG, version, D0),
LIBBASETYPEPTR, Base, 1, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibOpen\n");
(void)version;
Base->My_Test_Lib.lib_OpenCnt++;
return Base;
AROS_LIBFUNC_EXIT
}
__saveds APTR LibExpungeInternal(LIBBASETYPE *Base reg(a6))
{
USESYSBASE
APTR seglist;
bug("LibExpungeInternal\n");
if (Base->My_Test_Lib.lib_OpenCnt)
{
return 0;
}
seglist = Base->My_SegList;
Forbid();
Remove((struct Node*)Base);
Permit();
FreeMem((APTR)Base - Base->My_Test_Lib.lib_NegSize, (LONG)Base->My_Test_Lib.lib_PosSize +
(LONG)Base->My_Test_Lib.lib_NegSize);
set_close_libraries();
return seglist;
}
AROS_LH0(BPTR, LibClose,
LIBBASETYPEPTR, Base, 2, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibClose\n");
if (!(--Base->My_Test_Lib.lib_OpenCnt))
{
return LibExpungeInternal(Base);
}
return 0;
AROS_LIBFUNC_EXIT
}
AROS_LH1(BPTR, LibExpunge,
AROS_LHA(LIBBASETYPEPTR, Base, D0),
struct ExecBase *, sysBase, 3, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
(void)sysBase;
USESYSBASE
bug("LibExpunge\n");
return LibExpungeInternal(Base);
AROS_LIBFUNC_EXIT
}
AROS_LH0(LIBBASETYPEPTR, LibReserved,
LIBBASETYPEPTR, Base, 4, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibReserved\n");
return 0;
//return (APTR)LibReserved();
AROS_LIBFUNC_EXIT
}
// Space for your own functions
// do not forget to update the FuncTable as well
AROS_LH1(int, TestFunction,
AROS_LHA(int, TestValue, D0),
LIBBASETYPEPTR, Base, 5, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("TestFunction\n");
Base->testint = TestValue + Base->testint;
return Base->testint;
AROS_LIBFUNC_EXIT
}
// Functable -> Table of all functions in the Library, in right order - important!
const APTR FuncTable[] =
{
&AROS_SLIB_ENTRY(LibOpen,LIBHEADNAME,1),
&AROS_SLIB_ENTRY(LibClose,LIBHEADNAME,2),
&AROS_SLIB_ENTRY(LibExpunge,LIBHEADNAME,3),
&AROS_SLIB_ENTRY(LibReserved,LIBHEADNAME,4),
&AROS_SLIB_ENTRY(TestFunction,LIBHEADNAME,5),
(void *)-1
};
// AutoInit stuff
void *__PROGRAM_ENTRIES__symbol_set_handler_missing;
void *__LIBS__symbol_set_handler_missing;
// end of AutoInitStuff
</pre>
Makefile
<pre>
VPATH =
CFLAGS = -O2 -g -fomit-frame-pointer -W -Wall -Wno-parentheses
CC = i386-aros-gcc
LD = i386-aros-gcc
LDFLAGS = -nostartfiles -Wl,-Map -Xlinker linkermap
LIBS = -lautoinit -llibinit
STRIP = i386-aros-strip --strip-unneeded --remove-section .comment
OBJS = lib_header.o
all: mytest.library
mytest.library: $(OBJS)
$(LD) $(LDFLAGS) $^ $(LIBS) -o $@
lib_header.o: lib_header.c lib.h
clean:
rm -f *.o *.library *.ppu testlibrary linkermap
</pre>
Porting UNIX library to AROS - dealing with static variables which would make it easy to port such libraries to AROS, keeping the benefits of sharing them on disk, but losing the benefit of actually sharing them in memory.
Our problem arises by the fact we want to share the actual code (the .text section of the library) and constant data, but we need to have per-task .bss and .data sections. If we get rid of our intention to share the .text and .rodata sections, things get quite easy: just load and relocate the library whenever it's open, by whoever it's open. It's like statically linking the library into the executable, except that the final linking is done at runtime.
In the V0 branch, in workbench/hidds/hidd.nouveau was committed pcimock.hidd. This is a pci driver that allows mocking real PCI devices under linux-hosted. The main idea is to be able to run the real hardware driver under linux-hosted with as little changes as possible (some changes will always be needed though unless someone wants to write complete device simulator) so that driver's code paths can be executed and debugged using gdb. This was a very helpful capability when porting nouveau. Now it is externalized from nouveau.hidd and can be used by other people porting drivers. The pcimock.hidd can currently mock 4 different nvidia cards, 1 AGP bridge and also mock irq.hidd.
What's the difference between this driver and the pcilinux.hidd? I used that one to develop many different HW drivers for aros. As far as I understood the intention of pcilinux.hidd it is supposed to get access to real hardware that is running under linux. The pcimock.hidd goal is to mock the hardware. For example my dev box is a PCIE system, but I still would like to run the AGP codes paths in nouveau under linux-hosted to check if they don't seg fault. The other case would be to run codes paths for hardware that the developer does not have (Fermi cards in my case). In the case of pcimock.hidd, the AROS driver's code paths will execute as long as you add proper mocking (for example fill in PCI config area or values for registers in BARs). This is an advantage for ported drivers - the code should already work (since it worked on another system) but there might have been mistakes made during porting which can be detected easily with gdb.
In case you are writing your driver from scratch, pcilinux.hidd hidd will give you more advantage, since you can actually access the real hardware from linux-hosted.
== Misc ==
===APL, MPL, BSD, GPL and LGPL Licences===
The majority of AROS sources in licensed under AROS Public License ([http://aros.sourceforge.net/license.html APL]) which (to a degree) protects us from someone taking AROS sources and not contributing improvements back (for example MorphOS took some AROS source and then contributed changes back)
It is written to allow the use of AROS code in other open source or commercial projects without exception whilst providing a mechanism so that improvements/additions can find their way back to the original source in one form or another.
There are "3rd" party applications used by AROS that do not fall under this license, which are an extra "Contrib" download for convenience.
Anyone can port GPL-ed network and sound drivers as AROSTCP and AHI are GPLed. Direct using (porting) [http://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs GPL]-ed code in other parts of AROS (gfx, sata, usb) is not possible because AROS license is not compatible with GPL. You need to utilize permissive licensed code like BSD or MIT/X11.
BSD and MPL license are the closest to APL.
APL however is not so compatible with LGPL/GPL.
LGPL case - you cannot statically combine APL code with LGPL. You can, however thank to LGPL being "lesser" restrictive, use LGPL dynamically loaded libraries in APL codes.
GPL case - you cannot combine APL code with GPL in any way if there is no explicit clause by GPLed code authors allowing that. If you do combine APL with GPL in "bad" ways described above - you have a problem (you violate GPL). This problem might result in everything in AROS becoming GPL or everything running or AROS becoming GPL (here I'm not sure really). The other scenario is that you are not allowed to legally distribute such code at all. To be honest I have grasped how to violate GPL, but I'm still no exactly sure what happens when you violate it (but I'm sure it's not anything nice)
GPL software can run on top of non-GPL "system components" (see system components exception of GPL), but the other way around (non-GPL using GPL) leads to problems. This means applications like scout, or Quake III are ok (in the majority of cases).
Theres no reason GPL drivers cannot be ported - but they cant be in AROS's ROM (requires linking APL code with GPL), nor can AROS depend on them (e.g. they must use existing apis).
If they are launched (dynamically linked) by a user action that is allowed. It is also allowed to distribute such binaries together for convenience.
GPL is not about statical or dynamic linking but is about executing process and function calls.
These components - SFS, isapnp, Zune texteditor, AHi, network drivers, freetype, openuirl, BHFormat, Edit and (" dynamically loaded libraries") are LGPL, not GPL. Mesa/Nouveau stuff is MIT. Some user tools are GPL though.
'''AROS (system)'''
* system components (libraries/classes/devices/etc) cannot be GPL as they would propagate GPL to complete system as well as GPL is not compatible with MPL from which APL is based
* system components can be LGPL v2 or a permissive license (MIT/BSD)
* system applications can be anything you like (but still I would prefer APL or permissive so the code can be reused if needed)
'''Contrib:'''
* no rules - contrib does not impact AROS system since nothing in AROS system depends on contrib.
About stealing code: The chances of this happening is exactly the same whether we are APL or GPL. If any closed-source option wanted to do it, there is no one that can validate otherwise. MorphOS has used some AROS codes, but contributed changes back.
The rationale behind APL is that while it guarantees that the original developer will get the improvements back (to a certain degree - file based), the person who uses the codes does not have to open his original codes. BSD does not guarantee that the original developer gets improvements. GPL requires the person using the codes to open his codes as well.
The copyright holders needs to stay - we just need information from them that the codes are available under APL (for example a checked-in file like in case of Poseidon). We don't do transfer of copyrights.
; Ultimately what can and cannot be done is up to the author(s) - not the licence.
===AROS source code tree===
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-trunk.txt
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
Found this interesting (non-GPL) licensing 'anomaly' - to keep in mind for distributors.
Programs that lose their license if sold ("non-profit only" licensed):
contrib/aminet/comm/term/TinyTerminal
contrib/aminet/dev/basic/bwBASIC
contrib/aminet/text/edit/xdme
contrib/fish/aroach
contrib/fish/lotto
contrib/fish/shuffle
contrib/fish/touch
+ cdvdfs.
Here is a list of all the GPL/GPLv2/GPLv3 licenses fossology found, what have explicit licenses in their comments.
excluded LGPL, BSD/GPL dual licensed and programs (such as Prefs/Edit and BHFormat)
<pre>
AROS/rom/dbus/include/ AFL_v2.1 ,GPL_v2+ (supposedly AFL < 3 is GPL incompatible)
AROS/workbench/classes/zune/betterstring/include/ GPL_v2+
AROS/workbench/classes/zune/texteditor/include/ GPL_v2+
AROS/workbench/classes/datatypes/gemimage/ GPL_v2+ GPL
AROS/workbench/classes/datatypes/degas/ GPL_v2+
AROS/workbench/libs/openurl/README: GPL
AROS/workbench/network/smbfs/documentation/ GPL_v2
AROS/workbench/network/smbfs/source_code/ GPL_v2+
AROS/workbench/network/stacks/AROSTCP/bsdsocket/kern/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/mmakefile.src conf.h GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/sys/ CMU ,GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/net/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/api/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/conf/conf.h: GPL_v2
AROS/workbench/network/stacks/AROSTCP/netinclude/net/radix.h: CMU ,GPL_v2
AROS/workbench/devs/AHI/AHI/ GPL_v2+
AROS/workbench/devs/AHI/AddAudioModes/ GPL_v2+ AROS/workbench/devs/AHI/AddAudioModes/COPYING: GPL
AROS/workbench/devs/AHI/Docs/texinfo.tex: GPL_v2+
AROS/workbench/devs/AHI/COPYING: GPL
AROS/workbench/devs/AHI/Drivers/EMU10kx/ GPL_v2+
AROS/workbench/devs/AHI/AHI-Handler/ GPL_v2+
AROS/workbench/devs/networks/rtl8029/ GPL GPL_v2+
AROS/workbench/devs/networks/pcnet32/ GPL GPL_v2+
AROS/workbench/devs/networks/ppp/LEGAL: GPL
AROS/workbench/devs/networks/atheros5000/ GPL_v2+
AROS/workbench/devs/networks/rhine/ GPL_v2+
AROS/workbench/devs/networks/nForce/ GPL_v2+ GPL
AROS/workbench/devs/networks/prism2/ GPL GPL_v2+
AROS/workbench/devs/networks/fec/LEGAL: GPL
AROS/workbench/devs/networks/rtl8139/ GPL GPL_v2+
AROS/workbench/devs/networks/etherlink3/ GPL GPL_v2+
AROS/workbench/devs/networks/intelpro100/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8169/ GPL GPL_v2+
AROS/workbench/devs/networks/emac/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8168/ GPL GPL_v2+
AROS/workbench/devs/networks/realtek8180/ GPL_v2+
AROS/workbench/devs/networks/via-rhine/via-rhine.c: GPL_v2+
AROS/workbench/devs/networks/via-rhine/ GPL GPL_v2+
AROS/workbench/devs/networks/e1000/ GPL_v2
AROS/workbench/devs/networks/sis900/ GPL GPL_v2+
</pre>
AHI: it has special provisions (COPYING.DRIVERS). The library is LGPL, preferences software is GPL and drivers can be anything without breaking GPL/LGPL.
Network stack: well, we are long overdue for a new, IPv6 enabled network stack anyway, anyone interested? ;) Seriously though it seems like the glue code is GPL and as all the drivers. However some of the drivers are our own code, so they could be relicensed to LGPL.
Same filter as the AROS trunk list. These should all be libraries or plugins - no programs.
<pre>
contrib/regina/utsname.h: GPL_v2+
contrib/mui/classes/nlist/include/default-align.h: GPL_v2+
contrib/mui/classes/nlist/include/amiga-align.h: GPL_v2+
contrib/mui/classes/BWins/include/MUI/BWin_mcc.h: GPL
contrib/mui/classes/BWins/include/BWin_private_mcc.h: GPL
contrib/mui/classes/BWins/COPYING: GPL_v2
contrib/mui/classes/BWins/MCC_BWins.readme: GPL_v2
contrib/mui/classes/thebar/include/default-align.h: GPL_v2+
contrib/mui/classes/thebar/include/amiga-align.h: GPL_v2+
contrib/gfx/libs/wazp3d/LEGAL: GPL
contrib/gfx/libs/wazp3d/Wazp3D.readme: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.c: GPL
contrib/libs/mpega/ GPL_v2+
</pre>
http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
===Types===
On AROS following rules apply:
<pre>
1. BYTE/UBYTE is 8bit, WORD/UWORD is 16bit, LONG/ULONG is 32bit, QUAD/UQUAD is 64bit, the types are comparable with stdint types (int8_t, int16_t, int32_t, int64_t)
2. IPTR/SIPTR are integer types large enough to fit pointer, that is sizeof(IPTR) = sizeof(APTR) = 4 on 32bit system, and = 8 on 64bit system
3. ti_Data in TagList is large enough to hold a IPTR/APTR type.
4. never store a pointer in integer of type LONG. It may work (if the pointer has upper 32bits clear), but does not have to. Compiler should warn you about that.
5. If you are unsure about point 4, allocate your memory with MEMF_31BIT flag set. But don't expect that AROS internals will do the same.
</pre>
point 4 is actually important.
* UBYTE/BYTE for 8bit
* UWORD/WORD for 16bit
* ULONG/LONG for 32bit
* UQUAD/QUAD for 64bit
<pre>
UBYTE Unsigned 8 bit integer variable (byte).
BYTE Signed 8 bit integer variable (byte).
UWORD Unsigned 16 bit integer variable (word).
WORD Signed 16 bit integer variable (word).
ULONG Unsigned 32 bit integer variable (longword).
LONG Signed 32 bit integer variable (longword).
FLOAT 32 bit IEEE floating point variable.
UQUAD Unsigned 64 bit integer variable.
QUAD Signed 64 bit integer variable.
DOUBLE 64bit IEEE floating point variable.
BOOL Boolean variable, TRUE and FALSE are also defined in exec/types.h.
VOID Void.
APTR A generic pointer for multiple purposes - Arrays.
STRPTR A pointer to a null-terminated string.
IPTR Really important in AROS, the only way to declare a field that can contain both: an integer or a pointer.
</pre>
if you want to write really portable app, you may be interested in standard datatypes defined in C99: int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, intptr_t, uintptr_t. They are all defined in inttypes.h include file.
In exec/types.h the following short-cuts are typedef'd. They are used often in AROS, so you should nearly always include exec/types.h and soon only they will be removed from sys/_types.h include, all types are now defined in include files named aros/types/xxx.h.
(Preparation for C library split; sys/xxx.h include will only be available there when compiling with POSIX C library)
Compiler specific types, like int and long might change their size. In case of AROS, similar to linux, int remains 32 bit whereas long grows to 64 bits in size.
If you use Amiga-like data types, i.e. BYTE/UBYTE, WORD/UWORD, LONG/ULONG and QUAD/UQUAD or the C99 standard types (uint8_t and so on, see stdint.h include) then you should have less issues to solve than by using types without size guarantee.
Of course, all pointers grow to 64 bytes using 64bit cpu. Most of the code can be just recompiled and will work. In rare cases, where e.g. pointers are casted to integers, a special care must be taken. Especially in the cases, where pointer is casted to LONG/ULONG (this code will break on 64 bit AROS) e.g. '#define IPTR ULONG'.
With compiler delint patches which the majority of them are simple casting issues to make the compiler happy. Notice some of the changes involve introducing double casts. In very recent versions of GCC. Yes, the bulk of the double casts are for converting 32 bit addresses (ie from a 32 bit PCI DMA address register) to a 64 bit pointer. First cast is to IPTR (to expand to 64 bits, and prevent sign extension if the address is above 0x7FFFFFFF), and then to APTR.
ULONG != IPTR except on 32bit .. so if you need to store pointers make sure and use IPTR and not ULONG (which some old code does). For this reason things like Taglist elements are 64bit (since the tag data can be a pointer).
If your passing items on the stack you should use the STACKED attribute to make sure they are correctly aligned (on 64bit all items on the stack are 64bit..)
There is more issues like using "== 0L" causes problems.
===Endian===
*BE
*LE
Use the macros from <endian.h> instead making a guess based upon architecture defines
<pre>
#if _BYTE_ORDER == _BIG_ENDIAN
#elif _BYTE_ORDER == _LITTLE_ENDIAN
#else
+
#error <whatever.h> - Byte order for this architecture is unsupported!
</pre>
===SVN and GIT===
If you want to help develop AROS OS itself, you can
* view current GIT/SVN entries [http://aros.sourceforge.net/ Aros Org website] or [https://github.com/aros-development-team/AROS Github], [https://github.com/ezrec older ezrec mirror], [https://github.com/michalsc/AROS/ older mirror], [https://trac.aros.org/trac/timeline TRAC], [],
* awaiting update [http://repo.or.cz/w/AROS.git git repo], [http://www.ohloh.net/p/aros/commits ohloh] or [https://svn.aros.org/svn/aros/trunk/ svn repo] and access [Git version git://repo.or.cz/AROS.git here],
* deprecated [https://www.gitorious.org/aros/aros/commit/a7fda9e ARIX commits] or [https://gitorious.org/aros/aros GIT old]
If you have SVN access (early 2015 introduced a new SVN server, create a new account at trac aros org) and/or have obtained the source [http://aros.sourceforge.net/download.php AROS site] - you can compile the current build tools/environment using:
> make development
and follow this [http://aros.sourceforge.net/documentation/developers/compiling.php#building procedure] or [https://github.com/apiraino/aros_guide Guide]
https://trac.aros.org/trac#Developing
If you plan on contributing back changes, please post information about such changes first on this [http://mail.aros.org/mailman/listinfo/aros-dev/ mailing list] for more experience developers can validate whether they are correct.
Then there are the nightly build machines. They svn update before the build and run configure as one of the next steps. autoconf might be added to the nightly build scripts.
Our build relies on packages downloaded from Internet (SDL for example) - it always worked this way. The minimal requirement (when just building core AROS) is binutils and gcc. If you build contrib as well, you need many more packages to be downloaded.
https://gitorious.org/aros/aros/commits/crosstools-II
git://gitorious.org/aros/aros.git
Branch crosstools-II there is only one commit on top of ABI_V1
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-x86_64
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-x86_64
</pre>
and
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-i386
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-i386
</pre>
build OK.
:''More information: [[Aros/Developer/Maintainer|AROS Maintainer Docs]]''
===SDI Calls===
Integrate the 'SDI'-headers to allow easier porting to all amiga-like platforms.
<pre>
PUTCHARPROTO( PutTheChar, char c, struct SPrintfStream *s )
{
// REAL CODE
}
</pre>
have "SDI_compiler.h" and "SDI_hook.h" included
its more organized like
#include SDI/SDI_hook.h
than
#include SDI_hook.h
option 1 --- i also use when back porting from amiga's..
<pre>
#ifdef __AROS__
#include SDI/SDI_hook.h
#else
#include SDI_hook.h
#endif
</pre>
also
you can add the -i include/sdi/ location if you do not want to add or edit any files.
Defining HOOKPROTO to IPTR name(struct IClass * cl, Object * obj, Msg msg); solved the problem
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order. examine compiler/include/aros/symbolsets.h (AROS_LIBREQ)
compiling mui stuff for aros setting -std=gnu99 is necessary (i have had -std=c99 most of the time).
===Locale with Flexcat===
Most languages have a locale, but not every app is localized, the only thing needed is to translate the "catalog" files. It is a case of locating the correct catalog and saving the translated version.
For every app that lacks of your language catalog and is localized anyway, you should find (in the sources) files related to locale:
* file.cd = catalog descriptor, contains base msg, with internal language (usually english)
* language.ct = catalog translation, contains every translated msg, indexed as in the file.cd.
Compare with other localized apps... Then, "make my_app-catalogs" should create and install your translated catalogs. ex : for, saying, sys:prefs/wanderer:
on root of AROS sources, type:
"make workbench-prefs-wanderer-catalogs"
then (if you changed the .cd file):
"make workbench-prefs-wanderer"
For apps not localized, you have to adapt their code to support it, if it is possible...
noticed the original .cd file has many (//) strings at the end of any voice, so added them also to the .ct file.
That (//) is only for cd files. I'm highly recommending to use FlexCat for updating ct files, e.g. like this:
flexcat app.cd deutsch.ct newctfile deutsch.ct
You'll get error checking and new entries are marked in the resulting ct file.
When editing .ct files, only change those lines containing translation and perhaps version string, nothing else.
The rest is up to the relevant tool, flexcat. In order to update your translation, type in the following in your shell:
flexcat xyz.cd xyz.ct NEWCTFILE xyz_upd.ct COPYMSGNEW
This way you will not only make sure you have correct translation file but flexcat also pre-fills newly added strings with "*** NEW *** text. Even better tool for checking cd/ct/catalog files is catcheck, but this one is sadly only available for AmigaOS/68k...
Some languages have variations, like portugues from portugal and portugues from brasil differs...
This is the way to go. I will have a look at language files, but basically if those two languages differ you have to do two separated set of translation files, yes.
(you could create a brazilian slang language localization too)
* At system level localization for one language is a dot language file.
(ex: locale:languages/klingon.language)
* At app level localization is a dot catalog file
(ex: locale:catalogs/klingon/system/libs/dos.catalog)
* At sources level, the dot ct file, and "$language" dot cd files and some building framework.
(ex: catalogs/my_app.ct catalogs/klingon.cd catalogs/mmakefile.src support.c support.h)
Please, use Flexcat to generate CT files:
FlexCat wanderer.cd NEWCTFILE=deutsch.ct
Then fill the first 2 lines with something useful:
<pre>
## version $VER: wanderer.catalog 1.1 (9.2.2006)
## language deutsch
</pre>
You can even update the CT-File: (This adds the new strings)
FlexCat wanderer.cd deutsch.ct NEWCTFILE=deutsch.ct
To compile a catalog you only need the .cd file and your translation (.ct file):
FlexCat multiview.cd deutsch.ct CATALOG=MultiView.catalog
[http://murks-ide.svn.sourceforge.net/viewvc/murks-ide/trunk/src/Catalogs/flexcat_linux?revision=100 Linux version of FlexCat]
: [http://aros.sourceforge.net/documentation/developers/app-dev/localization.php#localization-for-non-developers More information]
A script which compares the required version (i.e. the version which an application/module etc. tries to open) with the version of the existing CT files. The result is in this table:
https://github.com/aros-translation-team/translations/wiki/Progress
The following cases are highlighted:
n/a i.e. CT misses at all
version in existing CT file is lower than the required version
It might be a bit difficult to participate if you haven't worked with Git before but alternatively you can send your CT files to our Slack channel.
When the ct file has been generated via flexcat (flexcat keyshow.cd NEWCTFILE=spanish.ct) it has the following header:
---------------------------------------------------------------------------------------------------------------
## version $VER: <name>.catalog <ver>.<rev> (04.01.2021)
## language nolanguage
## codeset 0
;
---------------------------------------------------------------------------------------------------------------
Those values <ver>.<rev> are the version and revision of the CT file for the languaje or are the values of the application being localized?
The <ver> part must match with version which the application tries to open. You can find the value either in the column "Required Version" in the table which I've linked above, our you can look in the git repository. For keyshow it would be https://github.com/aros-translation-team/keyshow. You can find in the file "catalog_version.h" the right version number.
The <rev> part starts for new CT files with 0 and should be increased every time the CT file is updated.
Updated several files and created a few more that were missing on the spanish catalog.
The catalogs are in Git repositories at https://github.com/aros-translation-team
a) You tell me your Github user name. I'll invite you. You can work directly with the Git repositories.
b) You create Github forks of the catalog repositories and create pull requests.
c) You send the CT files to mrustler gmx de
===C Utils Misc===
The AROS source uses at several places the __DATE__ macro to fill the date entry of a $VER tag. Problem is that c:version doesn't understand that date format (e.g. "May 21, 2011"). As a result the output of e.g.
> "version c:shell full" contains "(null)". Is extending the version command to understand the format of __DATE__ the right solution for that problem?
AmigaOs compilers should use __AMIGADATE__ macro or similar form, if it isn't implemented it could be emulated in makefile: -D__AMIGADATE__=\"$(shell date "+%d.%m.%Y")\"
BTW. I think DD.MM.YYYY is better format than "Month DD YYY" because "Month DD YYY" is not localized in any way.
"strnicmp" shouldn't work with NULL pointers
The Situation:
compiled a linklib using c++ object files (using the c++ cross compiler).
compiled a C stub that uses the linklib (using the c++ cross compiler).
Try to link them together (using the c++ cross compiler) with C object
files (using the normal target c compiler) that need to use -nostartup
= cant do because using the c++ files pulls in arosc (for stdio etc.) -
so wants to have the autoinit stuff present.
What can I do about this??
If it is possible to manually open it then what do I need to do exactly?
=== ENV ===
The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact. However in some cases (like this one) it is not required.
99% of the time that statement is true (not required) for pretty much every file in ENV: or do people change their default icons - and prefs settings - every boot?
There seem to be a bad habit of late with developers changing things to reflect their own personal preference when the change isn't actually necessary - It would be nice if people could refrain from doing that in the tree without at least discussing it on the dev-list first (and with good reasoning unless they committed said work in the first place..)
We're not keen on the pollution of the "S:" dir: it's meant to be for scripts. What's wrong with "ENV:"?
Only the fact that it takes up RAM. I understand that for PCs with several gigabytes of RAM this is
irrelevant. But let's remember about other machines. The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact.
However in some cases (like this one) it is not required.
How about implementing in the style of HappyENV then? RAM-disk handler that falls through to reading from ENVARC: if there is no such file stored in it already. Removes RAM usage for unchanged files, removes the need to copy ENVARC to ENV in startup-sequence.
Shouldn't be too hard to make from AmberRAM, or even just extend AmberRAM to provide this service.
Is it feasable to build a special version of AmberRAM handling ENV: that will try and copy the requested file from ENVARC: if it isnt found in ENV: ?
Additionaly it could mark closed "files" as untouched - and expunge them from ENV: after a period of time to free up additional RAM:, or when the system is running low on free memory?
Silenty disappearing files may not be a good plan. Would be nice if the following would work:
ASSIGN :ENV SYS:Prefs/Env-Arc ADD
ASSIGN :ENV RAM:ENV ADD
Where new files put in ENV: end up in RAM:ENV, and opening files looks in RAM:ENV first, then SYS:Prefs/Env-Arc
Well - that's essentially what im proposing but without the assigns - or need for a RAM:ENV directory.
Adding it as a feature of AmberRAM sounds like the most memory efficient way (one handler to load in RAM) but that's only if it is possible to make it handle ENV: additionally to RAM:, and if it is even possible to add the proposed functionality (...and how to make it enable it when accessing ENV:).
===(AS)MP support===
If one has to recompile software for SMP multi core, is there any thing special one has to do to get software to run?
Use task.resource if you need to query information about what tasks are running, and clear msgports completely when they are allocated.
Most code should not need Forbid. Use Semaphores, Messages etc. to sync your own code.
Accessing system structures is a different thing. Use the proper API whenever possible.
How single structures will be protected in the future is still a moving target, at least it is not documented. And you should never use undocumented stuff
Ideas on for SMP multi-core
Another suggestion is ... Forbid/Permit function calls are meant to halt multitasking so as no other task could intervene with what ever the calling task is doing, e.g. setting semaphores. Disable/Enable calls are meant to halt interrupts and as a side effect they also halt task switching.
One option is to make it compulsory to protect shared resources with semaphores and forbid the use of simple Forbid() calls as to protect something. Setting semaphore should be done if possible with atomic instructions (check and alter in one instruction). Or make the second concurrent ObtainSemaphore call halt the second calling task and force if possible a task switch which ever gives better results.
Semaphores could store the owning tasks task pointer instead of boolean to make things easier.
As long as the CPU initiates the DMA transfers through the OS, and the OS ensures that the transferred memory is within the region accessible to the user initiating the transfer, everything is fine. The CPU is the conductor, and the CPU by that has the control of which DMA transfer is initiated and which is not.
All you need to do is to write device drivers reasonable. Hint: CachePreDMA and CachePostDMA exist.
All the Os has to do is to verify that the memory regions to be transferred are valid, and prohibit direct access to the DMA control registers from user space. None of these algorithms imply huge costs.
The current OS design doesn't really allow virtual memory in first place, Forbid() is again the problem.
[http://www.tbs-software.com/guide/index.php?guide=autodocs.doc%2Fmemory.doc&node=1 memory.library API] seem to low level. IMHO the programs should not know how the swapping is implemented. I would just go for one new memory flag
MEMF_SWAPPABLE that indicates that a certain memory region or a whole memory pool won't be accessed during Forbid()/Permit() etc. It only solves part of the problem, it only implements virtual memory and not memory protection. For the latter you need to be able make certain memory inaccessible by other programs, some memory read-only for one task and read-write for other tasks, etc. And I think this should be done in the same Address Space in order to avoid you constantly need to swap between different address spaces.
So to summarize, if there are programs using this API we may provide a wrapper layer to get them working but I am not convinced this API should be the reference API with whom to provide VM to AROS programs.
=== Variadic ===
variadic functions (i.e. functions with an arbitrary amount of arguments).
<pre>
#include <stdarg.h>
[...]
char * STDARGS GetKeyWord(int value, char *def, ...)
{
[...]
va_list va;
[...]
va_start(va, def);
[...]
va_end (args);
</pre>
Please keep with using stdarg rather than having va casted to a LONG * type and varargs handled manually. Doing so, prevents tons of casting, where a simple va_arg can be used. So, string = *((char **) args) instead of string=va_arg(va, char *).
<pre>
#include <stdio.h>
#include <stdarg.h>
int printf (const char * format, ...)
{
int retval;
va_list args;
va_start (args, format);
retval = vfprintf (stdout, format, args);
va_end (args);
fflush (stdout);
return retval;
} /* printf */
</pre>
Couldn't find varargs.h or stdarg.h. and have no use for AROS_SLOWSTACKHOOKS or AROS_SLOWSTACKTAGS.
GCC looks for stdarg.h in a different place:
/bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/include/stdarg.h
Here is a path for a "normal" header:
bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/../../../../i386-aros/sys-include/aros/system.h
The use of vararg.h isn't supported by newer gcc versions. If you want your code to run on architectures that pass part of variadic arguments in a number of registers you need to use AROS_SLOWSTACK macros. Otherwise your program will not work on powerpc and x86_64 ports.
Of course the SLOWSTACK stuff is not needed in a function that can use va_list, va_start, va_arg and va_end. It's only needed if you want to write functions like DoMethod or similar.
#include <stdarg.h>
should be enough no matter if you do cross or native compiling. If it does not work, something is wrong and should be corrected.
Stdarg.h is here, Development:lib/gcc/i386-aros/4.2.2/include/
...which is part of the compiler's default include paths. In other words, #include <stdarg.h> works out of the box, indeed. (sorry, I should have just tried it before invoking "search" or "find"...)
furthermore, myprintf() as shown above won't work, because...
printf(format, args);
...is wrong - the second argument does not match printf() prototype, it expects a argument list, but args is of type va_list (obviously) - so one has to use...
vfprintf(stdout, format, args);
...instead, just like in the original printf(), and add fflush(stdout).
additionally, one could use...
int myarg = va_arg(args, int);
...between va_start() and va_end() to access individual arguments, where each call to va_arg() returns an argument casted to the desired type (here: "int") from the list given (here: "args") and advances to the next one.
wrapping up vfprintf() and modifying the format string now is a major speedup! no more backslash-n typing! this has been haunting me for years!
On MOS and AmigaOS, the NewObject variadic function is kept in the static library. It takes most of the parameters on the stack - thanks to that the implementation of NewObject calls the NewObjectA function. Everything works perfect, and the typical MUI macros may be easily used.
This, however, is not the case when you compile for AROS. Here, NewObject is a variadic macro, not a function. Thanks such approach we do not need any custom compiler in case of systems, where the arguments of variadic functions are passed partially through registers and partially through the stack (This is the case of PPC and x86_64, this is also the reason why both OS4 and MOS require specially patched compilers).
Since NewObject is a macro, the gcc's preprocessor expects the list of macros arguments enclosed within parentheses. In MUI macros it is not the case. Imagine the following test code:
<pre>
#define foo(a,b) ((a)+(b))
int loosy_function(int a, int b)
{
return foo(a,b);
}
</pre>
This will compile and work, but the following piece of code:
<pre>
#define foo(a,b) ((a)+(b))
#define END )
int loosy_function(int a, int b)
{
return foo(a,b END;
}
</pre>
will fail with the error: unterminated argument list invoking macro "foo"
There are two ways of fixing your issue. Either create your new objects outside this huge MUI constructions, and in there use just a pointer, or get rid of the "End" macro and exchange it with "TAG_DONE)".
Badly written software is, for example, casting va_list to an APTR or even doing so as if va_list were a plain table of function arguments. Such code needs to be fixed because it has very few chances to work anywhere but on author's machine ;)
The problem is nOt that they assume sizeof(APTR) == 4, its that they often do not use APTR, and use ULONG to store pointers exclusively. If the code used APTR/IPTR as it should - most of the "problems" wouldn't exist.
It would also help if people would start using variadic arguments properly. Many coders do assumptions which shall never be made. Instead, they should consider using stdarg.h file and all the va_* functions :)
===ABI===
In the head of our SVN repository there are now only 3 directories:
<pre>
admin/
branches/
trunk/
</pre>
We have added two extra dirs there: tags and imports
As discussed when we branch ABI V0 and [[Aros/Developer/ABIv1|ABI V1]] it would also be good to introduce tags. Normally this is done in a directory in the repository called tags. Currently we don't have this directory there. (We do have branches/tags that is a hack I have done because one doesn't have write access in the top directory. I think this directory is not clean and should be removed).
The second directory I would introduce is an imports directory for implementing vendor branches as discussed in the svn [http://svnbook.red-bean.com/en/1.5/svn.advanced.vendorbr.html book]. Currently we use code from several different projects and that code is stored inside the AROS tree; we seem to have problems with keeping this code up to date and merge our changes upstream. Maintainers of up stream projects like the MUI classes etc. have complained about this (to put it lightly).
Introducing these vendor branches would make it easier to see what changes we have made and make patches to be sent upstream and make it easier to import newer upstream versions of their code. Although can't "copy" the vendor branch into the main branch because it's already there, so start with a "merge".
Yes, the first step to make the code already in the repository compatible with the vendor branches will be the most difficult. The best way to do it the following way:
* first import the version on which the current AROS code is based into the vendor branch
* then import the new version over it in the vendor branch
* finally merge the difference between these two version in the AROS code present in the repository.
For example, place NList directly under vendor and not in a subdirectory like "contrib/zune/classes".
Actually after we have a stable [http://aros.sourceforge.net/documentation/developers/specifications/drafts/abiv1.php ABIv1 (2012 or later)]. We need to move away as much as possible from the contrib directory to some other repositories. The reasons are ...
* The AROS repository should be for the core AROS code.
* other contrib projects should be tried to be compiled for all Amiga-like OSes.
* The release scheme for AROS and the other programs should not have to be aligned.
* Binary versions should be provided on aros-archives and on aminet and/or OS4Depot to install them. (Some clever programs should maybe be provided to make the life of distribution developers easier).
* avoid parallel forks of programs for AROS and the other amiga OSes.
If there is really a need for a place for hosting AROS projects we may investigate setting up such a server but then including bug tracking, governance, maillist, etc. for each project separately. I personally think there are already enough places like sourceforge, google code, savannah, etc. where people can go for hosting such projects.
==Links==
* http://amigadocs.hokstad.com
* http://amigadocs.hokstad.com/doku.php?id=dev-links
* http://www.liquido2.com/tutorial/index.html
* Amiga(TM) OS4 has a [http://www.ast-workshops.co.uk/os4pg/ workshop] page and hope to produce a [http://amigaworld.net/modules/newbb/viewtopic.php?topic_id=31117&forum=42#549091 book] soon. [http://www.solie.ca/articles/map/map.html Brief Guide].
In the future...?
*AROS 64bit - SMP, Vulkan with OpenGL compability layer
*AROS 32bit - keep for historic reasons
What would you like to see implemented in AROS?
ABIv1 completed, SMP (x86_64), SendMsg()/GetMsg() to support memory protection between target and destination, in that order. Michal Schulz and Jason McMullan have been toying with the question "What are the minimal changes needed to the AmigaOS 3.1 API to support SMP"? The answer so far seems to be "few, but subtle". For example, SysBase->ThisTask is no longer meaningful on SMP, but FindTask(NULL) is. Disable() and Forbid() are shockingly bad on performance, but adding a spinlock semaphore mode to SignalSemaphore will help new code on SMP.
Leveraging a 'common' OS with a lot of machine support (Linux, MacOS, Windows, QNX, etc.) is something that AROS has been doing for quite a long time, and it is the biggest strength of AROS. This AROS experience and programming model, in the same way the Google's Android layers on top of Linux, or MacOS X layers on top of the Darwin/BSD kernel, as a first step
* The graphics + layers subsystem could be implemented as a shim on top of a OpenGL ES implementation (ie on any modern Linux system, or the RaspberryPI's hardware, MacOS X, etc).
- This also allows every window to be on its own 3D surface with backing store, allowing Wanderer (or a Commodity)
rearrange/zoom/animate app windows without having to send a pile or refreshes to them
* Use OpenAL as the sound backend
* AROSTCP would be a thin layer over the native OS's TCP/IP stack
* dos.library, poseidon.library, and input.device would be slim shims over the native APIs
* If we move to loading all libraries' into the application's task space, instead of a single global instance of the library, this will allow SMP and MMU more easily.
- Yes, it will require a lot of work in the libraries to make this transition
- Yes, I do think it will be worth it in the end.
* A 'fat binary' install format (or, maybe LLVM bytecode) that can be 'flattend' to the target architecture on installation.
So, what would this 'AROS of the future' look like?
* AmigaOS 3.x style API, with certain 'fundamental changes' to message passing
* Uses the underlying OS' device drivers, so more AROS developer effort can go to user-visible features and bugfixes
* Allows AROS applications to run side-by-side with the OS's native apps
And why would anyone want to program on such a system?
* AROS applications would run on any system that has the AROS Framework installed
* AROS applications are pixel-for-pixel the same on all platforms.
* Develop with the knowledge that you are guaranteed OpenGL and OpenAL, and the rest of the AROS Framework
an option for mmake to dump its dependency of metatarget in a graphviz[*] input file. This should make it possible to visualize the dependencies and hopefully be inspiration for cleaning up some mess, circular or unneeded dependencies and so on.
AmigaOS gcc 9 [https://franke.ms/amiga/gcc.wiki Old versions] able to create binaries for AmigaOS and [https://eab.abime.net/showthread.php?t=93813 Upgrading gcc versions]
==References==
{{reflist}}
{{status|50%}}
{{BookCat}}
8t6x3fw7vo5r9in70enfnbn83lgt116
4656306
4656256
2026-08-05T06:36:08Z
Jeff1138
301139
4656306
wikitext
text/x-wiki
{{ArosNav}}
==A technical overview of AROS==
Google translation [http://translate.google.com/translate?hl=en&sl=auto&tl=de&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs German], [http://translate.google.com/translate?hl=en&sl=auto&tl=fr&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs French], [http://translate.google.com/translate?hl=en&sl=auto&tl=it&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Italian], [http://translate.google.com/translate?hl=en&sl=auto&tl=es&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Spanish], [http://translate.google.com/translate?hl=en&sl=auto&tl=hi&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Hindi], [http://translate.google.com/translate?hl=en&sl=auto&tl=zh-CN&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Chinese],
[http://translate.google.com/translate?hl=en&sl=auto&tl=ru&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Russian],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pl&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Polish],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pt&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Portuguese]
{{Uncited}}
AROS,<ref>[http://aros.sourceforge.net/download.php References and sources]</ref> like AmigaOS (TM), is a [[w:Message passing|message-passing]], [[w:Preemption (computing)|preemptive]] [[w:Multitasking|multitasking]] [[w:Operating system|OS]].
It uses [[w:Reentrant (subroutine)|re-entrant]] shared libraries to save memory space.
AROS is based around an executive library kernel (Exec) and two other libraries:
* Exec (the "kernel", which is not a kernel in the modern sense),
* Intuition (graphics and GUI, integrated into the system) and
* AmigaDOS (Disk Operating System, the Metacomco's Tripos modified to work with Exec).
The design philosophies of AmigaDOS and Intuition are rather different, the former adopting a C-like API and the latter creating an [http://www.basden.demon.co.uk/amiga/amiga.oo.html object-oriented], message passing aware environment for the programmer. The system base is the only absolute address in AmigaOS (located at 0x00000004) this does differ with AROS as AROS SysBase is automatically provided (no $4) but everything else is dynamically loaded. The OS is well known for delivering high performance due to its close connections with the hardware, while simultaneously having the flexibility to support re-targetable graphics (Cybergraphics) and retargetable audio subsystems (AHI).
: Diagram showing relationships of libraries to system needed
Remember, AROS is a [http://en.wikibooks.org/wiki/Aros/Developer/ABIv1 research] operating system, and while all contributions to the base AROS code are welcome, please contact the dev list first for any core changes. Writing applications for AROS does not have this requirement.
While AROS appears and feels almost feature complete, it is still [[Aros/Developer/IncompleteAPIs|missing a small number of functions]] from the Amiga API - as well as a few implementations of [[Aros/MissingFunctionaility|core functionality]]. There are also a number of user applications that, while not strictly part of the AmigaOS 3.1 environment, need to be written.
[https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1201 This thread provides] information for setup, [http://www.aros.org/documentation/developers/index.php documentation] and whether you are interested in core OS changes and/or writing/porting software apps
*you compile directly under AROS, which can be running on either real hardware, virtual hardware
*in hosted mode under linux/window, cross-compile from that host OS (save your files as ISO-8859-15 encoding instead of UTF-8)
The repository for the [https://github.com/aros-development-team/AROS current development version ABIv1], the [https://github.com/deadw00d/AROS/tree/alt-abiv0 repository for current stable PC version ABIv0 with backported ABIv1 features is located which is used on AROS One and Icaros x86 based distros]
Any [https://github.com/aros-development-team/AROS/issues bugs / issues can be added]
We have a [https://arosdevteam.slack.com/archives/CUFV48U3H slack here], discord on [https://discord.gg/UKp9qdEBuQ Discord@AmigaDev],
==Software Development for AROS==
===Programming languages===
Apart from 'The Developer Environment', which primarily supports C/C++ code, there are other programming languages available for AROS:
'''Scripting'''
:[[Aros/User/DOS|DOS]], included in all
:[[Aros/Developer/Docs/LUA|LUA]], included in all or [http://www.airsoftsoftwair.de/en/prod_hollywood.html Hollywood]
:REXX [[Aros/Developer/Docs/Rexx|Regina (AROS' ARexx)]], included in all
:Python [ Info], included in Icaros
:Ruby [http://www.ruby-lang.org/en Info]/[http://archives.aros-exec.org/index.php?function=browse&cat=development/language download]
'''Basic'''
:[http://amos.pspuae.com/AmosProManual/contents/c1.html '''Amos Pro'''] [http://amos.pspuae.com/index.php?action=forum#1 compatible] [http://www.amigacoding.com/index.php/Main_Page commands] (all incomplete)
::[http://sourceforge.net/projects/xamos/ X-Amos]
::[http://sdlbasic.sourceforge.net/ SDLBasic] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://alvyn.sourceforge.net/ Alvyn] ([http://www.dusabledanslherbe.eu/AROSPage/MISC.14.html download])
::[[Aros/Developer/Basic/Basic4SDL|Basic4SDL]] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://www.ultimateamiga.co.uk/index.php?topic=9425.0 Project Deimos],
:'''Blitz Basic''' [http://aros-exec.org/modules/newbb/viewtopic.php?post_id=46537#forumpost46537 none on AROS]
:: [http://www.amiforce.de/main.php Amiblitz] on JanusUAE amiga(TM) emulator
:'''Amiga Basic'''
:: [ ACEBasic]
'''Misc'''
:[[Aros/Developer/Docs/E|AmigaE Portable E]]
:[https://ae.arosworld.org/index.php?board=11.0 FreePascal FPC Aros-Exec thread], [http://archives.aros-exec.org/index.php?function=browse&cat=development/language Download], FreePascal for AROS has its own [http://fpcaroswiki.alb42.de/ Wikibook],
:[[Aros/Developer/Docs/LLVM|LLVM]],
===Where to get the C/C++ Environment===
If you want to develop for AROS, its generally easier to be running linux hosted AROS development environment especially for C++, cross compiling the code. That's how most developers now are doing it. g++ is used to compile owb web browser as well as some other AROS software. If you were hoping for a rich set of C++ libraries or classes defined for the OS feature set, you might be disappointed.
AROS Native compiling is possible, but you're much more likely to run into the odd bug(s) in the dev environment since it gets little testing and fixing by other developers.
Is there a sftp software or scp over ssh available?
Maybe. At least the security part would be handled by [https://github.com/jens-maus/amissl amissl] [https://archives.arosworld.org/index.php?function=browse&cat=network/misc port]. DOpus5 has recently added sftp support. See here for a [https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1974&highlight=ssh&pid=12073#post_12073 ssh scp client]
[https://arosdevteam.slack.com/join/shared_invite/enQtOTc4Mzg0NDIzNzQ0LWQ2NWZmNmMwNGIwNGEyNTgxNzU3MGFjMTk3ZThmOTQ1MTVjMzhmNTllYWQ0ZTUxMjBjMGE0Y2VjMDJmNTc5MzI#/shared-invite/email Slack Dev Forum]
====Cross compilers from Windows or Linux====
*Windows WSL2 walkthrough can be [https://arosnews.github.io/how-to-cross-compile-aros-hosted-wsl/ found here]
you want to build AROS. No problem.
Here are instructions for 64-bit:
https://github.com/deadw00d/AROS/blob/master/INSTALL.md
Here are instructions for 32-bit:
https://github.com/deadw00d/AROS/blob/alt-abiv0/INSTALL.md
And as always has been the case you can use the contrib archive to 'obtain' the development directory which contains the /native/ AROS gcc compiler and tools. That compiler is used to build AROS itself but can be used outside the AROS build process by providing --sysroot with indicated directory to cross compile for AROS.
=====Older guides for Linux hosted compiler=====
Please install these packages before moving to next step. Below is a reference list for Debian-based distributions. Reference build system was Ubuntu 18.04/20.04 amd64.
subversion git-core gcc g++ make gawk bison flex bzip2 netpbm autoconf automake libx11-dev libxext-dev libc6-dev liblzo2-dev libxxf86vm-dev libpng-dev gcc-multilib libsdl1.2-dev byacc python-mako libxcursor-dev cmake zsh mingw64
Do all of these operations under home directory of your user or another directory where your user has write permissions.
Specifically, in a section "Linux-i386", be sure first to build the cross-compiler (toolchain-alt-abiv0-i386) and only then AROS itself (alt-abiv0-linux-i386).
Clone & build
<pre>
$ mkdir myrepo
$ cd myrepo
$ git clone https://github.com/deadw00d/AROS.git AROS
$ cd AROS
$ git checkout alt-abiv0
$ cd ..
$ cp ./AROS/scripts/rebuild.sh .
$ ./rebuild.sh
</pre>
Now to the build selection below - Linux-i386
Select toolchain-alt-abiv0-i386 - Select alt-abiv0-linux-i386 (DEBUG)
Start AROS by:
<pre>
$ cd alt-abiv0-linux-i386/bin/linux-i386/AROS
$ ./Arch/linux/AROSBootstrap
</pre>
Pc-i386 Select toolchain-alt-abiv0-i386 (if not built yet) - Select alt-abiv0-pc-i386
ISO image available in alt-abiv0-pc-i386/distfiles
Now that we have linux-hosted build, we can resume native (option 2).
Run ./rebuild.sh and selection option 2. Wait until it finished, then:
<pre>
$ cd alt-abiv0-pc-i386
$ make
</pre>
Now
<pre>
$ make bootiso
</pre>
Now, your compiler is located in toolchain-alt-abiv0-i386 directory and named i386-aros-gcc. Includes are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/include and libraries are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development.lib.
This is how then can be passed to the compiler:
/home/xxx/toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot /home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development -L/home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/lib
../toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot bin/linux-i386/AROS/Development local/helloworld/helloworld.c -o local/helloworld/helloworld
Another method was using Debian like distros and download the gimmearos.sh script (on [http://archives.aros-exec.org/index.php?function=browse&cat=development/cross aros-archives]) to setup the developer environment by downloading necessary packages ...
The gimmearos script is a good start in that direction, building the cross compilers and hosted AROS environment, but gimmearos.sh might be out of date or not be completely compatible with any given linux distro.
In order to do that, you have to compile AROS yourself. Download AROS source archive not contrib. Compile AROS by entering the main directory
./configure
make
([http://aros.sourceforge.net/documentation/developers/compiling.php More on compiling AROS]). The result will be a basic AROS system without development tools.
To compile C++ on Linux, type 'make gnu-contrib-crosstools', creating the cross-compilers in ./bin/linux-i386/tools/, named i386-aros-gcc, etc.
'''Note''': Currently, to make the cross compilers usable copy 'collect-aros' from tools/ to tools/i386-aros/bin/. At the moment the cross compilers if used from the Linux command line will only find it when it's there.
If you want to compile native compilers (the Developer Environment), type 'make contrib-gnu-gcc', creating native compilers in AROS' System:Development/bin directory.
When the output needs to be stripped <code>--strip-unneeded --remove-section .comment</code>
The Obj-C backend should build out of the box.
Open contrib/gnu/gcc/mmakefile.src and search for the line which contains "--enable-languages" and add "objc" to the list of languages that follows it.
--enable-languages=c,c++,objc
Better make it—enable-languages=c,c++,objc,obj-c++
ObjC++ is broken as soon as you try to use exceptions, but that might change in future GCC versions and it does not hurt having it there already.
Do you need a cross-compiler or a real compiler? In the first case you can get away with just downloading the proper gcc archive, apply the patch and proceed with the normal gcc build. In the case of a real cross-compiler then when downloading the contrib sources, also need to download the normal sources, place the contrib sources into a directory called contrib, need to install autoconf+automake+perl+python, call ./configure, cd into the subdirectory and type make.
to rebuild GCC with host == build == target == i386-pc-aros. So just get the vanilla sources and apply the patches without bothering about the build system?
[https://vmwaros.blogspot.com/2019/10/a-pre-configured-development-machine.html pre-configured VM environment vmware virtual machine to develop AROS and AROS software]
'''64 bit'''
'''32 bit'''
A good option for multiple OS is [https://axrt.org/index.php?tab=download-aros AxRuntime lets developers compile their Amiga API-based applications as Linux binaries being able to utilize modern development tools available on Linux, like IDEs, debuggers, profilers, etc]
====Native compilers for AROS====
Namely gcc for C or g++ for C++ are supplied with the [[Aros/Developer/Docs#The Developer Environment|Developer Environment]], which is already '''setup''' and part of any current AROS distribution like AROS One or the nightlies
* Current GCC 6.5 (32bit) though moving to 10.5 and 15.1 (64bit)
* Older software components. GNU GCC 4.x GNU BinUtils, GNU Fileutils 4.x, GNU Textutils and others.
On single partition systems and the Boot ISO, the AROS Developer environment is installed under "SYS:Development/". Systems with multiple partitions - such as a Work: partition - tend to install it to there instead, however it can be installed manually to any location. Please remember, if moving, that you will need to correct the Development packages 'install location' env variable to point to the new locations root - look in SYS:S/startup-sequence.
<pre>
Assign Development: SYS:Development
Assign C: Development:bin ADD
</pre>
In the aros build instructions. you need to check out contrib and/or ports into your AROS source directory, as subdirs. then, assuming you are building in an external build dir, as you should, you simply configure and "make contrib" for instance or whatever submodule you might want to build.
===Beginners Tutorials in C C++===
As AROS is [http://eab.abime.net/showthread.php?t=29856 C based] API compatible to AmigaOS 3.x, so most of the information on programming C on the Amiga applies to AROS as well. Please note that there is a lot of AmigaOS 1.3 (1985-1989) and [https://www.markround.com/amigaguide AmigaOS AOS 2.x (1990-1992)] information around but OS3.1 is recommended but limited in amount.
Brief overview of what is required to write AROS Applications
# Using [[Aros/Developer/Docs/Libraries/Intuition|Intuition]] for basic screens/windows
# Using graphics within windows via 8bit [[Aros/Developer/Docs/Libraries/Graphics|graphics]] and so onto 15-16-24bit [[Aros/Developer/Docs/Libraries/CGFX|cybergraphx]]
# Load and save work to [[Aros/Developer/Docs/Libraries/DOS|dos]] disk drives
# Using the [[Aros/Developer/Zune|ZUNE GUI Environment]]
Writing native games require this extra information
# Using [[Aros/Developer/AHIDrivers|AHI audio hardware independent API]]
# Using USB joystick/joypad with the Poseidon USB stack through [[Aros/Developer/Docs/Libraries/LowLevel|LowLevel]] library
Additional features that could be added later
# Adding additional [[Aros/Developer/Docs/Libraries/Locale|Locale]] language translations to your program
# Adding a [[Aros/Developer/Docs/Rexx|AREXX/Regina]] port to your application
# Executing Amiga(TM) [[Aros/User/DOS|DOS]] commands from your application
# Using [[Aros/Developer/Docs/Libraries/Icon|icons]] (.info files) and icon tooltypes (stack, version, and program startup options)
# Local couch or IP based SANA2 networking co-op multi player gaming support
Most AmigaOS programming books are nowadays very much out of date as most are from the late 1980s and do not cover later amigaOS releases like 3.1 for example, Rob Peck's book "Programmer's Guide to the Amiga". The Amiga ROM Kernel manuals aka RKMs like Libraries (3rd edition), Devices (), the AmigaDOS manual (3rd edition) and the Style Guide may have their uses. There are some reference examples from AmigaMail and Devcon notes (available again on an Amiga developers CD 2.1).
For Arexx then "The Amiga Programmer's Guide to ARexx" by Eric Giguere, which was published by Commodore is useful as well as an "Arexx Cookbook".
Curly brackets missing - try SHIFT + ALT + 7 or 0.
* Beginners C Guide [http://www.iu.hio.no/~mark/CTutorial/CTutorial.html C Tutorial],
* [http://thecguru.com/ C for beginners],
* [http://fresh2refresh.com/c/c-basic-program/ C programming basics] for students,
* [https://www.edx.org/courses Free Online course] from American Universities
* Reference Amiga [http://amigadev.elowar.com/ API reference].
* AROS based c source can be found [[Aros/Developer/Docs/Examples|here]] and lots of example code can be found inside [https://github.com/aros-development-team AROS sources] themselves and from the contrib section of the archives from [https://github.com/aros-development-team/contrib Aros site], and study the AROS applications source code, e.g. the test programs from the Tests drawer (folder/directory). Take a look at the code of some smaller AROS programs might be a better and more up to date guide. Some old Os3 [http://www.blackfiveservices.co.uk/amiga-c/ here]
When you upload your builds, please write the architecture (like i386-aros, x86_64-aros, etc.) in the archive name
and it is also advisable to write in the field "Requirements" what ABI (ABIv11, ABIv0 or ABIv1)
===Compiling C/C++ Code===
Native, although we have a IDE Integrated Development Environment (Murks), it does lack a debugger. Whilst others use a combination of a text editor and shell to edit code. Most though use an AROS hosted on Linux to take advantage of the better GCC tools like GDB and various IDEs.
Open shell - its a menu option at the top left of Wanderer (desktop). Or by using the right Win key and w (or F12 and w) within the directory with the source code. Type in
sh
to change the amiga shell into a unix shell. You can then type in ls (unix equivalent to amiga dir). Take a look [http://en.wikibooks.org/wiki/Linux_commands here] for more commands.
For a single file program-name.c or program-name.cpp
gcc -o program-name program-name.c
or
g++ -o program-name program-name.cpp
or
g++ -o test -Wall -g main.cc texturelib.cpp xmodelib.cc -lsdl -lgl
To close the shell, click on the top left-hand corner to close (twice). Once to get back the aros shell and then again to close finally. Use [http://freshmeat.net/projects/cksfv/ cksfv] as a test.
Some source code requires the addition of Amiga API libraries, like dos, which you can flag at the compile time as
gcc -o julia.exe julia.c -ldos
For DOS use -ldos as example and if you are compiling mui codes it will be -lmui or intuition -lintuition. Other missing symbols are due to linker libraries being necessary for linking in functions that aren't in the standard C libraries. For example some source code would need added
-lz or -lm or -lpng or -larosc etc.
use this in unix line command mode to search for 'search-item' in many .c files (*.cpp for c++, etc.)
grep -l 'search-item' *.c
If the program is not executable, try using parameter fno-common
"Delete #?.o"? Or if you are using abcshell then "rm *.o"
:''More information: [[Aros/Developer/Porting software]]''
=== How to make Apps have AROS 64-bit specific support code ===
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
AROS64 already uses 64bit addressing, it just doesn't setup the MMU for more than 4GB physical memory currently.
When porting software to AROS64 it is "mostly" a case of converting ULONG's that are used to store pointers, into IPTR's instead, etc. Another quirk, is making sure items on the stack are the correct size by using the STACKED attribute for them.
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
compiling mui stuff for aros setting -std=gnu99 is necessary, had -std=c99 usually
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order.
crash which suggest memory corruption. From my experience porting from 32-bit to 64-bit these kinds of errors can happen if a pointer is passed somewhere via ULONG variable. Then half of the pointer is cut.
To generate this error, please run AROSBootstrap with -m 1024. This will allocate heap to 64-bit address space which will make these errors immediatelly visible. These types of crashes are hard to debug. Disabled as little code as possible to stop corruption from occurring and then try to read from the code where it can be broken
Crashing in tslf_freevec is another symptom of memory corruption and these memory corruptions will manifest differently on different setups.
==Coding conventions==
As the AROS core source is a shared developer experience, there are rules regarding structure and style. When it comes to your creating your own app and coding, the structure and style should be your own, i.e. you should enjoy what you do and do it so that you can understand what is going on.
===Layout===
<syntaxhighlight lang="c">
static void 1st_function()
{
program
exit(0);
}
int main(void)
{
1st_function();
2nd_function();
3rd_function();
return 0;
}
</syntaxhighlight>
<syntaxhighlight lang="c">
struct Screen * openscreen(void);
struct Window *openwindow(struct Screen *screen, const char *title, LONG x, LONG y, LONG w, LONG h);
VOID 1st_function();
VOID 2nd_function();
int main(int argc, char **argv)
{
program
return 0;
} /* main */
VOID 1st_function()
{
}
VOID 2nd_function()
{
}
</syntaxhighlight>
===General style===
This code is used by many people and therefore you should keep some things in mind when you submit source code:
* Keep things simple
* Keep the source clean
* Always know what you are doing, if not flag it and describe what needs to be done...
* Explain clearly/simply what you are doing
* Remember that you write code once but that it is read many times by many people
===Comments===
AROS uses some of the comments in the source to generate the documentation. Therefore it's necessary to keep a certain format so the tools can find their information. Other comments are ignored but they should explain what you thought when you wrote the code. If you really can't think of an explanation, then don't write the code a second time like this:
<pre>
/* This adds 1 to t */
t ++;
</pre>
What we think of is this:
<pre>
/* Go on with next element */
t ++;
</pre>
===Formatting===
This is only '''IMPORTANT''' if you are going to work on the core AROS code or contrib but not applications which may reside outside like on AROS Archives or other websites.
<syntaxhighlight lang="c">
{
/* a */
struct RastPort * rp;
int a;
/* b */
rp = NULL;
a = 1;
/* c */
if (a == 1)
printf ("Init worked\n");
/* d */
if
(
!(rp = Get_a_pointer_to_the_RastPort
(
some
, long
, arguments
)
)
||
a <= 0
)
{
printf ("Something failed\n");
return FAIL;
}
/* e */
a = printf ("My RastPort is %p, a=%d\n"
, rp
, a
);
return OK;
}
</syntaxhighlight>
Looks ugly, eh ? :-) Ok, here are the rules:
<pre>
If several lines contain similar code, put similar things below each other (see a and b);
Put spaces between operands and operators
Put braces {}, brackets [] and parentheses () below each other (d) if there is much code between.
Brackets and parentheses may be in one line if the code between is small (c)
Indent by 4 Spaces. Two indent levels may be abbreviated by one tab.
</pre>
'''Before committing please normalize the indentation - if you have a mixture of tabs and spaced - please always use spaces, 1 tab = 4 spaces.'''
The reasons for this are:
# While some editors can use an arbitrary sizes for tabs, it's a bit complicated to tell another editor which tab size was used by the one used to write the code.
# Most code in AROS was written this way and your code should look like the rest.
# You can print this code on any printer without special tools to "fix" the tabs.
# Most editors have smart tabs which do exactly this. If your editor doesn't, write a bug report.
If you have a function with many arguments (d, e) you should put the parentheses in lines of their own and each argument in one line (d) or put the first argument behind the opening parentheses (e) and each following argument in a line of its own with the comma in front. The closing parentheses is in a line of its own and aligned with the beginning of the expression (i.e. the a and not the opening parentheses or the printf()).
Use a single blank line to separate logical blocks. Large comments should have a blank line before and after them, small comments should be put before the code they explain with only one blank line before them.
If you see any TABS in AROS core sources then the suggestion is to "detab the file and commit that separately" either before or afterwards from making functionality changes. Make two commits instead of one. This makes it easier for others to see the real changes instead of having to dig through multiple lines of irrelevant diffs.
===Eliminating Global Variables===
i.e. pass variables to functions (local scope) or classes making it easier to track and debug your code.
Any time you find that you need a particular thing in 'a lot of different places', chances are that all those places are conceptually related, and so you can create a class, a namespace, a function, or some other higher-level organizational unit to represent that relationship. This makes the program easier to understand.
Bad Designs
* All variables are global.
* There are no standalone functions, only sub-procedures which act on the global variables.
* Every sub-procedure is at least 500 lines to several thousand
* Every sub-procedure has more than one task to perform
* Copy-paste is preferred to writing methods, AND subtle changes are made in the middle of the code
Good Designs
* structure program into functions (C or basic) - top-down procedural approach
* put in class(es) (freepascal or C++) - the object is fixed and you use methods to access the object
<pre>
class String_List
{
private:
list<string> m_List; // member
public:
void read_strings() { /* read strings into m_List */ }
void print_strings() { /* write contents of m_List to stdout */ }
void sort_strings() { /* sort contents of m_List */ }
void sort_strings_reverse() { /* reverse-sort contents of m_List */ }
void unique_strings() { /* remove duplicate strings */ }
};
int main()
{
String_List myList; // local
myList.read_strings();
myList.sort_strings();
myList.print_strings();
myList.sort_strings_reverse();
myList.print_strings();
myList.unique_strings();
myList.print_strings();
return 0;
}
</pre>
This way it is very easy to replace the list with new list for debugging purposes, or replacing the methods without replacing the list, when you want different results. You only have to replace the content of the local variables.
So create the structure that matches your data (linked lists, trees, arrays, etc.) and what to do with them (sorting, searching, etc.)
<pre>
.h usually contain #define #include typedef enum struct extern screen and window definitions (data structures)
.c should contains functions and algorithms
</pre>
One way to look at it is that menu headings act as the .c file and sub-menu headings as functions.
When you start a project, you place a couple of declarations in the include file. As the project continues, you place more and more declarations in the include file, some of which refer to or contain previous declarations. Before you know it, you have a real mess on your hands. The majority of your source files have knowledge of the data structures and directly reference elements from the structures.
Making changes in an environment where many data structures directly refer to other data structures becomes, at best, a headache. Consider what happens when you change a data structure.
Use good variables names to help clarify code and only comment when you need to explain why a certain programming approach was made.
You're Refactoring Legacy Code, you see a global, you want to get rid of it. How do you do this?
Exactly what to do depends on how the global is used. The first step is to find all uses of the global throughout the code, and get a feel for what the significance of the variable is and how it relates to the rest of the program. Pay particular attention to the "lifetime" of the variable (when it gets initialized, when it is first used, when it is last used, how it gets cleaned up). Then, you will probably make the global a data member of a class (for OO languages), or you will write some get/set functions. Converting to the Singleton Pattern is common, but you may discover that it makes more sense for the data element to be a member of an existing singleton, or maybe even an instance variable.
# Create a basic read method, either as a class or a global function. Replace all reads with the access method, but leave the variable defined as a global.
# Review each of the writes to the method and extract action functions one at a time. Unless two operations are coded identically in the original code, extract each write access separately.
# Change the variable scope from global to local.
# Analyze similar action functions to determine if any can be merged, i.e., there are no functional differences in the results of the function, just differences in the implementation details.
# Review the calls to the read method and see if a more complex functionality should be applied. Follow the approach for writes and unless implementations are identical, create separate access functions.
# Analyze the access functions for duplication.
As returning variables by "passing by value" are forgotten, so "passing by reference" is often used instead. The reference is a pointer to the variable so the value is remembered when returned.
Alternatives
* Hidden Globals
* Singleton Pattern
* Database or TupleSpace
* Context Object
* Dependency Injection
* Stateful Procedures
==AROS/AmigaOS APIs and Docs==
<pre>
Library:
- Private data structure
- Many public access methods
Device:
- Private data structure
- Two (BeginIO/AbortIO) access methods
Resource:
- Public data structure
- *NO* access methods
</pre>
And, being Amiga OS-compatible, there are exceptions to all of these.
===System Libraries===
The [http://aros.sourceforge.net/documentation/developers/app-dev/index.php AROS Guide To Libraries] can be used as a guide to individual commands and Old Dev Docs are used in application programming.
The generated [http://aros.sourceforge.net/documentation/developers/autodocs/ Aros AutoDocs HTML Read] or download [http://aros.sourceforge.net/download.php docs-html.bz2 from here].
Amiga/Aros styles libraries are very different from windows and linux libs. Typical .so/dll libraries are foreign to most Amiga-like OS
*[[Aros/Developer/Docs/Libraries/AROSC|arosc.library]]
*[[Aros/Developer/Docs/Libraries/AmigaGuide|amigaguide.library]]
*[[Aros/Developer/Docs/Libraries/ASL|asl.library]]
*[[Aros/Developer/Docs/Libraries/Bullet|bullet.library]]
*[[Aros/Developer/Docs/Libraries/BSDsocket|bsdsocket.library]]
*[[Aros/Developer/Docs/Libraries/CAMD|camd.library]]
*[[Aros/Developer/Docs/Libraries/Codesets|codesets.library]]
*[[Aros/Developer/Docs/Libraries/CGFX|cybergraphics.library]]
*[[Aros/Developer/Docs/Libraries/CGXVIDEO|cgxvideo.library]]
*[[Aros/Developer/Docs/Libraries/Commodities|commodities.library]]
*[[Aros/Developer/Docs/Libraries/DataTypes|datatypes.library]]
*[[Aros/Developer/Docs/Libraries/DiskFont|diskfont.library]]
*[[Aros/Developer/Docs/Libraries/DOS|dos.library]]
*[[Aros/Developer/Docs/Libraries/Exec|exec.library]]
*[[Aros/Developer/Docs/Libraries/Expansion|expansion.library]]
*[[Aros/Developer/Docs/Libraries/FreeType2|freetype.library]]
*[[Aros/Developer/Docs/Libraries/GadTools|gadtools.library]]
*[[Aros/Developer/Docs/Libraries/Graphics|graphics.library]]
*[[Aros/Developer/Docs/Libraries/Icon|icon.library]]
*[[Aros/Developer/Docs/Libraries/Identify|identify.library]]
*[[Aros/Developer/Docs/Libraries/IFFParse|iffparse.library]]
*[[Aros/Developer/Docs/Libraries/Intuition|intuition.library]]
*[[Aros/Developer/Docs/Libraries/Keymap|keymap.library]]
*[[Aros/Developer/Docs/Libraries/Layers|layers.library]]
*[[Aros/Developer/Docs/Libraries/Locale|locale.library]]
*[[Aros/Developer/Docs/Libraries/LowLevel|lowlevel.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingBas|mathieeesingbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubBas|mathieeedoubbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingTrans|mathieeesingtrans.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubTrans|mathieeedoubtrans.library]]
*[[Aros/Developer/Docs/Libraries/Mathtrans|mathtrans.library]]
*[[Aros/Developer/Docs/Libraries/MUIMaster|muimaster.library]]
*[[Aros/Developer/Docs/Libraries/Partition|partition.library]]
*[[Aros/Developer/Docs/Libraries/PopUpMenu|popupmenu.library]]
*[[Aros/Developer/Docs/Libraries/OOP|oop.library]]
*[[Aros/Developer/Docs/Libraries/Regina|regina.library]]
*[[Aros/Developer/Docs/Libraries/Reqtools|reqtools.library]]
*[[Aros/Developer/Docs/Libraries/RexxSysLib|rexxsyslib.library]]
*[[Aros/Developer/Docs/Libraries/ScreenNotify|screennotify.library]]
*[[Aros/Developer/Docs/Libraries/TTEngine|ttengine.library]]
*[[Aros/Developer/Docs/Libraries/Thread|thread.library]]
*[[Aros/Developer/Docs/Libraries/Utility|utility.library]]
*[[Aros/Developer/Docs/Libraries/Xadmaster|xadmaster.library]]
*[[Aros/Developer/Docs/Libraries/Workbench|workbench.library]]
*[https://github.com/aros-development-team/AROS/commit/c82e86b8480277998014cc327b56c7664023a52f ClassAct Reaction boopsi class]
===AROS Subsystems===
# [[Aros/Developer/Zune|Zune MUI compatible GUI]]
# [[Aros/Developer/AROSAppPackages|AROS Application Packages]]
# AHI Audio Drivers - [[Aros/Developer/AHIDrivers|Usage]]/[[Aros/Developer/AHIDriversDev|Development]]
# AROSTCP Sana2 Network Interface Drivers - [[Aros/Developer/NICDrivers|Usage]]/[[Aros/Developer/NICDriversDev|Development]]
# [[Aros/Developer/AmiSSL|AmiSSL]]
# gfx.hidd/cybergraphics Video Drivers - [[Aros/Developer/GfxDrivers|Usage]]/[[Aros/Developer/GfxDriversDev|Development]]
# IO Device Drivers - [[Aros/Developer/IODeviceDrivers|Usage]]/[[Aros/Developer/IODeviceDriversDev|Development]]
# USB Device Drivers - [[Aros/Developer/USBDrivers|Usage]]/[[Aros/Developer/USBDriversDev|Development]]
# PCI Device Drivers - [[Aros/Developer/PCIDrivers|Usage]]/[[Aros/Developer/PCIDriversDev|Development]]
# [http://www.libsdl.org/ SDL] [https://github.com/search?q=repo%3Aaros-development-team%2Fcontrib%20SDL2&type=code SDL2 commits], [https://github.com/aros-development-team/contrib/commit/c62c3c425c35bac19dadc23be092b0b13a66c76c SDL3 initial commit], []
# [[w:Gallium3D|Gallium 3D]] [http://www.mesa3d.org/ openGL aka Mesa] - [[Aros/Developer/OpenGL|Usage]]/[[Aros/Developer/OpenGLDev|Development]] [http://www.swiftless.com/opengltuts.html Swfitless]
# A small subset of GTK2 through [http://sourceforge.net/projects/gtk-mui/ MUI-GTK]
# Cairo 2D Engine - [[Aros/Developer/Cairo|Usage]]/[[Aros/Developer/Cairo|Development]]
# [[Aros/Developer/Scalos|Scalos desktop API and plugin modules]]
# [[Aros/Developer/VHI|VHI video driver]]
====HIDDs====
*[[Aros/Developer/Docs/HIDD/HIDDClass|hiddclass.hidd]]
*[[Aros/Developer/Docs/HIDD/Graphics|graphics.hidd]]
*[[Aros/Developer/Docs/HIDD/VesaGfx|vesagfx.hidd]]
*[[Aros/Developer/Docs/HIDD/ATI|radeon.hidd]]
*[[Aros/Developer/Docs/HIDD/NVidia|nvidia.hidd]]
*[[Aros/Developer/Docs/HIDD/Nouveau|nouveau.hidd]]
*[[Aros/Developer/Docs/HIDD/Kbd|kbd.hidd]]
*[[Aros/Developer/Docs/HIDD/Mouse|mouse.hidd]]
*[[Aros/Developer/Docs/HIDD/i2c|i2c.hidd]]
*[[Aros/Developer/Docs/HIDD/IRQ|irq.hidd (deprecated)]]
*[[Aros/Developer/Docs/HIDD/PCI|pci.hidd]]
*[[Aros/Developer/Docs/HIDD/PCIPC|pcipc.hidd]]
*[[Aros/Developer/Docs/HIDD/Serial|serial.hidd]]
*[[Aros/Developer/Docs/HIDD/Thunderbolt|thunderbolt.hidd]]
https://github.com/aros-development-team/AROS/commit/4f02ea691799aff3a01f60cfa5f9182c82fc57a8
HIDD are used for device/peripheral low level hardware support drivers. The HIDD system is split up into a collection of classes with a strict inheritance hierarchy. A HIDD class implements a device driver for a single device or in rare cases a group of devices and provides an interface for other programs and devices to access.
In order to maintain portability of interfaces across a wide range of hardware this interface will in general not present the raw interface to the underlying hardware. Instead it will present a generic interface that describes many different hardware implementations. This allows for the best reuse of both interfaces and code.
HIDD API is heavyweight though. You need to open a HIDD library, open oop.library, instantiate an object (even if there's no object); and object calls are more costly compared to plain library calls.
Basically your task is to implement a subclass of hidd.ata.bus for your hardware. just implementing the XXXATA__Hidd_ATABus__xxxxxx methods for the Amiga chipset - and appropriate versions of the interface_xxx.c file(s). pretty much everything in probe.c could be ignored - just write a replacement scan for relevant amiga devices and store whatever info you need in the bus data? only the "SUPPORT_LEGACY" blocks might be related.
You do not need to depend on PCI API. PCI is just a way to discover the hardware on PCs, etc.
<hidd/pci.h> includes (at some depth) <interface/HW.h>, which defines IID_HW. This comes from the 'generic' HIDD class in:
rom/hidds/hidd/hiddclass.conf
did not split up HIDD and HW because they are always used in pair. It's the same as hidd/pci.h bringing definition for: PCI, PCIDriver and PCIDevice. PCI is actually PCIHW, just the name was not changed for backwards compatibility reasons. HW is a 'hub' where HIDD instances plug in.
ATA HIDD aoHidd_ATABus_Use32Bit value is completely ignored unless ata.device first detects correct command line parameter.
Yes. Unfortunately I was unable to find any comment in code or svn history with explanations. Looked at Linux source, there 32-bit PIO is also controller driver's property. Some of them enable it, some don't.
Actually, switching the default to ON should be safe. ata.device is fail-safe at this because during IDENTIFY command it validates upper 16 bits, and if they appear to be zeroes in all 128 longwords, then 32-bit mode is switched off. But, nevertheless, I know how tricky hardware can be, so I decided not to change original behavior. If you think it's wrong in some cases, then it's possible to add one more attribute like aHidd_ATABus_Default32Bit. If set to YES, then this means that 32-bit PIO is safe to use by default.
====Devices====
*[[Aros/Developer/Docs/Devices/ATA|ata.device]]
*[[Aros/Developer/Docs/Devices/Console|console.device]]
*[[Aros/Developer/Docs/Devices/Narrator|narrator.device]]
*[[Aros/Developer/Docs/Devices/Printer|printer.device]]
*[[Aros/Developer/Docs/Devices/Trackdisk|trackdisk.device]]
*[[Aros/Developer/Docs/Devices/AmberRAM|amberram.device]]
*[[Aros/Developer/Docs/Devices/Timer|timer.device]]
*[[Aros/Developer/Docs/Devices/|.device]]
The Amiga used [[Aros/Developer/Docs/Devices|Devices]] to communicate with [http://aros-exec.org/modules/newbb/viewtopic.php?start=0&topic_id=3475&viewmode=flat&order=ASC additional hardware]. AROS has replaced these hardware devices with hidd equivalents but some are still retained for backwards compatibility.
Local libraries/devices/handlers,etc. are supposed to override the ones in ROM if their version is higher than the one in ROM.
Here is the list of commands exec default:
{| class="wikitable"
| CMD_CLEAR
| Purge the buffer of the device
|----
| CMD_READ
| Playback Control
|----
| CMD_STOP
| Stopped the activity of the device
|----
| CMD_FLUSH
| Empty the queue of commands
|----
| CMD_RESET
| Reset a device
|----
| CMD_WRITE
| Playback Control
|----
| CMD_INVALID
| Create an error
|----
| CMD_UPDATE
| Gets updated device
|----
| CMD_START
| Will restart the device
|----
|}
While most other "stuff you communicate with" in AmigaOS are devices <ref>AMIGA ROM Kernel Reference Manual: Devices, 3rd Edition. Commodore-Amiga, Inc. Addison-Wesley, 1991. {{ISBN|0-201-56775-X}}</ref> that share a [http://gega.homelinux.net/AmigaDevDocs/ common base interface]. [[Aros/Developer/Docs/Devices1.3|OS 1.3 Device Drivers]].
====Handlers====
:[[Aros/Developer/Docs/Handlers/Pipe|pipe.handler]]
:[[Aros/Developer/Docs/Handlers/Port|port.handler]]
:[[Aros/Developer/Docs/Handlers/SFS|sfs.handler]]
:[[Aros/Developer/Docs/Handlers/FAT|fat.handler]]
:[[Aros/Developer/Docs/Handlers/PFS|pfs.handler]]
:[[Aros/Developer/Docs/Handlers/NTFS|fuse.handler]]
:[[Aros/Developer/Docs/Handlers/FFS|ffs.handler]]
filesystem handlers have their own separate system consisting of completely differently structured messages that dos.library use to pass requests (for things like reading, writing, getting directory contents etc.) to them. AROS originally went with implementing filesystem handlers as devices, which might arguably be more consistent with the rest of the AmigaOS API but which is quite incompatible with AmigaOS itself. However, it made it far harder to port filesystems and the gains were comparatively small, and so there's been a long standing goal of fixing this incompatibility. It has now, June 2011, been reintroduced to all AROS flavors.
are argstr and argsize valid for the handler startup environment?
DOS/RunHandler() calls DOS/CreateNewProcTags(), and then CallEntry() (in rom/dos/exit.c) to start the handler, so yes, argstr and argsize are *present* in the call signature of the handler.
Granted, argstr will be NULL and argsize 0, but those values *are* passed to the handler function using:
<pre>
AROS_UFC3(ULONG, entry,
AROS_UFCA(STRPTR, argptr, A0),
AROS_UFCA(ULONG, argsize, D0),
AROS_UFCA(struct ExecBase *, SysBase, A6));
</pre>
Creating your own [without the whole build tree http://pagesperso-orange.fr/franck.charlet/temp/radeon.zip] and then
<pre>
make stub
make
make install
</pre>
SFS has two Root blocks, one at the start and one at the end of the disk. The Root blocks both contain the same information. They hold various information about the disk structure and have the locations of some important blocks used by the filesystem.
The Root ObjectContainer contains the Root directory Object. The name of this Object is the name of the volume. It is identical to a normal directory Object.
The Bitmap is used to keep track of free space. Each bit in a bitmap represents a single block. A set bit indicates a free block and a cleared bit a used block.
AdminSpaceContainers are used to keep track of space which has been reserved for storing administration blocks. Only the Bitmap, the Root blocks and the actual data stored in files aren't stored in administration space. Administration space is allocated in chunks of 32 blocks at a time. A single AdminSpaceContainer can hold information about a large number of such areas each of which has its own little bitmap of 32 bits.
Extents are stored in a B-Tree. The Root block holds a pointer to the root of the Extent B-Tree. Extents keep track of space in use by a specific file. Each fragment a file consists of has its own Extent. Extents are in a double linked list. The list can be used to locate the next or previous fragment of a file.
Below is the standard block header. This header is found before EVERY type of block used in the filesystem, except data blocks. The id field is used to check if the block is of the correct type when it is being referred to using a BLCK pointer. The checksum field is the SUM of all LONGs in a block plus one, and then negated. When applying a checksum the checksum field itself should be set to zero. The checking a checksum the checksum is okay if the result of the checksum equals zero. The ownblock BLCK pointer points to the block itself. This field is an extra safety check to ensure we are using a valid block.
Field Type Description
id ULONG The id field is used to identify the type of block we are dealing with. It is used to make sure that when referencing a block we got a block of the correct type. The id consist of 4 bytes and each blocktype has its own unique foure letter code.
checksum ULONG This field contains the sum of all longs in this block, plus one and then negated. The checksum can be used to check if the block hasn't been corrupted in any way.
ownblock BLCK Points to itself, or in other words, this field contains the block number of this block. This is yet another way to check whether or not a block is valid.
<pre>
struct fsBlockHeader {
ULONG id;
ULONG checksum;
BLCK ownblock;
};
</pre>
The algorithm to calculate the checksum of a block:
<pre>
ULONG calcchecksum(struct fsBlockHeader *block, LONG blocksize} {
ULONG *data=(ULONG *)block;
ULONG checksum=1;
block->checksum=0;
while(blocksize>0) {
checksum+=*data++;
blocksize-=4;
}
return(-checksum);
}
</pre>
A Root block contains very important information about the structure of a SFS disk. It has information on the location and size of the disk, the blocksize used, locations of various important blocks, version information and some filesystem specific settings.
A SFS disk has two Root blocks; one located at the start of the partition and one at the end. On startup the filesystem will check both Roots to see if it is a valid SFS disk. If either one is missing SFS can still continue (although at the moment it won't).
A Root block could be missing on purpose. For example, if you extend the partition at the end (adding a few MB's) then SFS can detect this with the information stored in the Root block located at the beginning (since only the end-offset has changed). Same goes for the other way around, as long as you don't change start and end point at the same time.
When a Root block is missing because the partition has been made a bit larger, then SFS will in the future be able to resize itself without re-formatting the disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
version UWORD The version of the filesystem block structure. You can check this field to identify what version of the filesystem your dealing with it and to see if you can handle this structure correctly. Don't try to interpret the disk's structure when this field contains an unknown version number!
sequencenumber UWORD Used to identify which Root block was written last in case the sequencenumber on both Root blocks don't match.
datecreated ULONG Creation date of this volume. This is the date when the disk was last formatted and will never be changed.
bits UBYTE Various settings, see below.
<pre>
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
reserved1 ULONG[2] Reserved, leave zero.
firstbyteh ULONG High 32-bits of a 64-bit number. This is the first byte of our partition relative to the start of the disk.
firstbyte ULONG Low 32-bits of a 64-bit number.
lastbyteh ULONG High 32-bits of a 64-bit number. This is the last byte (exclusive) of our partition relative to the start of the disk.
lastbyte ULONG Low 32-bits of a 64-bit number.
totalblocks ULONG The total number of blocks this partition consists of.
blocksize ULONG The size of a block of this partition.
reserved2 ULONG[2] Reserved, leave zero.
reserved3 ULONG[8] Reserved, leave zero.
bitmapbase BLCK Block number of the start of the Bitmap.
adminspacecontainer BLCK Block number of the first AdminSpaceContainer.
rootobjectcontainer BLCK Block number of the ObjectContainer which contains the root of the disk (this is where the volume name is stored).
extentbnoderoot BLCK Block number of the root of the Extent B-Tree.
reserved4 ULONG[4] Reserved, leave zero.
</pre>
<pre>
struct fsRootBlock {
struct fsBlockHeader bheader;
UWORD version;
UWORD sequencenumber;
ULONG datecreated;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
ULONG reserved1[2];
ULONG firstbyteh;
ULONG firstbyte;
ULONG lastbyteh;
ULONG lastbyte;
BLCK totalblocks;
ULONG blocksize;
ULONG reserved2[2];
ULONG reserved3[8];
BLCK bitmapbase;
BLCK adminspacecontainer;
BLCK rootobjectcontainer;
BLCK extentbnoderoot;
ULONG reserved4[4];
};
</pre>
AdminSpaceContainers are used to store the location and bitmap of each administration space. The AdminSpaceContainers are located in a double linked list and they contain an array of fsAdminSpace structures. There is one fsAdminSpace structure for every administration space on disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
next BLCK The next AdminSpaceContainer, or zero if it is the last in the chain.
previous BLCK The previous AdminSpaceContainer, or zero if it is the first AdminSpaceContainer.
bits UBYTE The number of bits in each in the bits ULONG in the fsAdminSpace structure.
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
adminspace struct fsAdminSpace An array of fsAdminSpace structures. The size of the array is determined by the current blocksize.
<pre>
struct fsAdminSpaceContainer {
struct fsBlockHeader bheader;
BLCK next;
BLCK previous;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
struct fsAdminSpace adminspace[0];
};
</pre>
Field Type Description
space BLCK The first block of an administration space.
bits ULONG A small bitmap which is used to determine which blocks in an administration space are already in use. The number of bits in this bitmap is determined by the bits field in the AdminSpaceContainer.
<pre>
struct fsAdminSpace {
BLCK space;
ULONG bits;
};
</pre>
The fsBitmap structure is used for Bitmap blocks. A bitmap block is used to keep track of which space is in use and which isn't for a particular area of a disk. All bitmap blocks together keep track of the free space for an entire disk. The location of the first bitmap block is known and all other bitmap blocks are stored in order after the first one.
Field Type Description
bheader struct fsBlockHeader Standard block header.
bitmap ULONG An array of ULONG's. These hold the actual information on which blocks are in use and which aren't.
<pre>
struct fsBitmap {
struct fsBlockHeader bheader;
ULONG bitmap[0];
};
</pre>
Each bit in a bitmap block (except for the block header) represents a single block. If the bit is set than the block is free, and if the bit is clear then it is full. The first ULONG in the bitmap area of the first bitmap block represents blocks 0 through 31 on the disk. Bit 31 of this ULONG is block 0, 30 is block 1, and so on. Bit 0 of the first ULONG represents block 31.
Below is a table to clarify how bitmaps work even further. The first column is the bitmap block number, the second column is the number of the ULONG in the bitmap array. The third column is the bit number in this ULONG, and the last column is the block which this specific bit, in this specific bitmap block represents.
We'll assume here that a bitmap block has room for 120 ULONG's (meaning there is room for storing 32 * 120 bits).
<pre>
Bitmap block ULONG number Bit number Block represented
1 (first) 0 31 0
1 0 30 1
... ... ... ...
1 0 1 30
1 0 0 31
1 1 31 32
... ... ... ...
1 2 31 64
1 2 30 65
... ... ... ...
1 119 0 3839
2 0 31 3840
2 0 30 3841
... ... ... ...
</pre>
The last bitmap block doesn't need to be completely used. The unused bits (which belong to blocks which do not exist) all have to be clear, to indicate that these blocks are in use.
The fsObjectContainer structure is used to hold a variable number of fsObjects structures (Objects) which have the same parent directory. Each ObjectContainer must contain at least one Object. If there is space in the ObjectContainer not used by the variable number of Objects then that space is zero filled. Objects always start at 2-byte boundaries, which means sometimes a padding byte is inserted between two Objects.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the parent Object, or 0 if this object has no parent (which is only the case for the Root directory).
next BLCK The next ObjectContainer belonging to this directory, or zero if it is the last in the chain.
previous BLCK The previous ObjectContainer belonging to this directory, or zero if it is the first ObjectContainer in this directory.
object struct fsObject A variable number of fsObject structures. The number of structures depends on the individual sizes of each fsObject structure and the blocksize. These structures are located directly after each other with at most 1 byte of padding between them to get the structures aligned on a 2 byte boundary.
<pre>
struct fsObjectContainer {
struct fsBlockHeader bheader;
NODE parent;
BLCK next;
BLCK previous;
struct fsObject object[0];
};
</pre>
fsHashTable is the structure of a HashTable block. It functions much like the hash table found in FFS user directory blocks, except that it is stored in a separate block. This block contains a number of hash-chains (about 120 for a 512 byte block). Each hash-chain is a chain of Nodes. Each Node has a pointer to an Object and a pointer to the next entry in the hash-chain. Using such a hash-chain you can locate an object quickly by only knowing its name.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the directory Object this HashTable block belongs to.
hashentry NODE An array of Nodes. Each Node represents the start of a hash-chain (singly linked). A hash-value is calculated using the name of a file or directory, and this value determines in which chain the Object is linked. If there are no entries in a hash-chain then the hashentry value is zero.
<pre>
struct fsHashTable {
struct fsBlockHeader bheader;
NODE parent;
NODE hashentry[0];
};
</pre>
To calculate the hash-value using a name of an Object as input use these routines:
<pre>
UWORD calchash(UBYTE *name) {
UWORD hash=0;
/* Calculates a hash value over the passed in string.
The end of the string can be either a NUL byte or a
slash. The hash function is the same as the one
used in FastFileSystem set to international mode. */
while(name[hash]!=0 && name[hash]!='/') {
hash++;
}
while(*name!=0 && *name!='/') {
hash=hash*13+upperchar(*name++);
}
return((UWORD)(hash % (UWORD)((blocksize-sizeof(struct fsHashTable))>>2)));
}
UBYTE upperchar(UBYTE c) {
if((c>=224 && c<=254 && c!=247) || (c>='a' && c<='z')) {
c-=32;
}
return(c);
}
</pre>
The BNodeContainer is used to store B-Trees. Currently only one B-Tree is in use by this filesystem and it is used to store the location of file data. The fsBNodeContainer structure contains two other structures. The fsBlockHeader structure and the BTreeContainer structure.
Field Type Description
bheader struct fsBlockHeader Standard block header.
btc struct BTreeContainer Contains information about the B-Tree and its nodes contained in this block.
<pre>
struct fsBNodeContainer {
struct fsBlockHeader bheader;
struct BTreeContainer btc;
};
</pre>
First try and locate the Root block. It should start with "ROOT". SFS has two of these, one at the start of the partition and one at the end. One of the fields contains the block size, which will be the size of all important SFS blocks.
The root block has the root object container, which contains information about files and directories in the root directory. The object
containers basically hold one or more smaller structures that represent files and directories. Scanning them all should give you a list of
files and directories.
The root block also has the root of the Extent B-Tree. This is a standard B-Tree structure (not a binary tree) that is used commonly in
all kinds of system, you can read about how they work on Wikipedia if needed. The B-Tree holds the information about *where* all the data is
located for your files.
To recover your files, I'd do this:
* Find one of the root blocks, if not present, then figure out the block size your disk was using, and scan every block in turn to see if it
looks like an ObjectContainer (check the fsBlockHeader's ID, check if the ownblock number is equal to the block you are currently scanning,
and check its checksum). So if you currently have block 12, and you see a block with the correct id, and ownblock = 12 and its checksum is good,
then that's probably a valid ObjectContainer.
* With all the ObjectContainers found, you can extract filenames and directory names from these, but also the number of their first data
block (in the field data) and the file size. For small files (less than blocksize) this data block will be enough to recover the data.
For larger files, you might be lucky and all the remaining blocks are found after the first one (if the file was defragmented). You can't be
sure of that though so...
* For larger files, you need to find all the BNodeContainers. You could scan these in the same way you found all the ObjectContainers (look for
blocks with the correct id, ownblock number and checksum).
* With all the BNodeContainers found, you can try looking up the first data block of a file in the B-Tree structure. This is a bit complicated
-- the B-Tree consists of non-leaf nodes (blocks that only contain pointers to other B-Tree blocks), the isLeaf flag indicates this. Or it
can be a B-Tree leaf block. The leaf blocks contain extra information per entry (see https://hjohn.home.xs4all.nl/SFS/extents.htm)
<pre>
struct fsExtentBNode {
ULONG key;
ULONG next;
ULONG prev;
UWORD blocks;
};
</pre>
The key should be a block of a file (the first of a range), that is 1 to 65535 block long (depending the "blocks" field). If the file is split
up into more parts, then "next" will contain block number of the next range of blocks. You need to look this up again in the B-Tree
structure to find out how large it is.
You can for the most part ignore the other structures (bitmap, admin containers). The fsObjects and B-tree containers is what you'll need to
recover the data.
====Resources====
<pre>
rom/storage/mmakefile.src
rom/storage/storage.conf
rom/storage/storage_device.c
rom/storage/storage_ids.c
rom/storage/storage_init.c
rom/storage/storage_intern.h
rom/storage/storage_mount.c
rom/storage/storage_unit.c
</pre>
<pre>
rom/storage/includes/device.h
rom/storage/includes/unit.h
rom/storage/includes/volume.h
rom/storage/storage_intern.h
</pre>
<pre>
</pre>
*[[Aros/Developer/Docs/Resources/ACPI|acpi.resource]]
*[[Aros/Developer/Docs/Resources/Battclock|battclock.resource]]
*[[Aros/Developer/Docs/Resources/Bootloader|bootloader.resource]]
*[[Aros/Developer/Docs/Resources/Cia|cia.resource]]
*[[Aros/Developer/Docs/Resources/Filesystem|FileSystem.resource]]
*[[Aros/Developer/Docs/Resources/Hostlib|hostlib.resource]]
*[[Aros/Developer/Docs/Resources/Kernel|kernel.resource]]
*[[Aros/Developer/Docs/Resources/Misc|misc.resource]]
*[[Aros/Developer/Docs/Resources/Processor|processor.resource]]
==Debugging Code==
Please use the [http://sourceforge.net/tracker/?group_id=43586&atid=439463 AROS Bug Tracker] if any issues are found.
GRUB Command line list
<pre>
sysdebug
usbdebug - allows to see Poseidon's log in debug output
</pre>
How do I get debugging out of InitResident ? If running i386 hosted on linux sysdebug=initresident on command line.
This way you can enable any of listed flags. sysdebug=all stands for "everything"
Have an executable (crosscompiled C++ code) which has 6 MB size on disk, but after loading it in memory, 250 MB RAM is taken. Any software that would split AROS executable into ELF part which would show actual size values?
readelf -S executable
it will show you all sections in elf file, including sizes and requested alignment.
objdump -h filename
That's will give you a quick overview of the sections and sizes. Ignore all the .debug.* sections.
Would hazard a guess that you have a large .bss section. That's pretty common in C++.
Next step:
nm—size-sort filename | grep ' [bB] '
The last few will be your biggest consumers. Would suggest -C to demangle the symbols... ;)
Suggest profiling the program (just use some printf's in the main loop for time spent in each part), it usually is quite easy to spot slow parts in games or apps.
If someone has '#define IPTR ULONG' somewhere. To see where that define is, redefine IPTR in the source code that fails, just above the line that fails, and the preprocessor will tell you where it was defined first.
===How to setup gdb with AROS/hosted===
Download AROS sources (AROS-xxxxxxxx-source.tar.bz2, where xxxxxxxx is the current date) and AROS contrib sources (AROS-xxxxxxxx-contrib-source) from
Untar-bzip2 and cd to the unpacked archive directory.
> tar -xvjf AROS-xxxxxxxx-source.tar.bz2
> cd AROS-xxxxxxxx-source
Check the link to "contrib" (contrib-source) inside directory, e.g. correct like this:
> rm contrib
> ln -s ../AROS-xxxxxxxx-contrib-source.tar.bz2 contrib
Make sure you have the correct locale setting, otherwise compilation will fail at some point. See [http://aros.sourceforge.net/documentation/developers/compiling.php#setting-the-locale-to-iso8859 here] (or link below) for more on that. You might have to enter this:
> export LANG="en_US.ISO-8859-1"
Now configure for a debug build - see "./configure --help" for more - here are two examples:
> ./configure—enable-debug=stack,modules,symbols
> ./configure—enable-debug=all
You may "make" now, or choose a separate directory for your build (e.g. for easy removal), for example if compiling for i386 architecture you could create a directory like this:
> mkdir linux-i386
> cd linux-i386
> ../AROS/configure—enable-debug=stack,symbols,modules
When done configuring you're ready to go:
> make
Building AROS takes some time - minutes on fast machines (e.g. 2.5 GHz quadcore), up to hours on slower machines.
The result will be AROS Linux hosted with gdb debugging enabled.
See aros.org documentation for more on compiling AROS, including more [http://aros.sourceforge.net/documentation/developers/compiling.php --enable-debug] options.
When finished, enter bin/linux-i386/AROS directory (replace "linux-i386" with your compilation target platform, e.g. linux-x86_64, etc.) inside the unpacked archive directory. This directory contains the required .gdbinit file for properly running AROS inside gdb.
> cd bin/linux-i386/AROS
Run AROS (here: with 128MB of memory) from gdb:
> gdb—args boot/aros-unix -m 128
or
> gdb—args boot/arosboot -m 128
(gdb) r
Watch the shell output - in case AROS complains about "LoadKeyCode2RawKeyTable: Loading "DEVS:Keymaps/X11/keycode2rawkey.table" failed!" you should also see some instructions on how to create a keymap table. (see link above "more on compiling", too.)
Quit gdb, and try default keymap table:
(gdb) q
The program is running. Quit anyway (and kill it)? (y or n) y
> cd ../../..
> make default-x11keymaptable
Re-run AROS, as described above. Try e.g. RAros (= right windows key) + W to open a shell. If this doesn't work you have to create a keymap table yourself, quit gdb again, and make a new keytable:
> make change-x11keymaptable
A window will open. Watch the window's title bar, and follow the instructions.
When done, re-run AROS. RAros + W should now open a shell.
Next, compile your program with gdb support.
When you start GDB is there a warning which says
warning: File "<whatever>/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to ...
If so start gdb with "-ix .gdbinit"
<pre>
Summary - In short:
* build AROS with debugging support (i.e. ./configure --enable-debug=all)
* build your application with debugging support (i.e. option -g)
* run AROS in the GNU debugger (you may use the GUI frontend "ddd" which simplifies usage a bit)
* start your application
* use the commands "findaddr" and "add-symbol-file" as written in the debugging manual
* if the debugger doesn't find the source code of your application use the "dir" command of the debugger.
</pre>
===How to use gdb===
In AROS open a shell, then (in host shell) use CTRL-Z to go into gdb. Use "b Exec_CreatePool" (one of the functions used early on by startup code in programs) to add a breakpoint, then "cont" and gdb will interrupt somewhere early during startup of "program". Use "bt" to show backtrace and "loadseg" for "??" entries. One of them will be for "program". After that you can use "disassemble program".
One thing you need to make sure is that .gdbinit you have in your build directory is the same as in source tree. It has been modified some time ago, but the build system does not refresh it - you need to copy it manually
To recap, please read our debugging [http://aros.sourceforge.net/documentation/developers/debugging.php manual]:
To detect segfaulting when loading, try...
./configure—enable-debug—with-optimization="-O2"
Because crash or no crash may depend on optimization. For newer compilers maybe this helps...
--with-optimization=-"-O2 -fno-strict-aliasing"
One way to make crashes less random (more easily reproducible) is to activate the munging of free memory in rom/exec/freemem.c which is normally commented out:
<pre>
Index: freemem.c
===================================================================
--- freemem.c (revision 34289)
+++ freemem.c (working copy)
@@ -154,11 +154,12 @@
* created with their TCB placed in the tc_MemEntry list. The workaround
* is to avoid munging when FreeMem() is called with task switching disabled.
*/
+
/* DOH! it doesn't work even this way. What's wrong???
- *
- * if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
- * MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
*/
+
+ if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
+ MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
}
</pre>
Mungwall can be turned on at runtime. Currently this works in all hosted versions. Just specify "mungwall" on kernel command line and it works. It can work on native too. In order to enable it you need to parse kernel command line, and if "mungwall" is present, set EXECF_MungWall bit in IntExecBase.IntFlags.
This needs to be done before the first AllocMem() for obvious reasons. And never reset back this flag! If you change it on a working system, you are doomed.
Hosted ports do the processing in rom/exec/prepareexecbase.c --enable-debug=mungwall option in configure still works but is going obsolete. A kludge in rom/exec/allocmem.c is responsible for this and it needs to be removed when the transition is done.
BTW, on i386-pc port it can be activated by "mungwall" argument on command line, you don't need to rebuild AROS.
New mungwall affects not only AllocMem()/FreeMem(), but also pools. I also tested it with AllocAbs(), seems to work correctly.
Runtime mungwall works on:
* pc-i386
* pc-x86_64
* linux-i386
* linux-x86_64
* darwin-x86
* linux-ppc
Works on all hosted ports, if the port itself is working.
* amiga-m68k
* Not on sam440-ppc and efika-chrp-ppc, even if they would be able to be built at moment. Does not work on (for now, need NVRAM support)
When starting my freshly rebuilt i386-linux-aros which was compiled with full debugging support I get sometimes the error "Program exited with code 0377". Add the following to your .gdbinit:
set follow-fork-mode child
Here are some of the custom AROS gdb functions (defined in ".gdbinit" file) to resolve "in ?? ()" entries in backtrace:
<pre>
#0 0xb7ffd424 in __kernel_vsyscall ()
#1 0xb7e2a657 in sigsuspend () from /lib/libc.so.6
#2 0xb7c63900 in ?? ()
#3 0xb7c640e3 in ?? ()
#4 0xb7c641e0 in ?? ()
</pre>
You can use
loadseg 0xb7c63900
loadframe 2
or
loadbt
and some others. Use "help " for a little help text. If the commands do not work try "loadkick" first.
Use "thistask", "taskready", "taskwait" to get list of AROS tasks. "bttask " shows backtrace of a task which is in ready or in wait queue and "loadseg" to resolve "??" entries in it's backtrace ("loadframe" would not work as it assume current running task).
===Native debugging tools for AROS===
to enable debugging at boot time entering the GRUB menu editing line (E key) and adding "debug=memory" to your boot line, then press Ctrl+X to complete booting.
SYS:Tools/Debug/'''Bifteck'''
Open a shell and enter the line below to run Biftek and grab the debug messages collected in RAM into a text file.
tools/debug/bifteck > ram:debug.txt
and certainly does not open a window. It is a shell tool and only dumps data located from the debug location.
It is therefore important to 'catch' that debug data as soon as possible (before it gets overridden). You should invoke bifteck at the first opportunity before doing anything else. You can use the TO option to store bifteck output to a file or you can pipe it manually to a file.
SYS:Tools/Debug/'''Sashimi''' - displays error messages
One suggestion is to do a bug() debugging. Each time bug() is executed it will be output on sashimi.
You include <aros/debug.h> and place bug("something\n"); in your source code at location though which control passes.
To get the output - open an aros shell
SYS:Tools/Debug/sashimi > RAM:out.txt
'''Ctrl C''' to end the output to the RAM Disk.
# open shell, and type
# ram: (to switch to ram drive)
# System:Tools/Debug/Sashimi > mylogfile.txt
# open AHI prefs using wanderer (or use another opened shell)
# play test sound
# close AHI prefs
# shell still open with Sashimi running: press ctrl-c to break Sashimi and return to prompt.
# in shell: copy mylogfile.txt System: (or to your required location)
SYS:Utilities/'''Snoopy''' - monitors OS function calls, run "Sashimi" to see Snoopy's output
SYS:Tools/'''WiMP''' - the Window (and Screens) Manipulation Program
You can use the -E option of gcc to find out how preprocessor macros are expanded.
===Errors===
crash in strcasecmp usually means that one of its arguments is NULL.
empty space between these two names, prossibly some invisible character
Old Amiga [http://www.amigacoding.com/index.php?title=Guru_codes&redirect=no Guru Codes]
If the crash is in intuition. Sometimes, if it relates to text, a null pointer sets it off.
an uninitialised pointer can have any address (this is a common fault).
Compiling on 64bit, Many old code would not properly typecast when doing pointer-integer conversions and thus at least throw a warning. This can easily be located and fixed.
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
* Fix (change IPTR/SIPTR back to ULONG/LONG) the few places which really rely on ULONG/LONG being exactly 32 bit. That's for things like pixel (ARGB) buffers, structs written/read to disk, colormaps, but probably not much else.
Then again, many current compilers also throw a warning when you try to assign a pointer value to an integer and the integer is possibly too small. This happens under .NET for example when a 64 bit pointer is assigned to something like an ULONG - so exactly the case which you described.
=== AI ===
<---
Model <---> Agent ---> End user
Gemini LMStudio
etc Comfyui
Recent, self hosting on laptops, mini pcs or desktops with '''quantization''' 4bit has reduced memory requirements but still require 16Gb+
*[https://lmstudio.ai/download LMstudio single gpu],
Google Gemma 4 Model
*[ 12B QAT]
Alibaba Cloud's [https://huggingface.co/ Qwen] team series of large language models LLMs
*[https://huggingface.co/models?other=qwen3 Qwen 3], [],
*[https://huggingface.co/models?other=qwen2 Qwen 2], [https://huggingface.co/Qwen/Qwen2.5-Coder-32B qwen 2.5 Coder],
Small Claude Model
*[https://github.com/sipeed/picoclaw picoclaw]
Bigger LLMs but with settings
*[https://ollama.com/download Ollama single gpu]
*[https://github.com/ggml-org/llama.cpp/releases llama.CPP multi gpus],
*[ VLM multiple gpus],
MiniMax H3
#Training learning using 1+ high end GPUs at least 16GB VRAM per GPU card or 64Gb+ of unified, 16Core CPU with at least 64Gb of RAM system memory, though training can take weeks
#Inference with custom asics or GPUs
=== Linux ===
<syntaxhighlight lang="c">
/* 1. Header for your name,date,purpose of program.
2. Pre-processor directives. This will include the #includes for files you want to add.
3. Includes for function prototypes if necessary.
4. Main()
Create Pointers for Libraries and any Window you want to open.
5. Open necessary libraries.
6. Check if open exit program if fail.
7. Open a window exit program if fail.
8. Add your program
9. Close Window
10 Close Libraries.
11 End Program. */
/* standard os included headers <.h> */
#include <dos/dos.h>
#include <dos/dosasl.h>
#include <dos/dosextens.h>
#include <dos/exall.h>
#include <dos/rdargs.h>
#include <exec/memory.h>
#include <exec/types.h>
#include <utility/utility.h>
#include <intuition/intuition.h>
/* define as unresolved external references (proto/xxx.h) and compiler will link to auto(matically) open library */
#include <proto/arossupport.h>
#include <proto/dos.h>
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/graphics.h>
#include <proto/cybergraphics.h>
#include <proto/datatypes.h>
#include <proto/icon.h>
#include <workbench/workbench.h>
#include <workbench/icon.h>
#include <datatypes/pictureclass.h>
#include <proto/muimaster.h>
#include <libraries/mui.h>
#include proto/bsdsocket.h
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* my own headers ".h" */
#define CTRL_C (SetSignal(0L,0L) & SIGBREAKF_CTRL_C)
#define isDir(fib) ((fib)->fib_DirEntryType >= 0)
#define ARG_TEMPLATE "FILE/A,ALL/S,QUIET/S,W=WIDTH/N,H=HEIGHT/N,M=METHOD,DEFTOOL"
int main(void)
{
return retval;
} /* main */
</syntaxhighlight>
If you used c++, there is not yet c++ support in our shared library system.
The easiest way to create / compile a shared library would be to use the AROS build system but the libraries can be created manually. You have to create a ROMTAG structure and some header files.
A shared library is built with the %build_module macro with a line like this:
%build_module mmake=MetaTarget modname=mylib modtype=library files=SourceFiles
This macro can build different AROS module types, like devices, Zune classes, HIDDs, etc.
<pre>
##begin config
version 1.0
##end config
##begin functionlist
void func1(LONG a, LONG b)
int func2(char *s, ULONG a)
##end functionlist
</pre>
There is more [http://aros.sourceforge.net/documentation/developers/sys-dev/libraries.php here]
Alternatively,
<pre>
#ifndef LIB_H
#define LIB_H
#define __NOLIBBASE__
#include <exec/libraries.h>
#include <exec/semaphores.h>
#include <dos/dos.h>
#ifdef __AROS__
//#include <aros/debug.h>
#define reg(x)
#define __saveds
#endif
#define USESYSBASE struct ExecBase *SysBase = Base->My_SysBase;
struct MyTestBase
{
struct Library My_Test_Lib;
struct ExecBase *My_SysBase;
APTR My_SegList;
int testint;
};
#endif
</pre>
<pre>
/*--------------------------------------------------------------------------*/
/* Resident header written for mytest.library */
/*--------------------------------------------------------------------------*/
#define __NOLIBBASE__
#define VERSION 1
#define REVISION 0
#define LIBHEADNAME mytest
#define LIBHEADNAMESTR "mytest"
#define COMPDATE "04.10.2015"
#define VERS "1.0"
#define LIBBASETYPE struct MyTestBase
#define LIBBASETYPEPTR LIBBASETYPE *
#include <aros/debug.h>
#include <exec/exec.h>
#include <proto/exec.h>
#include <exec/resident.h>
#include <exec/nodes.h>
#include <exec/libraries.h>
#include <aros/symbolsets.h>
#include "lib.h"
const UBYTE lib_name[] = LIBHEADNAMESTR ".library";
const UBYTE lib_id[] = "$VER: " LIBHEADNAMESTR ".library " VERS " (" COMPDATE ") by ALB42\n";
extern const APTR FuncTable[];
AROS_UFP3 (LIBBASETYPEPTR, InitLib,
AROS_UFPA(LIBBASETYPEPTR, Base, D0),
AROS_UFPA(BPTR, seglist, A0),
AROS_UFPA(struct ExecBase *, sysbase, A6)
);
static struct LibInitStruct
{
IPTR LibSize;
const APTR *FuncTable;
const struct DataTable *DataTable;
APTR InitFunc;
}
const LibInitStruct =
{
sizeof(LIBBASETYPE),
FuncTable,
NULL,
(APTR)InitLib
};
const struct Resident romtag =
{
RTC_MATCHWORD, /* match word */
(APTR)&romtag, /* back pointer */
(APTR)(&romtag + 1), /* skip pointer */
RTF_AUTOINIT | RTF_EXTENDED,/* flags */
VERSION, /* version */
NT_LIBRARY, /* type of module */
0, /* init priority */
(STRPTR)lib_name, /* module name */
(STRPTR)lib_id + 6,
(APTR)&LibInitStruct,
REVISION, NULL
};
AROS_UFH3 (LIBBASETYPEPTR, InitLib,
AROS_UFHA(LIBBASETYPEPTR, Base, D0),
AROS_UFHA(BPTR, seglist, A0),
AROS_UFHA(struct ExecBase *, sysbase, A6)
)
{
AROS_USERFUNC_INIT
Base->My_SegList = seglist;
Base->My_SysBase = (APTR)sysbase;
Base->testint = 0;
USESYSBASE
bug("InitLib\n");
if (!set_open_libraries())
{
set_close_libraries();
return NULL;
}
return Base;
AROS_USERFUNC_EXIT
}
AROS_LH1(LIBBASETYPEPTR, LibOpen,
AROS_LHA (ULONG, version, D0),
LIBBASETYPEPTR, Base, 1, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibOpen\n");
(void)version;
Base->My_Test_Lib.lib_OpenCnt++;
return Base;
AROS_LIBFUNC_EXIT
}
__saveds APTR LibExpungeInternal(LIBBASETYPE *Base reg(a6))
{
USESYSBASE
APTR seglist;
bug("LibExpungeInternal\n");
if (Base->My_Test_Lib.lib_OpenCnt)
{
return 0;
}
seglist = Base->My_SegList;
Forbid();
Remove((struct Node*)Base);
Permit();
FreeMem((APTR)Base - Base->My_Test_Lib.lib_NegSize, (LONG)Base->My_Test_Lib.lib_PosSize +
(LONG)Base->My_Test_Lib.lib_NegSize);
set_close_libraries();
return seglist;
}
AROS_LH0(BPTR, LibClose,
LIBBASETYPEPTR, Base, 2, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibClose\n");
if (!(--Base->My_Test_Lib.lib_OpenCnt))
{
return LibExpungeInternal(Base);
}
return 0;
AROS_LIBFUNC_EXIT
}
AROS_LH1(BPTR, LibExpunge,
AROS_LHA(LIBBASETYPEPTR, Base, D0),
struct ExecBase *, sysBase, 3, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
(void)sysBase;
USESYSBASE
bug("LibExpunge\n");
return LibExpungeInternal(Base);
AROS_LIBFUNC_EXIT
}
AROS_LH0(LIBBASETYPEPTR, LibReserved,
LIBBASETYPEPTR, Base, 4, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibReserved\n");
return 0;
//return (APTR)LibReserved();
AROS_LIBFUNC_EXIT
}
// Space for your own functions
// do not forget to update the FuncTable as well
AROS_LH1(int, TestFunction,
AROS_LHA(int, TestValue, D0),
LIBBASETYPEPTR, Base, 5, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("TestFunction\n");
Base->testint = TestValue + Base->testint;
return Base->testint;
AROS_LIBFUNC_EXIT
}
// Functable -> Table of all functions in the Library, in right order - important!
const APTR FuncTable[] =
{
&AROS_SLIB_ENTRY(LibOpen,LIBHEADNAME,1),
&AROS_SLIB_ENTRY(LibClose,LIBHEADNAME,2),
&AROS_SLIB_ENTRY(LibExpunge,LIBHEADNAME,3),
&AROS_SLIB_ENTRY(LibReserved,LIBHEADNAME,4),
&AROS_SLIB_ENTRY(TestFunction,LIBHEADNAME,5),
(void *)-1
};
// AutoInit stuff
void *__PROGRAM_ENTRIES__symbol_set_handler_missing;
void *__LIBS__symbol_set_handler_missing;
// end of AutoInitStuff
</pre>
Makefile
<pre>
VPATH =
CFLAGS = -O2 -g -fomit-frame-pointer -W -Wall -Wno-parentheses
CC = i386-aros-gcc
LD = i386-aros-gcc
LDFLAGS = -nostartfiles -Wl,-Map -Xlinker linkermap
LIBS = -lautoinit -llibinit
STRIP = i386-aros-strip --strip-unneeded --remove-section .comment
OBJS = lib_header.o
all: mytest.library
mytest.library: $(OBJS)
$(LD) $(LDFLAGS) $^ $(LIBS) -o $@
lib_header.o: lib_header.c lib.h
clean:
rm -f *.o *.library *.ppu testlibrary linkermap
</pre>
Porting UNIX library to AROS - dealing with static variables which would make it easy to port such libraries to AROS, keeping the benefits of sharing them on disk, but losing the benefit of actually sharing them in memory.
Our problem arises by the fact we want to share the actual code (the .text section of the library) and constant data, but we need to have per-task .bss and .data sections. If we get rid of our intention to share the .text and .rodata sections, things get quite easy: just load and relocate the library whenever it's open, by whoever it's open. It's like statically linking the library into the executable, except that the final linking is done at runtime.
In the V0 branch, in workbench/hidds/hidd.nouveau was committed pcimock.hidd. This is a pci driver that allows mocking real PCI devices under linux-hosted. The main idea is to be able to run the real hardware driver under linux-hosted with as little changes as possible (some changes will always be needed though unless someone wants to write complete device simulator) so that driver's code paths can be executed and debugged using gdb. This was a very helpful capability when porting nouveau. Now it is externalized from nouveau.hidd and can be used by other people porting drivers. The pcimock.hidd can currently mock 4 different nvidia cards, 1 AGP bridge and also mock irq.hidd.
What's the difference between this driver and the pcilinux.hidd? I used that one to develop many different HW drivers for aros. As far as I understood the intention of pcilinux.hidd it is supposed to get access to real hardware that is running under linux. The pcimock.hidd goal is to mock the hardware. For example my dev box is a PCIE system, but I still would like to run the AGP codes paths in nouveau under linux-hosted to check if they don't seg fault. The other case would be to run codes paths for hardware that the developer does not have (Fermi cards in my case). In the case of pcimock.hidd, the AROS driver's code paths will execute as long as you add proper mocking (for example fill in PCI config area or values for registers in BARs). This is an advantage for ported drivers - the code should already work (since it worked on another system) but there might have been mistakes made during porting which can be detected easily with gdb.
In case you are writing your driver from scratch, pcilinux.hidd hidd will give you more advantage, since you can actually access the real hardware from linux-hosted.
== Misc ==
===APL, MPL, BSD, GPL and LGPL Licences===
The majority of AROS sources in licensed under AROS Public License ([http://aros.sourceforge.net/license.html APL]) which (to a degree) protects us from someone taking AROS sources and not contributing improvements back (for example MorphOS took some AROS source and then contributed changes back)
It is written to allow the use of AROS code in other open source or commercial projects without exception whilst providing a mechanism so that improvements/additions can find their way back to the original source in one form or another.
There are "3rd" party applications used by AROS that do not fall under this license, which are an extra "Contrib" download for convenience.
Anyone can port GPL-ed network and sound drivers as AROSTCP and AHI are GPLed. Direct using (porting) [http://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs GPL]-ed code in other parts of AROS (gfx, sata, usb) is not possible because AROS license is not compatible with GPL. You need to utilize permissive licensed code like BSD or MIT/X11.
BSD and MPL license are the closest to APL.
APL however is not so compatible with LGPL/GPL.
LGPL case - you cannot statically combine APL code with LGPL. You can, however thank to LGPL being "lesser" restrictive, use LGPL dynamically loaded libraries in APL codes.
GPL case - you cannot combine APL code with GPL in any way if there is no explicit clause by GPLed code authors allowing that. If you do combine APL with GPL in "bad" ways described above - you have a problem (you violate GPL). This problem might result in everything in AROS becoming GPL or everything running or AROS becoming GPL (here I'm not sure really). The other scenario is that you are not allowed to legally distribute such code at all. To be honest I have grasped how to violate GPL, but I'm still no exactly sure what happens when you violate it (but I'm sure it's not anything nice)
GPL software can run on top of non-GPL "system components" (see system components exception of GPL), but the other way around (non-GPL using GPL) leads to problems. This means applications like scout, or Quake III are ok (in the majority of cases).
Theres no reason GPL drivers cannot be ported - but they cant be in AROS's ROM (requires linking APL code with GPL), nor can AROS depend on them (e.g. they must use existing apis).
If they are launched (dynamically linked) by a user action that is allowed. It is also allowed to distribute such binaries together for convenience.
GPL is not about statical or dynamic linking but is about executing process and function calls.
These components - SFS, isapnp, Zune texteditor, AHi, network drivers, freetype, openuirl, BHFormat, Edit and (" dynamically loaded libraries") are LGPL, not GPL. Mesa/Nouveau stuff is MIT. Some user tools are GPL though.
'''AROS (system)'''
* system components (libraries/classes/devices/etc) cannot be GPL as they would propagate GPL to complete system as well as GPL is not compatible with MPL from which APL is based
* system components can be LGPL v2 or a permissive license (MIT/BSD)
* system applications can be anything you like (but still I would prefer APL or permissive so the code can be reused if needed)
'''Contrib:'''
* no rules - contrib does not impact AROS system since nothing in AROS system depends on contrib.
About stealing code: The chances of this happening is exactly the same whether we are APL or GPL. If any closed-source option wanted to do it, there is no one that can validate otherwise. MorphOS has used some AROS codes, but contributed changes back.
The rationale behind APL is that while it guarantees that the original developer will get the improvements back (to a certain degree - file based), the person who uses the codes does not have to open his original codes. BSD does not guarantee that the original developer gets improvements. GPL requires the person using the codes to open his codes as well.
The copyright holders needs to stay - we just need information from them that the codes are available under APL (for example a checked-in file like in case of Poseidon). We don't do transfer of copyrights.
; Ultimately what can and cannot be done is up to the author(s) - not the licence.
===AROS source code tree===
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-trunk.txt
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
Found this interesting (non-GPL) licensing 'anomaly' - to keep in mind for distributors.
Programs that lose their license if sold ("non-profit only" licensed):
contrib/aminet/comm/term/TinyTerminal
contrib/aminet/dev/basic/bwBASIC
contrib/aminet/text/edit/xdme
contrib/fish/aroach
contrib/fish/lotto
contrib/fish/shuffle
contrib/fish/touch
+ cdvdfs.
Here is a list of all the GPL/GPLv2/GPLv3 licenses fossology found, what have explicit licenses in their comments.
excluded LGPL, BSD/GPL dual licensed and programs (such as Prefs/Edit and BHFormat)
<pre>
AROS/rom/dbus/include/ AFL_v2.1 ,GPL_v2+ (supposedly AFL < 3 is GPL incompatible)
AROS/workbench/classes/zune/betterstring/include/ GPL_v2+
AROS/workbench/classes/zune/texteditor/include/ GPL_v2+
AROS/workbench/classes/datatypes/gemimage/ GPL_v2+ GPL
AROS/workbench/classes/datatypes/degas/ GPL_v2+
AROS/workbench/libs/openurl/README: GPL
AROS/workbench/network/smbfs/documentation/ GPL_v2
AROS/workbench/network/smbfs/source_code/ GPL_v2+
AROS/workbench/network/stacks/AROSTCP/bsdsocket/kern/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/mmakefile.src conf.h GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/sys/ CMU ,GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/net/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/api/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/conf/conf.h: GPL_v2
AROS/workbench/network/stacks/AROSTCP/netinclude/net/radix.h: CMU ,GPL_v2
AROS/workbench/devs/AHI/AHI/ GPL_v2+
AROS/workbench/devs/AHI/AddAudioModes/ GPL_v2+ AROS/workbench/devs/AHI/AddAudioModes/COPYING: GPL
AROS/workbench/devs/AHI/Docs/texinfo.tex: GPL_v2+
AROS/workbench/devs/AHI/COPYING: GPL
AROS/workbench/devs/AHI/Drivers/EMU10kx/ GPL_v2+
AROS/workbench/devs/AHI/AHI-Handler/ GPL_v2+
AROS/workbench/devs/networks/rtl8029/ GPL GPL_v2+
AROS/workbench/devs/networks/pcnet32/ GPL GPL_v2+
AROS/workbench/devs/networks/ppp/LEGAL: GPL
AROS/workbench/devs/networks/atheros5000/ GPL_v2+
AROS/workbench/devs/networks/rhine/ GPL_v2+
AROS/workbench/devs/networks/nForce/ GPL_v2+ GPL
AROS/workbench/devs/networks/prism2/ GPL GPL_v2+
AROS/workbench/devs/networks/fec/LEGAL: GPL
AROS/workbench/devs/networks/rtl8139/ GPL GPL_v2+
AROS/workbench/devs/networks/etherlink3/ GPL GPL_v2+
AROS/workbench/devs/networks/intelpro100/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8169/ GPL GPL_v2+
AROS/workbench/devs/networks/emac/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8168/ GPL GPL_v2+
AROS/workbench/devs/networks/realtek8180/ GPL_v2+
AROS/workbench/devs/networks/via-rhine/via-rhine.c: GPL_v2+
AROS/workbench/devs/networks/via-rhine/ GPL GPL_v2+
AROS/workbench/devs/networks/e1000/ GPL_v2
AROS/workbench/devs/networks/sis900/ GPL GPL_v2+
</pre>
AHI: it has special provisions (COPYING.DRIVERS). The library is LGPL, preferences software is GPL and drivers can be anything without breaking GPL/LGPL.
Network stack: well, we are long overdue for a new, IPv6 enabled network stack anyway, anyone interested? ;) Seriously though it seems like the glue code is GPL and as all the drivers. However some of the drivers are our own code, so they could be relicensed to LGPL.
Same filter as the AROS trunk list. These should all be libraries or plugins - no programs.
<pre>
contrib/regina/utsname.h: GPL_v2+
contrib/mui/classes/nlist/include/default-align.h: GPL_v2+
contrib/mui/classes/nlist/include/amiga-align.h: GPL_v2+
contrib/mui/classes/BWins/include/MUI/BWin_mcc.h: GPL
contrib/mui/classes/BWins/include/BWin_private_mcc.h: GPL
contrib/mui/classes/BWins/COPYING: GPL_v2
contrib/mui/classes/BWins/MCC_BWins.readme: GPL_v2
contrib/mui/classes/thebar/include/default-align.h: GPL_v2+
contrib/mui/classes/thebar/include/amiga-align.h: GPL_v2+
contrib/gfx/libs/wazp3d/LEGAL: GPL
contrib/gfx/libs/wazp3d/Wazp3D.readme: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.c: GPL
contrib/libs/mpega/ GPL_v2+
</pre>
http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
===Types===
On AROS following rules apply:
<pre>
1. BYTE/UBYTE is 8bit, WORD/UWORD is 16bit, LONG/ULONG is 32bit, QUAD/UQUAD is 64bit, the types are comparable with stdint types (int8_t, int16_t, int32_t, int64_t)
2. IPTR/SIPTR are integer types large enough to fit pointer, that is sizeof(IPTR) = sizeof(APTR) = 4 on 32bit system, and = 8 on 64bit system
3. ti_Data in TagList is large enough to hold a IPTR/APTR type.
4. never store a pointer in integer of type LONG. It may work (if the pointer has upper 32bits clear), but does not have to. Compiler should warn you about that.
5. If you are unsure about point 4, allocate your memory with MEMF_31BIT flag set. But don't expect that AROS internals will do the same.
</pre>
point 4 is actually important.
* UBYTE/BYTE for 8bit
* UWORD/WORD for 16bit
* ULONG/LONG for 32bit
* UQUAD/QUAD for 64bit
<pre>
UBYTE Unsigned 8 bit integer variable (byte).
BYTE Signed 8 bit integer variable (byte).
UWORD Unsigned 16 bit integer variable (word).
WORD Signed 16 bit integer variable (word).
ULONG Unsigned 32 bit integer variable (longword).
LONG Signed 32 bit integer variable (longword).
FLOAT 32 bit IEEE floating point variable.
UQUAD Unsigned 64 bit integer variable.
QUAD Signed 64 bit integer variable.
DOUBLE 64bit IEEE floating point variable.
BOOL Boolean variable, TRUE and FALSE are also defined in exec/types.h.
VOID Void.
APTR A generic pointer for multiple purposes - Arrays.
STRPTR A pointer to a null-terminated string.
IPTR Really important in AROS, the only way to declare a field that can contain both: an integer or a pointer.
</pre>
if you want to write really portable app, you may be interested in standard datatypes defined in C99: int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, intptr_t, uintptr_t. They are all defined in inttypes.h include file.
In exec/types.h the following short-cuts are typedef'd. They are used often in AROS, so you should nearly always include exec/types.h and soon only they will be removed from sys/_types.h include, all types are now defined in include files named aros/types/xxx.h.
(Preparation for C library split; sys/xxx.h include will only be available there when compiling with POSIX C library)
Compiler specific types, like int and long might change their size. In case of AROS, similar to linux, int remains 32 bit whereas long grows to 64 bits in size.
If you use Amiga-like data types, i.e. BYTE/UBYTE, WORD/UWORD, LONG/ULONG and QUAD/UQUAD or the C99 standard types (uint8_t and so on, see stdint.h include) then you should have less issues to solve than by using types without size guarantee.
Of course, all pointers grow to 64 bytes using 64bit cpu. Most of the code can be just recompiled and will work. In rare cases, where e.g. pointers are casted to integers, a special care must be taken. Especially in the cases, where pointer is casted to LONG/ULONG (this code will break on 64 bit AROS) e.g. '#define IPTR ULONG'.
With compiler delint patches which the majority of them are simple casting issues to make the compiler happy. Notice some of the changes involve introducing double casts. In very recent versions of GCC. Yes, the bulk of the double casts are for converting 32 bit addresses (ie from a 32 bit PCI DMA address register) to a 64 bit pointer. First cast is to IPTR (to expand to 64 bits, and prevent sign extension if the address is above 0x7FFFFFFF), and then to APTR.
ULONG != IPTR except on 32bit .. so if you need to store pointers make sure and use IPTR and not ULONG (which some old code does). For this reason things like Taglist elements are 64bit (since the tag data can be a pointer).
If your passing items on the stack you should use the STACKED attribute to make sure they are correctly aligned (on 64bit all items on the stack are 64bit..)
There is more issues like using "== 0L" causes problems.
===Endian===
*BE
*LE
Use the macros from <endian.h> instead making a guess based upon architecture defines
<pre>
#if _BYTE_ORDER == _BIG_ENDIAN
#elif _BYTE_ORDER == _LITTLE_ENDIAN
#else
+
#error <whatever.h> - Byte order for this architecture is unsupported!
</pre>
===SVN and GIT===
If you want to help develop AROS OS itself, you can
* view current GIT/SVN entries [http://aros.sourceforge.net/ Aros Org website] or [https://github.com/aros-development-team/AROS Github], [https://github.com/ezrec older ezrec mirror], [https://github.com/michalsc/AROS/ older mirror], [https://trac.aros.org/trac/timeline TRAC], [],
* awaiting update [http://repo.or.cz/w/AROS.git git repo], [http://www.ohloh.net/p/aros/commits ohloh] or [https://svn.aros.org/svn/aros/trunk/ svn repo] and access [Git version git://repo.or.cz/AROS.git here],
* deprecated [https://www.gitorious.org/aros/aros/commit/a7fda9e ARIX commits] or [https://gitorious.org/aros/aros GIT old]
If you have SVN access (early 2015 introduced a new SVN server, create a new account at trac aros org) and/or have obtained the source [http://aros.sourceforge.net/download.php AROS site] - you can compile the current build tools/environment using:
> make development
and follow this [http://aros.sourceforge.net/documentation/developers/compiling.php#building procedure] or [https://github.com/apiraino/aros_guide Guide]
https://trac.aros.org/trac#Developing
If you plan on contributing back changes, please post information about such changes first on this [http://mail.aros.org/mailman/listinfo/aros-dev/ mailing list] for more experience developers can validate whether they are correct.
Then there are the nightly build machines. They svn update before the build and run configure as one of the next steps. autoconf might be added to the nightly build scripts.
Our build relies on packages downloaded from Internet (SDL for example) - it always worked this way. The minimal requirement (when just building core AROS) is binutils and gcc. If you build contrib as well, you need many more packages to be downloaded.
https://gitorious.org/aros/aros/commits/crosstools-II
git://gitorious.org/aros/aros.git
Branch crosstools-II there is only one commit on top of ABI_V1
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-x86_64
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-x86_64
</pre>
and
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-i386
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-i386
</pre>
build OK.
:''More information: [[Aros/Developer/Maintainer|AROS Maintainer Docs]]''
===SDI Calls===
Integrate the 'SDI'-headers to allow easier porting to all amiga-like platforms.
<pre>
PUTCHARPROTO( PutTheChar, char c, struct SPrintfStream *s )
{
// REAL CODE
}
</pre>
have "SDI_compiler.h" and "SDI_hook.h" included
its more organized like
#include SDI/SDI_hook.h
than
#include SDI_hook.h
option 1 --- i also use when back porting from amiga's..
<pre>
#ifdef __AROS__
#include SDI/SDI_hook.h
#else
#include SDI_hook.h
#endif
</pre>
also
you can add the -i include/sdi/ location if you do not want to add or edit any files.
Defining HOOKPROTO to IPTR name(struct IClass * cl, Object * obj, Msg msg); solved the problem
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order. examine compiler/include/aros/symbolsets.h (AROS_LIBREQ)
compiling mui stuff for aros setting -std=gnu99 is necessary (i have had -std=c99 most of the time).
===Locale with Flexcat===
Most languages have a locale, but not every app is localized, the only thing needed is to translate the "catalog" files. It is a case of locating the correct catalog and saving the translated version.
For every app that lacks of your language catalog and is localized anyway, you should find (in the sources) files related to locale:
* file.cd = catalog descriptor, contains base msg, with internal language (usually english)
* language.ct = catalog translation, contains every translated msg, indexed as in the file.cd.
Compare with other localized apps... Then, "make my_app-catalogs" should create and install your translated catalogs. ex : for, saying, sys:prefs/wanderer:
on root of AROS sources, type:
"make workbench-prefs-wanderer-catalogs"
then (if you changed the .cd file):
"make workbench-prefs-wanderer"
For apps not localized, you have to adapt their code to support it, if it is possible...
noticed the original .cd file has many (//) strings at the end of any voice, so added them also to the .ct file.
That (//) is only for cd files. I'm highly recommending to use FlexCat for updating ct files, e.g. like this:
flexcat app.cd deutsch.ct newctfile deutsch.ct
You'll get error checking and new entries are marked in the resulting ct file.
When editing .ct files, only change those lines containing translation and perhaps version string, nothing else.
The rest is up to the relevant tool, flexcat. In order to update your translation, type in the following in your shell:
flexcat xyz.cd xyz.ct NEWCTFILE xyz_upd.ct COPYMSGNEW
This way you will not only make sure you have correct translation file but flexcat also pre-fills newly added strings with "*** NEW *** text. Even better tool for checking cd/ct/catalog files is catcheck, but this one is sadly only available for AmigaOS/68k...
Some languages have variations, like portugues from portugal and portugues from brasil differs...
This is the way to go. I will have a look at language files, but basically if those two languages differ you have to do two separated set of translation files, yes.
(you could create a brazilian slang language localization too)
* At system level localization for one language is a dot language file.
(ex: locale:languages/klingon.language)
* At app level localization is a dot catalog file
(ex: locale:catalogs/klingon/system/libs/dos.catalog)
* At sources level, the dot ct file, and "$language" dot cd files and some building framework.
(ex: catalogs/my_app.ct catalogs/klingon.cd catalogs/mmakefile.src support.c support.h)
Please, use Flexcat to generate CT files:
FlexCat wanderer.cd NEWCTFILE=deutsch.ct
Then fill the first 2 lines with something useful:
<pre>
## version $VER: wanderer.catalog 1.1 (9.2.2006)
## language deutsch
</pre>
You can even update the CT-File: (This adds the new strings)
FlexCat wanderer.cd deutsch.ct NEWCTFILE=deutsch.ct
To compile a catalog you only need the .cd file and your translation (.ct file):
FlexCat multiview.cd deutsch.ct CATALOG=MultiView.catalog
[http://murks-ide.svn.sourceforge.net/viewvc/murks-ide/trunk/src/Catalogs/flexcat_linux?revision=100 Linux version of FlexCat]
: [http://aros.sourceforge.net/documentation/developers/app-dev/localization.php#localization-for-non-developers More information]
A script which compares the required version (i.e. the version which an application/module etc. tries to open) with the version of the existing CT files. The result is in this table:
https://github.com/aros-translation-team/translations/wiki/Progress
The following cases are highlighted:
n/a i.e. CT misses at all
version in existing CT file is lower than the required version
It might be a bit difficult to participate if you haven't worked with Git before but alternatively you can send your CT files to our Slack channel.
When the ct file has been generated via flexcat (flexcat keyshow.cd NEWCTFILE=spanish.ct) it has the following header:
---------------------------------------------------------------------------------------------------------------
## version $VER: <name>.catalog <ver>.<rev> (04.01.2021)
## language nolanguage
## codeset 0
;
---------------------------------------------------------------------------------------------------------------
Those values <ver>.<rev> are the version and revision of the CT file for the languaje or are the values of the application being localized?
The <ver> part must match with version which the application tries to open. You can find the value either in the column "Required Version" in the table which I've linked above, our you can look in the git repository. For keyshow it would be https://github.com/aros-translation-team/keyshow. You can find in the file "catalog_version.h" the right version number.
The <rev> part starts for new CT files with 0 and should be increased every time the CT file is updated.
Updated several files and created a few more that were missing on the spanish catalog.
The catalogs are in Git repositories at https://github.com/aros-translation-team
a) You tell me your Github user name. I'll invite you. You can work directly with the Git repositories.
b) You create Github forks of the catalog repositories and create pull requests.
c) You send the CT files to mrustler gmx de
===C Utils Misc===
The AROS source uses at several places the __DATE__ macro to fill the date entry of a $VER tag. Problem is that c:version doesn't understand that date format (e.g. "May 21, 2011"). As a result the output of e.g.
> "version c:shell full" contains "(null)". Is extending the version command to understand the format of __DATE__ the right solution for that problem?
AmigaOs compilers should use __AMIGADATE__ macro or similar form, if it isn't implemented it could be emulated in makefile: -D__AMIGADATE__=\"$(shell date "+%d.%m.%Y")\"
BTW. I think DD.MM.YYYY is better format than "Month DD YYY" because "Month DD YYY" is not localized in any way.
"strnicmp" shouldn't work with NULL pointers
The Situation:
compiled a linklib using c++ object files (using the c++ cross compiler).
compiled a C stub that uses the linklib (using the c++ cross compiler).
Try to link them together (using the c++ cross compiler) with C object
files (using the normal target c compiler) that need to use -nostartup
= cant do because using the c++ files pulls in arosc (for stdio etc.) -
so wants to have the autoinit stuff present.
What can I do about this??
If it is possible to manually open it then what do I need to do exactly?
=== ENV ===
The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact. However in some cases (like this one) it is not required.
99% of the time that statement is true (not required) for pretty much every file in ENV: or do people change their default icons - and prefs settings - every boot?
There seem to be a bad habit of late with developers changing things to reflect their own personal preference when the change isn't actually necessary - It would be nice if people could refrain from doing that in the tree without at least discussing it on the dev-list first (and with good reasoning unless they committed said work in the first place..)
We're not keen on the pollution of the "S:" dir: it's meant to be for scripts. What's wrong with "ENV:"?
Only the fact that it takes up RAM. I understand that for PCs with several gigabytes of RAM this is
irrelevant. But let's remember about other machines. The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact.
However in some cases (like this one) it is not required.
How about implementing in the style of HappyENV then? RAM-disk handler that falls through to reading from ENVARC: if there is no such file stored in it already. Removes RAM usage for unchanged files, removes the need to copy ENVARC to ENV in startup-sequence.
Shouldn't be too hard to make from AmberRAM, or even just extend AmberRAM to provide this service.
Is it feasable to build a special version of AmberRAM handling ENV: that will try and copy the requested file from ENVARC: if it isnt found in ENV: ?
Additionaly it could mark closed "files" as untouched - and expunge them from ENV: after a period of time to free up additional RAM:, or when the system is running low on free memory?
Silenty disappearing files may not be a good plan. Would be nice if the following would work:
ASSIGN :ENV SYS:Prefs/Env-Arc ADD
ASSIGN :ENV RAM:ENV ADD
Where new files put in ENV: end up in RAM:ENV, and opening files looks in RAM:ENV first, then SYS:Prefs/Env-Arc
Well - that's essentially what im proposing but without the assigns - or need for a RAM:ENV directory.
Adding it as a feature of AmberRAM sounds like the most memory efficient way (one handler to load in RAM) but that's only if it is possible to make it handle ENV: additionally to RAM:, and if it is even possible to add the proposed functionality (...and how to make it enable it when accessing ENV:).
===(AS)MP support===
If one has to recompile software for SMP multi core, is there any thing special one has to do to get software to run?
Use task.resource if you need to query information about what tasks are running, and clear msgports completely when they are allocated.
Most code should not need Forbid. Use Semaphores, Messages etc. to sync your own code.
Accessing system structures is a different thing. Use the proper API whenever possible.
How single structures will be protected in the future is still a moving target, at least it is not documented. And you should never use undocumented stuff
Ideas on for SMP multi-core
Another suggestion is ... Forbid/Permit function calls are meant to halt multitasking so as no other task could intervene with what ever the calling task is doing, e.g. setting semaphores. Disable/Enable calls are meant to halt interrupts and as a side effect they also halt task switching.
One option is to make it compulsory to protect shared resources with semaphores and forbid the use of simple Forbid() calls as to protect something. Setting semaphore should be done if possible with atomic instructions (check and alter in one instruction). Or make the second concurrent ObtainSemaphore call halt the second calling task and force if possible a task switch which ever gives better results.
Semaphores could store the owning tasks task pointer instead of boolean to make things easier.
As long as the CPU initiates the DMA transfers through the OS, and the OS ensures that the transferred memory is within the region accessible to the user initiating the transfer, everything is fine. The CPU is the conductor, and the CPU by that has the control of which DMA transfer is initiated and which is not.
All you need to do is to write device drivers reasonable. Hint: CachePreDMA and CachePostDMA exist.
All the Os has to do is to verify that the memory regions to be transferred are valid, and prohibit direct access to the DMA control registers from user space. None of these algorithms imply huge costs.
The current OS design doesn't really allow virtual memory in first place, Forbid() is again the problem.
[http://www.tbs-software.com/guide/index.php?guide=autodocs.doc%2Fmemory.doc&node=1 memory.library API] seem to low level. IMHO the programs should not know how the swapping is implemented. I would just go for one new memory flag
MEMF_SWAPPABLE that indicates that a certain memory region or a whole memory pool won't be accessed during Forbid()/Permit() etc. It only solves part of the problem, it only implements virtual memory and not memory protection. For the latter you need to be able make certain memory inaccessible by other programs, some memory read-only for one task and read-write for other tasks, etc. And I think this should be done in the same Address Space in order to avoid you constantly need to swap between different address spaces.
So to summarize, if there are programs using this API we may provide a wrapper layer to get them working but I am not convinced this API should be the reference API with whom to provide VM to AROS programs.
=== Variadic ===
variadic functions (i.e. functions with an arbitrary amount of arguments).
<pre>
#include <stdarg.h>
[...]
char * STDARGS GetKeyWord(int value, char *def, ...)
{
[...]
va_list va;
[...]
va_start(va, def);
[...]
va_end (args);
</pre>
Please keep with using stdarg rather than having va casted to a LONG * type and varargs handled manually. Doing so, prevents tons of casting, where a simple va_arg can be used. So, string = *((char **) args) instead of string=va_arg(va, char *).
<pre>
#include <stdio.h>
#include <stdarg.h>
int printf (const char * format, ...)
{
int retval;
va_list args;
va_start (args, format);
retval = vfprintf (stdout, format, args);
va_end (args);
fflush (stdout);
return retval;
} /* printf */
</pre>
Couldn't find varargs.h or stdarg.h. and have no use for AROS_SLOWSTACKHOOKS or AROS_SLOWSTACKTAGS.
GCC looks for stdarg.h in a different place:
/bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/include/stdarg.h
Here is a path for a "normal" header:
bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/../../../../i386-aros/sys-include/aros/system.h
The use of vararg.h isn't supported by newer gcc versions. If you want your code to run on architectures that pass part of variadic arguments in a number of registers you need to use AROS_SLOWSTACK macros. Otherwise your program will not work on powerpc and x86_64 ports.
Of course the SLOWSTACK stuff is not needed in a function that can use va_list, va_start, va_arg and va_end. It's only needed if you want to write functions like DoMethod or similar.
#include <stdarg.h>
should be enough no matter if you do cross or native compiling. If it does not work, something is wrong and should be corrected.
Stdarg.h is here, Development:lib/gcc/i386-aros/4.2.2/include/
...which is part of the compiler's default include paths. In other words, #include <stdarg.h> works out of the box, indeed. (sorry, I should have just tried it before invoking "search" or "find"...)
furthermore, myprintf() as shown above won't work, because...
printf(format, args);
...is wrong - the second argument does not match printf() prototype, it expects a argument list, but args is of type va_list (obviously) - so one has to use...
vfprintf(stdout, format, args);
...instead, just like in the original printf(), and add fflush(stdout).
additionally, one could use...
int myarg = va_arg(args, int);
...between va_start() and va_end() to access individual arguments, where each call to va_arg() returns an argument casted to the desired type (here: "int") from the list given (here: "args") and advances to the next one.
wrapping up vfprintf() and modifying the format string now is a major speedup! no more backslash-n typing! this has been haunting me for years!
On MOS and AmigaOS, the NewObject variadic function is kept in the static library. It takes most of the parameters on the stack - thanks to that the implementation of NewObject calls the NewObjectA function. Everything works perfect, and the typical MUI macros may be easily used.
This, however, is not the case when you compile for AROS. Here, NewObject is a variadic macro, not a function. Thanks such approach we do not need any custom compiler in case of systems, where the arguments of variadic functions are passed partially through registers and partially through the stack (This is the case of PPC and x86_64, this is also the reason why both OS4 and MOS require specially patched compilers).
Since NewObject is a macro, the gcc's preprocessor expects the list of macros arguments enclosed within parentheses. In MUI macros it is not the case. Imagine the following test code:
<pre>
#define foo(a,b) ((a)+(b))
int loosy_function(int a, int b)
{
return foo(a,b);
}
</pre>
This will compile and work, but the following piece of code:
<pre>
#define foo(a,b) ((a)+(b))
#define END )
int loosy_function(int a, int b)
{
return foo(a,b END;
}
</pre>
will fail with the error: unterminated argument list invoking macro "foo"
There are two ways of fixing your issue. Either create your new objects outside this huge MUI constructions, and in there use just a pointer, or get rid of the "End" macro and exchange it with "TAG_DONE)".
Badly written software is, for example, casting va_list to an APTR or even doing so as if va_list were a plain table of function arguments. Such code needs to be fixed because it has very few chances to work anywhere but on author's machine ;)
The problem is nOt that they assume sizeof(APTR) == 4, its that they often do not use APTR, and use ULONG to store pointers exclusively. If the code used APTR/IPTR as it should - most of the "problems" wouldn't exist.
It would also help if people would start using variadic arguments properly. Many coders do assumptions which shall never be made. Instead, they should consider using stdarg.h file and all the va_* functions :)
===ABI===
In the head of our SVN repository there are now only 3 directories:
<pre>
admin/
branches/
trunk/
</pre>
We have added two extra dirs there: tags and imports
As discussed when we branch ABI V0 and [[Aros/Developer/ABIv1|ABI V1]] it would also be good to introduce tags. Normally this is done in a directory in the repository called tags. Currently we don't have this directory there. (We do have branches/tags that is a hack I have done because one doesn't have write access in the top directory. I think this directory is not clean and should be removed).
The second directory I would introduce is an imports directory for implementing vendor branches as discussed in the svn [http://svnbook.red-bean.com/en/1.5/svn.advanced.vendorbr.html book]. Currently we use code from several different projects and that code is stored inside the AROS tree; we seem to have problems with keeping this code up to date and merge our changes upstream. Maintainers of up stream projects like the MUI classes etc. have complained about this (to put it lightly).
Introducing these vendor branches would make it easier to see what changes we have made and make patches to be sent upstream and make it easier to import newer upstream versions of their code. Although can't "copy" the vendor branch into the main branch because it's already there, so start with a "merge".
Yes, the first step to make the code already in the repository compatible with the vendor branches will be the most difficult. The best way to do it the following way:
* first import the version on which the current AROS code is based into the vendor branch
* then import the new version over it in the vendor branch
* finally merge the difference between these two version in the AROS code present in the repository.
For example, place NList directly under vendor and not in a subdirectory like "contrib/zune/classes".
Actually after we have a stable [http://aros.sourceforge.net/documentation/developers/specifications/drafts/abiv1.php ABIv1 (2012 or later)]. We need to move away as much as possible from the contrib directory to some other repositories. The reasons are ...
* The AROS repository should be for the core AROS code.
* other contrib projects should be tried to be compiled for all Amiga-like OSes.
* The release scheme for AROS and the other programs should not have to be aligned.
* Binary versions should be provided on aros-archives and on aminet and/or OS4Depot to install them. (Some clever programs should maybe be provided to make the life of distribution developers easier).
* avoid parallel forks of programs for AROS and the other amiga OSes.
If there is really a need for a place for hosting AROS projects we may investigate setting up such a server but then including bug tracking, governance, maillist, etc. for each project separately. I personally think there are already enough places like sourceforge, google code, savannah, etc. where people can go for hosting such projects.
==Links==
* http://amigadocs.hokstad.com
* http://amigadocs.hokstad.com/doku.php?id=dev-links
* http://www.liquido2.com/tutorial/index.html
* Amiga(TM) OS4 has a [http://www.ast-workshops.co.uk/os4pg/ workshop] page and hope to produce a [http://amigaworld.net/modules/newbb/viewtopic.php?topic_id=31117&forum=42#549091 book] soon. [http://www.solie.ca/articles/map/map.html Brief Guide].
In the future...?
*AROS 64bit - SMP, Vulkan with OpenGL compability layer
*AROS 32bit - keep for historic reasons
What would you like to see implemented in AROS?
ABIv1 completed, SMP (x86_64), SendMsg()/GetMsg() to support memory protection between target and destination, in that order. Michal Schulz and Jason McMullan have been toying with the question "What are the minimal changes needed to the AmigaOS 3.1 API to support SMP"? The answer so far seems to be "few, but subtle". For example, SysBase->ThisTask is no longer meaningful on SMP, but FindTask(NULL) is. Disable() and Forbid() are shockingly bad on performance, but adding a spinlock semaphore mode to SignalSemaphore will help new code on SMP.
Leveraging a 'common' OS with a lot of machine support (Linux, MacOS, Windows, QNX, etc.) is something that AROS has been doing for quite a long time, and it is the biggest strength of AROS. This AROS experience and programming model, in the same way the Google's Android layers on top of Linux, or MacOS X layers on top of the Darwin/BSD kernel, as a first step
* The graphics + layers subsystem could be implemented as a shim on top of a OpenGL ES implementation (ie on any modern Linux system, or the RaspberryPI's hardware, MacOS X, etc).
- This also allows every window to be on its own 3D surface with backing store, allowing Wanderer (or a Commodity)
rearrange/zoom/animate app windows without having to send a pile or refreshes to them
* Use OpenAL as the sound backend
* AROSTCP would be a thin layer over the native OS's TCP/IP stack
* dos.library, poseidon.library, and input.device would be slim shims over the native APIs
* If we move to loading all libraries' into the application's task space, instead of a single global instance of the library, this will allow SMP and MMU more easily.
- Yes, it will require a lot of work in the libraries to make this transition
- Yes, I do think it will be worth it in the end.
* A 'fat binary' install format (or, maybe LLVM bytecode) that can be 'flattend' to the target architecture on installation.
So, what would this 'AROS of the future' look like?
* AmigaOS 3.x style API, with certain 'fundamental changes' to message passing
* Uses the underlying OS' device drivers, so more AROS developer effort can go to user-visible features and bugfixes
* Allows AROS applications to run side-by-side with the OS's native apps
And why would anyone want to program on such a system?
* AROS applications would run on any system that has the AROS Framework installed
* AROS applications are pixel-for-pixel the same on all platforms.
* Develop with the knowledge that you are guaranteed OpenGL and OpenAL, and the rest of the AROS Framework
an option for mmake to dump its dependency of metatarget in a graphviz[*] input file. This should make it possible to visualize the dependencies and hopefully be inspiration for cleaning up some mess, circular or unneeded dependencies and so on.
AmigaOS gcc 9 [https://franke.ms/amiga/gcc.wiki Old versions] able to create binaries for AmigaOS and [https://eab.abime.net/showthread.php?t=93813 Upgrading gcc versions]
==References==
{{reflist}}
{{status|50%}}
{{BookCat}}
jfhtzb65xnn94uf2etqctwn325qkjbo
4656307
4656306
2026-08-05T06:37:12Z
Jeff1138
301139
4656307
wikitext
text/x-wiki
{{ArosNav}}
==A technical overview of AROS==
Google translation [http://translate.google.com/translate?hl=en&sl=auto&tl=de&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs German], [http://translate.google.com/translate?hl=en&sl=auto&tl=fr&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs French], [http://translate.google.com/translate?hl=en&sl=auto&tl=it&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Italian], [http://translate.google.com/translate?hl=en&sl=auto&tl=es&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Spanish], [http://translate.google.com/translate?hl=en&sl=auto&tl=hi&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Hindi], [http://translate.google.com/translate?hl=en&sl=auto&tl=zh-CN&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Chinese],
[http://translate.google.com/translate?hl=en&sl=auto&tl=ru&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Russian],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pl&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Polish],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pt&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Portuguese]
{{Uncited}}
AROS,<ref>[http://aros.sourceforge.net/download.php References and sources]</ref> like AmigaOS (TM), is a [[w:Message passing|message-passing]], [[w:Preemption (computing)|preemptive]] [[w:Multitasking|multitasking]] [[w:Operating system|OS]].
It uses [[w:Reentrant (subroutine)|re-entrant]] shared libraries to save memory space.
AROS is based around an executive library kernel (Exec) and two other libraries:
* Exec (the "kernel", which is not a kernel in the modern sense),
* Intuition (graphics and GUI, integrated into the system) and
* AmigaDOS (Disk Operating System, the Metacomco's Tripos modified to work with Exec).
The design philosophies of AmigaDOS and Intuition are rather different, the former adopting a C-like API and the latter creating an [http://www.basden.demon.co.uk/amiga/amiga.oo.html object-oriented], message passing aware environment for the programmer. The system base is the only absolute address in AmigaOS (located at 0x00000004) this does differ with AROS as AROS SysBase is automatically provided (no $4) but everything else is dynamically loaded. The OS is well known for delivering high performance due to its close connections with the hardware, while simultaneously having the flexibility to support re-targetable graphics (Cybergraphics) and retargetable audio subsystems (AHI).
: Diagram showing relationships of libraries to system needed
Remember, AROS is a [http://en.wikibooks.org/wiki/Aros/Developer/ABIv1 research] operating system, and while all contributions to the base AROS code are welcome, please contact the dev list first for any core changes. Writing applications for AROS does not have this requirement.
While AROS appears and feels almost feature complete, it is still [[Aros/Developer/IncompleteAPIs|missing a small number of functions]] from the Amiga API - as well as a few implementations of [[Aros/MissingFunctionaility|core functionality]]. There are also a number of user applications that, while not strictly part of the AmigaOS 3.1 environment, need to be written.
[https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1201 This thread provides] information for setup, [http://www.aros.org/documentation/developers/index.php documentation] and whether you are interested in core OS changes and/or writing/porting software apps
*you compile directly under AROS, which can be running on either real hardware, virtual hardware
*in hosted mode under linux/window, cross-compile from that host OS (save your files as ISO-8859-15 encoding instead of UTF-8)
The repository for the [https://github.com/aros-development-team/AROS current development version ABIv1], the [https://github.com/deadw00d/AROS/tree/alt-abiv0 repository for current stable PC version ABIv0 with backported ABIv1 features is located which is used on AROS One and Icaros x86 based distros]
Any [https://github.com/aros-development-team/AROS/issues bugs / issues can be added]
We have a [https://arosdevteam.slack.com/archives/CUFV48U3H slack here], discord on [https://discord.gg/UKp9qdEBuQ Discord@AmigaDev],
==Software Development for AROS==
===Programming languages===
Apart from 'The Developer Environment', which primarily supports C/C++ code, there are other programming languages available for AROS:
'''Scripting'''
:[[Aros/User/DOS|DOS]], included in all
:[[Aros/Developer/Docs/LUA|LUA]], included in all or [http://www.airsoftsoftwair.de/en/prod_hollywood.html Hollywood]
:REXX [[Aros/Developer/Docs/Rexx|Regina (AROS' ARexx)]], included in all
:Python [ Info], included in Icaros
:Ruby [http://www.ruby-lang.org/en Info]/[http://archives.aros-exec.org/index.php?function=browse&cat=development/language download]
'''Basic'''
:[http://amos.pspuae.com/AmosProManual/contents/c1.html '''Amos Pro'''] [http://amos.pspuae.com/index.php?action=forum#1 compatible] [http://www.amigacoding.com/index.php/Main_Page commands] (all incomplete)
::[http://sourceforge.net/projects/xamos/ X-Amos]
::[http://sdlbasic.sourceforge.net/ SDLBasic] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://alvyn.sourceforge.net/ Alvyn] ([http://www.dusabledanslherbe.eu/AROSPage/MISC.14.html download])
::[[Aros/Developer/Basic/Basic4SDL|Basic4SDL]] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://www.ultimateamiga.co.uk/index.php?topic=9425.0 Project Deimos],
:'''Blitz Basic''' [http://aros-exec.org/modules/newbb/viewtopic.php?post_id=46537#forumpost46537 none on AROS]
:: [http://www.amiforce.de/main.php Amiblitz] on JanusUAE amiga(TM) emulator
:'''Amiga Basic'''
:: [ ACEBasic]
'''Misc'''
:[[Aros/Developer/Docs/E|AmigaE Portable E]]
:[https://ae.arosworld.org/index.php?board=11.0 FreePascal FPC Aros-Exec thread], [http://archives.aros-exec.org/index.php?function=browse&cat=development/language Download], FreePascal for AROS has its own [http://fpcaroswiki.alb42.de/ Wikibook],
:[[Aros/Developer/Docs/LLVM|LLVM]],
===Where to get the C/C++ Environment===
If you want to develop for AROS, its generally easier to be running linux hosted AROS development environment especially for C++, cross compiling the code. That's how most developers now are doing it. g++ is used to compile owb web browser as well as some other AROS software. If you were hoping for a rich set of C++ libraries or classes defined for the OS feature set, you might be disappointed.
AROS Native compiling is possible, but you're much more likely to run into the odd bug(s) in the dev environment since it gets little testing and fixing by other developers.
Is there a sftp software or scp over ssh available?
Maybe. At least the security part would be handled by [https://github.com/jens-maus/amissl amissl] [https://archives.arosworld.org/index.php?function=browse&cat=network/misc port]. DOpus5 has recently added sftp support. See here for a [https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1974&highlight=ssh&pid=12073#post_12073 ssh scp client]
[https://arosdevteam.slack.com/join/shared_invite/enQtOTc4Mzg0NDIzNzQ0LWQ2NWZmNmMwNGIwNGEyNTgxNzU3MGFjMTk3ZThmOTQ1MTVjMzhmNTllYWQ0ZTUxMjBjMGE0Y2VjMDJmNTc5MzI#/shared-invite/email Slack Dev Forum]
====Cross compilers from Windows or Linux====
*Windows WSL2 walkthrough can be [https://arosnews.github.io/how-to-cross-compile-aros-hosted-wsl/ found here]
you want to build AROS. No problem.
Here are instructions for 64-bit:
https://github.com/deadw00d/AROS/blob/master/INSTALL.md
Here are instructions for 32-bit:
https://github.com/deadw00d/AROS/blob/alt-abiv0/INSTALL.md
And as always has been the case you can use the contrib archive to 'obtain' the development directory which contains the /native/ AROS gcc compiler and tools. That compiler is used to build AROS itself but can be used outside the AROS build process by providing --sysroot with indicated directory to cross compile for AROS.
=====Older guides for Linux hosted compiler=====
Please install these packages before moving to next step. Below is a reference list for Debian-based distributions. Reference build system was Ubuntu 18.04/20.04 amd64.
subversion git-core gcc g++ make gawk bison flex bzip2 netpbm autoconf automake libx11-dev libxext-dev libc6-dev liblzo2-dev libxxf86vm-dev libpng-dev gcc-multilib libsdl1.2-dev byacc python-mako libxcursor-dev cmake zsh mingw64
Do all of these operations under home directory of your user or another directory where your user has write permissions.
Specifically, in a section "Linux-i386", be sure first to build the cross-compiler (toolchain-alt-abiv0-i386) and only then AROS itself (alt-abiv0-linux-i386).
Clone & build
<pre>
$ mkdir myrepo
$ cd myrepo
$ git clone https://github.com/deadw00d/AROS.git AROS
$ cd AROS
$ git checkout alt-abiv0
$ cd ..
$ cp ./AROS/scripts/rebuild.sh .
$ ./rebuild.sh
</pre>
Now to the build selection below - Linux-i386
Select toolchain-alt-abiv0-i386 - Select alt-abiv0-linux-i386 (DEBUG)
Start AROS by:
<pre>
$ cd alt-abiv0-linux-i386/bin/linux-i386/AROS
$ ./Arch/linux/AROSBootstrap
</pre>
Pc-i386 Select toolchain-alt-abiv0-i386 (if not built yet) - Select alt-abiv0-pc-i386
ISO image available in alt-abiv0-pc-i386/distfiles
Now that we have linux-hosted build, we can resume native (option 2).
Run ./rebuild.sh and selection option 2. Wait until it finished, then:
<pre>
$ cd alt-abiv0-pc-i386
$ make
</pre>
Now
<pre>
$ make bootiso
</pre>
Now, your compiler is located in toolchain-alt-abiv0-i386 directory and named i386-aros-gcc. Includes are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/include and libraries are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development.lib.
This is how then can be passed to the compiler:
/home/xxx/toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot /home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development -L/home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/lib
../toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot bin/linux-i386/AROS/Development local/helloworld/helloworld.c -o local/helloworld/helloworld
Another method was using Debian like distros and download the gimmearos.sh script (on [http://archives.aros-exec.org/index.php?function=browse&cat=development/cross aros-archives]) to setup the developer environment by downloading necessary packages ...
The gimmearos script is a good start in that direction, building the cross compilers and hosted AROS environment, but gimmearos.sh might be out of date or not be completely compatible with any given linux distro.
In order to do that, you have to compile AROS yourself. Download AROS source archive not contrib. Compile AROS by entering the main directory
./configure
make
([http://aros.sourceforge.net/documentation/developers/compiling.php More on compiling AROS]). The result will be a basic AROS system without development tools.
To compile C++ on Linux, type 'make gnu-contrib-crosstools', creating the cross-compilers in ./bin/linux-i386/tools/, named i386-aros-gcc, etc.
'''Note''': Currently, to make the cross compilers usable copy 'collect-aros' from tools/ to tools/i386-aros/bin/. At the moment the cross compilers if used from the Linux command line will only find it when it's there.
If you want to compile native compilers (the Developer Environment), type 'make contrib-gnu-gcc', creating native compilers in AROS' System:Development/bin directory.
When the output needs to be stripped <code>--strip-unneeded --remove-section .comment</code>
The Obj-C backend should build out of the box.
Open contrib/gnu/gcc/mmakefile.src and search for the line which contains "--enable-languages" and add "objc" to the list of languages that follows it.
--enable-languages=c,c++,objc
Better make it—enable-languages=c,c++,objc,obj-c++
ObjC++ is broken as soon as you try to use exceptions, but that might change in future GCC versions and it does not hurt having it there already.
Do you need a cross-compiler or a real compiler? In the first case you can get away with just downloading the proper gcc archive, apply the patch and proceed with the normal gcc build. In the case of a real cross-compiler then when downloading the contrib sources, also need to download the normal sources, place the contrib sources into a directory called contrib, need to install autoconf+automake+perl+python, call ./configure, cd into the subdirectory and type make.
to rebuild GCC with host == build == target == i386-pc-aros. So just get the vanilla sources and apply the patches without bothering about the build system?
[https://vmwaros.blogspot.com/2019/10/a-pre-configured-development-machine.html pre-configured VM environment vmware virtual machine to develop AROS and AROS software]
'''64 bit'''
'''32 bit'''
A good option for multiple OS is [https://axrt.org/index.php?tab=download-aros AxRuntime lets developers compile their Amiga API-based applications as Linux binaries being able to utilize modern development tools available on Linux, like IDEs, debuggers, profilers, etc]
====Native compilers for AROS====
Namely gcc for C or g++ for C++ are supplied with the [[Aros/Developer/Docs#The Developer Environment|Developer Environment]], which is already '''setup''' and part of any current AROS distribution like AROS One or the nightlies
* Current GCC 6.5 (32bit) though moving to 10.5 and 15.1 (64bit)
* Older software components. GNU GCC 4.x GNU BinUtils, GNU Fileutils 4.x, GNU Textutils and others.
On single partition systems and the Boot ISO, the AROS Developer environment is installed under "SYS:Development/". Systems with multiple partitions - such as a Work: partition - tend to install it to there instead, however it can be installed manually to any location. Please remember, if moving, that you will need to correct the Development packages 'install location' env variable to point to the new locations root - look in SYS:S/startup-sequence.
<pre>
Assign Development: SYS:Development
Assign C: Development:bin ADD
</pre>
In the aros build instructions. you need to check out contrib and/or ports into your AROS source directory, as subdirs. then, assuming you are building in an external build dir, as you should, you simply configure and "make contrib" for instance or whatever submodule you might want to build.
===Beginners Tutorials in C C++===
As AROS is [http://eab.abime.net/showthread.php?t=29856 C based] API compatible to AmigaOS 3.x, so most of the information on programming C on the Amiga applies to AROS as well. Please note that there is a lot of AmigaOS 1.3 (1985-1989) and [https://www.markround.com/amigaguide AmigaOS AOS 2.x (1990-1992)] information around but OS3.1 is recommended but limited in amount.
Brief overview of what is required to write AROS Applications
# Using [[Aros/Developer/Docs/Libraries/Intuition|Intuition]] for basic screens/windows
# Using graphics within windows via 8bit [[Aros/Developer/Docs/Libraries/Graphics|graphics]] and so onto 15-16-24bit [[Aros/Developer/Docs/Libraries/CGFX|cybergraphx]]
# Load and save work to [[Aros/Developer/Docs/Libraries/DOS|dos]] disk drives
# Using the [[Aros/Developer/Zune|ZUNE GUI Environment]]
Writing native games require this extra information
# Using [[Aros/Developer/AHIDrivers|AHI audio hardware independent API]]
# Using USB joystick/joypad with the Poseidon USB stack through [[Aros/Developer/Docs/Libraries/LowLevel|LowLevel]] library
Additional features that could be added later
# Adding additional [[Aros/Developer/Docs/Libraries/Locale|Locale]] language translations to your program
# Adding a [[Aros/Developer/Docs/Rexx|AREXX/Regina]] port to your application
# Executing Amiga(TM) [[Aros/User/DOS|DOS]] commands from your application
# Using [[Aros/Developer/Docs/Libraries/Icon|icons]] (.info files) and icon tooltypes (stack, version, and program startup options)
# Local couch or IP based SANA2 networking co-op multi player gaming support
Most AmigaOS programming books are nowadays very much out of date as most are from the late 1980s and do not cover later amigaOS releases like 3.1 for example, Rob Peck's book "Programmer's Guide to the Amiga". The Amiga ROM Kernel manuals aka RKMs like Libraries (3rd edition), Devices (), the AmigaDOS manual (3rd edition) and the Style Guide may have their uses. There are some reference examples from AmigaMail and Devcon notes (available again on an Amiga developers CD 2.1).
For Arexx then "The Amiga Programmer's Guide to ARexx" by Eric Giguere, which was published by Commodore is useful as well as an "Arexx Cookbook".
Curly brackets missing - try SHIFT + ALT + 7 or 0.
* Beginners C Guide [http://www.iu.hio.no/~mark/CTutorial/CTutorial.html C Tutorial],
* [http://thecguru.com/ C for beginners],
* [http://fresh2refresh.com/c/c-basic-program/ C programming basics] for students,
* [https://www.edx.org/courses Free Online course] from American Universities
* Reference Amiga [http://amigadev.elowar.com/ API reference].
* AROS based c source can be found [[Aros/Developer/Docs/Examples|here]] and lots of example code can be found inside [https://github.com/aros-development-team AROS sources] themselves and from the contrib section of the archives from [https://github.com/aros-development-team/contrib Aros site], and study the AROS applications source code, e.g. the test programs from the Tests drawer (folder/directory). Take a look at the code of some smaller AROS programs might be a better and more up to date guide. Some old Os3 [http://www.blackfiveservices.co.uk/amiga-c/ here]
When you upload your builds, please write the architecture (like i386-aros, x86_64-aros, etc.) in the archive name
and it is also advisable to write in the field "Requirements" what ABI (ABIv11, ABIv0 or ABIv1)
===Compiling C/C++ Code===
Native, although we have a IDE Integrated Development Environment (Murks), it does lack a debugger. Whilst others use a combination of a text editor and shell to edit code. Most though use an AROS hosted on Linux to take advantage of the better GCC tools like GDB and various IDEs.
Open shell - its a menu option at the top left of Wanderer (desktop). Or by using the right Win key and w (or F12 and w) within the directory with the source code. Type in
sh
to change the amiga shell into a unix shell. You can then type in ls (unix equivalent to amiga dir). Take a look [http://en.wikibooks.org/wiki/Linux_commands here] for more commands.
For a single file program-name.c or program-name.cpp
gcc -o program-name program-name.c
or
g++ -o program-name program-name.cpp
or
g++ -o test -Wall -g main.cc texturelib.cpp xmodelib.cc -lsdl -lgl
To close the shell, click on the top left-hand corner to close (twice). Once to get back the aros shell and then again to close finally. Use [http://freshmeat.net/projects/cksfv/ cksfv] as a test.
Some source code requires the addition of Amiga API libraries, like dos, which you can flag at the compile time as
gcc -o julia.exe julia.c -ldos
For DOS use -ldos as example and if you are compiling mui codes it will be -lmui or intuition -lintuition. Other missing symbols are due to linker libraries being necessary for linking in functions that aren't in the standard C libraries. For example some source code would need added
-lz or -lm or -lpng or -larosc etc.
use this in unix line command mode to search for 'search-item' in many .c files (*.cpp for c++, etc.)
grep -l 'search-item' *.c
If the program is not executable, try using parameter fno-common
"Delete #?.o"? Or if you are using abcshell then "rm *.o"
:''More information: [[Aros/Developer/Porting software]]''
=== How to make Apps have AROS 64-bit specific support code ===
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
AROS64 already uses 64bit addressing, it just doesn't setup the MMU for more than 4GB physical memory currently.
When porting software to AROS64 it is "mostly" a case of converting ULONG's that are used to store pointers, into IPTR's instead, etc. Another quirk, is making sure items on the stack are the correct size by using the STACKED attribute for them.
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
compiling mui stuff for aros setting -std=gnu99 is necessary, had -std=c99 usually
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order.
crash which suggest memory corruption. From my experience porting from 32-bit to 64-bit these kinds of errors can happen if a pointer is passed somewhere via ULONG variable. Then half of the pointer is cut.
To generate this error, please run AROSBootstrap with -m 1024. This will allocate heap to 64-bit address space which will make these errors immediatelly visible. These types of crashes are hard to debug. Disabled as little code as possible to stop corruption from occurring and then try to read from the code where it can be broken
Crashing in tslf_freevec is another symptom of memory corruption and these memory corruptions will manifest differently on different setups.
==Coding conventions==
As the AROS core source is a shared developer experience, there are rules regarding structure and style. When it comes to your creating your own app and coding, the structure and style should be your own, i.e. you should enjoy what you do and do it so that you can understand what is going on.
===Layout===
<syntaxhighlight lang="c">
static void 1st_function()
{
program
exit(0);
}
int main(void)
{
1st_function();
2nd_function();
3rd_function();
return 0;
}
</syntaxhighlight>
<syntaxhighlight lang="c">
struct Screen * openscreen(void);
struct Window *openwindow(struct Screen *screen, const char *title, LONG x, LONG y, LONG w, LONG h);
VOID 1st_function();
VOID 2nd_function();
int main(int argc, char **argv)
{
program
return 0;
} /* main */
VOID 1st_function()
{
}
VOID 2nd_function()
{
}
</syntaxhighlight>
===General style===
This code is used by many people and therefore you should keep some things in mind when you submit source code:
* Keep things simple
* Keep the source clean
* Always know what you are doing, if not flag it and describe what needs to be done...
* Explain clearly/simply what you are doing
* Remember that you write code once but that it is read many times by many people
===Comments===
AROS uses some of the comments in the source to generate the documentation. Therefore it's necessary to keep a certain format so the tools can find their information. Other comments are ignored but they should explain what you thought when you wrote the code. If you really can't think of an explanation, then don't write the code a second time like this:
<pre>
/* This adds 1 to t */
t ++;
</pre>
What we think of is this:
<pre>
/* Go on with next element */
t ++;
</pre>
===Formatting===
This is only '''IMPORTANT''' if you are going to work on the core AROS code or contrib but not applications which may reside outside like on AROS Archives or other websites.
<syntaxhighlight lang="c">
{
/* a */
struct RastPort * rp;
int a;
/* b */
rp = NULL;
a = 1;
/* c */
if (a == 1)
printf ("Init worked\n");
/* d */
if
(
!(rp = Get_a_pointer_to_the_RastPort
(
some
, long
, arguments
)
)
||
a <= 0
)
{
printf ("Something failed\n");
return FAIL;
}
/* e */
a = printf ("My RastPort is %p, a=%d\n"
, rp
, a
);
return OK;
}
</syntaxhighlight>
Looks ugly, eh ? :-) Ok, here are the rules:
<pre>
If several lines contain similar code, put similar things below each other (see a and b);
Put spaces between operands and operators
Put braces {}, brackets [] and parentheses () below each other (d) if there is much code between.
Brackets and parentheses may be in one line if the code between is small (c)
Indent by 4 Spaces. Two indent levels may be abbreviated by one tab.
</pre>
'''Before committing please normalize the indentation - if you have a mixture of tabs and spaced - please always use spaces, 1 tab = 4 spaces.'''
The reasons for this are:
# While some editors can use an arbitrary sizes for tabs, it's a bit complicated to tell another editor which tab size was used by the one used to write the code.
# Most code in AROS was written this way and your code should look like the rest.
# You can print this code on any printer without special tools to "fix" the tabs.
# Most editors have smart tabs which do exactly this. If your editor doesn't, write a bug report.
If you have a function with many arguments (d, e) you should put the parentheses in lines of their own and each argument in one line (d) or put the first argument behind the opening parentheses (e) and each following argument in a line of its own with the comma in front. The closing parentheses is in a line of its own and aligned with the beginning of the expression (i.e. the a and not the opening parentheses or the printf()).
Use a single blank line to separate logical blocks. Large comments should have a blank line before and after them, small comments should be put before the code they explain with only one blank line before them.
If you see any TABS in AROS core sources then the suggestion is to "detab the file and commit that separately" either before or afterwards from making functionality changes. Make two commits instead of one. This makes it easier for others to see the real changes instead of having to dig through multiple lines of irrelevant diffs.
===Eliminating Global Variables===
i.e. pass variables to functions (local scope) or classes making it easier to track and debug your code.
Any time you find that you need a particular thing in 'a lot of different places', chances are that all those places are conceptually related, and so you can create a class, a namespace, a function, or some other higher-level organizational unit to represent that relationship. This makes the program easier to understand.
Bad Designs
* All variables are global.
* There are no standalone functions, only sub-procedures which act on the global variables.
* Every sub-procedure is at least 500 lines to several thousand
* Every sub-procedure has more than one task to perform
* Copy-paste is preferred to writing methods, AND subtle changes are made in the middle of the code
Good Designs
* structure program into functions (C or basic) - top-down procedural approach
* put in class(es) (freepascal or C++) - the object is fixed and you use methods to access the object
<pre>
class String_List
{
private:
list<string> m_List; // member
public:
void read_strings() { /* read strings into m_List */ }
void print_strings() { /* write contents of m_List to stdout */ }
void sort_strings() { /* sort contents of m_List */ }
void sort_strings_reverse() { /* reverse-sort contents of m_List */ }
void unique_strings() { /* remove duplicate strings */ }
};
int main()
{
String_List myList; // local
myList.read_strings();
myList.sort_strings();
myList.print_strings();
myList.sort_strings_reverse();
myList.print_strings();
myList.unique_strings();
myList.print_strings();
return 0;
}
</pre>
This way it is very easy to replace the list with new list for debugging purposes, or replacing the methods without replacing the list, when you want different results. You only have to replace the content of the local variables.
So create the structure that matches your data (linked lists, trees, arrays, etc.) and what to do with them (sorting, searching, etc.)
<pre>
.h usually contain #define #include typedef enum struct extern screen and window definitions (data structures)
.c should contains functions and algorithms
</pre>
One way to look at it is that menu headings act as the .c file and sub-menu headings as functions.
When you start a project, you place a couple of declarations in the include file. As the project continues, you place more and more declarations in the include file, some of which refer to or contain previous declarations. Before you know it, you have a real mess on your hands. The majority of your source files have knowledge of the data structures and directly reference elements from the structures.
Making changes in an environment where many data structures directly refer to other data structures becomes, at best, a headache. Consider what happens when you change a data structure.
Use good variables names to help clarify code and only comment when you need to explain why a certain programming approach was made.
You're Refactoring Legacy Code, you see a global, you want to get rid of it. How do you do this?
Exactly what to do depends on how the global is used. The first step is to find all uses of the global throughout the code, and get a feel for what the significance of the variable is and how it relates to the rest of the program. Pay particular attention to the "lifetime" of the variable (when it gets initialized, when it is first used, when it is last used, how it gets cleaned up). Then, you will probably make the global a data member of a class (for OO languages), or you will write some get/set functions. Converting to the Singleton Pattern is common, but you may discover that it makes more sense for the data element to be a member of an existing singleton, or maybe even an instance variable.
# Create a basic read method, either as a class or a global function. Replace all reads with the access method, but leave the variable defined as a global.
# Review each of the writes to the method and extract action functions one at a time. Unless two operations are coded identically in the original code, extract each write access separately.
# Change the variable scope from global to local.
# Analyze similar action functions to determine if any can be merged, i.e., there are no functional differences in the results of the function, just differences in the implementation details.
# Review the calls to the read method and see if a more complex functionality should be applied. Follow the approach for writes and unless implementations are identical, create separate access functions.
# Analyze the access functions for duplication.
As returning variables by "passing by value" are forgotten, so "passing by reference" is often used instead. The reference is a pointer to the variable so the value is remembered when returned.
Alternatives
* Hidden Globals
* Singleton Pattern
* Database or TupleSpace
* Context Object
* Dependency Injection
* Stateful Procedures
==AROS/AmigaOS APIs and Docs==
<pre>
Library:
- Private data structure
- Many public access methods
Device:
- Private data structure
- Two (BeginIO/AbortIO) access methods
Resource:
- Public data structure
- *NO* access methods
</pre>
And, being Amiga OS-compatible, there are exceptions to all of these.
===System Libraries===
The [http://aros.sourceforge.net/documentation/developers/app-dev/index.php AROS Guide To Libraries] can be used as a guide to individual commands and Old Dev Docs are used in application programming.
The generated [http://aros.sourceforge.net/documentation/developers/autodocs/ Aros AutoDocs HTML Read] or download [http://aros.sourceforge.net/download.php docs-html.bz2 from here].
Amiga/Aros styles libraries are very different from windows and linux libs. Typical .so/dll libraries are foreign to most Amiga-like OS
*[[Aros/Developer/Docs/Libraries/AROSC|arosc.library]]
*[[Aros/Developer/Docs/Libraries/AmigaGuide|amigaguide.library]]
*[[Aros/Developer/Docs/Libraries/ASL|asl.library]]
*[[Aros/Developer/Docs/Libraries/Bullet|bullet.library]]
*[[Aros/Developer/Docs/Libraries/BSDsocket|bsdsocket.library]]
*[[Aros/Developer/Docs/Libraries/CAMD|camd.library]]
*[[Aros/Developer/Docs/Libraries/Codesets|codesets.library]]
*[[Aros/Developer/Docs/Libraries/CGFX|cybergraphics.library]]
*[[Aros/Developer/Docs/Libraries/CGXVIDEO|cgxvideo.library]]
*[[Aros/Developer/Docs/Libraries/Commodities|commodities.library]]
*[[Aros/Developer/Docs/Libraries/DataTypes|datatypes.library]]
*[[Aros/Developer/Docs/Libraries/DiskFont|diskfont.library]]
*[[Aros/Developer/Docs/Libraries/DOS|dos.library]]
*[[Aros/Developer/Docs/Libraries/Exec|exec.library]]
*[[Aros/Developer/Docs/Libraries/Expansion|expansion.library]]
*[[Aros/Developer/Docs/Libraries/FreeType2|freetype.library]]
*[[Aros/Developer/Docs/Libraries/GadTools|gadtools.library]]
*[[Aros/Developer/Docs/Libraries/Graphics|graphics.library]]
*[[Aros/Developer/Docs/Libraries/Icon|icon.library]]
*[[Aros/Developer/Docs/Libraries/Identify|identify.library]]
*[[Aros/Developer/Docs/Libraries/IFFParse|iffparse.library]]
*[[Aros/Developer/Docs/Libraries/Intuition|intuition.library]]
*[[Aros/Developer/Docs/Libraries/Keymap|keymap.library]]
*[[Aros/Developer/Docs/Libraries/Layers|layers.library]]
*[[Aros/Developer/Docs/Libraries/Locale|locale.library]]
*[[Aros/Developer/Docs/Libraries/LowLevel|lowlevel.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingBas|mathieeesingbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubBas|mathieeedoubbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingTrans|mathieeesingtrans.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubTrans|mathieeedoubtrans.library]]
*[[Aros/Developer/Docs/Libraries/Mathtrans|mathtrans.library]]
*[[Aros/Developer/Docs/Libraries/MUIMaster|muimaster.library]]
*[[Aros/Developer/Docs/Libraries/Partition|partition.library]]
*[[Aros/Developer/Docs/Libraries/PopUpMenu|popupmenu.library]]
*[[Aros/Developer/Docs/Libraries/OOP|oop.library]]
*[[Aros/Developer/Docs/Libraries/Regina|regina.library]]
*[[Aros/Developer/Docs/Libraries/Reqtools|reqtools.library]]
*[[Aros/Developer/Docs/Libraries/RexxSysLib|rexxsyslib.library]]
*[[Aros/Developer/Docs/Libraries/ScreenNotify|screennotify.library]]
*[[Aros/Developer/Docs/Libraries/TTEngine|ttengine.library]]
*[[Aros/Developer/Docs/Libraries/Thread|thread.library]]
*[[Aros/Developer/Docs/Libraries/Utility|utility.library]]
*[[Aros/Developer/Docs/Libraries/Xadmaster|xadmaster.library]]
*[[Aros/Developer/Docs/Libraries/Workbench|workbench.library]]
*[https://github.com/aros-development-team/AROS/commit/c82e86b8480277998014cc327b56c7664023a52f ClassAct Reaction boopsi class]
===AROS Subsystems===
# [[Aros/Developer/Zune|Zune MUI compatible GUI]]
# [[Aros/Developer/AROSAppPackages|AROS Application Packages]]
# AHI Audio Drivers - [[Aros/Developer/AHIDrivers|Usage]]/[[Aros/Developer/AHIDriversDev|Development]]
# AROSTCP Sana2 Network Interface Drivers - [[Aros/Developer/NICDrivers|Usage]]/[[Aros/Developer/NICDriversDev|Development]]
# [[Aros/Developer/AmiSSL|AmiSSL]]
# gfx.hidd/cybergraphics Video Drivers - [[Aros/Developer/GfxDrivers|Usage]]/[[Aros/Developer/GfxDriversDev|Development]]
# IO Device Drivers - [[Aros/Developer/IODeviceDrivers|Usage]]/[[Aros/Developer/IODeviceDriversDev|Development]]
# USB Device Drivers - [[Aros/Developer/USBDrivers|Usage]]/[[Aros/Developer/USBDriversDev|Development]]
# PCI Device Drivers - [[Aros/Developer/PCIDrivers|Usage]]/[[Aros/Developer/PCIDriversDev|Development]]
# [http://www.libsdl.org/ SDL] [https://github.com/search?q=repo%3Aaros-development-team%2Fcontrib%20SDL2&type=code SDL2 commits], [https://github.com/aros-development-team/contrib/commit/c62c3c425c35bac19dadc23be092b0b13a66c76c SDL3 initial commit], []
# [[w:Gallium3D|Gallium 3D]] [http://www.mesa3d.org/ openGL aka Mesa] - [[Aros/Developer/OpenGL|Usage]]/[[Aros/Developer/OpenGLDev|Development]] [http://www.swiftless.com/opengltuts.html Swfitless]
# A small subset of GTK2 through [http://sourceforge.net/projects/gtk-mui/ MUI-GTK]
# Cairo 2D Engine - [[Aros/Developer/Cairo|Usage]]/[[Aros/Developer/Cairo|Development]]
# [[Aros/Developer/Scalos|Scalos desktop API and plugin modules]]
# [[Aros/Developer/VHI|VHI video driver]]
====HIDDs====
*[[Aros/Developer/Docs/HIDD/HIDDClass|hiddclass.hidd]]
*[[Aros/Developer/Docs/HIDD/Graphics|graphics.hidd]]
*[[Aros/Developer/Docs/HIDD/VesaGfx|vesagfx.hidd]]
*[[Aros/Developer/Docs/HIDD/ATI|radeon.hidd]]
*[[Aros/Developer/Docs/HIDD/NVidia|nvidia.hidd]]
*[[Aros/Developer/Docs/HIDD/Nouveau|nouveau.hidd]]
*[[Aros/Developer/Docs/HIDD/Kbd|kbd.hidd]]
*[[Aros/Developer/Docs/HIDD/Mouse|mouse.hidd]]
*[[Aros/Developer/Docs/HIDD/i2c|i2c.hidd]]
*[[Aros/Developer/Docs/HIDD/IRQ|irq.hidd (deprecated)]]
*[[Aros/Developer/Docs/HIDD/PCI|pci.hidd]]
*[[Aros/Developer/Docs/HIDD/PCIPC|pcipc.hidd]]
*[[Aros/Developer/Docs/HIDD/Serial|serial.hidd]]
*[[Aros/Developer/Docs/HIDD/Thunderbolt|thunderbolt.hidd]]
https://github.com/aros-development-team/AROS/commit/4f02ea691799aff3a01f60cfa5f9182c82fc57a8
HIDD are used for device/peripheral low level hardware support drivers. The HIDD system is split up into a collection of classes with a strict inheritance hierarchy. A HIDD class implements a device driver for a single device or in rare cases a group of devices and provides an interface for other programs and devices to access.
In order to maintain portability of interfaces across a wide range of hardware this interface will in general not present the raw interface to the underlying hardware. Instead it will present a generic interface that describes many different hardware implementations. This allows for the best reuse of both interfaces and code.
HIDD API is heavyweight though. You need to open a HIDD library, open oop.library, instantiate an object (even if there's no object); and object calls are more costly compared to plain library calls.
Basically your task is to implement a subclass of hidd.ata.bus for your hardware. just implementing the XXXATA__Hidd_ATABus__xxxxxx methods for the Amiga chipset - and appropriate versions of the interface_xxx.c file(s). pretty much everything in probe.c could be ignored - just write a replacement scan for relevant amiga devices and store whatever info you need in the bus data? only the "SUPPORT_LEGACY" blocks might be related.
You do not need to depend on PCI API. PCI is just a way to discover the hardware on PCs, etc.
<hidd/pci.h> includes (at some depth) <interface/HW.h>, which defines IID_HW. This comes from the 'generic' HIDD class in:
rom/hidds/hidd/hiddclass.conf
did not split up HIDD and HW because they are always used in pair. It's the same as hidd/pci.h bringing definition for: PCI, PCIDriver and PCIDevice. PCI is actually PCIHW, just the name was not changed for backwards compatibility reasons. HW is a 'hub' where HIDD instances plug in.
ATA HIDD aoHidd_ATABus_Use32Bit value is completely ignored unless ata.device first detects correct command line parameter.
Yes. Unfortunately I was unable to find any comment in code or svn history with explanations. Looked at Linux source, there 32-bit PIO is also controller driver's property. Some of them enable it, some don't.
Actually, switching the default to ON should be safe. ata.device is fail-safe at this because during IDENTIFY command it validates upper 16 bits, and if they appear to be zeroes in all 128 longwords, then 32-bit mode is switched off. But, nevertheless, I know how tricky hardware can be, so I decided not to change original behavior. If you think it's wrong in some cases, then it's possible to add one more attribute like aHidd_ATABus_Default32Bit. If set to YES, then this means that 32-bit PIO is safe to use by default.
====Devices====
*[[Aros/Developer/Docs/Devices/ATA|ata.device]]
*[[Aros/Developer/Docs/Devices/Console|console.device]]
*[[Aros/Developer/Docs/Devices/Narrator|narrator.device]]
*[[Aros/Developer/Docs/Devices/Printer|printer.device]]
*[[Aros/Developer/Docs/Devices/Trackdisk|trackdisk.device]]
*[[Aros/Developer/Docs/Devices/AmberRAM|amberram.device]]
*[[Aros/Developer/Docs/Devices/Timer|timer.device]]
*[[Aros/Developer/Docs/Devices/|.device]]
The Amiga used [[Aros/Developer/Docs/Devices|Devices]] to communicate with [http://aros-exec.org/modules/newbb/viewtopic.php?start=0&topic_id=3475&viewmode=flat&order=ASC additional hardware]. AROS has replaced these hardware devices with hidd equivalents but some are still retained for backwards compatibility.
Local libraries/devices/handlers,etc. are supposed to override the ones in ROM if their version is higher than the one in ROM.
Here is the list of commands exec default:
{| class="wikitable"
| CMD_CLEAR
| Purge the buffer of the device
|----
| CMD_READ
| Playback Control
|----
| CMD_STOP
| Stopped the activity of the device
|----
| CMD_FLUSH
| Empty the queue of commands
|----
| CMD_RESET
| Reset a device
|----
| CMD_WRITE
| Playback Control
|----
| CMD_INVALID
| Create an error
|----
| CMD_UPDATE
| Gets updated device
|----
| CMD_START
| Will restart the device
|----
|}
While most other "stuff you communicate with" in AmigaOS are devices <ref>AMIGA ROM Kernel Reference Manual: Devices, 3rd Edition. Commodore-Amiga, Inc. Addison-Wesley, 1991. {{ISBN|0-201-56775-X}}</ref> that share a [http://gega.homelinux.net/AmigaDevDocs/ common base interface]. [[Aros/Developer/Docs/Devices1.3|OS 1.3 Device Drivers]].
====Handlers====
:[[Aros/Developer/Docs/Handlers/Pipe|pipe.handler]]
:[[Aros/Developer/Docs/Handlers/Port|port.handler]]
:[[Aros/Developer/Docs/Handlers/SFS|sfs.handler]]
:[[Aros/Developer/Docs/Handlers/FAT|fat.handler]]
:[[Aros/Developer/Docs/Handlers/PFS|pfs.handler]]
:[[Aros/Developer/Docs/Handlers/NTFS|fuse.handler]]
:[[Aros/Developer/Docs/Handlers/FFS|ffs.handler]]
filesystem handlers have their own separate system consisting of completely differently structured messages that dos.library use to pass requests (for things like reading, writing, getting directory contents etc.) to them. AROS originally went with implementing filesystem handlers as devices, which might arguably be more consistent with the rest of the AmigaOS API but which is quite incompatible with AmigaOS itself. However, it made it far harder to port filesystems and the gains were comparatively small, and so there's been a long standing goal of fixing this incompatibility. It has now, June 2011, been reintroduced to all AROS flavors.
are argstr and argsize valid for the handler startup environment?
DOS/RunHandler() calls DOS/CreateNewProcTags(), and then CallEntry() (in rom/dos/exit.c) to start the handler, so yes, argstr and argsize are *present* in the call signature of the handler.
Granted, argstr will be NULL and argsize 0, but those values *are* passed to the handler function using:
<pre>
AROS_UFC3(ULONG, entry,
AROS_UFCA(STRPTR, argptr, A0),
AROS_UFCA(ULONG, argsize, D0),
AROS_UFCA(struct ExecBase *, SysBase, A6));
</pre>
Creating your own [without the whole build tree http://pagesperso-orange.fr/franck.charlet/temp/radeon.zip] and then
<pre>
make stub
make
make install
</pre>
SFS has two Root blocks, one at the start and one at the end of the disk. The Root blocks both contain the same information. They hold various information about the disk structure and have the locations of some important blocks used by the filesystem.
The Root ObjectContainer contains the Root directory Object. The name of this Object is the name of the volume. It is identical to a normal directory Object.
The Bitmap is used to keep track of free space. Each bit in a bitmap represents a single block. A set bit indicates a free block and a cleared bit a used block.
AdminSpaceContainers are used to keep track of space which has been reserved for storing administration blocks. Only the Bitmap, the Root blocks and the actual data stored in files aren't stored in administration space. Administration space is allocated in chunks of 32 blocks at a time. A single AdminSpaceContainer can hold information about a large number of such areas each of which has its own little bitmap of 32 bits.
Extents are stored in a B-Tree. The Root block holds a pointer to the root of the Extent B-Tree. Extents keep track of space in use by a specific file. Each fragment a file consists of has its own Extent. Extents are in a double linked list. The list can be used to locate the next or previous fragment of a file.
Below is the standard block header. This header is found before EVERY type of block used in the filesystem, except data blocks. The id field is used to check if the block is of the correct type when it is being referred to using a BLCK pointer. The checksum field is the SUM of all LONGs in a block plus one, and then negated. When applying a checksum the checksum field itself should be set to zero. The checking a checksum the checksum is okay if the result of the checksum equals zero. The ownblock BLCK pointer points to the block itself. This field is an extra safety check to ensure we are using a valid block.
Field Type Description
id ULONG The id field is used to identify the type of block we are dealing with. It is used to make sure that when referencing a block we got a block of the correct type. The id consist of 4 bytes and each blocktype has its own unique foure letter code.
checksum ULONG This field contains the sum of all longs in this block, plus one and then negated. The checksum can be used to check if the block hasn't been corrupted in any way.
ownblock BLCK Points to itself, or in other words, this field contains the block number of this block. This is yet another way to check whether or not a block is valid.
<pre>
struct fsBlockHeader {
ULONG id;
ULONG checksum;
BLCK ownblock;
};
</pre>
The algorithm to calculate the checksum of a block:
<pre>
ULONG calcchecksum(struct fsBlockHeader *block, LONG blocksize} {
ULONG *data=(ULONG *)block;
ULONG checksum=1;
block->checksum=0;
while(blocksize>0) {
checksum+=*data++;
blocksize-=4;
}
return(-checksum);
}
</pre>
A Root block contains very important information about the structure of a SFS disk. It has information on the location and size of the disk, the blocksize used, locations of various important blocks, version information and some filesystem specific settings.
A SFS disk has two Root blocks; one located at the start of the partition and one at the end. On startup the filesystem will check both Roots to see if it is a valid SFS disk. If either one is missing SFS can still continue (although at the moment it won't).
A Root block could be missing on purpose. For example, if you extend the partition at the end (adding a few MB's) then SFS can detect this with the information stored in the Root block located at the beginning (since only the end-offset has changed). Same goes for the other way around, as long as you don't change start and end point at the same time.
When a Root block is missing because the partition has been made a bit larger, then SFS will in the future be able to resize itself without re-formatting the disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
version UWORD The version of the filesystem block structure. You can check this field to identify what version of the filesystem your dealing with it and to see if you can handle this structure correctly. Don't try to interpret the disk's structure when this field contains an unknown version number!
sequencenumber UWORD Used to identify which Root block was written last in case the sequencenumber on both Root blocks don't match.
datecreated ULONG Creation date of this volume. This is the date when the disk was last formatted and will never be changed.
bits UBYTE Various settings, see below.
<pre>
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
reserved1 ULONG[2] Reserved, leave zero.
firstbyteh ULONG High 32-bits of a 64-bit number. This is the first byte of our partition relative to the start of the disk.
firstbyte ULONG Low 32-bits of a 64-bit number.
lastbyteh ULONG High 32-bits of a 64-bit number. This is the last byte (exclusive) of our partition relative to the start of the disk.
lastbyte ULONG Low 32-bits of a 64-bit number.
totalblocks ULONG The total number of blocks this partition consists of.
blocksize ULONG The size of a block of this partition.
reserved2 ULONG[2] Reserved, leave zero.
reserved3 ULONG[8] Reserved, leave zero.
bitmapbase BLCK Block number of the start of the Bitmap.
adminspacecontainer BLCK Block number of the first AdminSpaceContainer.
rootobjectcontainer BLCK Block number of the ObjectContainer which contains the root of the disk (this is where the volume name is stored).
extentbnoderoot BLCK Block number of the root of the Extent B-Tree.
reserved4 ULONG[4] Reserved, leave zero.
</pre>
<pre>
struct fsRootBlock {
struct fsBlockHeader bheader;
UWORD version;
UWORD sequencenumber;
ULONG datecreated;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
ULONG reserved1[2];
ULONG firstbyteh;
ULONG firstbyte;
ULONG lastbyteh;
ULONG lastbyte;
BLCK totalblocks;
ULONG blocksize;
ULONG reserved2[2];
ULONG reserved3[8];
BLCK bitmapbase;
BLCK adminspacecontainer;
BLCK rootobjectcontainer;
BLCK extentbnoderoot;
ULONG reserved4[4];
};
</pre>
AdminSpaceContainers are used to store the location and bitmap of each administration space. The AdminSpaceContainers are located in a double linked list and they contain an array of fsAdminSpace structures. There is one fsAdminSpace structure for every administration space on disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
next BLCK The next AdminSpaceContainer, or zero if it is the last in the chain.
previous BLCK The previous AdminSpaceContainer, or zero if it is the first AdminSpaceContainer.
bits UBYTE The number of bits in each in the bits ULONG in the fsAdminSpace structure.
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
adminspace struct fsAdminSpace An array of fsAdminSpace structures. The size of the array is determined by the current blocksize.
<pre>
struct fsAdminSpaceContainer {
struct fsBlockHeader bheader;
BLCK next;
BLCK previous;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
struct fsAdminSpace adminspace[0];
};
</pre>
Field Type Description
space BLCK The first block of an administration space.
bits ULONG A small bitmap which is used to determine which blocks in an administration space are already in use. The number of bits in this bitmap is determined by the bits field in the AdminSpaceContainer.
<pre>
struct fsAdminSpace {
BLCK space;
ULONG bits;
};
</pre>
The fsBitmap structure is used for Bitmap blocks. A bitmap block is used to keep track of which space is in use and which isn't for a particular area of a disk. All bitmap blocks together keep track of the free space for an entire disk. The location of the first bitmap block is known and all other bitmap blocks are stored in order after the first one.
Field Type Description
bheader struct fsBlockHeader Standard block header.
bitmap ULONG An array of ULONG's. These hold the actual information on which blocks are in use and which aren't.
<pre>
struct fsBitmap {
struct fsBlockHeader bheader;
ULONG bitmap[0];
};
</pre>
Each bit in a bitmap block (except for the block header) represents a single block. If the bit is set than the block is free, and if the bit is clear then it is full. The first ULONG in the bitmap area of the first bitmap block represents blocks 0 through 31 on the disk. Bit 31 of this ULONG is block 0, 30 is block 1, and so on. Bit 0 of the first ULONG represents block 31.
Below is a table to clarify how bitmaps work even further. The first column is the bitmap block number, the second column is the number of the ULONG in the bitmap array. The third column is the bit number in this ULONG, and the last column is the block which this specific bit, in this specific bitmap block represents.
We'll assume here that a bitmap block has room for 120 ULONG's (meaning there is room for storing 32 * 120 bits).
<pre>
Bitmap block ULONG number Bit number Block represented
1 (first) 0 31 0
1 0 30 1
... ... ... ...
1 0 1 30
1 0 0 31
1 1 31 32
... ... ... ...
1 2 31 64
1 2 30 65
... ... ... ...
1 119 0 3839
2 0 31 3840
2 0 30 3841
... ... ... ...
</pre>
The last bitmap block doesn't need to be completely used. The unused bits (which belong to blocks which do not exist) all have to be clear, to indicate that these blocks are in use.
The fsObjectContainer structure is used to hold a variable number of fsObjects structures (Objects) which have the same parent directory. Each ObjectContainer must contain at least one Object. If there is space in the ObjectContainer not used by the variable number of Objects then that space is zero filled. Objects always start at 2-byte boundaries, which means sometimes a padding byte is inserted between two Objects.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the parent Object, or 0 if this object has no parent (which is only the case for the Root directory).
next BLCK The next ObjectContainer belonging to this directory, or zero if it is the last in the chain.
previous BLCK The previous ObjectContainer belonging to this directory, or zero if it is the first ObjectContainer in this directory.
object struct fsObject A variable number of fsObject structures. The number of structures depends on the individual sizes of each fsObject structure and the blocksize. These structures are located directly after each other with at most 1 byte of padding between them to get the structures aligned on a 2 byte boundary.
<pre>
struct fsObjectContainer {
struct fsBlockHeader bheader;
NODE parent;
BLCK next;
BLCK previous;
struct fsObject object[0];
};
</pre>
fsHashTable is the structure of a HashTable block. It functions much like the hash table found in FFS user directory blocks, except that it is stored in a separate block. This block contains a number of hash-chains (about 120 for a 512 byte block). Each hash-chain is a chain of Nodes. Each Node has a pointer to an Object and a pointer to the next entry in the hash-chain. Using such a hash-chain you can locate an object quickly by only knowing its name.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the directory Object this HashTable block belongs to.
hashentry NODE An array of Nodes. Each Node represents the start of a hash-chain (singly linked). A hash-value is calculated using the name of a file or directory, and this value determines in which chain the Object is linked. If there are no entries in a hash-chain then the hashentry value is zero.
<pre>
struct fsHashTable {
struct fsBlockHeader bheader;
NODE parent;
NODE hashentry[0];
};
</pre>
To calculate the hash-value using a name of an Object as input use these routines:
<pre>
UWORD calchash(UBYTE *name) {
UWORD hash=0;
/* Calculates a hash value over the passed in string.
The end of the string can be either a NUL byte or a
slash. The hash function is the same as the one
used in FastFileSystem set to international mode. */
while(name[hash]!=0 && name[hash]!='/') {
hash++;
}
while(*name!=0 && *name!='/') {
hash=hash*13+upperchar(*name++);
}
return((UWORD)(hash % (UWORD)((blocksize-sizeof(struct fsHashTable))>>2)));
}
UBYTE upperchar(UBYTE c) {
if((c>=224 && c<=254 && c!=247) || (c>='a' && c<='z')) {
c-=32;
}
return(c);
}
</pre>
The BNodeContainer is used to store B-Trees. Currently only one B-Tree is in use by this filesystem and it is used to store the location of file data. The fsBNodeContainer structure contains two other structures. The fsBlockHeader structure and the BTreeContainer structure.
Field Type Description
bheader struct fsBlockHeader Standard block header.
btc struct BTreeContainer Contains information about the B-Tree and its nodes contained in this block.
<pre>
struct fsBNodeContainer {
struct fsBlockHeader bheader;
struct BTreeContainer btc;
};
</pre>
First try and locate the Root block. It should start with "ROOT". SFS has two of these, one at the start of the partition and one at the end. One of the fields contains the block size, which will be the size of all important SFS blocks.
The root block has the root object container, which contains information about files and directories in the root directory. The object
containers basically hold one or more smaller structures that represent files and directories. Scanning them all should give you a list of
files and directories.
The root block also has the root of the Extent B-Tree. This is a standard B-Tree structure (not a binary tree) that is used commonly in
all kinds of system, you can read about how they work on Wikipedia if needed. The B-Tree holds the information about *where* all the data is
located for your files.
To recover your files, I'd do this:
* Find one of the root blocks, if not present, then figure out the block size your disk was using, and scan every block in turn to see if it
looks like an ObjectContainer (check the fsBlockHeader's ID, check if the ownblock number is equal to the block you are currently scanning,
and check its checksum). So if you currently have block 12, and you see a block with the correct id, and ownblock = 12 and its checksum is good,
then that's probably a valid ObjectContainer.
* With all the ObjectContainers found, you can extract filenames and directory names from these, but also the number of their first data
block (in the field data) and the file size. For small files (less than blocksize) this data block will be enough to recover the data.
For larger files, you might be lucky and all the remaining blocks are found after the first one (if the file was defragmented). You can't be
sure of that though so...
* For larger files, you need to find all the BNodeContainers. You could scan these in the same way you found all the ObjectContainers (look for
blocks with the correct id, ownblock number and checksum).
* With all the BNodeContainers found, you can try looking up the first data block of a file in the B-Tree structure. This is a bit complicated
-- the B-Tree consists of non-leaf nodes (blocks that only contain pointers to other B-Tree blocks), the isLeaf flag indicates this. Or it
can be a B-Tree leaf block. The leaf blocks contain extra information per entry (see https://hjohn.home.xs4all.nl/SFS/extents.htm)
<pre>
struct fsExtentBNode {
ULONG key;
ULONG next;
ULONG prev;
UWORD blocks;
};
</pre>
The key should be a block of a file (the first of a range), that is 1 to 65535 block long (depending the "blocks" field). If the file is split
up into more parts, then "next" will contain block number of the next range of blocks. You need to look this up again in the B-Tree
structure to find out how large it is.
You can for the most part ignore the other structures (bitmap, admin containers). The fsObjects and B-tree containers is what you'll need to
recover the data.
====Resources====
<pre>
rom/storage/mmakefile.src
rom/storage/storage.conf
rom/storage/storage_device.c
rom/storage/storage_ids.c
rom/storage/storage_init.c
rom/storage/storage_intern.h
rom/storage/storage_mount.c
rom/storage/storage_unit.c
</pre>
<pre>
rom/storage/includes/device.h
rom/storage/includes/unit.h
rom/storage/includes/volume.h
rom/storage/storage_intern.h
</pre>
<pre>
</pre>
*[[Aros/Developer/Docs/Resources/ACPI|acpi.resource]]
*[[Aros/Developer/Docs/Resources/Battclock|battclock.resource]]
*[[Aros/Developer/Docs/Resources/Bootloader|bootloader.resource]]
*[[Aros/Developer/Docs/Resources/Cia|cia.resource]]
*[[Aros/Developer/Docs/Resources/Filesystem|FileSystem.resource]]
*[[Aros/Developer/Docs/Resources/Hostlib|hostlib.resource]]
*[[Aros/Developer/Docs/Resources/Kernel|kernel.resource]]
*[[Aros/Developer/Docs/Resources/Misc|misc.resource]]
*[[Aros/Developer/Docs/Resources/Processor|processor.resource]]
==Debugging Code==
Please use the [http://sourceforge.net/tracker/?group_id=43586&atid=439463 AROS Bug Tracker] if any issues are found.
GRUB Command line list
<pre>
sysdebug
usbdebug - allows to see Poseidon's log in debug output
</pre>
How do I get debugging out of InitResident ? If running i386 hosted on linux sysdebug=initresident on command line.
This way you can enable any of listed flags. sysdebug=all stands for "everything"
Have an executable (crosscompiled C++ code) which has 6 MB size on disk, but after loading it in memory, 250 MB RAM is taken. Any software that would split AROS executable into ELF part which would show actual size values?
readelf -S executable
it will show you all sections in elf file, including sizes and requested alignment.
objdump -h filename
That's will give you a quick overview of the sections and sizes. Ignore all the .debug.* sections.
Would hazard a guess that you have a large .bss section. That's pretty common in C++.
Next step:
nm—size-sort filename | grep ' [bB] '
The last few will be your biggest consumers. Would suggest -C to demangle the symbols... ;)
Suggest profiling the program (just use some printf's in the main loop for time spent in each part), it usually is quite easy to spot slow parts in games or apps.
If someone has '#define IPTR ULONG' somewhere. To see where that define is, redefine IPTR in the source code that fails, just above the line that fails, and the preprocessor will tell you where it was defined first.
===How to setup gdb with AROS/hosted===
Download AROS sources (AROS-xxxxxxxx-source.tar.bz2, where xxxxxxxx is the current date) and AROS contrib sources (AROS-xxxxxxxx-contrib-source) from
Untar-bzip2 and cd to the unpacked archive directory.
> tar -xvjf AROS-xxxxxxxx-source.tar.bz2
> cd AROS-xxxxxxxx-source
Check the link to "contrib" (contrib-source) inside directory, e.g. correct like this:
> rm contrib
> ln -s ../AROS-xxxxxxxx-contrib-source.tar.bz2 contrib
Make sure you have the correct locale setting, otherwise compilation will fail at some point. See [http://aros.sourceforge.net/documentation/developers/compiling.php#setting-the-locale-to-iso8859 here] (or link below) for more on that. You might have to enter this:
> export LANG="en_US.ISO-8859-1"
Now configure for a debug build - see "./configure --help" for more - here are two examples:
> ./configure—enable-debug=stack,modules,symbols
> ./configure—enable-debug=all
You may "make" now, or choose a separate directory for your build (e.g. for easy removal), for example if compiling for i386 architecture you could create a directory like this:
> mkdir linux-i386
> cd linux-i386
> ../AROS/configure—enable-debug=stack,symbols,modules
When done configuring you're ready to go:
> make
Building AROS takes some time - minutes on fast machines (e.g. 2.5 GHz quadcore), up to hours on slower machines.
The result will be AROS Linux hosted with gdb debugging enabled.
See aros.org documentation for more on compiling AROS, including more [http://aros.sourceforge.net/documentation/developers/compiling.php --enable-debug] options.
When finished, enter bin/linux-i386/AROS directory (replace "linux-i386" with your compilation target platform, e.g. linux-x86_64, etc.) inside the unpacked archive directory. This directory contains the required .gdbinit file for properly running AROS inside gdb.
> cd bin/linux-i386/AROS
Run AROS (here: with 128MB of memory) from gdb:
> gdb—args boot/aros-unix -m 128
or
> gdb—args boot/arosboot -m 128
(gdb) r
Watch the shell output - in case AROS complains about "LoadKeyCode2RawKeyTable: Loading "DEVS:Keymaps/X11/keycode2rawkey.table" failed!" you should also see some instructions on how to create a keymap table. (see link above "more on compiling", too.)
Quit gdb, and try default keymap table:
(gdb) q
The program is running. Quit anyway (and kill it)? (y or n) y
> cd ../../..
> make default-x11keymaptable
Re-run AROS, as described above. Try e.g. RAros (= right windows key) + W to open a shell. If this doesn't work you have to create a keymap table yourself, quit gdb again, and make a new keytable:
> make change-x11keymaptable
A window will open. Watch the window's title bar, and follow the instructions.
When done, re-run AROS. RAros + W should now open a shell.
Next, compile your program with gdb support.
When you start GDB is there a warning which says
warning: File "<whatever>/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to ...
If so start gdb with "-ix .gdbinit"
<pre>
Summary - In short:
* build AROS with debugging support (i.e. ./configure --enable-debug=all)
* build your application with debugging support (i.e. option -g)
* run AROS in the GNU debugger (you may use the GUI frontend "ddd" which simplifies usage a bit)
* start your application
* use the commands "findaddr" and "add-symbol-file" as written in the debugging manual
* if the debugger doesn't find the source code of your application use the "dir" command of the debugger.
</pre>
===How to use gdb===
In AROS open a shell, then (in host shell) use CTRL-Z to go into gdb. Use "b Exec_CreatePool" (one of the functions used early on by startup code in programs) to add a breakpoint, then "cont" and gdb will interrupt somewhere early during startup of "program". Use "bt" to show backtrace and "loadseg" for "??" entries. One of them will be for "program". After that you can use "disassemble program".
One thing you need to make sure is that .gdbinit you have in your build directory is the same as in source tree. It has been modified some time ago, but the build system does not refresh it - you need to copy it manually
To recap, please read our debugging [http://aros.sourceforge.net/documentation/developers/debugging.php manual]:
To detect segfaulting when loading, try...
./configure—enable-debug—with-optimization="-O2"
Because crash or no crash may depend on optimization. For newer compilers maybe this helps...
--with-optimization=-"-O2 -fno-strict-aliasing"
One way to make crashes less random (more easily reproducible) is to activate the munging of free memory in rom/exec/freemem.c which is normally commented out:
<pre>
Index: freemem.c
===================================================================
--- freemem.c (revision 34289)
+++ freemem.c (working copy)
@@ -154,11 +154,12 @@
* created with their TCB placed in the tc_MemEntry list. The workaround
* is to avoid munging when FreeMem() is called with task switching disabled.
*/
+
/* DOH! it doesn't work even this way. What's wrong???
- *
- * if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
- * MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
*/
+
+ if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
+ MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
}
</pre>
Mungwall can be turned on at runtime. Currently this works in all hosted versions. Just specify "mungwall" on kernel command line and it works. It can work on native too. In order to enable it you need to parse kernel command line, and if "mungwall" is present, set EXECF_MungWall bit in IntExecBase.IntFlags.
This needs to be done before the first AllocMem() for obvious reasons. And never reset back this flag! If you change it on a working system, you are doomed.
Hosted ports do the processing in rom/exec/prepareexecbase.c --enable-debug=mungwall option in configure still works but is going obsolete. A kludge in rom/exec/allocmem.c is responsible for this and it needs to be removed when the transition is done.
BTW, on i386-pc port it can be activated by "mungwall" argument on command line, you don't need to rebuild AROS.
New mungwall affects not only AllocMem()/FreeMem(), but also pools. I also tested it with AllocAbs(), seems to work correctly.
Runtime mungwall works on:
* pc-i386
* pc-x86_64
* linux-i386
* linux-x86_64
* darwin-x86
* linux-ppc
Works on all hosted ports, if the port itself is working.
* amiga-m68k
* Not on sam440-ppc and efika-chrp-ppc, even if they would be able to be built at moment. Does not work on (for now, need NVRAM support)
When starting my freshly rebuilt i386-linux-aros which was compiled with full debugging support I get sometimes the error "Program exited with code 0377". Add the following to your .gdbinit:
set follow-fork-mode child
Here are some of the custom AROS gdb functions (defined in ".gdbinit" file) to resolve "in ?? ()" entries in backtrace:
<pre>
#0 0xb7ffd424 in __kernel_vsyscall ()
#1 0xb7e2a657 in sigsuspend () from /lib/libc.so.6
#2 0xb7c63900 in ?? ()
#3 0xb7c640e3 in ?? ()
#4 0xb7c641e0 in ?? ()
</pre>
You can use
loadseg 0xb7c63900
loadframe 2
or
loadbt
and some others. Use "help " for a little help text. If the commands do not work try "loadkick" first.
Use "thistask", "taskready", "taskwait" to get list of AROS tasks. "bttask " shows backtrace of a task which is in ready or in wait queue and "loadseg" to resolve "??" entries in it's backtrace ("loadframe" would not work as it assume current running task).
===Native debugging tools for AROS===
to enable debugging at boot time entering the GRUB menu editing line (E key) and adding "debug=memory" to your boot line, then press Ctrl+X to complete booting.
SYS:Tools/Debug/'''Bifteck'''
Open a shell and enter the line below to run Biftek and grab the debug messages collected in RAM into a text file.
tools/debug/bifteck > ram:debug.txt
and certainly does not open a window. It is a shell tool and only dumps data located from the debug location.
It is therefore important to 'catch' that debug data as soon as possible (before it gets overridden). You should invoke bifteck at the first opportunity before doing anything else. You can use the TO option to store bifteck output to a file or you can pipe it manually to a file.
SYS:Tools/Debug/'''Sashimi''' - displays error messages
One suggestion is to do a bug() debugging. Each time bug() is executed it will be output on sashimi.
You include <aros/debug.h> and place bug("something\n"); in your source code at location though which control passes.
To get the output - open an aros shell
SYS:Tools/Debug/sashimi > RAM:out.txt
'''Ctrl C''' to end the output to the RAM Disk.
# open shell, and type
# ram: (to switch to ram drive)
# System:Tools/Debug/Sashimi > mylogfile.txt
# open AHI prefs using wanderer (or use another opened shell)
# play test sound
# close AHI prefs
# shell still open with Sashimi running: press ctrl-c to break Sashimi and return to prompt.
# in shell: copy mylogfile.txt System: (or to your required location)
SYS:Utilities/'''Snoopy''' - monitors OS function calls, run "Sashimi" to see Snoopy's output
SYS:Tools/'''WiMP''' - the Window (and Screens) Manipulation Program
You can use the -E option of gcc to find out how preprocessor macros are expanded.
===Errors===
crash in strcasecmp usually means that one of its arguments is NULL.
empty space between these two names, prossibly some invisible character
Old Amiga [http://www.amigacoding.com/index.php?title=Guru_codes&redirect=no Guru Codes]
If the crash is in intuition. Sometimes, if it relates to text, a null pointer sets it off.
an uninitialised pointer can have any address (this is a common fault).
Compiling on 64bit, Many old code would not properly typecast when doing pointer-integer conversions and thus at least throw a warning. This can easily be located and fixed.
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
* Fix (change IPTR/SIPTR back to ULONG/LONG) the few places which really rely on ULONG/LONG being exactly 32 bit. That's for things like pixel (ARGB) buffers, structs written/read to disk, colormaps, but probably not much else.
Then again, many current compilers also throw a warning when you try to assign a pointer value to an integer and the integer is possibly too small. This happens under .NET for example when a 64 bit pointer is assigned to something like an ULONG - so exactly the case which you described.
=== AI ===
<---
Model <---> Agent ---> End user
Gemini LMStudio
etc Comfyui
Recent, self hosting on laptops, mini pcs or desktops with '''quantization''' 4bit has reduced memory requirements but still require 16Gb+ and no high end gpu
*[https://lmstudio.ai/download LMstudio single gpu],
Google Gemma 4 Model
*[ 12B QAT]
Alibaba Cloud's [https://huggingface.co/ Qwen] team series of large language models LLMs
*[https://huggingface.co/models?other=qwen3 Qwen 3], [],
*[https://huggingface.co/models?other=qwen2 Qwen 2], [https://huggingface.co/Qwen/Qwen2.5-Coder-32B qwen 2.5 Coder],
Small Claude Model
*[https://github.com/sipeed/picoclaw picoclaw]
Bigger LLMs but with settings
*[https://ollama.com/download Ollama single gpu]
*[https://github.com/ggml-org/llama.cpp/releases llama.CPP multi gpus],
*[ VLM multiple gpus],
MiniMax H3
#Training learning using 1+ high end GPUs at least 16GB VRAM per GPU card or 64Gb+ of unified, 16Core CPU with at least 64Gb of RAM system memory, though training can take weeks
#Inference with custom asics or GPUs
=== Linux ===
<syntaxhighlight lang="c">
/* 1. Header for your name,date,purpose of program.
2. Pre-processor directives. This will include the #includes for files you want to add.
3. Includes for function prototypes if necessary.
4. Main()
Create Pointers for Libraries and any Window you want to open.
5. Open necessary libraries.
6. Check if open exit program if fail.
7. Open a window exit program if fail.
8. Add your program
9. Close Window
10 Close Libraries.
11 End Program. */
/* standard os included headers <.h> */
#include <dos/dos.h>
#include <dos/dosasl.h>
#include <dos/dosextens.h>
#include <dos/exall.h>
#include <dos/rdargs.h>
#include <exec/memory.h>
#include <exec/types.h>
#include <utility/utility.h>
#include <intuition/intuition.h>
/* define as unresolved external references (proto/xxx.h) and compiler will link to auto(matically) open library */
#include <proto/arossupport.h>
#include <proto/dos.h>
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/graphics.h>
#include <proto/cybergraphics.h>
#include <proto/datatypes.h>
#include <proto/icon.h>
#include <workbench/workbench.h>
#include <workbench/icon.h>
#include <datatypes/pictureclass.h>
#include <proto/muimaster.h>
#include <libraries/mui.h>
#include proto/bsdsocket.h
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* my own headers ".h" */
#define CTRL_C (SetSignal(0L,0L) & SIGBREAKF_CTRL_C)
#define isDir(fib) ((fib)->fib_DirEntryType >= 0)
#define ARG_TEMPLATE "FILE/A,ALL/S,QUIET/S,W=WIDTH/N,H=HEIGHT/N,M=METHOD,DEFTOOL"
int main(void)
{
return retval;
} /* main */
</syntaxhighlight>
If you used c++, there is not yet c++ support in our shared library system.
The easiest way to create / compile a shared library would be to use the AROS build system but the libraries can be created manually. You have to create a ROMTAG structure and some header files.
A shared library is built with the %build_module macro with a line like this:
%build_module mmake=MetaTarget modname=mylib modtype=library files=SourceFiles
This macro can build different AROS module types, like devices, Zune classes, HIDDs, etc.
<pre>
##begin config
version 1.0
##end config
##begin functionlist
void func1(LONG a, LONG b)
int func2(char *s, ULONG a)
##end functionlist
</pre>
There is more [http://aros.sourceforge.net/documentation/developers/sys-dev/libraries.php here]
Alternatively,
<pre>
#ifndef LIB_H
#define LIB_H
#define __NOLIBBASE__
#include <exec/libraries.h>
#include <exec/semaphores.h>
#include <dos/dos.h>
#ifdef __AROS__
//#include <aros/debug.h>
#define reg(x)
#define __saveds
#endif
#define USESYSBASE struct ExecBase *SysBase = Base->My_SysBase;
struct MyTestBase
{
struct Library My_Test_Lib;
struct ExecBase *My_SysBase;
APTR My_SegList;
int testint;
};
#endif
</pre>
<pre>
/*--------------------------------------------------------------------------*/
/* Resident header written for mytest.library */
/*--------------------------------------------------------------------------*/
#define __NOLIBBASE__
#define VERSION 1
#define REVISION 0
#define LIBHEADNAME mytest
#define LIBHEADNAMESTR "mytest"
#define COMPDATE "04.10.2015"
#define VERS "1.0"
#define LIBBASETYPE struct MyTestBase
#define LIBBASETYPEPTR LIBBASETYPE *
#include <aros/debug.h>
#include <exec/exec.h>
#include <proto/exec.h>
#include <exec/resident.h>
#include <exec/nodes.h>
#include <exec/libraries.h>
#include <aros/symbolsets.h>
#include "lib.h"
const UBYTE lib_name[] = LIBHEADNAMESTR ".library";
const UBYTE lib_id[] = "$VER: " LIBHEADNAMESTR ".library " VERS " (" COMPDATE ") by ALB42\n";
extern const APTR FuncTable[];
AROS_UFP3 (LIBBASETYPEPTR, InitLib,
AROS_UFPA(LIBBASETYPEPTR, Base, D0),
AROS_UFPA(BPTR, seglist, A0),
AROS_UFPA(struct ExecBase *, sysbase, A6)
);
static struct LibInitStruct
{
IPTR LibSize;
const APTR *FuncTable;
const struct DataTable *DataTable;
APTR InitFunc;
}
const LibInitStruct =
{
sizeof(LIBBASETYPE),
FuncTable,
NULL,
(APTR)InitLib
};
const struct Resident romtag =
{
RTC_MATCHWORD, /* match word */
(APTR)&romtag, /* back pointer */
(APTR)(&romtag + 1), /* skip pointer */
RTF_AUTOINIT | RTF_EXTENDED,/* flags */
VERSION, /* version */
NT_LIBRARY, /* type of module */
0, /* init priority */
(STRPTR)lib_name, /* module name */
(STRPTR)lib_id + 6,
(APTR)&LibInitStruct,
REVISION, NULL
};
AROS_UFH3 (LIBBASETYPEPTR, InitLib,
AROS_UFHA(LIBBASETYPEPTR, Base, D0),
AROS_UFHA(BPTR, seglist, A0),
AROS_UFHA(struct ExecBase *, sysbase, A6)
)
{
AROS_USERFUNC_INIT
Base->My_SegList = seglist;
Base->My_SysBase = (APTR)sysbase;
Base->testint = 0;
USESYSBASE
bug("InitLib\n");
if (!set_open_libraries())
{
set_close_libraries();
return NULL;
}
return Base;
AROS_USERFUNC_EXIT
}
AROS_LH1(LIBBASETYPEPTR, LibOpen,
AROS_LHA (ULONG, version, D0),
LIBBASETYPEPTR, Base, 1, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibOpen\n");
(void)version;
Base->My_Test_Lib.lib_OpenCnt++;
return Base;
AROS_LIBFUNC_EXIT
}
__saveds APTR LibExpungeInternal(LIBBASETYPE *Base reg(a6))
{
USESYSBASE
APTR seglist;
bug("LibExpungeInternal\n");
if (Base->My_Test_Lib.lib_OpenCnt)
{
return 0;
}
seglist = Base->My_SegList;
Forbid();
Remove((struct Node*)Base);
Permit();
FreeMem((APTR)Base - Base->My_Test_Lib.lib_NegSize, (LONG)Base->My_Test_Lib.lib_PosSize +
(LONG)Base->My_Test_Lib.lib_NegSize);
set_close_libraries();
return seglist;
}
AROS_LH0(BPTR, LibClose,
LIBBASETYPEPTR, Base, 2, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibClose\n");
if (!(--Base->My_Test_Lib.lib_OpenCnt))
{
return LibExpungeInternal(Base);
}
return 0;
AROS_LIBFUNC_EXIT
}
AROS_LH1(BPTR, LibExpunge,
AROS_LHA(LIBBASETYPEPTR, Base, D0),
struct ExecBase *, sysBase, 3, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
(void)sysBase;
USESYSBASE
bug("LibExpunge\n");
return LibExpungeInternal(Base);
AROS_LIBFUNC_EXIT
}
AROS_LH0(LIBBASETYPEPTR, LibReserved,
LIBBASETYPEPTR, Base, 4, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibReserved\n");
return 0;
//return (APTR)LibReserved();
AROS_LIBFUNC_EXIT
}
// Space for your own functions
// do not forget to update the FuncTable as well
AROS_LH1(int, TestFunction,
AROS_LHA(int, TestValue, D0),
LIBBASETYPEPTR, Base, 5, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("TestFunction\n");
Base->testint = TestValue + Base->testint;
return Base->testint;
AROS_LIBFUNC_EXIT
}
// Functable -> Table of all functions in the Library, in right order - important!
const APTR FuncTable[] =
{
&AROS_SLIB_ENTRY(LibOpen,LIBHEADNAME,1),
&AROS_SLIB_ENTRY(LibClose,LIBHEADNAME,2),
&AROS_SLIB_ENTRY(LibExpunge,LIBHEADNAME,3),
&AROS_SLIB_ENTRY(LibReserved,LIBHEADNAME,4),
&AROS_SLIB_ENTRY(TestFunction,LIBHEADNAME,5),
(void *)-1
};
// AutoInit stuff
void *__PROGRAM_ENTRIES__symbol_set_handler_missing;
void *__LIBS__symbol_set_handler_missing;
// end of AutoInitStuff
</pre>
Makefile
<pre>
VPATH =
CFLAGS = -O2 -g -fomit-frame-pointer -W -Wall -Wno-parentheses
CC = i386-aros-gcc
LD = i386-aros-gcc
LDFLAGS = -nostartfiles -Wl,-Map -Xlinker linkermap
LIBS = -lautoinit -llibinit
STRIP = i386-aros-strip --strip-unneeded --remove-section .comment
OBJS = lib_header.o
all: mytest.library
mytest.library: $(OBJS)
$(LD) $(LDFLAGS) $^ $(LIBS) -o $@
lib_header.o: lib_header.c lib.h
clean:
rm -f *.o *.library *.ppu testlibrary linkermap
</pre>
Porting UNIX library to AROS - dealing with static variables which would make it easy to port such libraries to AROS, keeping the benefits of sharing them on disk, but losing the benefit of actually sharing them in memory.
Our problem arises by the fact we want to share the actual code (the .text section of the library) and constant data, but we need to have per-task .bss and .data sections. If we get rid of our intention to share the .text and .rodata sections, things get quite easy: just load and relocate the library whenever it's open, by whoever it's open. It's like statically linking the library into the executable, except that the final linking is done at runtime.
In the V0 branch, in workbench/hidds/hidd.nouveau was committed pcimock.hidd. This is a pci driver that allows mocking real PCI devices under linux-hosted. The main idea is to be able to run the real hardware driver under linux-hosted with as little changes as possible (some changes will always be needed though unless someone wants to write complete device simulator) so that driver's code paths can be executed and debugged using gdb. This was a very helpful capability when porting nouveau. Now it is externalized from nouveau.hidd and can be used by other people porting drivers. The pcimock.hidd can currently mock 4 different nvidia cards, 1 AGP bridge and also mock irq.hidd.
What's the difference between this driver and the pcilinux.hidd? I used that one to develop many different HW drivers for aros. As far as I understood the intention of pcilinux.hidd it is supposed to get access to real hardware that is running under linux. The pcimock.hidd goal is to mock the hardware. For example my dev box is a PCIE system, but I still would like to run the AGP codes paths in nouveau under linux-hosted to check if they don't seg fault. The other case would be to run codes paths for hardware that the developer does not have (Fermi cards in my case). In the case of pcimock.hidd, the AROS driver's code paths will execute as long as you add proper mocking (for example fill in PCI config area or values for registers in BARs). This is an advantage for ported drivers - the code should already work (since it worked on another system) but there might have been mistakes made during porting which can be detected easily with gdb.
In case you are writing your driver from scratch, pcilinux.hidd hidd will give you more advantage, since you can actually access the real hardware from linux-hosted.
== Misc ==
===APL, MPL, BSD, GPL and LGPL Licences===
The majority of AROS sources in licensed under AROS Public License ([http://aros.sourceforge.net/license.html APL]) which (to a degree) protects us from someone taking AROS sources and not contributing improvements back (for example MorphOS took some AROS source and then contributed changes back)
It is written to allow the use of AROS code in other open source or commercial projects without exception whilst providing a mechanism so that improvements/additions can find their way back to the original source in one form or another.
There are "3rd" party applications used by AROS that do not fall under this license, which are an extra "Contrib" download for convenience.
Anyone can port GPL-ed network and sound drivers as AROSTCP and AHI are GPLed. Direct using (porting) [http://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs GPL]-ed code in other parts of AROS (gfx, sata, usb) is not possible because AROS license is not compatible with GPL. You need to utilize permissive licensed code like BSD or MIT/X11.
BSD and MPL license are the closest to APL.
APL however is not so compatible with LGPL/GPL.
LGPL case - you cannot statically combine APL code with LGPL. You can, however thank to LGPL being "lesser" restrictive, use LGPL dynamically loaded libraries in APL codes.
GPL case - you cannot combine APL code with GPL in any way if there is no explicit clause by GPLed code authors allowing that. If you do combine APL with GPL in "bad" ways described above - you have a problem (you violate GPL). This problem might result in everything in AROS becoming GPL or everything running or AROS becoming GPL (here I'm not sure really). The other scenario is that you are not allowed to legally distribute such code at all. To be honest I have grasped how to violate GPL, but I'm still no exactly sure what happens when you violate it (but I'm sure it's not anything nice)
GPL software can run on top of non-GPL "system components" (see system components exception of GPL), but the other way around (non-GPL using GPL) leads to problems. This means applications like scout, or Quake III are ok (in the majority of cases).
Theres no reason GPL drivers cannot be ported - but they cant be in AROS's ROM (requires linking APL code with GPL), nor can AROS depend on them (e.g. they must use existing apis).
If they are launched (dynamically linked) by a user action that is allowed. It is also allowed to distribute such binaries together for convenience.
GPL is not about statical or dynamic linking but is about executing process and function calls.
These components - SFS, isapnp, Zune texteditor, AHi, network drivers, freetype, openuirl, BHFormat, Edit and (" dynamically loaded libraries") are LGPL, not GPL. Mesa/Nouveau stuff is MIT. Some user tools are GPL though.
'''AROS (system)'''
* system components (libraries/classes/devices/etc) cannot be GPL as they would propagate GPL to complete system as well as GPL is not compatible with MPL from which APL is based
* system components can be LGPL v2 or a permissive license (MIT/BSD)
* system applications can be anything you like (but still I would prefer APL or permissive so the code can be reused if needed)
'''Contrib:'''
* no rules - contrib does not impact AROS system since nothing in AROS system depends on contrib.
About stealing code: The chances of this happening is exactly the same whether we are APL or GPL. If any closed-source option wanted to do it, there is no one that can validate otherwise. MorphOS has used some AROS codes, but contributed changes back.
The rationale behind APL is that while it guarantees that the original developer will get the improvements back (to a certain degree - file based), the person who uses the codes does not have to open his original codes. BSD does not guarantee that the original developer gets improvements. GPL requires the person using the codes to open his codes as well.
The copyright holders needs to stay - we just need information from them that the codes are available under APL (for example a checked-in file like in case of Poseidon). We don't do transfer of copyrights.
; Ultimately what can and cannot be done is up to the author(s) - not the licence.
===AROS source code tree===
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-trunk.txt
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
Found this interesting (non-GPL) licensing 'anomaly' - to keep in mind for distributors.
Programs that lose their license if sold ("non-profit only" licensed):
contrib/aminet/comm/term/TinyTerminal
contrib/aminet/dev/basic/bwBASIC
contrib/aminet/text/edit/xdme
contrib/fish/aroach
contrib/fish/lotto
contrib/fish/shuffle
contrib/fish/touch
+ cdvdfs.
Here is a list of all the GPL/GPLv2/GPLv3 licenses fossology found, what have explicit licenses in their comments.
excluded LGPL, BSD/GPL dual licensed and programs (such as Prefs/Edit and BHFormat)
<pre>
AROS/rom/dbus/include/ AFL_v2.1 ,GPL_v2+ (supposedly AFL < 3 is GPL incompatible)
AROS/workbench/classes/zune/betterstring/include/ GPL_v2+
AROS/workbench/classes/zune/texteditor/include/ GPL_v2+
AROS/workbench/classes/datatypes/gemimage/ GPL_v2+ GPL
AROS/workbench/classes/datatypes/degas/ GPL_v2+
AROS/workbench/libs/openurl/README: GPL
AROS/workbench/network/smbfs/documentation/ GPL_v2
AROS/workbench/network/smbfs/source_code/ GPL_v2+
AROS/workbench/network/stacks/AROSTCP/bsdsocket/kern/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/mmakefile.src conf.h GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/sys/ CMU ,GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/net/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/api/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/conf/conf.h: GPL_v2
AROS/workbench/network/stacks/AROSTCP/netinclude/net/radix.h: CMU ,GPL_v2
AROS/workbench/devs/AHI/AHI/ GPL_v2+
AROS/workbench/devs/AHI/AddAudioModes/ GPL_v2+ AROS/workbench/devs/AHI/AddAudioModes/COPYING: GPL
AROS/workbench/devs/AHI/Docs/texinfo.tex: GPL_v2+
AROS/workbench/devs/AHI/COPYING: GPL
AROS/workbench/devs/AHI/Drivers/EMU10kx/ GPL_v2+
AROS/workbench/devs/AHI/AHI-Handler/ GPL_v2+
AROS/workbench/devs/networks/rtl8029/ GPL GPL_v2+
AROS/workbench/devs/networks/pcnet32/ GPL GPL_v2+
AROS/workbench/devs/networks/ppp/LEGAL: GPL
AROS/workbench/devs/networks/atheros5000/ GPL_v2+
AROS/workbench/devs/networks/rhine/ GPL_v2+
AROS/workbench/devs/networks/nForce/ GPL_v2+ GPL
AROS/workbench/devs/networks/prism2/ GPL GPL_v2+
AROS/workbench/devs/networks/fec/LEGAL: GPL
AROS/workbench/devs/networks/rtl8139/ GPL GPL_v2+
AROS/workbench/devs/networks/etherlink3/ GPL GPL_v2+
AROS/workbench/devs/networks/intelpro100/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8169/ GPL GPL_v2+
AROS/workbench/devs/networks/emac/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8168/ GPL GPL_v2+
AROS/workbench/devs/networks/realtek8180/ GPL_v2+
AROS/workbench/devs/networks/via-rhine/via-rhine.c: GPL_v2+
AROS/workbench/devs/networks/via-rhine/ GPL GPL_v2+
AROS/workbench/devs/networks/e1000/ GPL_v2
AROS/workbench/devs/networks/sis900/ GPL GPL_v2+
</pre>
AHI: it has special provisions (COPYING.DRIVERS). The library is LGPL, preferences software is GPL and drivers can be anything without breaking GPL/LGPL.
Network stack: well, we are long overdue for a new, IPv6 enabled network stack anyway, anyone interested? ;) Seriously though it seems like the glue code is GPL and as all the drivers. However some of the drivers are our own code, so they could be relicensed to LGPL.
Same filter as the AROS trunk list. These should all be libraries or plugins - no programs.
<pre>
contrib/regina/utsname.h: GPL_v2+
contrib/mui/classes/nlist/include/default-align.h: GPL_v2+
contrib/mui/classes/nlist/include/amiga-align.h: GPL_v2+
contrib/mui/classes/BWins/include/MUI/BWin_mcc.h: GPL
contrib/mui/classes/BWins/include/BWin_private_mcc.h: GPL
contrib/mui/classes/BWins/COPYING: GPL_v2
contrib/mui/classes/BWins/MCC_BWins.readme: GPL_v2
contrib/mui/classes/thebar/include/default-align.h: GPL_v2+
contrib/mui/classes/thebar/include/amiga-align.h: GPL_v2+
contrib/gfx/libs/wazp3d/LEGAL: GPL
contrib/gfx/libs/wazp3d/Wazp3D.readme: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.c: GPL
contrib/libs/mpega/ GPL_v2+
</pre>
http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
===Types===
On AROS following rules apply:
<pre>
1. BYTE/UBYTE is 8bit, WORD/UWORD is 16bit, LONG/ULONG is 32bit, QUAD/UQUAD is 64bit, the types are comparable with stdint types (int8_t, int16_t, int32_t, int64_t)
2. IPTR/SIPTR are integer types large enough to fit pointer, that is sizeof(IPTR) = sizeof(APTR) = 4 on 32bit system, and = 8 on 64bit system
3. ti_Data in TagList is large enough to hold a IPTR/APTR type.
4. never store a pointer in integer of type LONG. It may work (if the pointer has upper 32bits clear), but does not have to. Compiler should warn you about that.
5. If you are unsure about point 4, allocate your memory with MEMF_31BIT flag set. But don't expect that AROS internals will do the same.
</pre>
point 4 is actually important.
* UBYTE/BYTE for 8bit
* UWORD/WORD for 16bit
* ULONG/LONG for 32bit
* UQUAD/QUAD for 64bit
<pre>
UBYTE Unsigned 8 bit integer variable (byte).
BYTE Signed 8 bit integer variable (byte).
UWORD Unsigned 16 bit integer variable (word).
WORD Signed 16 bit integer variable (word).
ULONG Unsigned 32 bit integer variable (longword).
LONG Signed 32 bit integer variable (longword).
FLOAT 32 bit IEEE floating point variable.
UQUAD Unsigned 64 bit integer variable.
QUAD Signed 64 bit integer variable.
DOUBLE 64bit IEEE floating point variable.
BOOL Boolean variable, TRUE and FALSE are also defined in exec/types.h.
VOID Void.
APTR A generic pointer for multiple purposes - Arrays.
STRPTR A pointer to a null-terminated string.
IPTR Really important in AROS, the only way to declare a field that can contain both: an integer or a pointer.
</pre>
if you want to write really portable app, you may be interested in standard datatypes defined in C99: int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, intptr_t, uintptr_t. They are all defined in inttypes.h include file.
In exec/types.h the following short-cuts are typedef'd. They are used often in AROS, so you should nearly always include exec/types.h and soon only they will be removed from sys/_types.h include, all types are now defined in include files named aros/types/xxx.h.
(Preparation for C library split; sys/xxx.h include will only be available there when compiling with POSIX C library)
Compiler specific types, like int and long might change their size. In case of AROS, similar to linux, int remains 32 bit whereas long grows to 64 bits in size.
If you use Amiga-like data types, i.e. BYTE/UBYTE, WORD/UWORD, LONG/ULONG and QUAD/UQUAD or the C99 standard types (uint8_t and so on, see stdint.h include) then you should have less issues to solve than by using types without size guarantee.
Of course, all pointers grow to 64 bytes using 64bit cpu. Most of the code can be just recompiled and will work. In rare cases, where e.g. pointers are casted to integers, a special care must be taken. Especially in the cases, where pointer is casted to LONG/ULONG (this code will break on 64 bit AROS) e.g. '#define IPTR ULONG'.
With compiler delint patches which the majority of them are simple casting issues to make the compiler happy. Notice some of the changes involve introducing double casts. In very recent versions of GCC. Yes, the bulk of the double casts are for converting 32 bit addresses (ie from a 32 bit PCI DMA address register) to a 64 bit pointer. First cast is to IPTR (to expand to 64 bits, and prevent sign extension if the address is above 0x7FFFFFFF), and then to APTR.
ULONG != IPTR except on 32bit .. so if you need to store pointers make sure and use IPTR and not ULONG (which some old code does). For this reason things like Taglist elements are 64bit (since the tag data can be a pointer).
If your passing items on the stack you should use the STACKED attribute to make sure they are correctly aligned (on 64bit all items on the stack are 64bit..)
There is more issues like using "== 0L" causes problems.
===Endian===
*BE
*LE
Use the macros from <endian.h> instead making a guess based upon architecture defines
<pre>
#if _BYTE_ORDER == _BIG_ENDIAN
#elif _BYTE_ORDER == _LITTLE_ENDIAN
#else
+
#error <whatever.h> - Byte order for this architecture is unsupported!
</pre>
===SVN and GIT===
If you want to help develop AROS OS itself, you can
* view current GIT/SVN entries [http://aros.sourceforge.net/ Aros Org website] or [https://github.com/aros-development-team/AROS Github], [https://github.com/ezrec older ezrec mirror], [https://github.com/michalsc/AROS/ older mirror], [https://trac.aros.org/trac/timeline TRAC], [],
* awaiting update [http://repo.or.cz/w/AROS.git git repo], [http://www.ohloh.net/p/aros/commits ohloh] or [https://svn.aros.org/svn/aros/trunk/ svn repo] and access [Git version git://repo.or.cz/AROS.git here],
* deprecated [https://www.gitorious.org/aros/aros/commit/a7fda9e ARIX commits] or [https://gitorious.org/aros/aros GIT old]
If you have SVN access (early 2015 introduced a new SVN server, create a new account at trac aros org) and/or have obtained the source [http://aros.sourceforge.net/download.php AROS site] - you can compile the current build tools/environment using:
> make development
and follow this [http://aros.sourceforge.net/documentation/developers/compiling.php#building procedure] or [https://github.com/apiraino/aros_guide Guide]
https://trac.aros.org/trac#Developing
If you plan on contributing back changes, please post information about such changes first on this [http://mail.aros.org/mailman/listinfo/aros-dev/ mailing list] for more experience developers can validate whether they are correct.
Then there are the nightly build machines. They svn update before the build and run configure as one of the next steps. autoconf might be added to the nightly build scripts.
Our build relies on packages downloaded from Internet (SDL for example) - it always worked this way. The minimal requirement (when just building core AROS) is binutils and gcc. If you build contrib as well, you need many more packages to be downloaded.
https://gitorious.org/aros/aros/commits/crosstools-II
git://gitorious.org/aros/aros.git
Branch crosstools-II there is only one commit on top of ABI_V1
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-x86_64
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-x86_64
</pre>
and
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-i386
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-i386
</pre>
build OK.
:''More information: [[Aros/Developer/Maintainer|AROS Maintainer Docs]]''
===SDI Calls===
Integrate the 'SDI'-headers to allow easier porting to all amiga-like platforms.
<pre>
PUTCHARPROTO( PutTheChar, char c, struct SPrintfStream *s )
{
// REAL CODE
}
</pre>
have "SDI_compiler.h" and "SDI_hook.h" included
its more organized like
#include SDI/SDI_hook.h
than
#include SDI_hook.h
option 1 --- i also use when back porting from amiga's..
<pre>
#ifdef __AROS__
#include SDI/SDI_hook.h
#else
#include SDI_hook.h
#endif
</pre>
also
you can add the -i include/sdi/ location if you do not want to add or edit any files.
Defining HOOKPROTO to IPTR name(struct IClass * cl, Object * obj, Msg msg); solved the problem
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order. examine compiler/include/aros/symbolsets.h (AROS_LIBREQ)
compiling mui stuff for aros setting -std=gnu99 is necessary (i have had -std=c99 most of the time).
===Locale with Flexcat===
Most languages have a locale, but not every app is localized, the only thing needed is to translate the "catalog" files. It is a case of locating the correct catalog and saving the translated version.
For every app that lacks of your language catalog and is localized anyway, you should find (in the sources) files related to locale:
* file.cd = catalog descriptor, contains base msg, with internal language (usually english)
* language.ct = catalog translation, contains every translated msg, indexed as in the file.cd.
Compare with other localized apps... Then, "make my_app-catalogs" should create and install your translated catalogs. ex : for, saying, sys:prefs/wanderer:
on root of AROS sources, type:
"make workbench-prefs-wanderer-catalogs"
then (if you changed the .cd file):
"make workbench-prefs-wanderer"
For apps not localized, you have to adapt their code to support it, if it is possible...
noticed the original .cd file has many (//) strings at the end of any voice, so added them also to the .ct file.
That (//) is only for cd files. I'm highly recommending to use FlexCat for updating ct files, e.g. like this:
flexcat app.cd deutsch.ct newctfile deutsch.ct
You'll get error checking and new entries are marked in the resulting ct file.
When editing .ct files, only change those lines containing translation and perhaps version string, nothing else.
The rest is up to the relevant tool, flexcat. In order to update your translation, type in the following in your shell:
flexcat xyz.cd xyz.ct NEWCTFILE xyz_upd.ct COPYMSGNEW
This way you will not only make sure you have correct translation file but flexcat also pre-fills newly added strings with "*** NEW *** text. Even better tool for checking cd/ct/catalog files is catcheck, but this one is sadly only available for AmigaOS/68k...
Some languages have variations, like portugues from portugal and portugues from brasil differs...
This is the way to go. I will have a look at language files, but basically if those two languages differ you have to do two separated set of translation files, yes.
(you could create a brazilian slang language localization too)
* At system level localization for one language is a dot language file.
(ex: locale:languages/klingon.language)
* At app level localization is a dot catalog file
(ex: locale:catalogs/klingon/system/libs/dos.catalog)
* At sources level, the dot ct file, and "$language" dot cd files and some building framework.
(ex: catalogs/my_app.ct catalogs/klingon.cd catalogs/mmakefile.src support.c support.h)
Please, use Flexcat to generate CT files:
FlexCat wanderer.cd NEWCTFILE=deutsch.ct
Then fill the first 2 lines with something useful:
<pre>
## version $VER: wanderer.catalog 1.1 (9.2.2006)
## language deutsch
</pre>
You can even update the CT-File: (This adds the new strings)
FlexCat wanderer.cd deutsch.ct NEWCTFILE=deutsch.ct
To compile a catalog you only need the .cd file and your translation (.ct file):
FlexCat multiview.cd deutsch.ct CATALOG=MultiView.catalog
[http://murks-ide.svn.sourceforge.net/viewvc/murks-ide/trunk/src/Catalogs/flexcat_linux?revision=100 Linux version of FlexCat]
: [http://aros.sourceforge.net/documentation/developers/app-dev/localization.php#localization-for-non-developers More information]
A script which compares the required version (i.e. the version which an application/module etc. tries to open) with the version of the existing CT files. The result is in this table:
https://github.com/aros-translation-team/translations/wiki/Progress
The following cases are highlighted:
n/a i.e. CT misses at all
version in existing CT file is lower than the required version
It might be a bit difficult to participate if you haven't worked with Git before but alternatively you can send your CT files to our Slack channel.
When the ct file has been generated via flexcat (flexcat keyshow.cd NEWCTFILE=spanish.ct) it has the following header:
---------------------------------------------------------------------------------------------------------------
## version $VER: <name>.catalog <ver>.<rev> (04.01.2021)
## language nolanguage
## codeset 0
;
---------------------------------------------------------------------------------------------------------------
Those values <ver>.<rev> are the version and revision of the CT file for the languaje or are the values of the application being localized?
The <ver> part must match with version which the application tries to open. You can find the value either in the column "Required Version" in the table which I've linked above, our you can look in the git repository. For keyshow it would be https://github.com/aros-translation-team/keyshow. You can find in the file "catalog_version.h" the right version number.
The <rev> part starts for new CT files with 0 and should be increased every time the CT file is updated.
Updated several files and created a few more that were missing on the spanish catalog.
The catalogs are in Git repositories at https://github.com/aros-translation-team
a) You tell me your Github user name. I'll invite you. You can work directly with the Git repositories.
b) You create Github forks of the catalog repositories and create pull requests.
c) You send the CT files to mrustler gmx de
===C Utils Misc===
The AROS source uses at several places the __DATE__ macro to fill the date entry of a $VER tag. Problem is that c:version doesn't understand that date format (e.g. "May 21, 2011"). As a result the output of e.g.
> "version c:shell full" contains "(null)". Is extending the version command to understand the format of __DATE__ the right solution for that problem?
AmigaOs compilers should use __AMIGADATE__ macro or similar form, if it isn't implemented it could be emulated in makefile: -D__AMIGADATE__=\"$(shell date "+%d.%m.%Y")\"
BTW. I think DD.MM.YYYY is better format than "Month DD YYY" because "Month DD YYY" is not localized in any way.
"strnicmp" shouldn't work with NULL pointers
The Situation:
compiled a linklib using c++ object files (using the c++ cross compiler).
compiled a C stub that uses the linklib (using the c++ cross compiler).
Try to link them together (using the c++ cross compiler) with C object
files (using the normal target c compiler) that need to use -nostartup
= cant do because using the c++ files pulls in arosc (for stdio etc.) -
so wants to have the autoinit stuff present.
What can I do about this??
If it is possible to manually open it then what do I need to do exactly?
=== ENV ===
The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact. However in some cases (like this one) it is not required.
99% of the time that statement is true (not required) for pretty much every file in ENV: or do people change their default icons - and prefs settings - every boot?
There seem to be a bad habit of late with developers changing things to reflect their own personal preference when the change isn't actually necessary - It would be nice if people could refrain from doing that in the tree without at least discussing it on the dev-list first (and with good reasoning unless they committed said work in the first place..)
We're not keen on the pollution of the "S:" dir: it's meant to be for scripts. What's wrong with "ENV:"?
Only the fact that it takes up RAM. I understand that for PCs with several gigabytes of RAM this is
irrelevant. But let's remember about other machines. The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact.
However in some cases (like this one) it is not required.
How about implementing in the style of HappyENV then? RAM-disk handler that falls through to reading from ENVARC: if there is no such file stored in it already. Removes RAM usage for unchanged files, removes the need to copy ENVARC to ENV in startup-sequence.
Shouldn't be too hard to make from AmberRAM, or even just extend AmberRAM to provide this service.
Is it feasable to build a special version of AmberRAM handling ENV: that will try and copy the requested file from ENVARC: if it isnt found in ENV: ?
Additionaly it could mark closed "files" as untouched - and expunge them from ENV: after a period of time to free up additional RAM:, or when the system is running low on free memory?
Silenty disappearing files may not be a good plan. Would be nice if the following would work:
ASSIGN :ENV SYS:Prefs/Env-Arc ADD
ASSIGN :ENV RAM:ENV ADD
Where new files put in ENV: end up in RAM:ENV, and opening files looks in RAM:ENV first, then SYS:Prefs/Env-Arc
Well - that's essentially what im proposing but without the assigns - or need for a RAM:ENV directory.
Adding it as a feature of AmberRAM sounds like the most memory efficient way (one handler to load in RAM) but that's only if it is possible to make it handle ENV: additionally to RAM:, and if it is even possible to add the proposed functionality (...and how to make it enable it when accessing ENV:).
===(AS)MP support===
If one has to recompile software for SMP multi core, is there any thing special one has to do to get software to run?
Use task.resource if you need to query information about what tasks are running, and clear msgports completely when they are allocated.
Most code should not need Forbid. Use Semaphores, Messages etc. to sync your own code.
Accessing system structures is a different thing. Use the proper API whenever possible.
How single structures will be protected in the future is still a moving target, at least it is not documented. And you should never use undocumented stuff
Ideas on for SMP multi-core
Another suggestion is ... Forbid/Permit function calls are meant to halt multitasking so as no other task could intervene with what ever the calling task is doing, e.g. setting semaphores. Disable/Enable calls are meant to halt interrupts and as a side effect they also halt task switching.
One option is to make it compulsory to protect shared resources with semaphores and forbid the use of simple Forbid() calls as to protect something. Setting semaphore should be done if possible with atomic instructions (check and alter in one instruction). Or make the second concurrent ObtainSemaphore call halt the second calling task and force if possible a task switch which ever gives better results.
Semaphores could store the owning tasks task pointer instead of boolean to make things easier.
As long as the CPU initiates the DMA transfers through the OS, and the OS ensures that the transferred memory is within the region accessible to the user initiating the transfer, everything is fine. The CPU is the conductor, and the CPU by that has the control of which DMA transfer is initiated and which is not.
All you need to do is to write device drivers reasonable. Hint: CachePreDMA and CachePostDMA exist.
All the Os has to do is to verify that the memory regions to be transferred are valid, and prohibit direct access to the DMA control registers from user space. None of these algorithms imply huge costs.
The current OS design doesn't really allow virtual memory in first place, Forbid() is again the problem.
[http://www.tbs-software.com/guide/index.php?guide=autodocs.doc%2Fmemory.doc&node=1 memory.library API] seem to low level. IMHO the programs should not know how the swapping is implemented. I would just go for one new memory flag
MEMF_SWAPPABLE that indicates that a certain memory region or a whole memory pool won't be accessed during Forbid()/Permit() etc. It only solves part of the problem, it only implements virtual memory and not memory protection. For the latter you need to be able make certain memory inaccessible by other programs, some memory read-only for one task and read-write for other tasks, etc. And I think this should be done in the same Address Space in order to avoid you constantly need to swap between different address spaces.
So to summarize, if there are programs using this API we may provide a wrapper layer to get them working but I am not convinced this API should be the reference API with whom to provide VM to AROS programs.
=== Variadic ===
variadic functions (i.e. functions with an arbitrary amount of arguments).
<pre>
#include <stdarg.h>
[...]
char * STDARGS GetKeyWord(int value, char *def, ...)
{
[...]
va_list va;
[...]
va_start(va, def);
[...]
va_end (args);
</pre>
Please keep with using stdarg rather than having va casted to a LONG * type and varargs handled manually. Doing so, prevents tons of casting, where a simple va_arg can be used. So, string = *((char **) args) instead of string=va_arg(va, char *).
<pre>
#include <stdio.h>
#include <stdarg.h>
int printf (const char * format, ...)
{
int retval;
va_list args;
va_start (args, format);
retval = vfprintf (stdout, format, args);
va_end (args);
fflush (stdout);
return retval;
} /* printf */
</pre>
Couldn't find varargs.h or stdarg.h. and have no use for AROS_SLOWSTACKHOOKS or AROS_SLOWSTACKTAGS.
GCC looks for stdarg.h in a different place:
/bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/include/stdarg.h
Here is a path for a "normal" header:
bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/../../../../i386-aros/sys-include/aros/system.h
The use of vararg.h isn't supported by newer gcc versions. If you want your code to run on architectures that pass part of variadic arguments in a number of registers you need to use AROS_SLOWSTACK macros. Otherwise your program will not work on powerpc and x86_64 ports.
Of course the SLOWSTACK stuff is not needed in a function that can use va_list, va_start, va_arg and va_end. It's only needed if you want to write functions like DoMethod or similar.
#include <stdarg.h>
should be enough no matter if you do cross or native compiling. If it does not work, something is wrong and should be corrected.
Stdarg.h is here, Development:lib/gcc/i386-aros/4.2.2/include/
...which is part of the compiler's default include paths. In other words, #include <stdarg.h> works out of the box, indeed. (sorry, I should have just tried it before invoking "search" or "find"...)
furthermore, myprintf() as shown above won't work, because...
printf(format, args);
...is wrong - the second argument does not match printf() prototype, it expects a argument list, but args is of type va_list (obviously) - so one has to use...
vfprintf(stdout, format, args);
...instead, just like in the original printf(), and add fflush(stdout).
additionally, one could use...
int myarg = va_arg(args, int);
...between va_start() and va_end() to access individual arguments, where each call to va_arg() returns an argument casted to the desired type (here: "int") from the list given (here: "args") and advances to the next one.
wrapping up vfprintf() and modifying the format string now is a major speedup! no more backslash-n typing! this has been haunting me for years!
On MOS and AmigaOS, the NewObject variadic function is kept in the static library. It takes most of the parameters on the stack - thanks to that the implementation of NewObject calls the NewObjectA function. Everything works perfect, and the typical MUI macros may be easily used.
This, however, is not the case when you compile for AROS. Here, NewObject is a variadic macro, not a function. Thanks such approach we do not need any custom compiler in case of systems, where the arguments of variadic functions are passed partially through registers and partially through the stack (This is the case of PPC and x86_64, this is also the reason why both OS4 and MOS require specially patched compilers).
Since NewObject is a macro, the gcc's preprocessor expects the list of macros arguments enclosed within parentheses. In MUI macros it is not the case. Imagine the following test code:
<pre>
#define foo(a,b) ((a)+(b))
int loosy_function(int a, int b)
{
return foo(a,b);
}
</pre>
This will compile and work, but the following piece of code:
<pre>
#define foo(a,b) ((a)+(b))
#define END )
int loosy_function(int a, int b)
{
return foo(a,b END;
}
</pre>
will fail with the error: unterminated argument list invoking macro "foo"
There are two ways of fixing your issue. Either create your new objects outside this huge MUI constructions, and in there use just a pointer, or get rid of the "End" macro and exchange it with "TAG_DONE)".
Badly written software is, for example, casting va_list to an APTR or even doing so as if va_list were a plain table of function arguments. Such code needs to be fixed because it has very few chances to work anywhere but on author's machine ;)
The problem is nOt that they assume sizeof(APTR) == 4, its that they often do not use APTR, and use ULONG to store pointers exclusively. If the code used APTR/IPTR as it should - most of the "problems" wouldn't exist.
It would also help if people would start using variadic arguments properly. Many coders do assumptions which shall never be made. Instead, they should consider using stdarg.h file and all the va_* functions :)
===ABI===
In the head of our SVN repository there are now only 3 directories:
<pre>
admin/
branches/
trunk/
</pre>
We have added two extra dirs there: tags and imports
As discussed when we branch ABI V0 and [[Aros/Developer/ABIv1|ABI V1]] it would also be good to introduce tags. Normally this is done in a directory in the repository called tags. Currently we don't have this directory there. (We do have branches/tags that is a hack I have done because one doesn't have write access in the top directory. I think this directory is not clean and should be removed).
The second directory I would introduce is an imports directory for implementing vendor branches as discussed in the svn [http://svnbook.red-bean.com/en/1.5/svn.advanced.vendorbr.html book]. Currently we use code from several different projects and that code is stored inside the AROS tree; we seem to have problems with keeping this code up to date and merge our changes upstream. Maintainers of up stream projects like the MUI classes etc. have complained about this (to put it lightly).
Introducing these vendor branches would make it easier to see what changes we have made and make patches to be sent upstream and make it easier to import newer upstream versions of their code. Although can't "copy" the vendor branch into the main branch because it's already there, so start with a "merge".
Yes, the first step to make the code already in the repository compatible with the vendor branches will be the most difficult. The best way to do it the following way:
* first import the version on which the current AROS code is based into the vendor branch
* then import the new version over it in the vendor branch
* finally merge the difference between these two version in the AROS code present in the repository.
For example, place NList directly under vendor and not in a subdirectory like "contrib/zune/classes".
Actually after we have a stable [http://aros.sourceforge.net/documentation/developers/specifications/drafts/abiv1.php ABIv1 (2012 or later)]. We need to move away as much as possible from the contrib directory to some other repositories. The reasons are ...
* The AROS repository should be for the core AROS code.
* other contrib projects should be tried to be compiled for all Amiga-like OSes.
* The release scheme for AROS and the other programs should not have to be aligned.
* Binary versions should be provided on aros-archives and on aminet and/or OS4Depot to install them. (Some clever programs should maybe be provided to make the life of distribution developers easier).
* avoid parallel forks of programs for AROS and the other amiga OSes.
If there is really a need for a place for hosting AROS projects we may investigate setting up such a server but then including bug tracking, governance, maillist, etc. for each project separately. I personally think there are already enough places like sourceforge, google code, savannah, etc. where people can go for hosting such projects.
==Links==
* http://amigadocs.hokstad.com
* http://amigadocs.hokstad.com/doku.php?id=dev-links
* http://www.liquido2.com/tutorial/index.html
* Amiga(TM) OS4 has a [http://www.ast-workshops.co.uk/os4pg/ workshop] page and hope to produce a [http://amigaworld.net/modules/newbb/viewtopic.php?topic_id=31117&forum=42#549091 book] soon. [http://www.solie.ca/articles/map/map.html Brief Guide].
In the future...?
*AROS 64bit - SMP, Vulkan with OpenGL compability layer
*AROS 32bit - keep for historic reasons
What would you like to see implemented in AROS?
ABIv1 completed, SMP (x86_64), SendMsg()/GetMsg() to support memory protection between target and destination, in that order. Michal Schulz and Jason McMullan have been toying with the question "What are the minimal changes needed to the AmigaOS 3.1 API to support SMP"? The answer so far seems to be "few, but subtle". For example, SysBase->ThisTask is no longer meaningful on SMP, but FindTask(NULL) is. Disable() and Forbid() are shockingly bad on performance, but adding a spinlock semaphore mode to SignalSemaphore will help new code on SMP.
Leveraging a 'common' OS with a lot of machine support (Linux, MacOS, Windows, QNX, etc.) is something that AROS has been doing for quite a long time, and it is the biggest strength of AROS. This AROS experience and programming model, in the same way the Google's Android layers on top of Linux, or MacOS X layers on top of the Darwin/BSD kernel, as a first step
* The graphics + layers subsystem could be implemented as a shim on top of a OpenGL ES implementation (ie on any modern Linux system, or the RaspberryPI's hardware, MacOS X, etc).
- This also allows every window to be on its own 3D surface with backing store, allowing Wanderer (or a Commodity)
rearrange/zoom/animate app windows without having to send a pile or refreshes to them
* Use OpenAL as the sound backend
* AROSTCP would be a thin layer over the native OS's TCP/IP stack
* dos.library, poseidon.library, and input.device would be slim shims over the native APIs
* If we move to loading all libraries' into the application's task space, instead of a single global instance of the library, this will allow SMP and MMU more easily.
- Yes, it will require a lot of work in the libraries to make this transition
- Yes, I do think it will be worth it in the end.
* A 'fat binary' install format (or, maybe LLVM bytecode) that can be 'flattend' to the target architecture on installation.
So, what would this 'AROS of the future' look like?
* AmigaOS 3.x style API, with certain 'fundamental changes' to message passing
* Uses the underlying OS' device drivers, so more AROS developer effort can go to user-visible features and bugfixes
* Allows AROS applications to run side-by-side with the OS's native apps
And why would anyone want to program on such a system?
* AROS applications would run on any system that has the AROS Framework installed
* AROS applications are pixel-for-pixel the same on all platforms.
* Develop with the knowledge that you are guaranteed OpenGL and OpenAL, and the rest of the AROS Framework
an option for mmake to dump its dependency of metatarget in a graphviz[*] input file. This should make it possible to visualize the dependencies and hopefully be inspiration for cleaning up some mess, circular or unneeded dependencies and so on.
AmigaOS gcc 9 [https://franke.ms/amiga/gcc.wiki Old versions] able to create binaries for AmigaOS and [https://eab.abime.net/showthread.php?t=93813 Upgrading gcc versions]
==References==
{{reflist}}
{{status|50%}}
{{BookCat}}
l6axza84i9hi746od3stg2ut5sr53ax
4656308
4656307
2026-08-05T06:37:53Z
Jeff1138
301139
4656308
wikitext
text/x-wiki
{{ArosNav}}
==A technical overview of AROS==
Google translation [http://translate.google.com/translate?hl=en&sl=auto&tl=de&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs German], [http://translate.google.com/translate?hl=en&sl=auto&tl=fr&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs French], [http://translate.google.com/translate?hl=en&sl=auto&tl=it&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Italian], [http://translate.google.com/translate?hl=en&sl=auto&tl=es&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Spanish], [http://translate.google.com/translate?hl=en&sl=auto&tl=hi&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Hindi], [http://translate.google.com/translate?hl=en&sl=auto&tl=zh-CN&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Chinese],
[http://translate.google.com/translate?hl=en&sl=auto&tl=ru&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Russian],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pl&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Polish],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pt&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Portuguese]
{{Uncited}}
AROS,<ref>[http://aros.sourceforge.net/download.php References and sources]</ref> like AmigaOS (TM), is a [[w:Message passing|message-passing]], [[w:Preemption (computing)|preemptive]] [[w:Multitasking|multitasking]] [[w:Operating system|OS]].
It uses [[w:Reentrant (subroutine)|re-entrant]] shared libraries to save memory space.
AROS is based around an executive library kernel (Exec) and two other libraries:
* Exec (the "kernel", which is not a kernel in the modern sense),
* Intuition (graphics and GUI, integrated into the system) and
* AmigaDOS (Disk Operating System, the Metacomco's Tripos modified to work with Exec).
The design philosophies of AmigaDOS and Intuition are rather different, the former adopting a C-like API and the latter creating an [http://www.basden.demon.co.uk/amiga/amiga.oo.html object-oriented], message passing aware environment for the programmer. The system base is the only absolute address in AmigaOS (located at 0x00000004) this does differ with AROS as AROS SysBase is automatically provided (no $4) but everything else is dynamically loaded. The OS is well known for delivering high performance due to its close connections with the hardware, while simultaneously having the flexibility to support re-targetable graphics (Cybergraphics) and retargetable audio subsystems (AHI).
: Diagram showing relationships of libraries to system needed
Remember, AROS is a [http://en.wikibooks.org/wiki/Aros/Developer/ABIv1 research] operating system, and while all contributions to the base AROS code are welcome, please contact the dev list first for any core changes. Writing applications for AROS does not have this requirement.
While AROS appears and feels almost feature complete, it is still [[Aros/Developer/IncompleteAPIs|missing a small number of functions]] from the Amiga API - as well as a few implementations of [[Aros/MissingFunctionaility|core functionality]]. There are also a number of user applications that, while not strictly part of the AmigaOS 3.1 environment, need to be written.
[https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1201 This thread provides] information for setup, [http://www.aros.org/documentation/developers/index.php documentation] and whether you are interested in core OS changes and/or writing/porting software apps
*you compile directly under AROS, which can be running on either real hardware, virtual hardware
*in hosted mode under linux/window, cross-compile from that host OS (save your files as ISO-8859-15 encoding instead of UTF-8)
The repository for the [https://github.com/aros-development-team/AROS current development version ABIv1], the [https://github.com/deadw00d/AROS/tree/alt-abiv0 repository for current stable PC version ABIv0 with backported ABIv1 features is located which is used on AROS One and Icaros x86 based distros]
Any [https://github.com/aros-development-team/AROS/issues bugs / issues can be added]
We have a [https://arosdevteam.slack.com/archives/CUFV48U3H slack here], discord on [https://discord.gg/UKp9qdEBuQ Discord@AmigaDev],
==Software Development for AROS==
===Programming languages===
Apart from 'The Developer Environment', which primarily supports C/C++ code, there are other programming languages available for AROS:
'''Scripting'''
:[[Aros/User/DOS|DOS]], included in all
:[[Aros/Developer/Docs/LUA|LUA]], included in all or [http://www.airsoftsoftwair.de/en/prod_hollywood.html Hollywood]
:REXX [[Aros/Developer/Docs/Rexx|Regina (AROS' ARexx)]], included in all
:Python [ Info], included in Icaros
:Ruby [http://www.ruby-lang.org/en Info]/[http://archives.aros-exec.org/index.php?function=browse&cat=development/language download]
'''Basic'''
:[http://amos.pspuae.com/AmosProManual/contents/c1.html '''Amos Pro'''] [http://amos.pspuae.com/index.php?action=forum#1 compatible] [http://www.amigacoding.com/index.php/Main_Page commands] (all incomplete)
::[http://sourceforge.net/projects/xamos/ X-Amos]
::[http://sdlbasic.sourceforge.net/ SDLBasic] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://alvyn.sourceforge.net/ Alvyn] ([http://www.dusabledanslherbe.eu/AROSPage/MISC.14.html download])
::[[Aros/Developer/Basic/Basic4SDL|Basic4SDL]] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://www.ultimateamiga.co.uk/index.php?topic=9425.0 Project Deimos],
:'''Blitz Basic''' [http://aros-exec.org/modules/newbb/viewtopic.php?post_id=46537#forumpost46537 none on AROS]
:: [http://www.amiforce.de/main.php Amiblitz] on JanusUAE amiga(TM) emulator
:'''Amiga Basic'''
:: [ ACEBasic]
'''Misc'''
:[[Aros/Developer/Docs/E|AmigaE Portable E]]
:[https://ae.arosworld.org/index.php?board=11.0 FreePascal FPC Aros-Exec thread], [http://archives.aros-exec.org/index.php?function=browse&cat=development/language Download], FreePascal for AROS has its own [http://fpcaroswiki.alb42.de/ Wikibook],
:[[Aros/Developer/Docs/LLVM|LLVM]],
===Where to get the C/C++ Environment===
If you want to develop for AROS, its generally easier to be running linux hosted AROS development environment especially for C++, cross compiling the code. That's how most developers now are doing it. g++ is used to compile owb web browser as well as some other AROS software. If you were hoping for a rich set of C++ libraries or classes defined for the OS feature set, you might be disappointed.
AROS Native compiling is possible, but you're much more likely to run into the odd bug(s) in the dev environment since it gets little testing and fixing by other developers.
Is there a sftp software or scp over ssh available?
Maybe. At least the security part would be handled by [https://github.com/jens-maus/amissl amissl] [https://archives.arosworld.org/index.php?function=browse&cat=network/misc port]. DOpus5 has recently added sftp support. See here for a [https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1974&highlight=ssh&pid=12073#post_12073 ssh scp client]
[https://arosdevteam.slack.com/join/shared_invite/enQtOTc4Mzg0NDIzNzQ0LWQ2NWZmNmMwNGIwNGEyNTgxNzU3MGFjMTk3ZThmOTQ1MTVjMzhmNTllYWQ0ZTUxMjBjMGE0Y2VjMDJmNTc5MzI#/shared-invite/email Slack Dev Forum]
====Cross compilers from Windows or Linux====
*Windows WSL2 walkthrough can be [https://arosnews.github.io/how-to-cross-compile-aros-hosted-wsl/ found here]
you want to build AROS. No problem.
Here are instructions for 64-bit:
https://github.com/deadw00d/AROS/blob/master/INSTALL.md
Here are instructions for 32-bit:
https://github.com/deadw00d/AROS/blob/alt-abiv0/INSTALL.md
And as always has been the case you can use the contrib archive to 'obtain' the development directory which contains the /native/ AROS gcc compiler and tools. That compiler is used to build AROS itself but can be used outside the AROS build process by providing --sysroot with indicated directory to cross compile for AROS.
=====Older guides for Linux hosted compiler=====
Please install these packages before moving to next step. Below is a reference list for Debian-based distributions. Reference build system was Ubuntu 18.04/20.04 amd64.
subversion git-core gcc g++ make gawk bison flex bzip2 netpbm autoconf automake libx11-dev libxext-dev libc6-dev liblzo2-dev libxxf86vm-dev libpng-dev gcc-multilib libsdl1.2-dev byacc python-mako libxcursor-dev cmake zsh mingw64
Do all of these operations under home directory of your user or another directory where your user has write permissions.
Specifically, in a section "Linux-i386", be sure first to build the cross-compiler (toolchain-alt-abiv0-i386) and only then AROS itself (alt-abiv0-linux-i386).
Clone & build
<pre>
$ mkdir myrepo
$ cd myrepo
$ git clone https://github.com/deadw00d/AROS.git AROS
$ cd AROS
$ git checkout alt-abiv0
$ cd ..
$ cp ./AROS/scripts/rebuild.sh .
$ ./rebuild.sh
</pre>
Now to the build selection below - Linux-i386
Select toolchain-alt-abiv0-i386 - Select alt-abiv0-linux-i386 (DEBUG)
Start AROS by:
<pre>
$ cd alt-abiv0-linux-i386/bin/linux-i386/AROS
$ ./Arch/linux/AROSBootstrap
</pre>
Pc-i386 Select toolchain-alt-abiv0-i386 (if not built yet) - Select alt-abiv0-pc-i386
ISO image available in alt-abiv0-pc-i386/distfiles
Now that we have linux-hosted build, we can resume native (option 2).
Run ./rebuild.sh and selection option 2. Wait until it finished, then:
<pre>
$ cd alt-abiv0-pc-i386
$ make
</pre>
Now
<pre>
$ make bootiso
</pre>
Now, your compiler is located in toolchain-alt-abiv0-i386 directory and named i386-aros-gcc. Includes are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/include and libraries are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development.lib.
This is how then can be passed to the compiler:
/home/xxx/toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot /home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development -L/home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/lib
../toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot bin/linux-i386/AROS/Development local/helloworld/helloworld.c -o local/helloworld/helloworld
Another method was using Debian like distros and download the gimmearos.sh script (on [http://archives.aros-exec.org/index.php?function=browse&cat=development/cross aros-archives]) to setup the developer environment by downloading necessary packages ...
The gimmearos script is a good start in that direction, building the cross compilers and hosted AROS environment, but gimmearos.sh might be out of date or not be completely compatible with any given linux distro.
In order to do that, you have to compile AROS yourself. Download AROS source archive not contrib. Compile AROS by entering the main directory
./configure
make
([http://aros.sourceforge.net/documentation/developers/compiling.php More on compiling AROS]). The result will be a basic AROS system without development tools.
To compile C++ on Linux, type 'make gnu-contrib-crosstools', creating the cross-compilers in ./bin/linux-i386/tools/, named i386-aros-gcc, etc.
'''Note''': Currently, to make the cross compilers usable copy 'collect-aros' from tools/ to tools/i386-aros/bin/. At the moment the cross compilers if used from the Linux command line will only find it when it's there.
If you want to compile native compilers (the Developer Environment), type 'make contrib-gnu-gcc', creating native compilers in AROS' System:Development/bin directory.
When the output needs to be stripped <code>--strip-unneeded --remove-section .comment</code>
The Obj-C backend should build out of the box.
Open contrib/gnu/gcc/mmakefile.src and search for the line which contains "--enable-languages" and add "objc" to the list of languages that follows it.
--enable-languages=c,c++,objc
Better make it—enable-languages=c,c++,objc,obj-c++
ObjC++ is broken as soon as you try to use exceptions, but that might change in future GCC versions and it does not hurt having it there already.
Do you need a cross-compiler or a real compiler? In the first case you can get away with just downloading the proper gcc archive, apply the patch and proceed with the normal gcc build. In the case of a real cross-compiler then when downloading the contrib sources, also need to download the normal sources, place the contrib sources into a directory called contrib, need to install autoconf+automake+perl+python, call ./configure, cd into the subdirectory and type make.
to rebuild GCC with host == build == target == i386-pc-aros. So just get the vanilla sources and apply the patches without bothering about the build system?
[https://vmwaros.blogspot.com/2019/10/a-pre-configured-development-machine.html pre-configured VM environment vmware virtual machine to develop AROS and AROS software]
'''64 bit'''
'''32 bit'''
A good option for multiple OS is [https://axrt.org/index.php?tab=download-aros AxRuntime lets developers compile their Amiga API-based applications as Linux binaries being able to utilize modern development tools available on Linux, like IDEs, debuggers, profilers, etc]
====Native compilers for AROS====
Namely gcc for C or g++ for C++ are supplied with the [[Aros/Developer/Docs#The Developer Environment|Developer Environment]], which is already '''setup''' and part of any current AROS distribution like AROS One or the nightlies
* Current GCC 6.5 (32bit) though moving to 10.5 and 15.1 (64bit)
* Older software components. GNU GCC 4.x GNU BinUtils, GNU Fileutils 4.x, GNU Textutils and others.
On single partition systems and the Boot ISO, the AROS Developer environment is installed under "SYS:Development/". Systems with multiple partitions - such as a Work: partition - tend to install it to there instead, however it can be installed manually to any location. Please remember, if moving, that you will need to correct the Development packages 'install location' env variable to point to the new locations root - look in SYS:S/startup-sequence.
<pre>
Assign Development: SYS:Development
Assign C: Development:bin ADD
</pre>
In the aros build instructions. you need to check out contrib and/or ports into your AROS source directory, as subdirs. then, assuming you are building in an external build dir, as you should, you simply configure and "make contrib" for instance or whatever submodule you might want to build.
===Beginners Tutorials in C C++===
As AROS is [http://eab.abime.net/showthread.php?t=29856 C based] API compatible to AmigaOS 3.x, so most of the information on programming C on the Amiga applies to AROS as well. Please note that there is a lot of AmigaOS 1.3 (1985-1989) and [https://www.markround.com/amigaguide AmigaOS AOS 2.x (1990-1992)] information around but OS3.1 is recommended but limited in amount.
Brief overview of what is required to write AROS Applications
# Using [[Aros/Developer/Docs/Libraries/Intuition|Intuition]] for basic screens/windows
# Using graphics within windows via 8bit [[Aros/Developer/Docs/Libraries/Graphics|graphics]] and so onto 15-16-24bit [[Aros/Developer/Docs/Libraries/CGFX|cybergraphx]]
# Load and save work to [[Aros/Developer/Docs/Libraries/DOS|dos]] disk drives
# Using the [[Aros/Developer/Zune|ZUNE GUI Environment]]
Writing native games require this extra information
# Using [[Aros/Developer/AHIDrivers|AHI audio hardware independent API]]
# Using USB joystick/joypad with the Poseidon USB stack through [[Aros/Developer/Docs/Libraries/LowLevel|LowLevel]] library
Additional features that could be added later
# Adding additional [[Aros/Developer/Docs/Libraries/Locale|Locale]] language translations to your program
# Adding a [[Aros/Developer/Docs/Rexx|AREXX/Regina]] port to your application
# Executing Amiga(TM) [[Aros/User/DOS|DOS]] commands from your application
# Using [[Aros/Developer/Docs/Libraries/Icon|icons]] (.info files) and icon tooltypes (stack, version, and program startup options)
# Local couch or IP based SANA2 networking co-op multi player gaming support
Most AmigaOS programming books are nowadays very much out of date as most are from the late 1980s and do not cover later amigaOS releases like 3.1 for example, Rob Peck's book "Programmer's Guide to the Amiga". The Amiga ROM Kernel manuals aka RKMs like Libraries (3rd edition), Devices (), the AmigaDOS manual (3rd edition) and the Style Guide may have their uses. There are some reference examples from AmigaMail and Devcon notes (available again on an Amiga developers CD 2.1).
For Arexx then "The Amiga Programmer's Guide to ARexx" by Eric Giguere, which was published by Commodore is useful as well as an "Arexx Cookbook".
Curly brackets missing - try SHIFT + ALT + 7 or 0.
* Beginners C Guide [http://www.iu.hio.no/~mark/CTutorial/CTutorial.html C Tutorial],
* [http://thecguru.com/ C for beginners],
* [http://fresh2refresh.com/c/c-basic-program/ C programming basics] for students,
* [https://www.edx.org/courses Free Online course] from American Universities
* Reference Amiga [http://amigadev.elowar.com/ API reference].
* AROS based c source can be found [[Aros/Developer/Docs/Examples|here]] and lots of example code can be found inside [https://github.com/aros-development-team AROS sources] themselves and from the contrib section of the archives from [https://github.com/aros-development-team/contrib Aros site], and study the AROS applications source code, e.g. the test programs from the Tests drawer (folder/directory). Take a look at the code of some smaller AROS programs might be a better and more up to date guide. Some old Os3 [http://www.blackfiveservices.co.uk/amiga-c/ here]
When you upload your builds, please write the architecture (like i386-aros, x86_64-aros, etc.) in the archive name
and it is also advisable to write in the field "Requirements" what ABI (ABIv11, ABIv0 or ABIv1)
===Compiling C/C++ Code===
Native, although we have a IDE Integrated Development Environment (Murks), it does lack a debugger. Whilst others use a combination of a text editor and shell to edit code. Most though use an AROS hosted on Linux to take advantage of the better GCC tools like GDB and various IDEs.
Open shell - its a menu option at the top left of Wanderer (desktop). Or by using the right Win key and w (or F12 and w) within the directory with the source code. Type in
sh
to change the amiga shell into a unix shell. You can then type in ls (unix equivalent to amiga dir). Take a look [http://en.wikibooks.org/wiki/Linux_commands here] for more commands.
For a single file program-name.c or program-name.cpp
gcc -o program-name program-name.c
or
g++ -o program-name program-name.cpp
or
g++ -o test -Wall -g main.cc texturelib.cpp xmodelib.cc -lsdl -lgl
To close the shell, click on the top left-hand corner to close (twice). Once to get back the aros shell and then again to close finally. Use [http://freshmeat.net/projects/cksfv/ cksfv] as a test.
Some source code requires the addition of Amiga API libraries, like dos, which you can flag at the compile time as
gcc -o julia.exe julia.c -ldos
For DOS use -ldos as example and if you are compiling mui codes it will be -lmui or intuition -lintuition. Other missing symbols are due to linker libraries being necessary for linking in functions that aren't in the standard C libraries. For example some source code would need added
-lz or -lm or -lpng or -larosc etc.
use this in unix line command mode to search for 'search-item' in many .c files (*.cpp for c++, etc.)
grep -l 'search-item' *.c
If the program is not executable, try using parameter fno-common
"Delete #?.o"? Or if you are using abcshell then "rm *.o"
:''More information: [[Aros/Developer/Porting software]]''
=== How to make Apps have AROS 64-bit specific support code ===
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
AROS64 already uses 64bit addressing, it just doesn't setup the MMU for more than 4GB physical memory currently.
When porting software to AROS64 it is "mostly" a case of converting ULONG's that are used to store pointers, into IPTR's instead, etc. Another quirk, is making sure items on the stack are the correct size by using the STACKED attribute for them.
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
compiling mui stuff for aros setting -std=gnu99 is necessary, had -std=c99 usually
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order.
crash which suggest memory corruption. From my experience porting from 32-bit to 64-bit these kinds of errors can happen if a pointer is passed somewhere via ULONG variable. Then half of the pointer is cut.
To generate this error, please run AROSBootstrap with -m 1024. This will allocate heap to 64-bit address space which will make these errors immediatelly visible. These types of crashes are hard to debug. Disabled as little code as possible to stop corruption from occurring and then try to read from the code where it can be broken
Crashing in tslf_freevec is another symptom of memory corruption and these memory corruptions will manifest differently on different setups.
==Coding conventions==
As the AROS core source is a shared developer experience, there are rules regarding structure and style. When it comes to your creating your own app and coding, the structure and style should be your own, i.e. you should enjoy what you do and do it so that you can understand what is going on.
===Layout===
<syntaxhighlight lang="c">
static void 1st_function()
{
program
exit(0);
}
int main(void)
{
1st_function();
2nd_function();
3rd_function();
return 0;
}
</syntaxhighlight>
<syntaxhighlight lang="c">
struct Screen * openscreen(void);
struct Window *openwindow(struct Screen *screen, const char *title, LONG x, LONG y, LONG w, LONG h);
VOID 1st_function();
VOID 2nd_function();
int main(int argc, char **argv)
{
program
return 0;
} /* main */
VOID 1st_function()
{
}
VOID 2nd_function()
{
}
</syntaxhighlight>
===General style===
This code is used by many people and therefore you should keep some things in mind when you submit source code:
* Keep things simple
* Keep the source clean
* Always know what you are doing, if not flag it and describe what needs to be done...
* Explain clearly/simply what you are doing
* Remember that you write code once but that it is read many times by many people
===Comments===
AROS uses some of the comments in the source to generate the documentation. Therefore it's necessary to keep a certain format so the tools can find their information. Other comments are ignored but they should explain what you thought when you wrote the code. If you really can't think of an explanation, then don't write the code a second time like this:
<pre>
/* This adds 1 to t */
t ++;
</pre>
What we think of is this:
<pre>
/* Go on with next element */
t ++;
</pre>
===Formatting===
This is only '''IMPORTANT''' if you are going to work on the core AROS code or contrib but not applications which may reside outside like on AROS Archives or other websites.
<syntaxhighlight lang="c">
{
/* a */
struct RastPort * rp;
int a;
/* b */
rp = NULL;
a = 1;
/* c */
if (a == 1)
printf ("Init worked\n");
/* d */
if
(
!(rp = Get_a_pointer_to_the_RastPort
(
some
, long
, arguments
)
)
||
a <= 0
)
{
printf ("Something failed\n");
return FAIL;
}
/* e */
a = printf ("My RastPort is %p, a=%d\n"
, rp
, a
);
return OK;
}
</syntaxhighlight>
Looks ugly, eh ? :-) Ok, here are the rules:
<pre>
If several lines contain similar code, put similar things below each other (see a and b);
Put spaces between operands and operators
Put braces {}, brackets [] and parentheses () below each other (d) if there is much code between.
Brackets and parentheses may be in one line if the code between is small (c)
Indent by 4 Spaces. Two indent levels may be abbreviated by one tab.
</pre>
'''Before committing please normalize the indentation - if you have a mixture of tabs and spaced - please always use spaces, 1 tab = 4 spaces.'''
The reasons for this are:
# While some editors can use an arbitrary sizes for tabs, it's a bit complicated to tell another editor which tab size was used by the one used to write the code.
# Most code in AROS was written this way and your code should look like the rest.
# You can print this code on any printer without special tools to "fix" the tabs.
# Most editors have smart tabs which do exactly this. If your editor doesn't, write a bug report.
If you have a function with many arguments (d, e) you should put the parentheses in lines of their own and each argument in one line (d) or put the first argument behind the opening parentheses (e) and each following argument in a line of its own with the comma in front. The closing parentheses is in a line of its own and aligned with the beginning of the expression (i.e. the a and not the opening parentheses or the printf()).
Use a single blank line to separate logical blocks. Large comments should have a blank line before and after them, small comments should be put before the code they explain with only one blank line before them.
If you see any TABS in AROS core sources then the suggestion is to "detab the file and commit that separately" either before or afterwards from making functionality changes. Make two commits instead of one. This makes it easier for others to see the real changes instead of having to dig through multiple lines of irrelevant diffs.
===Eliminating Global Variables===
i.e. pass variables to functions (local scope) or classes making it easier to track and debug your code.
Any time you find that you need a particular thing in 'a lot of different places', chances are that all those places are conceptually related, and so you can create a class, a namespace, a function, or some other higher-level organizational unit to represent that relationship. This makes the program easier to understand.
Bad Designs
* All variables are global.
* There are no standalone functions, only sub-procedures which act on the global variables.
* Every sub-procedure is at least 500 lines to several thousand
* Every sub-procedure has more than one task to perform
* Copy-paste is preferred to writing methods, AND subtle changes are made in the middle of the code
Good Designs
* structure program into functions (C or basic) - top-down procedural approach
* put in class(es) (freepascal or C++) - the object is fixed and you use methods to access the object
<pre>
class String_List
{
private:
list<string> m_List; // member
public:
void read_strings() { /* read strings into m_List */ }
void print_strings() { /* write contents of m_List to stdout */ }
void sort_strings() { /* sort contents of m_List */ }
void sort_strings_reverse() { /* reverse-sort contents of m_List */ }
void unique_strings() { /* remove duplicate strings */ }
};
int main()
{
String_List myList; // local
myList.read_strings();
myList.sort_strings();
myList.print_strings();
myList.sort_strings_reverse();
myList.print_strings();
myList.unique_strings();
myList.print_strings();
return 0;
}
</pre>
This way it is very easy to replace the list with new list for debugging purposes, or replacing the methods without replacing the list, when you want different results. You only have to replace the content of the local variables.
So create the structure that matches your data (linked lists, trees, arrays, etc.) and what to do with them (sorting, searching, etc.)
<pre>
.h usually contain #define #include typedef enum struct extern screen and window definitions (data structures)
.c should contains functions and algorithms
</pre>
One way to look at it is that menu headings act as the .c file and sub-menu headings as functions.
When you start a project, you place a couple of declarations in the include file. As the project continues, you place more and more declarations in the include file, some of which refer to or contain previous declarations. Before you know it, you have a real mess on your hands. The majority of your source files have knowledge of the data structures and directly reference elements from the structures.
Making changes in an environment where many data structures directly refer to other data structures becomes, at best, a headache. Consider what happens when you change a data structure.
Use good variables names to help clarify code and only comment when you need to explain why a certain programming approach was made.
You're Refactoring Legacy Code, you see a global, you want to get rid of it. How do you do this?
Exactly what to do depends on how the global is used. The first step is to find all uses of the global throughout the code, and get a feel for what the significance of the variable is and how it relates to the rest of the program. Pay particular attention to the "lifetime" of the variable (when it gets initialized, when it is first used, when it is last used, how it gets cleaned up). Then, you will probably make the global a data member of a class (for OO languages), or you will write some get/set functions. Converting to the Singleton Pattern is common, but you may discover that it makes more sense for the data element to be a member of an existing singleton, or maybe even an instance variable.
# Create a basic read method, either as a class or a global function. Replace all reads with the access method, but leave the variable defined as a global.
# Review each of the writes to the method and extract action functions one at a time. Unless two operations are coded identically in the original code, extract each write access separately.
# Change the variable scope from global to local.
# Analyze similar action functions to determine if any can be merged, i.e., there are no functional differences in the results of the function, just differences in the implementation details.
# Review the calls to the read method and see if a more complex functionality should be applied. Follow the approach for writes and unless implementations are identical, create separate access functions.
# Analyze the access functions for duplication.
As returning variables by "passing by value" are forgotten, so "passing by reference" is often used instead. The reference is a pointer to the variable so the value is remembered when returned.
Alternatives
* Hidden Globals
* Singleton Pattern
* Database or TupleSpace
* Context Object
* Dependency Injection
* Stateful Procedures
==AROS/AmigaOS APIs and Docs==
<pre>
Library:
- Private data structure
- Many public access methods
Device:
- Private data structure
- Two (BeginIO/AbortIO) access methods
Resource:
- Public data structure
- *NO* access methods
</pre>
And, being Amiga OS-compatible, there are exceptions to all of these.
===System Libraries===
The [http://aros.sourceforge.net/documentation/developers/app-dev/index.php AROS Guide To Libraries] can be used as a guide to individual commands and Old Dev Docs are used in application programming.
The generated [http://aros.sourceforge.net/documentation/developers/autodocs/ Aros AutoDocs HTML Read] or download [http://aros.sourceforge.net/download.php docs-html.bz2 from here].
Amiga/Aros styles libraries are very different from windows and linux libs. Typical .so/dll libraries are foreign to most Amiga-like OS
*[[Aros/Developer/Docs/Libraries/AROSC|arosc.library]]
*[[Aros/Developer/Docs/Libraries/AmigaGuide|amigaguide.library]]
*[[Aros/Developer/Docs/Libraries/ASL|asl.library]]
*[[Aros/Developer/Docs/Libraries/Bullet|bullet.library]]
*[[Aros/Developer/Docs/Libraries/BSDsocket|bsdsocket.library]]
*[[Aros/Developer/Docs/Libraries/CAMD|camd.library]]
*[[Aros/Developer/Docs/Libraries/Codesets|codesets.library]]
*[[Aros/Developer/Docs/Libraries/CGFX|cybergraphics.library]]
*[[Aros/Developer/Docs/Libraries/CGXVIDEO|cgxvideo.library]]
*[[Aros/Developer/Docs/Libraries/Commodities|commodities.library]]
*[[Aros/Developer/Docs/Libraries/DataTypes|datatypes.library]]
*[[Aros/Developer/Docs/Libraries/DiskFont|diskfont.library]]
*[[Aros/Developer/Docs/Libraries/DOS|dos.library]]
*[[Aros/Developer/Docs/Libraries/Exec|exec.library]]
*[[Aros/Developer/Docs/Libraries/Expansion|expansion.library]]
*[[Aros/Developer/Docs/Libraries/FreeType2|freetype.library]]
*[[Aros/Developer/Docs/Libraries/GadTools|gadtools.library]]
*[[Aros/Developer/Docs/Libraries/Graphics|graphics.library]]
*[[Aros/Developer/Docs/Libraries/Icon|icon.library]]
*[[Aros/Developer/Docs/Libraries/Identify|identify.library]]
*[[Aros/Developer/Docs/Libraries/IFFParse|iffparse.library]]
*[[Aros/Developer/Docs/Libraries/Intuition|intuition.library]]
*[[Aros/Developer/Docs/Libraries/Keymap|keymap.library]]
*[[Aros/Developer/Docs/Libraries/Layers|layers.library]]
*[[Aros/Developer/Docs/Libraries/Locale|locale.library]]
*[[Aros/Developer/Docs/Libraries/LowLevel|lowlevel.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingBas|mathieeesingbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubBas|mathieeedoubbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingTrans|mathieeesingtrans.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubTrans|mathieeedoubtrans.library]]
*[[Aros/Developer/Docs/Libraries/Mathtrans|mathtrans.library]]
*[[Aros/Developer/Docs/Libraries/MUIMaster|muimaster.library]]
*[[Aros/Developer/Docs/Libraries/Partition|partition.library]]
*[[Aros/Developer/Docs/Libraries/PopUpMenu|popupmenu.library]]
*[[Aros/Developer/Docs/Libraries/OOP|oop.library]]
*[[Aros/Developer/Docs/Libraries/Regina|regina.library]]
*[[Aros/Developer/Docs/Libraries/Reqtools|reqtools.library]]
*[[Aros/Developer/Docs/Libraries/RexxSysLib|rexxsyslib.library]]
*[[Aros/Developer/Docs/Libraries/ScreenNotify|screennotify.library]]
*[[Aros/Developer/Docs/Libraries/TTEngine|ttengine.library]]
*[[Aros/Developer/Docs/Libraries/Thread|thread.library]]
*[[Aros/Developer/Docs/Libraries/Utility|utility.library]]
*[[Aros/Developer/Docs/Libraries/Xadmaster|xadmaster.library]]
*[[Aros/Developer/Docs/Libraries/Workbench|workbench.library]]
*[https://github.com/aros-development-team/AROS/commit/c82e86b8480277998014cc327b56c7664023a52f ClassAct Reaction boopsi class]
===AROS Subsystems===
# [[Aros/Developer/Zune|Zune MUI compatible GUI]]
# [[Aros/Developer/AROSAppPackages|AROS Application Packages]]
# AHI Audio Drivers - [[Aros/Developer/AHIDrivers|Usage]]/[[Aros/Developer/AHIDriversDev|Development]]
# AROSTCP Sana2 Network Interface Drivers - [[Aros/Developer/NICDrivers|Usage]]/[[Aros/Developer/NICDriversDev|Development]]
# [[Aros/Developer/AmiSSL|AmiSSL]]
# gfx.hidd/cybergraphics Video Drivers - [[Aros/Developer/GfxDrivers|Usage]]/[[Aros/Developer/GfxDriversDev|Development]]
# IO Device Drivers - [[Aros/Developer/IODeviceDrivers|Usage]]/[[Aros/Developer/IODeviceDriversDev|Development]]
# USB Device Drivers - [[Aros/Developer/USBDrivers|Usage]]/[[Aros/Developer/USBDriversDev|Development]]
# PCI Device Drivers - [[Aros/Developer/PCIDrivers|Usage]]/[[Aros/Developer/PCIDriversDev|Development]]
# [http://www.libsdl.org/ SDL] [https://github.com/search?q=repo%3Aaros-development-team%2Fcontrib%20SDL2&type=code SDL2 commits], [https://github.com/aros-development-team/contrib/commit/c62c3c425c35bac19dadc23be092b0b13a66c76c SDL3 initial commit], []
# [[w:Gallium3D|Gallium 3D]] [http://www.mesa3d.org/ openGL aka Mesa] - [[Aros/Developer/OpenGL|Usage]]/[[Aros/Developer/OpenGLDev|Development]] [http://www.swiftless.com/opengltuts.html Swfitless]
# A small subset of GTK2 through [http://sourceforge.net/projects/gtk-mui/ MUI-GTK]
# Cairo 2D Engine - [[Aros/Developer/Cairo|Usage]]/[[Aros/Developer/Cairo|Development]]
# [[Aros/Developer/Scalos|Scalos desktop API and plugin modules]]
# [[Aros/Developer/VHI|VHI video driver]]
====HIDDs====
*[[Aros/Developer/Docs/HIDD/HIDDClass|hiddclass.hidd]]
*[[Aros/Developer/Docs/HIDD/Graphics|graphics.hidd]]
*[[Aros/Developer/Docs/HIDD/VesaGfx|vesagfx.hidd]]
*[[Aros/Developer/Docs/HIDD/ATI|radeon.hidd]]
*[[Aros/Developer/Docs/HIDD/NVidia|nvidia.hidd]]
*[[Aros/Developer/Docs/HIDD/Nouveau|nouveau.hidd]]
*[[Aros/Developer/Docs/HIDD/Kbd|kbd.hidd]]
*[[Aros/Developer/Docs/HIDD/Mouse|mouse.hidd]]
*[[Aros/Developer/Docs/HIDD/i2c|i2c.hidd]]
*[[Aros/Developer/Docs/HIDD/IRQ|irq.hidd (deprecated)]]
*[[Aros/Developer/Docs/HIDD/PCI|pci.hidd]]
*[[Aros/Developer/Docs/HIDD/PCIPC|pcipc.hidd]]
*[[Aros/Developer/Docs/HIDD/Serial|serial.hidd]]
*[[Aros/Developer/Docs/HIDD/Thunderbolt|thunderbolt.hidd]]
https://github.com/aros-development-team/AROS/commit/4f02ea691799aff3a01f60cfa5f9182c82fc57a8
HIDD are used for device/peripheral low level hardware support drivers. The HIDD system is split up into a collection of classes with a strict inheritance hierarchy. A HIDD class implements a device driver for a single device or in rare cases a group of devices and provides an interface for other programs and devices to access.
In order to maintain portability of interfaces across a wide range of hardware this interface will in general not present the raw interface to the underlying hardware. Instead it will present a generic interface that describes many different hardware implementations. This allows for the best reuse of both interfaces and code.
HIDD API is heavyweight though. You need to open a HIDD library, open oop.library, instantiate an object (even if there's no object); and object calls are more costly compared to plain library calls.
Basically your task is to implement a subclass of hidd.ata.bus for your hardware. just implementing the XXXATA__Hidd_ATABus__xxxxxx methods for the Amiga chipset - and appropriate versions of the interface_xxx.c file(s). pretty much everything in probe.c could be ignored - just write a replacement scan for relevant amiga devices and store whatever info you need in the bus data? only the "SUPPORT_LEGACY" blocks might be related.
You do not need to depend on PCI API. PCI is just a way to discover the hardware on PCs, etc.
<hidd/pci.h> includes (at some depth) <interface/HW.h>, which defines IID_HW. This comes from the 'generic' HIDD class in:
rom/hidds/hidd/hiddclass.conf
did not split up HIDD and HW because they are always used in pair. It's the same as hidd/pci.h bringing definition for: PCI, PCIDriver and PCIDevice. PCI is actually PCIHW, just the name was not changed for backwards compatibility reasons. HW is a 'hub' where HIDD instances plug in.
ATA HIDD aoHidd_ATABus_Use32Bit value is completely ignored unless ata.device first detects correct command line parameter.
Yes. Unfortunately I was unable to find any comment in code or svn history with explanations. Looked at Linux source, there 32-bit PIO is also controller driver's property. Some of them enable it, some don't.
Actually, switching the default to ON should be safe. ata.device is fail-safe at this because during IDENTIFY command it validates upper 16 bits, and if they appear to be zeroes in all 128 longwords, then 32-bit mode is switched off. But, nevertheless, I know how tricky hardware can be, so I decided not to change original behavior. If you think it's wrong in some cases, then it's possible to add one more attribute like aHidd_ATABus_Default32Bit. If set to YES, then this means that 32-bit PIO is safe to use by default.
====Devices====
*[[Aros/Developer/Docs/Devices/ATA|ata.device]]
*[[Aros/Developer/Docs/Devices/Console|console.device]]
*[[Aros/Developer/Docs/Devices/Narrator|narrator.device]]
*[[Aros/Developer/Docs/Devices/Printer|printer.device]]
*[[Aros/Developer/Docs/Devices/Trackdisk|trackdisk.device]]
*[[Aros/Developer/Docs/Devices/AmberRAM|amberram.device]]
*[[Aros/Developer/Docs/Devices/Timer|timer.device]]
*[[Aros/Developer/Docs/Devices/|.device]]
The Amiga used [[Aros/Developer/Docs/Devices|Devices]] to communicate with [http://aros-exec.org/modules/newbb/viewtopic.php?start=0&topic_id=3475&viewmode=flat&order=ASC additional hardware]. AROS has replaced these hardware devices with hidd equivalents but some are still retained for backwards compatibility.
Local libraries/devices/handlers,etc. are supposed to override the ones in ROM if their version is higher than the one in ROM.
Here is the list of commands exec default:
{| class="wikitable"
| CMD_CLEAR
| Purge the buffer of the device
|----
| CMD_READ
| Playback Control
|----
| CMD_STOP
| Stopped the activity of the device
|----
| CMD_FLUSH
| Empty the queue of commands
|----
| CMD_RESET
| Reset a device
|----
| CMD_WRITE
| Playback Control
|----
| CMD_INVALID
| Create an error
|----
| CMD_UPDATE
| Gets updated device
|----
| CMD_START
| Will restart the device
|----
|}
While most other "stuff you communicate with" in AmigaOS are devices <ref>AMIGA ROM Kernel Reference Manual: Devices, 3rd Edition. Commodore-Amiga, Inc. Addison-Wesley, 1991. {{ISBN|0-201-56775-X}}</ref> that share a [http://gega.homelinux.net/AmigaDevDocs/ common base interface]. [[Aros/Developer/Docs/Devices1.3|OS 1.3 Device Drivers]].
====Handlers====
:[[Aros/Developer/Docs/Handlers/Pipe|pipe.handler]]
:[[Aros/Developer/Docs/Handlers/Port|port.handler]]
:[[Aros/Developer/Docs/Handlers/SFS|sfs.handler]]
:[[Aros/Developer/Docs/Handlers/FAT|fat.handler]]
:[[Aros/Developer/Docs/Handlers/PFS|pfs.handler]]
:[[Aros/Developer/Docs/Handlers/NTFS|fuse.handler]]
:[[Aros/Developer/Docs/Handlers/FFS|ffs.handler]]
filesystem handlers have their own separate system consisting of completely differently structured messages that dos.library use to pass requests (for things like reading, writing, getting directory contents etc.) to them. AROS originally went with implementing filesystem handlers as devices, which might arguably be more consistent with the rest of the AmigaOS API but which is quite incompatible with AmigaOS itself. However, it made it far harder to port filesystems and the gains were comparatively small, and so there's been a long standing goal of fixing this incompatibility. It has now, June 2011, been reintroduced to all AROS flavors.
are argstr and argsize valid for the handler startup environment?
DOS/RunHandler() calls DOS/CreateNewProcTags(), and then CallEntry() (in rom/dos/exit.c) to start the handler, so yes, argstr and argsize are *present* in the call signature of the handler.
Granted, argstr will be NULL and argsize 0, but those values *are* passed to the handler function using:
<pre>
AROS_UFC3(ULONG, entry,
AROS_UFCA(STRPTR, argptr, A0),
AROS_UFCA(ULONG, argsize, D0),
AROS_UFCA(struct ExecBase *, SysBase, A6));
</pre>
Creating your own [without the whole build tree http://pagesperso-orange.fr/franck.charlet/temp/radeon.zip] and then
<pre>
make stub
make
make install
</pre>
SFS has two Root blocks, one at the start and one at the end of the disk. The Root blocks both contain the same information. They hold various information about the disk structure and have the locations of some important blocks used by the filesystem.
The Root ObjectContainer contains the Root directory Object. The name of this Object is the name of the volume. It is identical to a normal directory Object.
The Bitmap is used to keep track of free space. Each bit in a bitmap represents a single block. A set bit indicates a free block and a cleared bit a used block.
AdminSpaceContainers are used to keep track of space which has been reserved for storing administration blocks. Only the Bitmap, the Root blocks and the actual data stored in files aren't stored in administration space. Administration space is allocated in chunks of 32 blocks at a time. A single AdminSpaceContainer can hold information about a large number of such areas each of which has its own little bitmap of 32 bits.
Extents are stored in a B-Tree. The Root block holds a pointer to the root of the Extent B-Tree. Extents keep track of space in use by a specific file. Each fragment a file consists of has its own Extent. Extents are in a double linked list. The list can be used to locate the next or previous fragment of a file.
Below is the standard block header. This header is found before EVERY type of block used in the filesystem, except data blocks. The id field is used to check if the block is of the correct type when it is being referred to using a BLCK pointer. The checksum field is the SUM of all LONGs in a block plus one, and then negated. When applying a checksum the checksum field itself should be set to zero. The checking a checksum the checksum is okay if the result of the checksum equals zero. The ownblock BLCK pointer points to the block itself. This field is an extra safety check to ensure we are using a valid block.
Field Type Description
id ULONG The id field is used to identify the type of block we are dealing with. It is used to make sure that when referencing a block we got a block of the correct type. The id consist of 4 bytes and each blocktype has its own unique foure letter code.
checksum ULONG This field contains the sum of all longs in this block, plus one and then negated. The checksum can be used to check if the block hasn't been corrupted in any way.
ownblock BLCK Points to itself, or in other words, this field contains the block number of this block. This is yet another way to check whether or not a block is valid.
<pre>
struct fsBlockHeader {
ULONG id;
ULONG checksum;
BLCK ownblock;
};
</pre>
The algorithm to calculate the checksum of a block:
<pre>
ULONG calcchecksum(struct fsBlockHeader *block, LONG blocksize} {
ULONG *data=(ULONG *)block;
ULONG checksum=1;
block->checksum=0;
while(blocksize>0) {
checksum+=*data++;
blocksize-=4;
}
return(-checksum);
}
</pre>
A Root block contains very important information about the structure of a SFS disk. It has information on the location and size of the disk, the blocksize used, locations of various important blocks, version information and some filesystem specific settings.
A SFS disk has two Root blocks; one located at the start of the partition and one at the end. On startup the filesystem will check both Roots to see if it is a valid SFS disk. If either one is missing SFS can still continue (although at the moment it won't).
A Root block could be missing on purpose. For example, if you extend the partition at the end (adding a few MB's) then SFS can detect this with the information stored in the Root block located at the beginning (since only the end-offset has changed). Same goes for the other way around, as long as you don't change start and end point at the same time.
When a Root block is missing because the partition has been made a bit larger, then SFS will in the future be able to resize itself without re-formatting the disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
version UWORD The version of the filesystem block structure. You can check this field to identify what version of the filesystem your dealing with it and to see if you can handle this structure correctly. Don't try to interpret the disk's structure when this field contains an unknown version number!
sequencenumber UWORD Used to identify which Root block was written last in case the sequencenumber on both Root blocks don't match.
datecreated ULONG Creation date of this volume. This is the date when the disk was last formatted and will never be changed.
bits UBYTE Various settings, see below.
<pre>
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
reserved1 ULONG[2] Reserved, leave zero.
firstbyteh ULONG High 32-bits of a 64-bit number. This is the first byte of our partition relative to the start of the disk.
firstbyte ULONG Low 32-bits of a 64-bit number.
lastbyteh ULONG High 32-bits of a 64-bit number. This is the last byte (exclusive) of our partition relative to the start of the disk.
lastbyte ULONG Low 32-bits of a 64-bit number.
totalblocks ULONG The total number of blocks this partition consists of.
blocksize ULONG The size of a block of this partition.
reserved2 ULONG[2] Reserved, leave zero.
reserved3 ULONG[8] Reserved, leave zero.
bitmapbase BLCK Block number of the start of the Bitmap.
adminspacecontainer BLCK Block number of the first AdminSpaceContainer.
rootobjectcontainer BLCK Block number of the ObjectContainer which contains the root of the disk (this is where the volume name is stored).
extentbnoderoot BLCK Block number of the root of the Extent B-Tree.
reserved4 ULONG[4] Reserved, leave zero.
</pre>
<pre>
struct fsRootBlock {
struct fsBlockHeader bheader;
UWORD version;
UWORD sequencenumber;
ULONG datecreated;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
ULONG reserved1[2];
ULONG firstbyteh;
ULONG firstbyte;
ULONG lastbyteh;
ULONG lastbyte;
BLCK totalblocks;
ULONG blocksize;
ULONG reserved2[2];
ULONG reserved3[8];
BLCK bitmapbase;
BLCK adminspacecontainer;
BLCK rootobjectcontainer;
BLCK extentbnoderoot;
ULONG reserved4[4];
};
</pre>
AdminSpaceContainers are used to store the location and bitmap of each administration space. The AdminSpaceContainers are located in a double linked list and they contain an array of fsAdminSpace structures. There is one fsAdminSpace structure for every administration space on disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
next BLCK The next AdminSpaceContainer, or zero if it is the last in the chain.
previous BLCK The previous AdminSpaceContainer, or zero if it is the first AdminSpaceContainer.
bits UBYTE The number of bits in each in the bits ULONG in the fsAdminSpace structure.
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
adminspace struct fsAdminSpace An array of fsAdminSpace structures. The size of the array is determined by the current blocksize.
<pre>
struct fsAdminSpaceContainer {
struct fsBlockHeader bheader;
BLCK next;
BLCK previous;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
struct fsAdminSpace adminspace[0];
};
</pre>
Field Type Description
space BLCK The first block of an administration space.
bits ULONG A small bitmap which is used to determine which blocks in an administration space are already in use. The number of bits in this bitmap is determined by the bits field in the AdminSpaceContainer.
<pre>
struct fsAdminSpace {
BLCK space;
ULONG bits;
};
</pre>
The fsBitmap structure is used for Bitmap blocks. A bitmap block is used to keep track of which space is in use and which isn't for a particular area of a disk. All bitmap blocks together keep track of the free space for an entire disk. The location of the first bitmap block is known and all other bitmap blocks are stored in order after the first one.
Field Type Description
bheader struct fsBlockHeader Standard block header.
bitmap ULONG An array of ULONG's. These hold the actual information on which blocks are in use and which aren't.
<pre>
struct fsBitmap {
struct fsBlockHeader bheader;
ULONG bitmap[0];
};
</pre>
Each bit in a bitmap block (except for the block header) represents a single block. If the bit is set than the block is free, and if the bit is clear then it is full. The first ULONG in the bitmap area of the first bitmap block represents blocks 0 through 31 on the disk. Bit 31 of this ULONG is block 0, 30 is block 1, and so on. Bit 0 of the first ULONG represents block 31.
Below is a table to clarify how bitmaps work even further. The first column is the bitmap block number, the second column is the number of the ULONG in the bitmap array. The third column is the bit number in this ULONG, and the last column is the block which this specific bit, in this specific bitmap block represents.
We'll assume here that a bitmap block has room for 120 ULONG's (meaning there is room for storing 32 * 120 bits).
<pre>
Bitmap block ULONG number Bit number Block represented
1 (first) 0 31 0
1 0 30 1
... ... ... ...
1 0 1 30
1 0 0 31
1 1 31 32
... ... ... ...
1 2 31 64
1 2 30 65
... ... ... ...
1 119 0 3839
2 0 31 3840
2 0 30 3841
... ... ... ...
</pre>
The last bitmap block doesn't need to be completely used. The unused bits (which belong to blocks which do not exist) all have to be clear, to indicate that these blocks are in use.
The fsObjectContainer structure is used to hold a variable number of fsObjects structures (Objects) which have the same parent directory. Each ObjectContainer must contain at least one Object. If there is space in the ObjectContainer not used by the variable number of Objects then that space is zero filled. Objects always start at 2-byte boundaries, which means sometimes a padding byte is inserted between two Objects.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the parent Object, or 0 if this object has no parent (which is only the case for the Root directory).
next BLCK The next ObjectContainer belonging to this directory, or zero if it is the last in the chain.
previous BLCK The previous ObjectContainer belonging to this directory, or zero if it is the first ObjectContainer in this directory.
object struct fsObject A variable number of fsObject structures. The number of structures depends on the individual sizes of each fsObject structure and the blocksize. These structures are located directly after each other with at most 1 byte of padding between them to get the structures aligned on a 2 byte boundary.
<pre>
struct fsObjectContainer {
struct fsBlockHeader bheader;
NODE parent;
BLCK next;
BLCK previous;
struct fsObject object[0];
};
</pre>
fsHashTable is the structure of a HashTable block. It functions much like the hash table found in FFS user directory blocks, except that it is stored in a separate block. This block contains a number of hash-chains (about 120 for a 512 byte block). Each hash-chain is a chain of Nodes. Each Node has a pointer to an Object and a pointer to the next entry in the hash-chain. Using such a hash-chain you can locate an object quickly by only knowing its name.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the directory Object this HashTable block belongs to.
hashentry NODE An array of Nodes. Each Node represents the start of a hash-chain (singly linked). A hash-value is calculated using the name of a file or directory, and this value determines in which chain the Object is linked. If there are no entries in a hash-chain then the hashentry value is zero.
<pre>
struct fsHashTable {
struct fsBlockHeader bheader;
NODE parent;
NODE hashentry[0];
};
</pre>
To calculate the hash-value using a name of an Object as input use these routines:
<pre>
UWORD calchash(UBYTE *name) {
UWORD hash=0;
/* Calculates a hash value over the passed in string.
The end of the string can be either a NUL byte or a
slash. The hash function is the same as the one
used in FastFileSystem set to international mode. */
while(name[hash]!=0 && name[hash]!='/') {
hash++;
}
while(*name!=0 && *name!='/') {
hash=hash*13+upperchar(*name++);
}
return((UWORD)(hash % (UWORD)((blocksize-sizeof(struct fsHashTable))>>2)));
}
UBYTE upperchar(UBYTE c) {
if((c>=224 && c<=254 && c!=247) || (c>='a' && c<='z')) {
c-=32;
}
return(c);
}
</pre>
The BNodeContainer is used to store B-Trees. Currently only one B-Tree is in use by this filesystem and it is used to store the location of file data. The fsBNodeContainer structure contains two other structures. The fsBlockHeader structure and the BTreeContainer structure.
Field Type Description
bheader struct fsBlockHeader Standard block header.
btc struct BTreeContainer Contains information about the B-Tree and its nodes contained in this block.
<pre>
struct fsBNodeContainer {
struct fsBlockHeader bheader;
struct BTreeContainer btc;
};
</pre>
First try and locate the Root block. It should start with "ROOT". SFS has two of these, one at the start of the partition and one at the end. One of the fields contains the block size, which will be the size of all important SFS blocks.
The root block has the root object container, which contains information about files and directories in the root directory. The object
containers basically hold one or more smaller structures that represent files and directories. Scanning them all should give you a list of
files and directories.
The root block also has the root of the Extent B-Tree. This is a standard B-Tree structure (not a binary tree) that is used commonly in
all kinds of system, you can read about how they work on Wikipedia if needed. The B-Tree holds the information about *where* all the data is
located for your files.
To recover your files, I'd do this:
* Find one of the root blocks, if not present, then figure out the block size your disk was using, and scan every block in turn to see if it
looks like an ObjectContainer (check the fsBlockHeader's ID, check if the ownblock number is equal to the block you are currently scanning,
and check its checksum). So if you currently have block 12, and you see a block with the correct id, and ownblock = 12 and its checksum is good,
then that's probably a valid ObjectContainer.
* With all the ObjectContainers found, you can extract filenames and directory names from these, but also the number of their first data
block (in the field data) and the file size. For small files (less than blocksize) this data block will be enough to recover the data.
For larger files, you might be lucky and all the remaining blocks are found after the first one (if the file was defragmented). You can't be
sure of that though so...
* For larger files, you need to find all the BNodeContainers. You could scan these in the same way you found all the ObjectContainers (look for
blocks with the correct id, ownblock number and checksum).
* With all the BNodeContainers found, you can try looking up the first data block of a file in the B-Tree structure. This is a bit complicated
-- the B-Tree consists of non-leaf nodes (blocks that only contain pointers to other B-Tree blocks), the isLeaf flag indicates this. Or it
can be a B-Tree leaf block. The leaf blocks contain extra information per entry (see https://hjohn.home.xs4all.nl/SFS/extents.htm)
<pre>
struct fsExtentBNode {
ULONG key;
ULONG next;
ULONG prev;
UWORD blocks;
};
</pre>
The key should be a block of a file (the first of a range), that is 1 to 65535 block long (depending the "blocks" field). If the file is split
up into more parts, then "next" will contain block number of the next range of blocks. You need to look this up again in the B-Tree
structure to find out how large it is.
You can for the most part ignore the other structures (bitmap, admin containers). The fsObjects and B-tree containers is what you'll need to
recover the data.
====Resources====
<pre>
rom/storage/mmakefile.src
rom/storage/storage.conf
rom/storage/storage_device.c
rom/storage/storage_ids.c
rom/storage/storage_init.c
rom/storage/storage_intern.h
rom/storage/storage_mount.c
rom/storage/storage_unit.c
</pre>
<pre>
rom/storage/includes/device.h
rom/storage/includes/unit.h
rom/storage/includes/volume.h
rom/storage/storage_intern.h
</pre>
<pre>
</pre>
*[[Aros/Developer/Docs/Resources/ACPI|acpi.resource]]
*[[Aros/Developer/Docs/Resources/Battclock|battclock.resource]]
*[[Aros/Developer/Docs/Resources/Bootloader|bootloader.resource]]
*[[Aros/Developer/Docs/Resources/Cia|cia.resource]]
*[[Aros/Developer/Docs/Resources/Filesystem|FileSystem.resource]]
*[[Aros/Developer/Docs/Resources/Hostlib|hostlib.resource]]
*[[Aros/Developer/Docs/Resources/Kernel|kernel.resource]]
*[[Aros/Developer/Docs/Resources/Misc|misc.resource]]
*[[Aros/Developer/Docs/Resources/Processor|processor.resource]]
==Debugging Code==
Please use the [http://sourceforge.net/tracker/?group_id=43586&atid=439463 AROS Bug Tracker] if any issues are found.
GRUB Command line list
<pre>
sysdebug
usbdebug - allows to see Poseidon's log in debug output
</pre>
How do I get debugging out of InitResident ? If running i386 hosted on linux sysdebug=initresident on command line.
This way you can enable any of listed flags. sysdebug=all stands for "everything"
Have an executable (crosscompiled C++ code) which has 6 MB size on disk, but after loading it in memory, 250 MB RAM is taken. Any software that would split AROS executable into ELF part which would show actual size values?
readelf -S executable
it will show you all sections in elf file, including sizes and requested alignment.
objdump -h filename
That's will give you a quick overview of the sections and sizes. Ignore all the .debug.* sections.
Would hazard a guess that you have a large .bss section. That's pretty common in C++.
Next step:
nm—size-sort filename | grep ' [bB] '
The last few will be your biggest consumers. Would suggest -C to demangle the symbols... ;)
Suggest profiling the program (just use some printf's in the main loop for time spent in each part), it usually is quite easy to spot slow parts in games or apps.
If someone has '#define IPTR ULONG' somewhere. To see where that define is, redefine IPTR in the source code that fails, just above the line that fails, and the preprocessor will tell you where it was defined first.
===How to setup gdb with AROS/hosted===
Download AROS sources (AROS-xxxxxxxx-source.tar.bz2, where xxxxxxxx is the current date) and AROS contrib sources (AROS-xxxxxxxx-contrib-source) from
Untar-bzip2 and cd to the unpacked archive directory.
> tar -xvjf AROS-xxxxxxxx-source.tar.bz2
> cd AROS-xxxxxxxx-source
Check the link to "contrib" (contrib-source) inside directory, e.g. correct like this:
> rm contrib
> ln -s ../AROS-xxxxxxxx-contrib-source.tar.bz2 contrib
Make sure you have the correct locale setting, otherwise compilation will fail at some point. See [http://aros.sourceforge.net/documentation/developers/compiling.php#setting-the-locale-to-iso8859 here] (or link below) for more on that. You might have to enter this:
> export LANG="en_US.ISO-8859-1"
Now configure for a debug build - see "./configure --help" for more - here are two examples:
> ./configure—enable-debug=stack,modules,symbols
> ./configure—enable-debug=all
You may "make" now, or choose a separate directory for your build (e.g. for easy removal), for example if compiling for i386 architecture you could create a directory like this:
> mkdir linux-i386
> cd linux-i386
> ../AROS/configure—enable-debug=stack,symbols,modules
When done configuring you're ready to go:
> make
Building AROS takes some time - minutes on fast machines (e.g. 2.5 GHz quadcore), up to hours on slower machines.
The result will be AROS Linux hosted with gdb debugging enabled.
See aros.org documentation for more on compiling AROS, including more [http://aros.sourceforge.net/documentation/developers/compiling.php --enable-debug] options.
When finished, enter bin/linux-i386/AROS directory (replace "linux-i386" with your compilation target platform, e.g. linux-x86_64, etc.) inside the unpacked archive directory. This directory contains the required .gdbinit file for properly running AROS inside gdb.
> cd bin/linux-i386/AROS
Run AROS (here: with 128MB of memory) from gdb:
> gdb—args boot/aros-unix -m 128
or
> gdb—args boot/arosboot -m 128
(gdb) r
Watch the shell output - in case AROS complains about "LoadKeyCode2RawKeyTable: Loading "DEVS:Keymaps/X11/keycode2rawkey.table" failed!" you should also see some instructions on how to create a keymap table. (see link above "more on compiling", too.)
Quit gdb, and try default keymap table:
(gdb) q
The program is running. Quit anyway (and kill it)? (y or n) y
> cd ../../..
> make default-x11keymaptable
Re-run AROS, as described above. Try e.g. RAros (= right windows key) + W to open a shell. If this doesn't work you have to create a keymap table yourself, quit gdb again, and make a new keytable:
> make change-x11keymaptable
A window will open. Watch the window's title bar, and follow the instructions.
When done, re-run AROS. RAros + W should now open a shell.
Next, compile your program with gdb support.
When you start GDB is there a warning which says
warning: File "<whatever>/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to ...
If so start gdb with "-ix .gdbinit"
<pre>
Summary - In short:
* build AROS with debugging support (i.e. ./configure --enable-debug=all)
* build your application with debugging support (i.e. option -g)
* run AROS in the GNU debugger (you may use the GUI frontend "ddd" which simplifies usage a bit)
* start your application
* use the commands "findaddr" and "add-symbol-file" as written in the debugging manual
* if the debugger doesn't find the source code of your application use the "dir" command of the debugger.
</pre>
===How to use gdb===
In AROS open a shell, then (in host shell) use CTRL-Z to go into gdb. Use "b Exec_CreatePool" (one of the functions used early on by startup code in programs) to add a breakpoint, then "cont" and gdb will interrupt somewhere early during startup of "program". Use "bt" to show backtrace and "loadseg" for "??" entries. One of them will be for "program". After that you can use "disassemble program".
One thing you need to make sure is that .gdbinit you have in your build directory is the same as in source tree. It has been modified some time ago, but the build system does not refresh it - you need to copy it manually
To recap, please read our debugging [http://aros.sourceforge.net/documentation/developers/debugging.php manual]:
To detect segfaulting when loading, try...
./configure—enable-debug—with-optimization="-O2"
Because crash or no crash may depend on optimization. For newer compilers maybe this helps...
--with-optimization=-"-O2 -fno-strict-aliasing"
One way to make crashes less random (more easily reproducible) is to activate the munging of free memory in rom/exec/freemem.c which is normally commented out:
<pre>
Index: freemem.c
===================================================================
--- freemem.c (revision 34289)
+++ freemem.c (working copy)
@@ -154,11 +154,12 @@
* created with their TCB placed in the tc_MemEntry list. The workaround
* is to avoid munging when FreeMem() is called with task switching disabled.
*/
+
/* DOH! it doesn't work even this way. What's wrong???
- *
- * if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
- * MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
*/
+
+ if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
+ MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
}
</pre>
Mungwall can be turned on at runtime. Currently this works in all hosted versions. Just specify "mungwall" on kernel command line and it works. It can work on native too. In order to enable it you need to parse kernel command line, and if "mungwall" is present, set EXECF_MungWall bit in IntExecBase.IntFlags.
This needs to be done before the first AllocMem() for obvious reasons. And never reset back this flag! If you change it on a working system, you are doomed.
Hosted ports do the processing in rom/exec/prepareexecbase.c --enable-debug=mungwall option in configure still works but is going obsolete. A kludge in rom/exec/allocmem.c is responsible for this and it needs to be removed when the transition is done.
BTW, on i386-pc port it can be activated by "mungwall" argument on command line, you don't need to rebuild AROS.
New mungwall affects not only AllocMem()/FreeMem(), but also pools. I also tested it with AllocAbs(), seems to work correctly.
Runtime mungwall works on:
* pc-i386
* pc-x86_64
* linux-i386
* linux-x86_64
* darwin-x86
* linux-ppc
Works on all hosted ports, if the port itself is working.
* amiga-m68k
* Not on sam440-ppc and efika-chrp-ppc, even if they would be able to be built at moment. Does not work on (for now, need NVRAM support)
When starting my freshly rebuilt i386-linux-aros which was compiled with full debugging support I get sometimes the error "Program exited with code 0377". Add the following to your .gdbinit:
set follow-fork-mode child
Here are some of the custom AROS gdb functions (defined in ".gdbinit" file) to resolve "in ?? ()" entries in backtrace:
<pre>
#0 0xb7ffd424 in __kernel_vsyscall ()
#1 0xb7e2a657 in sigsuspend () from /lib/libc.so.6
#2 0xb7c63900 in ?? ()
#3 0xb7c640e3 in ?? ()
#4 0xb7c641e0 in ?? ()
</pre>
You can use
loadseg 0xb7c63900
loadframe 2
or
loadbt
and some others. Use "help " for a little help text. If the commands do not work try "loadkick" first.
Use "thistask", "taskready", "taskwait" to get list of AROS tasks. "bttask " shows backtrace of a task which is in ready or in wait queue and "loadseg" to resolve "??" entries in it's backtrace ("loadframe" would not work as it assume current running task).
===Native debugging tools for AROS===
to enable debugging at boot time entering the GRUB menu editing line (E key) and adding "debug=memory" to your boot line, then press Ctrl+X to complete booting.
SYS:Tools/Debug/'''Bifteck'''
Open a shell and enter the line below to run Biftek and grab the debug messages collected in RAM into a text file.
tools/debug/bifteck > ram:debug.txt
and certainly does not open a window. It is a shell tool and only dumps data located from the debug location.
It is therefore important to 'catch' that debug data as soon as possible (before it gets overridden). You should invoke bifteck at the first opportunity before doing anything else. You can use the TO option to store bifteck output to a file or you can pipe it manually to a file.
SYS:Tools/Debug/'''Sashimi''' - displays error messages
One suggestion is to do a bug() debugging. Each time bug() is executed it will be output on sashimi.
You include <aros/debug.h> and place bug("something\n"); in your source code at location though which control passes.
To get the output - open an aros shell
SYS:Tools/Debug/sashimi > RAM:out.txt
'''Ctrl C''' to end the output to the RAM Disk.
# open shell, and type
# ram: (to switch to ram drive)
# System:Tools/Debug/Sashimi > mylogfile.txt
# open AHI prefs using wanderer (or use another opened shell)
# play test sound
# close AHI prefs
# shell still open with Sashimi running: press ctrl-c to break Sashimi and return to prompt.
# in shell: copy mylogfile.txt System: (or to your required location)
SYS:Utilities/'''Snoopy''' - monitors OS function calls, run "Sashimi" to see Snoopy's output
SYS:Tools/'''WiMP''' - the Window (and Screens) Manipulation Program
You can use the -E option of gcc to find out how preprocessor macros are expanded.
===Errors===
crash in strcasecmp usually means that one of its arguments is NULL.
empty space between these two names, prossibly some invisible character
Old Amiga [http://www.amigacoding.com/index.php?title=Guru_codes&redirect=no Guru Codes]
If the crash is in intuition. Sometimes, if it relates to text, a null pointer sets it off.
an uninitialised pointer can have any address (this is a common fault).
Compiling on 64bit, Many old code would not properly typecast when doing pointer-integer conversions and thus at least throw a warning. This can easily be located and fixed.
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
* Fix (change IPTR/SIPTR back to ULONG/LONG) the few places which really rely on ULONG/LONG being exactly 32 bit. That's for things like pixel (ARGB) buffers, structs written/read to disk, colormaps, but probably not much else.
Then again, many current compilers also throw a warning when you try to assign a pointer value to an integer and the integer is possibly too small. This happens under .NET for example when a 64 bit pointer is assigned to something like an ULONG - so exactly the case which you described.
=== AI ===
<---
Model <---> Agent ---> End user
Gemini LMStudio
etc Comfyui
Recent, self hosting on laptops, mini pcs or desktops with '''quantization''' 4bit has reduced memory requirements but still require 16Gb+ and no high end gpu
*[https://lmstudio.ai/download LMstudio single gpu],
Google Gemma 4 Model
*[ 12B QAT]
Alibaba Cloud's [https://huggingface.co/ Qwen] team series of large language models LLMs
*[https://huggingface.co/models?other=qwen3 Qwen 3], [],
*[https://huggingface.co/models?other=qwen2 Qwen 2], [https://huggingface.co/Qwen/Qwen2.5-Coder-32B qwen 2.5 Coder],
Small Claude Model
*[https://github.com/sipeed/picoclaw picoclaw]
Bigger LLMs but with settings
*[https://ollama.com/download Ollama single gpu]
*[https://github.com/ggml-org/llama.cpp/releases llama.CPP multi gpus],
*[ VLM multiple gpus],
MiniMax H3
For the full experience
#Training learning using 1+ high end GPUs at least 16GB VRAM per GPU card or 64Gb+ of unified, 16Core CPU with at least 64Gb of RAM system memory, though training can take weeks
#Inference with custom asics or GPUs
=== Linux ===
<syntaxhighlight lang="c">
/* 1. Header for your name,date,purpose of program.
2. Pre-processor directives. This will include the #includes for files you want to add.
3. Includes for function prototypes if necessary.
4. Main()
Create Pointers for Libraries and any Window you want to open.
5. Open necessary libraries.
6. Check if open exit program if fail.
7. Open a window exit program if fail.
8. Add your program
9. Close Window
10 Close Libraries.
11 End Program. */
/* standard os included headers <.h> */
#include <dos/dos.h>
#include <dos/dosasl.h>
#include <dos/dosextens.h>
#include <dos/exall.h>
#include <dos/rdargs.h>
#include <exec/memory.h>
#include <exec/types.h>
#include <utility/utility.h>
#include <intuition/intuition.h>
/* define as unresolved external references (proto/xxx.h) and compiler will link to auto(matically) open library */
#include <proto/arossupport.h>
#include <proto/dos.h>
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/graphics.h>
#include <proto/cybergraphics.h>
#include <proto/datatypes.h>
#include <proto/icon.h>
#include <workbench/workbench.h>
#include <workbench/icon.h>
#include <datatypes/pictureclass.h>
#include <proto/muimaster.h>
#include <libraries/mui.h>
#include proto/bsdsocket.h
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* my own headers ".h" */
#define CTRL_C (SetSignal(0L,0L) & SIGBREAKF_CTRL_C)
#define isDir(fib) ((fib)->fib_DirEntryType >= 0)
#define ARG_TEMPLATE "FILE/A,ALL/S,QUIET/S,W=WIDTH/N,H=HEIGHT/N,M=METHOD,DEFTOOL"
int main(void)
{
return retval;
} /* main */
</syntaxhighlight>
If you used c++, there is not yet c++ support in our shared library system.
The easiest way to create / compile a shared library would be to use the AROS build system but the libraries can be created manually. You have to create a ROMTAG structure and some header files.
A shared library is built with the %build_module macro with a line like this:
%build_module mmake=MetaTarget modname=mylib modtype=library files=SourceFiles
This macro can build different AROS module types, like devices, Zune classes, HIDDs, etc.
<pre>
##begin config
version 1.0
##end config
##begin functionlist
void func1(LONG a, LONG b)
int func2(char *s, ULONG a)
##end functionlist
</pre>
There is more [http://aros.sourceforge.net/documentation/developers/sys-dev/libraries.php here]
Alternatively,
<pre>
#ifndef LIB_H
#define LIB_H
#define __NOLIBBASE__
#include <exec/libraries.h>
#include <exec/semaphores.h>
#include <dos/dos.h>
#ifdef __AROS__
//#include <aros/debug.h>
#define reg(x)
#define __saveds
#endif
#define USESYSBASE struct ExecBase *SysBase = Base->My_SysBase;
struct MyTestBase
{
struct Library My_Test_Lib;
struct ExecBase *My_SysBase;
APTR My_SegList;
int testint;
};
#endif
</pre>
<pre>
/*--------------------------------------------------------------------------*/
/* Resident header written for mytest.library */
/*--------------------------------------------------------------------------*/
#define __NOLIBBASE__
#define VERSION 1
#define REVISION 0
#define LIBHEADNAME mytest
#define LIBHEADNAMESTR "mytest"
#define COMPDATE "04.10.2015"
#define VERS "1.0"
#define LIBBASETYPE struct MyTestBase
#define LIBBASETYPEPTR LIBBASETYPE *
#include <aros/debug.h>
#include <exec/exec.h>
#include <proto/exec.h>
#include <exec/resident.h>
#include <exec/nodes.h>
#include <exec/libraries.h>
#include <aros/symbolsets.h>
#include "lib.h"
const UBYTE lib_name[] = LIBHEADNAMESTR ".library";
const UBYTE lib_id[] = "$VER: " LIBHEADNAMESTR ".library " VERS " (" COMPDATE ") by ALB42\n";
extern const APTR FuncTable[];
AROS_UFP3 (LIBBASETYPEPTR, InitLib,
AROS_UFPA(LIBBASETYPEPTR, Base, D0),
AROS_UFPA(BPTR, seglist, A0),
AROS_UFPA(struct ExecBase *, sysbase, A6)
);
static struct LibInitStruct
{
IPTR LibSize;
const APTR *FuncTable;
const struct DataTable *DataTable;
APTR InitFunc;
}
const LibInitStruct =
{
sizeof(LIBBASETYPE),
FuncTable,
NULL,
(APTR)InitLib
};
const struct Resident romtag =
{
RTC_MATCHWORD, /* match word */
(APTR)&romtag, /* back pointer */
(APTR)(&romtag + 1), /* skip pointer */
RTF_AUTOINIT | RTF_EXTENDED,/* flags */
VERSION, /* version */
NT_LIBRARY, /* type of module */
0, /* init priority */
(STRPTR)lib_name, /* module name */
(STRPTR)lib_id + 6,
(APTR)&LibInitStruct,
REVISION, NULL
};
AROS_UFH3 (LIBBASETYPEPTR, InitLib,
AROS_UFHA(LIBBASETYPEPTR, Base, D0),
AROS_UFHA(BPTR, seglist, A0),
AROS_UFHA(struct ExecBase *, sysbase, A6)
)
{
AROS_USERFUNC_INIT
Base->My_SegList = seglist;
Base->My_SysBase = (APTR)sysbase;
Base->testint = 0;
USESYSBASE
bug("InitLib\n");
if (!set_open_libraries())
{
set_close_libraries();
return NULL;
}
return Base;
AROS_USERFUNC_EXIT
}
AROS_LH1(LIBBASETYPEPTR, LibOpen,
AROS_LHA (ULONG, version, D0),
LIBBASETYPEPTR, Base, 1, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibOpen\n");
(void)version;
Base->My_Test_Lib.lib_OpenCnt++;
return Base;
AROS_LIBFUNC_EXIT
}
__saveds APTR LibExpungeInternal(LIBBASETYPE *Base reg(a6))
{
USESYSBASE
APTR seglist;
bug("LibExpungeInternal\n");
if (Base->My_Test_Lib.lib_OpenCnt)
{
return 0;
}
seglist = Base->My_SegList;
Forbid();
Remove((struct Node*)Base);
Permit();
FreeMem((APTR)Base - Base->My_Test_Lib.lib_NegSize, (LONG)Base->My_Test_Lib.lib_PosSize +
(LONG)Base->My_Test_Lib.lib_NegSize);
set_close_libraries();
return seglist;
}
AROS_LH0(BPTR, LibClose,
LIBBASETYPEPTR, Base, 2, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibClose\n");
if (!(--Base->My_Test_Lib.lib_OpenCnt))
{
return LibExpungeInternal(Base);
}
return 0;
AROS_LIBFUNC_EXIT
}
AROS_LH1(BPTR, LibExpunge,
AROS_LHA(LIBBASETYPEPTR, Base, D0),
struct ExecBase *, sysBase, 3, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
(void)sysBase;
USESYSBASE
bug("LibExpunge\n");
return LibExpungeInternal(Base);
AROS_LIBFUNC_EXIT
}
AROS_LH0(LIBBASETYPEPTR, LibReserved,
LIBBASETYPEPTR, Base, 4, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibReserved\n");
return 0;
//return (APTR)LibReserved();
AROS_LIBFUNC_EXIT
}
// Space for your own functions
// do not forget to update the FuncTable as well
AROS_LH1(int, TestFunction,
AROS_LHA(int, TestValue, D0),
LIBBASETYPEPTR, Base, 5, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("TestFunction\n");
Base->testint = TestValue + Base->testint;
return Base->testint;
AROS_LIBFUNC_EXIT
}
// Functable -> Table of all functions in the Library, in right order - important!
const APTR FuncTable[] =
{
&AROS_SLIB_ENTRY(LibOpen,LIBHEADNAME,1),
&AROS_SLIB_ENTRY(LibClose,LIBHEADNAME,2),
&AROS_SLIB_ENTRY(LibExpunge,LIBHEADNAME,3),
&AROS_SLIB_ENTRY(LibReserved,LIBHEADNAME,4),
&AROS_SLIB_ENTRY(TestFunction,LIBHEADNAME,5),
(void *)-1
};
// AutoInit stuff
void *__PROGRAM_ENTRIES__symbol_set_handler_missing;
void *__LIBS__symbol_set_handler_missing;
// end of AutoInitStuff
</pre>
Makefile
<pre>
VPATH =
CFLAGS = -O2 -g -fomit-frame-pointer -W -Wall -Wno-parentheses
CC = i386-aros-gcc
LD = i386-aros-gcc
LDFLAGS = -nostartfiles -Wl,-Map -Xlinker linkermap
LIBS = -lautoinit -llibinit
STRIP = i386-aros-strip --strip-unneeded --remove-section .comment
OBJS = lib_header.o
all: mytest.library
mytest.library: $(OBJS)
$(LD) $(LDFLAGS) $^ $(LIBS) -o $@
lib_header.o: lib_header.c lib.h
clean:
rm -f *.o *.library *.ppu testlibrary linkermap
</pre>
Porting UNIX library to AROS - dealing with static variables which would make it easy to port such libraries to AROS, keeping the benefits of sharing them on disk, but losing the benefit of actually sharing them in memory.
Our problem arises by the fact we want to share the actual code (the .text section of the library) and constant data, but we need to have per-task .bss and .data sections. If we get rid of our intention to share the .text and .rodata sections, things get quite easy: just load and relocate the library whenever it's open, by whoever it's open. It's like statically linking the library into the executable, except that the final linking is done at runtime.
In the V0 branch, in workbench/hidds/hidd.nouveau was committed pcimock.hidd. This is a pci driver that allows mocking real PCI devices under linux-hosted. The main idea is to be able to run the real hardware driver under linux-hosted with as little changes as possible (some changes will always be needed though unless someone wants to write complete device simulator) so that driver's code paths can be executed and debugged using gdb. This was a very helpful capability when porting nouveau. Now it is externalized from nouveau.hidd and can be used by other people porting drivers. The pcimock.hidd can currently mock 4 different nvidia cards, 1 AGP bridge and also mock irq.hidd.
What's the difference between this driver and the pcilinux.hidd? I used that one to develop many different HW drivers for aros. As far as I understood the intention of pcilinux.hidd it is supposed to get access to real hardware that is running under linux. The pcimock.hidd goal is to mock the hardware. For example my dev box is a PCIE system, but I still would like to run the AGP codes paths in nouveau under linux-hosted to check if they don't seg fault. The other case would be to run codes paths for hardware that the developer does not have (Fermi cards in my case). In the case of pcimock.hidd, the AROS driver's code paths will execute as long as you add proper mocking (for example fill in PCI config area or values for registers in BARs). This is an advantage for ported drivers - the code should already work (since it worked on another system) but there might have been mistakes made during porting which can be detected easily with gdb.
In case you are writing your driver from scratch, pcilinux.hidd hidd will give you more advantage, since you can actually access the real hardware from linux-hosted.
== Misc ==
===APL, MPL, BSD, GPL and LGPL Licences===
The majority of AROS sources in licensed under AROS Public License ([http://aros.sourceforge.net/license.html APL]) which (to a degree) protects us from someone taking AROS sources and not contributing improvements back (for example MorphOS took some AROS source and then contributed changes back)
It is written to allow the use of AROS code in other open source or commercial projects without exception whilst providing a mechanism so that improvements/additions can find their way back to the original source in one form or another.
There are "3rd" party applications used by AROS that do not fall under this license, which are an extra "Contrib" download for convenience.
Anyone can port GPL-ed network and sound drivers as AROSTCP and AHI are GPLed. Direct using (porting) [http://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs GPL]-ed code in other parts of AROS (gfx, sata, usb) is not possible because AROS license is not compatible with GPL. You need to utilize permissive licensed code like BSD or MIT/X11.
BSD and MPL license are the closest to APL.
APL however is not so compatible with LGPL/GPL.
LGPL case - you cannot statically combine APL code with LGPL. You can, however thank to LGPL being "lesser" restrictive, use LGPL dynamically loaded libraries in APL codes.
GPL case - you cannot combine APL code with GPL in any way if there is no explicit clause by GPLed code authors allowing that. If you do combine APL with GPL in "bad" ways described above - you have a problem (you violate GPL). This problem might result in everything in AROS becoming GPL or everything running or AROS becoming GPL (here I'm not sure really). The other scenario is that you are not allowed to legally distribute such code at all. To be honest I have grasped how to violate GPL, but I'm still no exactly sure what happens when you violate it (but I'm sure it's not anything nice)
GPL software can run on top of non-GPL "system components" (see system components exception of GPL), but the other way around (non-GPL using GPL) leads to problems. This means applications like scout, or Quake III are ok (in the majority of cases).
Theres no reason GPL drivers cannot be ported - but they cant be in AROS's ROM (requires linking APL code with GPL), nor can AROS depend on them (e.g. they must use existing apis).
If they are launched (dynamically linked) by a user action that is allowed. It is also allowed to distribute such binaries together for convenience.
GPL is not about statical or dynamic linking but is about executing process and function calls.
These components - SFS, isapnp, Zune texteditor, AHi, network drivers, freetype, openuirl, BHFormat, Edit and (" dynamically loaded libraries") are LGPL, not GPL. Mesa/Nouveau stuff is MIT. Some user tools are GPL though.
'''AROS (system)'''
* system components (libraries/classes/devices/etc) cannot be GPL as they would propagate GPL to complete system as well as GPL is not compatible with MPL from which APL is based
* system components can be LGPL v2 or a permissive license (MIT/BSD)
* system applications can be anything you like (but still I would prefer APL or permissive so the code can be reused if needed)
'''Contrib:'''
* no rules - contrib does not impact AROS system since nothing in AROS system depends on contrib.
About stealing code: The chances of this happening is exactly the same whether we are APL or GPL. If any closed-source option wanted to do it, there is no one that can validate otherwise. MorphOS has used some AROS codes, but contributed changes back.
The rationale behind APL is that while it guarantees that the original developer will get the improvements back (to a certain degree - file based), the person who uses the codes does not have to open his original codes. BSD does not guarantee that the original developer gets improvements. GPL requires the person using the codes to open his codes as well.
The copyright holders needs to stay - we just need information from them that the codes are available under APL (for example a checked-in file like in case of Poseidon). We don't do transfer of copyrights.
; Ultimately what can and cannot be done is up to the author(s) - not the licence.
===AROS source code tree===
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-trunk.txt
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
Found this interesting (non-GPL) licensing 'anomaly' - to keep in mind for distributors.
Programs that lose their license if sold ("non-profit only" licensed):
contrib/aminet/comm/term/TinyTerminal
contrib/aminet/dev/basic/bwBASIC
contrib/aminet/text/edit/xdme
contrib/fish/aroach
contrib/fish/lotto
contrib/fish/shuffle
contrib/fish/touch
+ cdvdfs.
Here is a list of all the GPL/GPLv2/GPLv3 licenses fossology found, what have explicit licenses in their comments.
excluded LGPL, BSD/GPL dual licensed and programs (such as Prefs/Edit and BHFormat)
<pre>
AROS/rom/dbus/include/ AFL_v2.1 ,GPL_v2+ (supposedly AFL < 3 is GPL incompatible)
AROS/workbench/classes/zune/betterstring/include/ GPL_v2+
AROS/workbench/classes/zune/texteditor/include/ GPL_v2+
AROS/workbench/classes/datatypes/gemimage/ GPL_v2+ GPL
AROS/workbench/classes/datatypes/degas/ GPL_v2+
AROS/workbench/libs/openurl/README: GPL
AROS/workbench/network/smbfs/documentation/ GPL_v2
AROS/workbench/network/smbfs/source_code/ GPL_v2+
AROS/workbench/network/stacks/AROSTCP/bsdsocket/kern/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/mmakefile.src conf.h GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/sys/ CMU ,GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/net/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/api/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/conf/conf.h: GPL_v2
AROS/workbench/network/stacks/AROSTCP/netinclude/net/radix.h: CMU ,GPL_v2
AROS/workbench/devs/AHI/AHI/ GPL_v2+
AROS/workbench/devs/AHI/AddAudioModes/ GPL_v2+ AROS/workbench/devs/AHI/AddAudioModes/COPYING: GPL
AROS/workbench/devs/AHI/Docs/texinfo.tex: GPL_v2+
AROS/workbench/devs/AHI/COPYING: GPL
AROS/workbench/devs/AHI/Drivers/EMU10kx/ GPL_v2+
AROS/workbench/devs/AHI/AHI-Handler/ GPL_v2+
AROS/workbench/devs/networks/rtl8029/ GPL GPL_v2+
AROS/workbench/devs/networks/pcnet32/ GPL GPL_v2+
AROS/workbench/devs/networks/ppp/LEGAL: GPL
AROS/workbench/devs/networks/atheros5000/ GPL_v2+
AROS/workbench/devs/networks/rhine/ GPL_v2+
AROS/workbench/devs/networks/nForce/ GPL_v2+ GPL
AROS/workbench/devs/networks/prism2/ GPL GPL_v2+
AROS/workbench/devs/networks/fec/LEGAL: GPL
AROS/workbench/devs/networks/rtl8139/ GPL GPL_v2+
AROS/workbench/devs/networks/etherlink3/ GPL GPL_v2+
AROS/workbench/devs/networks/intelpro100/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8169/ GPL GPL_v2+
AROS/workbench/devs/networks/emac/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8168/ GPL GPL_v2+
AROS/workbench/devs/networks/realtek8180/ GPL_v2+
AROS/workbench/devs/networks/via-rhine/via-rhine.c: GPL_v2+
AROS/workbench/devs/networks/via-rhine/ GPL GPL_v2+
AROS/workbench/devs/networks/e1000/ GPL_v2
AROS/workbench/devs/networks/sis900/ GPL GPL_v2+
</pre>
AHI: it has special provisions (COPYING.DRIVERS). The library is LGPL, preferences software is GPL and drivers can be anything without breaking GPL/LGPL.
Network stack: well, we are long overdue for a new, IPv6 enabled network stack anyway, anyone interested? ;) Seriously though it seems like the glue code is GPL and as all the drivers. However some of the drivers are our own code, so they could be relicensed to LGPL.
Same filter as the AROS trunk list. These should all be libraries or plugins - no programs.
<pre>
contrib/regina/utsname.h: GPL_v2+
contrib/mui/classes/nlist/include/default-align.h: GPL_v2+
contrib/mui/classes/nlist/include/amiga-align.h: GPL_v2+
contrib/mui/classes/BWins/include/MUI/BWin_mcc.h: GPL
contrib/mui/classes/BWins/include/BWin_private_mcc.h: GPL
contrib/mui/classes/BWins/COPYING: GPL_v2
contrib/mui/classes/BWins/MCC_BWins.readme: GPL_v2
contrib/mui/classes/thebar/include/default-align.h: GPL_v2+
contrib/mui/classes/thebar/include/amiga-align.h: GPL_v2+
contrib/gfx/libs/wazp3d/LEGAL: GPL
contrib/gfx/libs/wazp3d/Wazp3D.readme: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.c: GPL
contrib/libs/mpega/ GPL_v2+
</pre>
http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
===Types===
On AROS following rules apply:
<pre>
1. BYTE/UBYTE is 8bit, WORD/UWORD is 16bit, LONG/ULONG is 32bit, QUAD/UQUAD is 64bit, the types are comparable with stdint types (int8_t, int16_t, int32_t, int64_t)
2. IPTR/SIPTR are integer types large enough to fit pointer, that is sizeof(IPTR) = sizeof(APTR) = 4 on 32bit system, and = 8 on 64bit system
3. ti_Data in TagList is large enough to hold a IPTR/APTR type.
4. never store a pointer in integer of type LONG. It may work (if the pointer has upper 32bits clear), but does not have to. Compiler should warn you about that.
5. If you are unsure about point 4, allocate your memory with MEMF_31BIT flag set. But don't expect that AROS internals will do the same.
</pre>
point 4 is actually important.
* UBYTE/BYTE for 8bit
* UWORD/WORD for 16bit
* ULONG/LONG for 32bit
* UQUAD/QUAD for 64bit
<pre>
UBYTE Unsigned 8 bit integer variable (byte).
BYTE Signed 8 bit integer variable (byte).
UWORD Unsigned 16 bit integer variable (word).
WORD Signed 16 bit integer variable (word).
ULONG Unsigned 32 bit integer variable (longword).
LONG Signed 32 bit integer variable (longword).
FLOAT 32 bit IEEE floating point variable.
UQUAD Unsigned 64 bit integer variable.
QUAD Signed 64 bit integer variable.
DOUBLE 64bit IEEE floating point variable.
BOOL Boolean variable, TRUE and FALSE are also defined in exec/types.h.
VOID Void.
APTR A generic pointer for multiple purposes - Arrays.
STRPTR A pointer to a null-terminated string.
IPTR Really important in AROS, the only way to declare a field that can contain both: an integer or a pointer.
</pre>
if you want to write really portable app, you may be interested in standard datatypes defined in C99: int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, intptr_t, uintptr_t. They are all defined in inttypes.h include file.
In exec/types.h the following short-cuts are typedef'd. They are used often in AROS, so you should nearly always include exec/types.h and soon only they will be removed from sys/_types.h include, all types are now defined in include files named aros/types/xxx.h.
(Preparation for C library split; sys/xxx.h include will only be available there when compiling with POSIX C library)
Compiler specific types, like int and long might change their size. In case of AROS, similar to linux, int remains 32 bit whereas long grows to 64 bits in size.
If you use Amiga-like data types, i.e. BYTE/UBYTE, WORD/UWORD, LONG/ULONG and QUAD/UQUAD or the C99 standard types (uint8_t and so on, see stdint.h include) then you should have less issues to solve than by using types without size guarantee.
Of course, all pointers grow to 64 bytes using 64bit cpu. Most of the code can be just recompiled and will work. In rare cases, where e.g. pointers are casted to integers, a special care must be taken. Especially in the cases, where pointer is casted to LONG/ULONG (this code will break on 64 bit AROS) e.g. '#define IPTR ULONG'.
With compiler delint patches which the majority of them are simple casting issues to make the compiler happy. Notice some of the changes involve introducing double casts. In very recent versions of GCC. Yes, the bulk of the double casts are for converting 32 bit addresses (ie from a 32 bit PCI DMA address register) to a 64 bit pointer. First cast is to IPTR (to expand to 64 bits, and prevent sign extension if the address is above 0x7FFFFFFF), and then to APTR.
ULONG != IPTR except on 32bit .. so if you need to store pointers make sure and use IPTR and not ULONG (which some old code does). For this reason things like Taglist elements are 64bit (since the tag data can be a pointer).
If your passing items on the stack you should use the STACKED attribute to make sure they are correctly aligned (on 64bit all items on the stack are 64bit..)
There is more issues like using "== 0L" causes problems.
===Endian===
*BE
*LE
Use the macros from <endian.h> instead making a guess based upon architecture defines
<pre>
#if _BYTE_ORDER == _BIG_ENDIAN
#elif _BYTE_ORDER == _LITTLE_ENDIAN
#else
+
#error <whatever.h> - Byte order for this architecture is unsupported!
</pre>
===SVN and GIT===
If you want to help develop AROS OS itself, you can
* view current GIT/SVN entries [http://aros.sourceforge.net/ Aros Org website] or [https://github.com/aros-development-team/AROS Github], [https://github.com/ezrec older ezrec mirror], [https://github.com/michalsc/AROS/ older mirror], [https://trac.aros.org/trac/timeline TRAC], [],
* awaiting update [http://repo.or.cz/w/AROS.git git repo], [http://www.ohloh.net/p/aros/commits ohloh] or [https://svn.aros.org/svn/aros/trunk/ svn repo] and access [Git version git://repo.or.cz/AROS.git here],
* deprecated [https://www.gitorious.org/aros/aros/commit/a7fda9e ARIX commits] or [https://gitorious.org/aros/aros GIT old]
If you have SVN access (early 2015 introduced a new SVN server, create a new account at trac aros org) and/or have obtained the source [http://aros.sourceforge.net/download.php AROS site] - you can compile the current build tools/environment using:
> make development
and follow this [http://aros.sourceforge.net/documentation/developers/compiling.php#building procedure] or [https://github.com/apiraino/aros_guide Guide]
https://trac.aros.org/trac#Developing
If you plan on contributing back changes, please post information about such changes first on this [http://mail.aros.org/mailman/listinfo/aros-dev/ mailing list] for more experience developers can validate whether they are correct.
Then there are the nightly build machines. They svn update before the build and run configure as one of the next steps. autoconf might be added to the nightly build scripts.
Our build relies on packages downloaded from Internet (SDL for example) - it always worked this way. The minimal requirement (when just building core AROS) is binutils and gcc. If you build contrib as well, you need many more packages to be downloaded.
https://gitorious.org/aros/aros/commits/crosstools-II
git://gitorious.org/aros/aros.git
Branch crosstools-II there is only one commit on top of ABI_V1
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-x86_64
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-x86_64
</pre>
and
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-i386
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-i386
</pre>
build OK.
:''More information: [[Aros/Developer/Maintainer|AROS Maintainer Docs]]''
===SDI Calls===
Integrate the 'SDI'-headers to allow easier porting to all amiga-like platforms.
<pre>
PUTCHARPROTO( PutTheChar, char c, struct SPrintfStream *s )
{
// REAL CODE
}
</pre>
have "SDI_compiler.h" and "SDI_hook.h" included
its more organized like
#include SDI/SDI_hook.h
than
#include SDI_hook.h
option 1 --- i also use when back porting from amiga's..
<pre>
#ifdef __AROS__
#include SDI/SDI_hook.h
#else
#include SDI_hook.h
#endif
</pre>
also
you can add the -i include/sdi/ location if you do not want to add or edit any files.
Defining HOOKPROTO to IPTR name(struct IClass * cl, Object * obj, Msg msg); solved the problem
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order. examine compiler/include/aros/symbolsets.h (AROS_LIBREQ)
compiling mui stuff for aros setting -std=gnu99 is necessary (i have had -std=c99 most of the time).
===Locale with Flexcat===
Most languages have a locale, but not every app is localized, the only thing needed is to translate the "catalog" files. It is a case of locating the correct catalog and saving the translated version.
For every app that lacks of your language catalog and is localized anyway, you should find (in the sources) files related to locale:
* file.cd = catalog descriptor, contains base msg, with internal language (usually english)
* language.ct = catalog translation, contains every translated msg, indexed as in the file.cd.
Compare with other localized apps... Then, "make my_app-catalogs" should create and install your translated catalogs. ex : for, saying, sys:prefs/wanderer:
on root of AROS sources, type:
"make workbench-prefs-wanderer-catalogs"
then (if you changed the .cd file):
"make workbench-prefs-wanderer"
For apps not localized, you have to adapt their code to support it, if it is possible...
noticed the original .cd file has many (//) strings at the end of any voice, so added them also to the .ct file.
That (//) is only for cd files. I'm highly recommending to use FlexCat for updating ct files, e.g. like this:
flexcat app.cd deutsch.ct newctfile deutsch.ct
You'll get error checking and new entries are marked in the resulting ct file.
When editing .ct files, only change those lines containing translation and perhaps version string, nothing else.
The rest is up to the relevant tool, flexcat. In order to update your translation, type in the following in your shell:
flexcat xyz.cd xyz.ct NEWCTFILE xyz_upd.ct COPYMSGNEW
This way you will not only make sure you have correct translation file but flexcat also pre-fills newly added strings with "*** NEW *** text. Even better tool for checking cd/ct/catalog files is catcheck, but this one is sadly only available for AmigaOS/68k...
Some languages have variations, like portugues from portugal and portugues from brasil differs...
This is the way to go. I will have a look at language files, but basically if those two languages differ you have to do two separated set of translation files, yes.
(you could create a brazilian slang language localization too)
* At system level localization for one language is a dot language file.
(ex: locale:languages/klingon.language)
* At app level localization is a dot catalog file
(ex: locale:catalogs/klingon/system/libs/dos.catalog)
* At sources level, the dot ct file, and "$language" dot cd files and some building framework.
(ex: catalogs/my_app.ct catalogs/klingon.cd catalogs/mmakefile.src support.c support.h)
Please, use Flexcat to generate CT files:
FlexCat wanderer.cd NEWCTFILE=deutsch.ct
Then fill the first 2 lines with something useful:
<pre>
## version $VER: wanderer.catalog 1.1 (9.2.2006)
## language deutsch
</pre>
You can even update the CT-File: (This adds the new strings)
FlexCat wanderer.cd deutsch.ct NEWCTFILE=deutsch.ct
To compile a catalog you only need the .cd file and your translation (.ct file):
FlexCat multiview.cd deutsch.ct CATALOG=MultiView.catalog
[http://murks-ide.svn.sourceforge.net/viewvc/murks-ide/trunk/src/Catalogs/flexcat_linux?revision=100 Linux version of FlexCat]
: [http://aros.sourceforge.net/documentation/developers/app-dev/localization.php#localization-for-non-developers More information]
A script which compares the required version (i.e. the version which an application/module etc. tries to open) with the version of the existing CT files. The result is in this table:
https://github.com/aros-translation-team/translations/wiki/Progress
The following cases are highlighted:
n/a i.e. CT misses at all
version in existing CT file is lower than the required version
It might be a bit difficult to participate if you haven't worked with Git before but alternatively you can send your CT files to our Slack channel.
When the ct file has been generated via flexcat (flexcat keyshow.cd NEWCTFILE=spanish.ct) it has the following header:
---------------------------------------------------------------------------------------------------------------
## version $VER: <name>.catalog <ver>.<rev> (04.01.2021)
## language nolanguage
## codeset 0
;
---------------------------------------------------------------------------------------------------------------
Those values <ver>.<rev> are the version and revision of the CT file for the languaje or are the values of the application being localized?
The <ver> part must match with version which the application tries to open. You can find the value either in the column "Required Version" in the table which I've linked above, our you can look in the git repository. For keyshow it would be https://github.com/aros-translation-team/keyshow. You can find in the file "catalog_version.h" the right version number.
The <rev> part starts for new CT files with 0 and should be increased every time the CT file is updated.
Updated several files and created a few more that were missing on the spanish catalog.
The catalogs are in Git repositories at https://github.com/aros-translation-team
a) You tell me your Github user name. I'll invite you. You can work directly with the Git repositories.
b) You create Github forks of the catalog repositories and create pull requests.
c) You send the CT files to mrustler gmx de
===C Utils Misc===
The AROS source uses at several places the __DATE__ macro to fill the date entry of a $VER tag. Problem is that c:version doesn't understand that date format (e.g. "May 21, 2011"). As a result the output of e.g.
> "version c:shell full" contains "(null)". Is extending the version command to understand the format of __DATE__ the right solution for that problem?
AmigaOs compilers should use __AMIGADATE__ macro or similar form, if it isn't implemented it could be emulated in makefile: -D__AMIGADATE__=\"$(shell date "+%d.%m.%Y")\"
BTW. I think DD.MM.YYYY is better format than "Month DD YYY" because "Month DD YYY" is not localized in any way.
"strnicmp" shouldn't work with NULL pointers
The Situation:
compiled a linklib using c++ object files (using the c++ cross compiler).
compiled a C stub that uses the linklib (using the c++ cross compiler).
Try to link them together (using the c++ cross compiler) with C object
files (using the normal target c compiler) that need to use -nostartup
= cant do because using the c++ files pulls in arosc (for stdio etc.) -
so wants to have the autoinit stuff present.
What can I do about this??
If it is possible to manually open it then what do I need to do exactly?
=== ENV ===
The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact. However in some cases (like this one) it is not required.
99% of the time that statement is true (not required) for pretty much every file in ENV: or do people change their default icons - and prefs settings - every boot?
There seem to be a bad habit of late with developers changing things to reflect their own personal preference when the change isn't actually necessary - It would be nice if people could refrain from doing that in the tree without at least discussing it on the dev-list first (and with good reasoning unless they committed said work in the first place..)
We're not keen on the pollution of the "S:" dir: it's meant to be for scripts. What's wrong with "ENV:"?
Only the fact that it takes up RAM. I understand that for PCs with several gigabytes of RAM this is
irrelevant. But let's remember about other machines. The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact.
However in some cases (like this one) it is not required.
How about implementing in the style of HappyENV then? RAM-disk handler that falls through to reading from ENVARC: if there is no such file stored in it already. Removes RAM usage for unchanged files, removes the need to copy ENVARC to ENV in startup-sequence.
Shouldn't be too hard to make from AmberRAM, or even just extend AmberRAM to provide this service.
Is it feasable to build a special version of AmberRAM handling ENV: that will try and copy the requested file from ENVARC: if it isnt found in ENV: ?
Additionaly it could mark closed "files" as untouched - and expunge them from ENV: after a period of time to free up additional RAM:, or when the system is running low on free memory?
Silenty disappearing files may not be a good plan. Would be nice if the following would work:
ASSIGN :ENV SYS:Prefs/Env-Arc ADD
ASSIGN :ENV RAM:ENV ADD
Where new files put in ENV: end up in RAM:ENV, and opening files looks in RAM:ENV first, then SYS:Prefs/Env-Arc
Well - that's essentially what im proposing but without the assigns - or need for a RAM:ENV directory.
Adding it as a feature of AmberRAM sounds like the most memory efficient way (one handler to load in RAM) but that's only if it is possible to make it handle ENV: additionally to RAM:, and if it is even possible to add the proposed functionality (...and how to make it enable it when accessing ENV:).
===(AS)MP support===
If one has to recompile software for SMP multi core, is there any thing special one has to do to get software to run?
Use task.resource if you need to query information about what tasks are running, and clear msgports completely when they are allocated.
Most code should not need Forbid. Use Semaphores, Messages etc. to sync your own code.
Accessing system structures is a different thing. Use the proper API whenever possible.
How single structures will be protected in the future is still a moving target, at least it is not documented. And you should never use undocumented stuff
Ideas on for SMP multi-core
Another suggestion is ... Forbid/Permit function calls are meant to halt multitasking so as no other task could intervene with what ever the calling task is doing, e.g. setting semaphores. Disable/Enable calls are meant to halt interrupts and as a side effect they also halt task switching.
One option is to make it compulsory to protect shared resources with semaphores and forbid the use of simple Forbid() calls as to protect something. Setting semaphore should be done if possible with atomic instructions (check and alter in one instruction). Or make the second concurrent ObtainSemaphore call halt the second calling task and force if possible a task switch which ever gives better results.
Semaphores could store the owning tasks task pointer instead of boolean to make things easier.
As long as the CPU initiates the DMA transfers through the OS, and the OS ensures that the transferred memory is within the region accessible to the user initiating the transfer, everything is fine. The CPU is the conductor, and the CPU by that has the control of which DMA transfer is initiated and which is not.
All you need to do is to write device drivers reasonable. Hint: CachePreDMA and CachePostDMA exist.
All the Os has to do is to verify that the memory regions to be transferred are valid, and prohibit direct access to the DMA control registers from user space. None of these algorithms imply huge costs.
The current OS design doesn't really allow virtual memory in first place, Forbid() is again the problem.
[http://www.tbs-software.com/guide/index.php?guide=autodocs.doc%2Fmemory.doc&node=1 memory.library API] seem to low level. IMHO the programs should not know how the swapping is implemented. I would just go for one new memory flag
MEMF_SWAPPABLE that indicates that a certain memory region or a whole memory pool won't be accessed during Forbid()/Permit() etc. It only solves part of the problem, it only implements virtual memory and not memory protection. For the latter you need to be able make certain memory inaccessible by other programs, some memory read-only for one task and read-write for other tasks, etc. And I think this should be done in the same Address Space in order to avoid you constantly need to swap between different address spaces.
So to summarize, if there are programs using this API we may provide a wrapper layer to get them working but I am not convinced this API should be the reference API with whom to provide VM to AROS programs.
=== Variadic ===
variadic functions (i.e. functions with an arbitrary amount of arguments).
<pre>
#include <stdarg.h>
[...]
char * STDARGS GetKeyWord(int value, char *def, ...)
{
[...]
va_list va;
[...]
va_start(va, def);
[...]
va_end (args);
</pre>
Please keep with using stdarg rather than having va casted to a LONG * type and varargs handled manually. Doing so, prevents tons of casting, where a simple va_arg can be used. So, string = *((char **) args) instead of string=va_arg(va, char *).
<pre>
#include <stdio.h>
#include <stdarg.h>
int printf (const char * format, ...)
{
int retval;
va_list args;
va_start (args, format);
retval = vfprintf (stdout, format, args);
va_end (args);
fflush (stdout);
return retval;
} /* printf */
</pre>
Couldn't find varargs.h or stdarg.h. and have no use for AROS_SLOWSTACKHOOKS or AROS_SLOWSTACKTAGS.
GCC looks for stdarg.h in a different place:
/bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/include/stdarg.h
Here is a path for a "normal" header:
bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/../../../../i386-aros/sys-include/aros/system.h
The use of vararg.h isn't supported by newer gcc versions. If you want your code to run on architectures that pass part of variadic arguments in a number of registers you need to use AROS_SLOWSTACK macros. Otherwise your program will not work on powerpc and x86_64 ports.
Of course the SLOWSTACK stuff is not needed in a function that can use va_list, va_start, va_arg and va_end. It's only needed if you want to write functions like DoMethod or similar.
#include <stdarg.h>
should be enough no matter if you do cross or native compiling. If it does not work, something is wrong and should be corrected.
Stdarg.h is here, Development:lib/gcc/i386-aros/4.2.2/include/
...which is part of the compiler's default include paths. In other words, #include <stdarg.h> works out of the box, indeed. (sorry, I should have just tried it before invoking "search" or "find"...)
furthermore, myprintf() as shown above won't work, because...
printf(format, args);
...is wrong - the second argument does not match printf() prototype, it expects a argument list, but args is of type va_list (obviously) - so one has to use...
vfprintf(stdout, format, args);
...instead, just like in the original printf(), and add fflush(stdout).
additionally, one could use...
int myarg = va_arg(args, int);
...between va_start() and va_end() to access individual arguments, where each call to va_arg() returns an argument casted to the desired type (here: "int") from the list given (here: "args") and advances to the next one.
wrapping up vfprintf() and modifying the format string now is a major speedup! no more backslash-n typing! this has been haunting me for years!
On MOS and AmigaOS, the NewObject variadic function is kept in the static library. It takes most of the parameters on the stack - thanks to that the implementation of NewObject calls the NewObjectA function. Everything works perfect, and the typical MUI macros may be easily used.
This, however, is not the case when you compile for AROS. Here, NewObject is a variadic macro, not a function. Thanks such approach we do not need any custom compiler in case of systems, where the arguments of variadic functions are passed partially through registers and partially through the stack (This is the case of PPC and x86_64, this is also the reason why both OS4 and MOS require specially patched compilers).
Since NewObject is a macro, the gcc's preprocessor expects the list of macros arguments enclosed within parentheses. In MUI macros it is not the case. Imagine the following test code:
<pre>
#define foo(a,b) ((a)+(b))
int loosy_function(int a, int b)
{
return foo(a,b);
}
</pre>
This will compile and work, but the following piece of code:
<pre>
#define foo(a,b) ((a)+(b))
#define END )
int loosy_function(int a, int b)
{
return foo(a,b END;
}
</pre>
will fail with the error: unterminated argument list invoking macro "foo"
There are two ways of fixing your issue. Either create your new objects outside this huge MUI constructions, and in there use just a pointer, or get rid of the "End" macro and exchange it with "TAG_DONE)".
Badly written software is, for example, casting va_list to an APTR or even doing so as if va_list were a plain table of function arguments. Such code needs to be fixed because it has very few chances to work anywhere but on author's machine ;)
The problem is nOt that they assume sizeof(APTR) == 4, its that they often do not use APTR, and use ULONG to store pointers exclusively. If the code used APTR/IPTR as it should - most of the "problems" wouldn't exist.
It would also help if people would start using variadic arguments properly. Many coders do assumptions which shall never be made. Instead, they should consider using stdarg.h file and all the va_* functions :)
===ABI===
In the head of our SVN repository there are now only 3 directories:
<pre>
admin/
branches/
trunk/
</pre>
We have added two extra dirs there: tags and imports
As discussed when we branch ABI V0 and [[Aros/Developer/ABIv1|ABI V1]] it would also be good to introduce tags. Normally this is done in a directory in the repository called tags. Currently we don't have this directory there. (We do have branches/tags that is a hack I have done because one doesn't have write access in the top directory. I think this directory is not clean and should be removed).
The second directory I would introduce is an imports directory for implementing vendor branches as discussed in the svn [http://svnbook.red-bean.com/en/1.5/svn.advanced.vendorbr.html book]. Currently we use code from several different projects and that code is stored inside the AROS tree; we seem to have problems with keeping this code up to date and merge our changes upstream. Maintainers of up stream projects like the MUI classes etc. have complained about this (to put it lightly).
Introducing these vendor branches would make it easier to see what changes we have made and make patches to be sent upstream and make it easier to import newer upstream versions of their code. Although can't "copy" the vendor branch into the main branch because it's already there, so start with a "merge".
Yes, the first step to make the code already in the repository compatible with the vendor branches will be the most difficult. The best way to do it the following way:
* first import the version on which the current AROS code is based into the vendor branch
* then import the new version over it in the vendor branch
* finally merge the difference between these two version in the AROS code present in the repository.
For example, place NList directly under vendor and not in a subdirectory like "contrib/zune/classes".
Actually after we have a stable [http://aros.sourceforge.net/documentation/developers/specifications/drafts/abiv1.php ABIv1 (2012 or later)]. We need to move away as much as possible from the contrib directory to some other repositories. The reasons are ...
* The AROS repository should be for the core AROS code.
* other contrib projects should be tried to be compiled for all Amiga-like OSes.
* The release scheme for AROS and the other programs should not have to be aligned.
* Binary versions should be provided on aros-archives and on aminet and/or OS4Depot to install them. (Some clever programs should maybe be provided to make the life of distribution developers easier).
* avoid parallel forks of programs for AROS and the other amiga OSes.
If there is really a need for a place for hosting AROS projects we may investigate setting up such a server but then including bug tracking, governance, maillist, etc. for each project separately. I personally think there are already enough places like sourceforge, google code, savannah, etc. where people can go for hosting such projects.
==Links==
* http://amigadocs.hokstad.com
* http://amigadocs.hokstad.com/doku.php?id=dev-links
* http://www.liquido2.com/tutorial/index.html
* Amiga(TM) OS4 has a [http://www.ast-workshops.co.uk/os4pg/ workshop] page and hope to produce a [http://amigaworld.net/modules/newbb/viewtopic.php?topic_id=31117&forum=42#549091 book] soon. [http://www.solie.ca/articles/map/map.html Brief Guide].
In the future...?
*AROS 64bit - SMP, Vulkan with OpenGL compability layer
*AROS 32bit - keep for historic reasons
What would you like to see implemented in AROS?
ABIv1 completed, SMP (x86_64), SendMsg()/GetMsg() to support memory protection between target and destination, in that order. Michal Schulz and Jason McMullan have been toying with the question "What are the minimal changes needed to the AmigaOS 3.1 API to support SMP"? The answer so far seems to be "few, but subtle". For example, SysBase->ThisTask is no longer meaningful on SMP, but FindTask(NULL) is. Disable() and Forbid() are shockingly bad on performance, but adding a spinlock semaphore mode to SignalSemaphore will help new code on SMP.
Leveraging a 'common' OS with a lot of machine support (Linux, MacOS, Windows, QNX, etc.) is something that AROS has been doing for quite a long time, and it is the biggest strength of AROS. This AROS experience and programming model, in the same way the Google's Android layers on top of Linux, or MacOS X layers on top of the Darwin/BSD kernel, as a first step
* The graphics + layers subsystem could be implemented as a shim on top of a OpenGL ES implementation (ie on any modern Linux system, or the RaspberryPI's hardware, MacOS X, etc).
- This also allows every window to be on its own 3D surface with backing store, allowing Wanderer (or a Commodity)
rearrange/zoom/animate app windows without having to send a pile or refreshes to them
* Use OpenAL as the sound backend
* AROSTCP would be a thin layer over the native OS's TCP/IP stack
* dos.library, poseidon.library, and input.device would be slim shims over the native APIs
* If we move to loading all libraries' into the application's task space, instead of a single global instance of the library, this will allow SMP and MMU more easily.
- Yes, it will require a lot of work in the libraries to make this transition
- Yes, I do think it will be worth it in the end.
* A 'fat binary' install format (or, maybe LLVM bytecode) that can be 'flattend' to the target architecture on installation.
So, what would this 'AROS of the future' look like?
* AmigaOS 3.x style API, with certain 'fundamental changes' to message passing
* Uses the underlying OS' device drivers, so more AROS developer effort can go to user-visible features and bugfixes
* Allows AROS applications to run side-by-side with the OS's native apps
And why would anyone want to program on such a system?
* AROS applications would run on any system that has the AROS Framework installed
* AROS applications are pixel-for-pixel the same on all platforms.
* Develop with the knowledge that you are guaranteed OpenGL and OpenAL, and the rest of the AROS Framework
an option for mmake to dump its dependency of metatarget in a graphviz[*] input file. This should make it possible to visualize the dependencies and hopefully be inspiration for cleaning up some mess, circular or unneeded dependencies and so on.
AmigaOS gcc 9 [https://franke.ms/amiga/gcc.wiki Old versions] able to create binaries for AmigaOS and [https://eab.abime.net/showthread.php?t=93813 Upgrading gcc versions]
==References==
{{reflist}}
{{status|50%}}
{{BookCat}}
iu9ki5w3wil7khoacjncr0jnsfdljic
4656309
4656308
2026-08-05T06:39:19Z
Jeff1138
301139
4656309
wikitext
text/x-wiki
{{ArosNav}}
==A technical overview of AROS==
Google translation [http://translate.google.com/translate?hl=en&sl=auto&tl=de&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs German], [http://translate.google.com/translate?hl=en&sl=auto&tl=fr&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs French], [http://translate.google.com/translate?hl=en&sl=auto&tl=it&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Italian], [http://translate.google.com/translate?hl=en&sl=auto&tl=es&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Spanish], [http://translate.google.com/translate?hl=en&sl=auto&tl=hi&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Hindi], [http://translate.google.com/translate?hl=en&sl=auto&tl=zh-CN&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Chinese],
[http://translate.google.com/translate?hl=en&sl=auto&tl=ru&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Russian],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pl&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Polish],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pt&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Portuguese]
{{Uncited}}
AROS,<ref>[http://aros.sourceforge.net/download.php References and sources]</ref> like AmigaOS (TM), is a [[w:Message passing|message-passing]], [[w:Preemption (computing)|preemptive]] [[w:Multitasking|multitasking]] [[w:Operating system|OS]].
It uses [[w:Reentrant (subroutine)|re-entrant]] shared libraries to save memory space.
AROS is based around an executive library kernel (Exec) and two other libraries:
* Exec (the "kernel", which is not a kernel in the modern sense),
* Intuition (graphics and GUI, integrated into the system) and
* AmigaDOS (Disk Operating System, the Metacomco's Tripos modified to work with Exec).
The design philosophies of AmigaDOS and Intuition are rather different, the former adopting a C-like API and the latter creating an [http://www.basden.demon.co.uk/amiga/amiga.oo.html object-oriented], message passing aware environment for the programmer. The system base is the only absolute address in AmigaOS (located at 0x00000004) this does differ with AROS as AROS SysBase is automatically provided (no $4) but everything else is dynamically loaded. The OS is well known for delivering high performance due to its close connections with the hardware, while simultaneously having the flexibility to support re-targetable graphics (Cybergraphics) and retargetable audio subsystems (AHI).
: Diagram showing relationships of libraries to system needed
Remember, AROS is a [http://en.wikibooks.org/wiki/Aros/Developer/ABIv1 research] operating system, and while all contributions to the base AROS code are welcome, please contact the dev list first for any core changes. Writing applications for AROS does not have this requirement.
While AROS appears and feels almost feature complete, it is still [[Aros/Developer/IncompleteAPIs|missing a small number of functions]] from the Amiga API - as well as a few implementations of [[Aros/MissingFunctionaility|core functionality]]. There are also a number of user applications that, while not strictly part of the AmigaOS 3.1 environment, need to be written.
[https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1201 This thread provides] information for setup, [http://www.aros.org/documentation/developers/index.php documentation] and whether you are interested in core OS changes and/or writing/porting software apps
*you compile directly under AROS, which can be running on either real hardware, virtual hardware
*in hosted mode under linux/window, cross-compile from that host OS (save your files as ISO-8859-15 encoding instead of UTF-8)
The repository for the [https://github.com/aros-development-team/AROS current development version ABIv1], the [https://github.com/deadw00d/AROS/tree/alt-abiv0 repository for current stable PC version ABIv0 with backported ABIv1 features is located which is used on AROS One and Icaros x86 based distros]
Any [https://github.com/aros-development-team/AROS/issues bugs / issues can be added]
We have a [https://arosdevteam.slack.com/archives/CUFV48U3H slack here], discord on [https://discord.gg/UKp9qdEBuQ Discord@AmigaDev],
==Software Development for AROS==
===Programming languages===
Apart from 'The Developer Environment', which primarily supports C/C++ code, there are other programming languages available for AROS:
'''Scripting'''
:[[Aros/User/DOS|DOS]], included in all
:[[Aros/Developer/Docs/LUA|LUA]], included in all or [http://www.airsoftsoftwair.de/en/prod_hollywood.html Hollywood]
:REXX [[Aros/Developer/Docs/Rexx|Regina (AROS' ARexx)]], included in all
:Python [ Info], included in Icaros
:Ruby [http://www.ruby-lang.org/en Info]/[http://archives.aros-exec.org/index.php?function=browse&cat=development/language download]
'''Basic'''
:[http://amos.pspuae.com/AmosProManual/contents/c1.html '''Amos Pro'''] [http://amos.pspuae.com/index.php?action=forum#1 compatible] [http://www.amigacoding.com/index.php/Main_Page commands] (all incomplete)
::[http://sourceforge.net/projects/xamos/ X-Amos]
::[http://sdlbasic.sourceforge.net/ SDLBasic] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://alvyn.sourceforge.net/ Alvyn] ([http://www.dusabledanslherbe.eu/AROSPage/MISC.14.html download])
::[[Aros/Developer/Basic/Basic4SDL|Basic4SDL]] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://www.ultimateamiga.co.uk/index.php?topic=9425.0 Project Deimos],
:'''Blitz Basic''' [http://aros-exec.org/modules/newbb/viewtopic.php?post_id=46537#forumpost46537 none on AROS]
:: [http://www.amiforce.de/main.php Amiblitz] on JanusUAE amiga(TM) emulator
:'''Amiga Basic'''
:: [ ACEBasic]
'''Misc'''
:[[Aros/Developer/Docs/E|AmigaE Portable E]]
:[https://ae.arosworld.org/index.php?board=11.0 FreePascal FPC Aros-Exec thread], [http://archives.aros-exec.org/index.php?function=browse&cat=development/language Download], FreePascal for AROS has its own [http://fpcaroswiki.alb42.de/ Wikibook],
:[[Aros/Developer/Docs/LLVM|LLVM]],
===Where to get the C/C++ Environment===
If you want to develop for AROS, its generally easier to be running linux hosted AROS development environment especially for C++, cross compiling the code. That's how most developers now are doing it. g++ is used to compile owb web browser as well as some other AROS software. If you were hoping for a rich set of C++ libraries or classes defined for the OS feature set, you might be disappointed.
AROS Native compiling is possible, but you're much more likely to run into the odd bug(s) in the dev environment since it gets little testing and fixing by other developers.
Is there a sftp software or scp over ssh available?
Maybe. At least the security part would be handled by [https://github.com/jens-maus/amissl amissl] [https://archives.arosworld.org/index.php?function=browse&cat=network/misc port]. DOpus5 has recently added sftp support. See here for a [https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1974&highlight=ssh&pid=12073#post_12073 ssh scp client]
[https://arosdevteam.slack.com/join/shared_invite/enQtOTc4Mzg0NDIzNzQ0LWQ2NWZmNmMwNGIwNGEyNTgxNzU3MGFjMTk3ZThmOTQ1MTVjMzhmNTllYWQ0ZTUxMjBjMGE0Y2VjMDJmNTc5MzI#/shared-invite/email Slack Dev Forum]
====Cross compilers from Windows or Linux====
*Windows WSL2 walkthrough can be [https://arosnews.github.io/how-to-cross-compile-aros-hosted-wsl/ found here]
you want to build AROS. No problem.
Here are instructions for 64-bit:
https://github.com/deadw00d/AROS/blob/master/INSTALL.md
Here are instructions for 32-bit:
https://github.com/deadw00d/AROS/blob/alt-abiv0/INSTALL.md
And as always has been the case you can use the contrib archive to 'obtain' the development directory which contains the /native/ AROS gcc compiler and tools. That compiler is used to build AROS itself but can be used outside the AROS build process by providing --sysroot with indicated directory to cross compile for AROS.
=====Older guides for Linux hosted compiler=====
Please install these packages before moving to next step. Below is a reference list for Debian-based distributions. Reference build system was Ubuntu 18.04/20.04 amd64.
subversion git-core gcc g++ make gawk bison flex bzip2 netpbm autoconf automake libx11-dev libxext-dev libc6-dev liblzo2-dev libxxf86vm-dev libpng-dev gcc-multilib libsdl1.2-dev byacc python-mako libxcursor-dev cmake zsh mingw64
Do all of these operations under home directory of your user or another directory where your user has write permissions.
Specifically, in a section "Linux-i386", be sure first to build the cross-compiler (toolchain-alt-abiv0-i386) and only then AROS itself (alt-abiv0-linux-i386).
Clone & build
<pre>
$ mkdir myrepo
$ cd myrepo
$ git clone https://github.com/deadw00d/AROS.git AROS
$ cd AROS
$ git checkout alt-abiv0
$ cd ..
$ cp ./AROS/scripts/rebuild.sh .
$ ./rebuild.sh
</pre>
Now to the build selection below - Linux-i386
Select toolchain-alt-abiv0-i386 - Select alt-abiv0-linux-i386 (DEBUG)
Start AROS by:
<pre>
$ cd alt-abiv0-linux-i386/bin/linux-i386/AROS
$ ./Arch/linux/AROSBootstrap
</pre>
Pc-i386 Select toolchain-alt-abiv0-i386 (if not built yet) - Select alt-abiv0-pc-i386
ISO image available in alt-abiv0-pc-i386/distfiles
Now that we have linux-hosted build, we can resume native (option 2).
Run ./rebuild.sh and selection option 2. Wait until it finished, then:
<pre>
$ cd alt-abiv0-pc-i386
$ make
</pre>
Now
<pre>
$ make bootiso
</pre>
Now, your compiler is located in toolchain-alt-abiv0-i386 directory and named i386-aros-gcc. Includes are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/include and libraries are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development.lib.
This is how then can be passed to the compiler:
/home/xxx/toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot /home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development -L/home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/lib
../toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot bin/linux-i386/AROS/Development local/helloworld/helloworld.c -o local/helloworld/helloworld
Another method was using Debian like distros and download the gimmearos.sh script (on [http://archives.aros-exec.org/index.php?function=browse&cat=development/cross aros-archives]) to setup the developer environment by downloading necessary packages ...
The gimmearos script is a good start in that direction, building the cross compilers and hosted AROS environment, but gimmearos.sh might be out of date or not be completely compatible with any given linux distro.
In order to do that, you have to compile AROS yourself. Download AROS source archive not contrib. Compile AROS by entering the main directory
./configure
make
([http://aros.sourceforge.net/documentation/developers/compiling.php More on compiling AROS]). The result will be a basic AROS system without development tools.
To compile C++ on Linux, type 'make gnu-contrib-crosstools', creating the cross-compilers in ./bin/linux-i386/tools/, named i386-aros-gcc, etc.
'''Note''': Currently, to make the cross compilers usable copy 'collect-aros' from tools/ to tools/i386-aros/bin/. At the moment the cross compilers if used from the Linux command line will only find it when it's there.
If you want to compile native compilers (the Developer Environment), type 'make contrib-gnu-gcc', creating native compilers in AROS' System:Development/bin directory.
When the output needs to be stripped <code>--strip-unneeded --remove-section .comment</code>
The Obj-C backend should build out of the box.
Open contrib/gnu/gcc/mmakefile.src and search for the line which contains "--enable-languages" and add "objc" to the list of languages that follows it.
--enable-languages=c,c++,objc
Better make it—enable-languages=c,c++,objc,obj-c++
ObjC++ is broken as soon as you try to use exceptions, but that might change in future GCC versions and it does not hurt having it there already.
Do you need a cross-compiler or a real compiler? In the first case you can get away with just downloading the proper gcc archive, apply the patch and proceed with the normal gcc build. In the case of a real cross-compiler then when downloading the contrib sources, also need to download the normal sources, place the contrib sources into a directory called contrib, need to install autoconf+automake+perl+python, call ./configure, cd into the subdirectory and type make.
to rebuild GCC with host == build == target == i386-pc-aros. So just get the vanilla sources and apply the patches without bothering about the build system?
[https://vmwaros.blogspot.com/2019/10/a-pre-configured-development-machine.html pre-configured VM environment vmware virtual machine to develop AROS and AROS software]
'''64 bit'''
'''32 bit'''
A good option for multiple OS is [https://axrt.org/index.php?tab=download-aros AxRuntime lets developers compile their Amiga API-based applications as Linux binaries being able to utilize modern development tools available on Linux, like IDEs, debuggers, profilers, etc]
====Native compilers for AROS====
Namely gcc for C or g++ for C++ are supplied with the [[Aros/Developer/Docs#The Developer Environment|Developer Environment]], which is already '''setup''' and part of any current AROS distribution like AROS One or the nightlies
* Current GCC 6.5 (32bit) though moving to 10.5 and 15.1 (64bit)
* Older software components. GNU GCC 4.x GNU BinUtils, GNU Fileutils 4.x, GNU Textutils and others.
On single partition systems and the Boot ISO, the AROS Developer environment is installed under "SYS:Development/". Systems with multiple partitions - such as a Work: partition - tend to install it to there instead, however it can be installed manually to any location. Please remember, if moving, that you will need to correct the Development packages 'install location' env variable to point to the new locations root - look in SYS:S/startup-sequence.
<pre>
Assign Development: SYS:Development
Assign C: Development:bin ADD
</pre>
In the aros build instructions. you need to check out contrib and/or ports into your AROS source directory, as subdirs. then, assuming you are building in an external build dir, as you should, you simply configure and "make contrib" for instance or whatever submodule you might want to build.
===Beginners Tutorials in C C++===
As AROS is [http://eab.abime.net/showthread.php?t=29856 C based] API compatible to AmigaOS 3.x, so most of the information on programming C on the Amiga applies to AROS as well. Please note that there is a lot of AmigaOS 1.3 (1985-1989) and [https://www.markround.com/amigaguide AmigaOS AOS 2.x (1990-1992)] information around but OS3.1 is recommended but limited in amount.
Brief overview of what is required to write AROS Applications
# Using [[Aros/Developer/Docs/Libraries/Intuition|Intuition]] for basic screens/windows
# Using graphics within windows via 8bit [[Aros/Developer/Docs/Libraries/Graphics|graphics]] and so onto 15-16-24bit [[Aros/Developer/Docs/Libraries/CGFX|cybergraphx]]
# Load and save work to [[Aros/Developer/Docs/Libraries/DOS|dos]] disk drives
# Using the [[Aros/Developer/Zune|ZUNE GUI Environment]]
Writing native games require this extra information
# Using [[Aros/Developer/AHIDrivers|AHI audio hardware independent API]]
# Using USB joystick/joypad with the Poseidon USB stack through [[Aros/Developer/Docs/Libraries/LowLevel|LowLevel]] library
Additional features that could be added later
# Adding additional [[Aros/Developer/Docs/Libraries/Locale|Locale]] language translations to your program
# Adding a [[Aros/Developer/Docs/Rexx|AREXX/Regina]] port to your application
# Executing Amiga(TM) [[Aros/User/DOS|DOS]] commands from your application
# Using [[Aros/Developer/Docs/Libraries/Icon|icons]] (.info files) and icon tooltypes (stack, version, and program startup options)
# Local couch or IP based SANA2 networking co-op multi player gaming support
Most AmigaOS programming books are nowadays very much out of date as most are from the late 1980s and do not cover later amigaOS releases like 3.1 for example, Rob Peck's book "Programmer's Guide to the Amiga". The Amiga ROM Kernel manuals aka RKMs like Libraries (3rd edition), Devices (), the AmigaDOS manual (3rd edition) and the Style Guide may have their uses. There are some reference examples from AmigaMail and Devcon notes (available again on an Amiga developers CD 2.1).
For Arexx then "The Amiga Programmer's Guide to ARexx" by Eric Giguere, which was published by Commodore is useful as well as an "Arexx Cookbook".
Curly brackets missing - try SHIFT + ALT + 7 or 0.
* Beginners C Guide [http://www.iu.hio.no/~mark/CTutorial/CTutorial.html C Tutorial],
* [http://thecguru.com/ C for beginners],
* [http://fresh2refresh.com/c/c-basic-program/ C programming basics] for students,
* [https://www.edx.org/courses Free Online course] from American Universities
* Reference Amiga [http://amigadev.elowar.com/ API reference].
* AROS based c source can be found [[Aros/Developer/Docs/Examples|here]] and lots of example code can be found inside [https://github.com/aros-development-team AROS sources] themselves and from the contrib section of the archives from [https://github.com/aros-development-team/contrib Aros site], and study the AROS applications source code, e.g. the test programs from the Tests drawer (folder/directory). Take a look at the code of some smaller AROS programs might be a better and more up to date guide. Some old Os3 [http://www.blackfiveservices.co.uk/amiga-c/ here]
When you upload your builds, please write the architecture (like i386-aros, x86_64-aros, etc.) in the archive name
and it is also advisable to write in the field "Requirements" what ABI (ABIv11, ABIv0 or ABIv1)
===Compiling C/C++ Code===
Native, although we have a IDE Integrated Development Environment (Murks), it does lack a debugger. Whilst others use a combination of a text editor and shell to edit code. Most though use an AROS hosted on Linux to take advantage of the better GCC tools like GDB and various IDEs.
Open shell - its a menu option at the top left of Wanderer (desktop). Or by using the right Win key and w (or F12 and w) within the directory with the source code. Type in
sh
to change the amiga shell into a unix shell. You can then type in ls (unix equivalent to amiga dir). Take a look [http://en.wikibooks.org/wiki/Linux_commands here] for more commands.
For a single file program-name.c or program-name.cpp
gcc -o program-name program-name.c
or
g++ -o program-name program-name.cpp
or
g++ -o test -Wall -g main.cc texturelib.cpp xmodelib.cc -lsdl -lgl
To close the shell, click on the top left-hand corner to close (twice). Once to get back the aros shell and then again to close finally. Use [http://freshmeat.net/projects/cksfv/ cksfv] as a test.
Some source code requires the addition of Amiga API libraries, like dos, which you can flag at the compile time as
gcc -o julia.exe julia.c -ldos
For DOS use -ldos as example and if you are compiling mui codes it will be -lmui or intuition -lintuition. Other missing symbols are due to linker libraries being necessary for linking in functions that aren't in the standard C libraries. For example some source code would need added
-lz or -lm or -lpng or -larosc etc.
use this in unix line command mode to search for 'search-item' in many .c files (*.cpp for c++, etc.)
grep -l 'search-item' *.c
If the program is not executable, try using parameter fno-common
"Delete #?.o"? Or if you are using abcshell then "rm *.o"
:''More information: [[Aros/Developer/Porting software]]''
=== How to make Apps have AROS 64-bit specific support code ===
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
AROS64 already uses 64bit addressing, it just doesn't setup the MMU for more than 4GB physical memory currently.
When porting software to AROS64 it is "mostly" a case of converting ULONG's that are used to store pointers, into IPTR's instead, etc. Another quirk, is making sure items on the stack are the correct size by using the STACKED attribute for them.
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
compiling mui stuff for aros setting -std=gnu99 is necessary, had -std=c99 usually
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order.
crash which suggest memory corruption. From my experience porting from 32-bit to 64-bit these kinds of errors can happen if a pointer is passed somewhere via ULONG variable. Then half of the pointer is cut.
To generate this error, please run AROSBootstrap with -m 1024. This will allocate heap to 64-bit address space which will make these errors immediatelly visible. These types of crashes are hard to debug. Disabled as little code as possible to stop corruption from occurring and then try to read from the code where it can be broken
Crashing in tslf_freevec is another symptom of memory corruption and these memory corruptions will manifest differently on different setups.
==Coding conventions==
As the AROS core source is a shared developer experience, there are rules regarding structure and style. When it comes to your creating your own app and coding, the structure and style should be your own, i.e. you should enjoy what you do and do it so that you can understand what is going on.
===Layout===
<syntaxhighlight lang="c">
static void 1st_function()
{
program
exit(0);
}
int main(void)
{
1st_function();
2nd_function();
3rd_function();
return 0;
}
</syntaxhighlight>
<syntaxhighlight lang="c">
struct Screen * openscreen(void);
struct Window *openwindow(struct Screen *screen, const char *title, LONG x, LONG y, LONG w, LONG h);
VOID 1st_function();
VOID 2nd_function();
int main(int argc, char **argv)
{
program
return 0;
} /* main */
VOID 1st_function()
{
}
VOID 2nd_function()
{
}
</syntaxhighlight>
===General style===
This code is used by many people and therefore you should keep some things in mind when you submit source code:
* Keep things simple
* Keep the source clean
* Always know what you are doing, if not flag it and describe what needs to be done...
* Explain clearly/simply what you are doing
* Remember that you write code once but that it is read many times by many people
===Comments===
AROS uses some of the comments in the source to generate the documentation. Therefore it's necessary to keep a certain format so the tools can find their information. Other comments are ignored but they should explain what you thought when you wrote the code. If you really can't think of an explanation, then don't write the code a second time like this:
<pre>
/* This adds 1 to t */
t ++;
</pre>
What we think of is this:
<pre>
/* Go on with next element */
t ++;
</pre>
===Formatting===
This is only '''IMPORTANT''' if you are going to work on the core AROS code or contrib but not applications which may reside outside like on AROS Archives or other websites.
<syntaxhighlight lang="c">
{
/* a */
struct RastPort * rp;
int a;
/* b */
rp = NULL;
a = 1;
/* c */
if (a == 1)
printf ("Init worked\n");
/* d */
if
(
!(rp = Get_a_pointer_to_the_RastPort
(
some
, long
, arguments
)
)
||
a <= 0
)
{
printf ("Something failed\n");
return FAIL;
}
/* e */
a = printf ("My RastPort is %p, a=%d\n"
, rp
, a
);
return OK;
}
</syntaxhighlight>
Looks ugly, eh ? :-) Ok, here are the rules:
<pre>
If several lines contain similar code, put similar things below each other (see a and b);
Put spaces between operands and operators
Put braces {}, brackets [] and parentheses () below each other (d) if there is much code between.
Brackets and parentheses may be in one line if the code between is small (c)
Indent by 4 Spaces. Two indent levels may be abbreviated by one tab.
</pre>
'''Before committing please normalize the indentation - if you have a mixture of tabs and spaced - please always use spaces, 1 tab = 4 spaces.'''
The reasons for this are:
# While some editors can use an arbitrary sizes for tabs, it's a bit complicated to tell another editor which tab size was used by the one used to write the code.
# Most code in AROS was written this way and your code should look like the rest.
# You can print this code on any printer without special tools to "fix" the tabs.
# Most editors have smart tabs which do exactly this. If your editor doesn't, write a bug report.
If you have a function with many arguments (d, e) you should put the parentheses in lines of their own and each argument in one line (d) or put the first argument behind the opening parentheses (e) and each following argument in a line of its own with the comma in front. The closing parentheses is in a line of its own and aligned with the beginning of the expression (i.e. the a and not the opening parentheses or the printf()).
Use a single blank line to separate logical blocks. Large comments should have a blank line before and after them, small comments should be put before the code they explain with only one blank line before them.
If you see any TABS in AROS core sources then the suggestion is to "detab the file and commit that separately" either before or afterwards from making functionality changes. Make two commits instead of one. This makes it easier for others to see the real changes instead of having to dig through multiple lines of irrelevant diffs.
===Eliminating Global Variables===
i.e. pass variables to functions (local scope) or classes making it easier to track and debug your code.
Any time you find that you need a particular thing in 'a lot of different places', chances are that all those places are conceptually related, and so you can create a class, a namespace, a function, or some other higher-level organizational unit to represent that relationship. This makes the program easier to understand.
Bad Designs
* All variables are global.
* There are no standalone functions, only sub-procedures which act on the global variables.
* Every sub-procedure is at least 500 lines to several thousand
* Every sub-procedure has more than one task to perform
* Copy-paste is preferred to writing methods, AND subtle changes are made in the middle of the code
Good Designs
* structure program into functions (C or basic) - top-down procedural approach
* put in class(es) (freepascal or C++) - the object is fixed and you use methods to access the object
<pre>
class String_List
{
private:
list<string> m_List; // member
public:
void read_strings() { /* read strings into m_List */ }
void print_strings() { /* write contents of m_List to stdout */ }
void sort_strings() { /* sort contents of m_List */ }
void sort_strings_reverse() { /* reverse-sort contents of m_List */ }
void unique_strings() { /* remove duplicate strings */ }
};
int main()
{
String_List myList; // local
myList.read_strings();
myList.sort_strings();
myList.print_strings();
myList.sort_strings_reverse();
myList.print_strings();
myList.unique_strings();
myList.print_strings();
return 0;
}
</pre>
This way it is very easy to replace the list with new list for debugging purposes, or replacing the methods without replacing the list, when you want different results. You only have to replace the content of the local variables.
So create the structure that matches your data (linked lists, trees, arrays, etc.) and what to do with them (sorting, searching, etc.)
<pre>
.h usually contain #define #include typedef enum struct extern screen and window definitions (data structures)
.c should contains functions and algorithms
</pre>
One way to look at it is that menu headings act as the .c file and sub-menu headings as functions.
When you start a project, you place a couple of declarations in the include file. As the project continues, you place more and more declarations in the include file, some of which refer to or contain previous declarations. Before you know it, you have a real mess on your hands. The majority of your source files have knowledge of the data structures and directly reference elements from the structures.
Making changes in an environment where many data structures directly refer to other data structures becomes, at best, a headache. Consider what happens when you change a data structure.
Use good variables names to help clarify code and only comment when you need to explain why a certain programming approach was made.
You're Refactoring Legacy Code, you see a global, you want to get rid of it. How do you do this?
Exactly what to do depends on how the global is used. The first step is to find all uses of the global throughout the code, and get a feel for what the significance of the variable is and how it relates to the rest of the program. Pay particular attention to the "lifetime" of the variable (when it gets initialized, when it is first used, when it is last used, how it gets cleaned up). Then, you will probably make the global a data member of a class (for OO languages), or you will write some get/set functions. Converting to the Singleton Pattern is common, but you may discover that it makes more sense for the data element to be a member of an existing singleton, or maybe even an instance variable.
# Create a basic read method, either as a class or a global function. Replace all reads with the access method, but leave the variable defined as a global.
# Review each of the writes to the method and extract action functions one at a time. Unless two operations are coded identically in the original code, extract each write access separately.
# Change the variable scope from global to local.
# Analyze similar action functions to determine if any can be merged, i.e., there are no functional differences in the results of the function, just differences in the implementation details.
# Review the calls to the read method and see if a more complex functionality should be applied. Follow the approach for writes and unless implementations are identical, create separate access functions.
# Analyze the access functions for duplication.
As returning variables by "passing by value" are forgotten, so "passing by reference" is often used instead. The reference is a pointer to the variable so the value is remembered when returned.
Alternatives
* Hidden Globals
* Singleton Pattern
* Database or TupleSpace
* Context Object
* Dependency Injection
* Stateful Procedures
==AROS/AmigaOS APIs and Docs==
<pre>
Library:
- Private data structure
- Many public access methods
Device:
- Private data structure
- Two (BeginIO/AbortIO) access methods
Resource:
- Public data structure
- *NO* access methods
</pre>
And, being Amiga OS-compatible, there are exceptions to all of these.
===System Libraries===
The [http://aros.sourceforge.net/documentation/developers/app-dev/index.php AROS Guide To Libraries] can be used as a guide to individual commands and Old Dev Docs are used in application programming.
The generated [http://aros.sourceforge.net/documentation/developers/autodocs/ Aros AutoDocs HTML Read] or download [http://aros.sourceforge.net/download.php docs-html.bz2 from here].
Amiga/Aros styles libraries are very different from windows and linux libs. Typical .so/dll libraries are foreign to most Amiga-like OS
*[[Aros/Developer/Docs/Libraries/AROSC|arosc.library]]
*[[Aros/Developer/Docs/Libraries/AmigaGuide|amigaguide.library]]
*[[Aros/Developer/Docs/Libraries/ASL|asl.library]]
*[[Aros/Developer/Docs/Libraries/Bullet|bullet.library]]
*[[Aros/Developer/Docs/Libraries/BSDsocket|bsdsocket.library]]
*[[Aros/Developer/Docs/Libraries/CAMD|camd.library]]
*[[Aros/Developer/Docs/Libraries/Codesets|codesets.library]]
*[[Aros/Developer/Docs/Libraries/CGFX|cybergraphics.library]]
*[[Aros/Developer/Docs/Libraries/CGXVIDEO|cgxvideo.library]]
*[[Aros/Developer/Docs/Libraries/Commodities|commodities.library]]
*[[Aros/Developer/Docs/Libraries/DataTypes|datatypes.library]]
*[[Aros/Developer/Docs/Libraries/DiskFont|diskfont.library]]
*[[Aros/Developer/Docs/Libraries/DOS|dos.library]]
*[[Aros/Developer/Docs/Libraries/Exec|exec.library]]
*[[Aros/Developer/Docs/Libraries/Expansion|expansion.library]]
*[[Aros/Developer/Docs/Libraries/FreeType2|freetype.library]]
*[[Aros/Developer/Docs/Libraries/GadTools|gadtools.library]]
*[[Aros/Developer/Docs/Libraries/Graphics|graphics.library]]
*[[Aros/Developer/Docs/Libraries/Icon|icon.library]]
*[[Aros/Developer/Docs/Libraries/Identify|identify.library]]
*[[Aros/Developer/Docs/Libraries/IFFParse|iffparse.library]]
*[[Aros/Developer/Docs/Libraries/Intuition|intuition.library]]
*[[Aros/Developer/Docs/Libraries/Keymap|keymap.library]]
*[[Aros/Developer/Docs/Libraries/Layers|layers.library]]
*[[Aros/Developer/Docs/Libraries/Locale|locale.library]]
*[[Aros/Developer/Docs/Libraries/LowLevel|lowlevel.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingBas|mathieeesingbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubBas|mathieeedoubbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingTrans|mathieeesingtrans.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubTrans|mathieeedoubtrans.library]]
*[[Aros/Developer/Docs/Libraries/Mathtrans|mathtrans.library]]
*[[Aros/Developer/Docs/Libraries/MUIMaster|muimaster.library]]
*[[Aros/Developer/Docs/Libraries/Partition|partition.library]]
*[[Aros/Developer/Docs/Libraries/PopUpMenu|popupmenu.library]]
*[[Aros/Developer/Docs/Libraries/OOP|oop.library]]
*[[Aros/Developer/Docs/Libraries/Regina|regina.library]]
*[[Aros/Developer/Docs/Libraries/Reqtools|reqtools.library]]
*[[Aros/Developer/Docs/Libraries/RexxSysLib|rexxsyslib.library]]
*[[Aros/Developer/Docs/Libraries/ScreenNotify|screennotify.library]]
*[[Aros/Developer/Docs/Libraries/TTEngine|ttengine.library]]
*[[Aros/Developer/Docs/Libraries/Thread|thread.library]]
*[[Aros/Developer/Docs/Libraries/Utility|utility.library]]
*[[Aros/Developer/Docs/Libraries/Xadmaster|xadmaster.library]]
*[[Aros/Developer/Docs/Libraries/Workbench|workbench.library]]
*[https://github.com/aros-development-team/AROS/commit/c82e86b8480277998014cc327b56c7664023a52f ClassAct Reaction boopsi class]
===AROS Subsystems===
# [[Aros/Developer/Zune|Zune MUI compatible GUI]]
# [[Aros/Developer/AROSAppPackages|AROS Application Packages]]
# AHI Audio Drivers - [[Aros/Developer/AHIDrivers|Usage]]/[[Aros/Developer/AHIDriversDev|Development]]
# AROSTCP Sana2 Network Interface Drivers - [[Aros/Developer/NICDrivers|Usage]]/[[Aros/Developer/NICDriversDev|Development]]
# [[Aros/Developer/AmiSSL|AmiSSL]]
# gfx.hidd/cybergraphics Video Drivers - [[Aros/Developer/GfxDrivers|Usage]]/[[Aros/Developer/GfxDriversDev|Development]]
# IO Device Drivers - [[Aros/Developer/IODeviceDrivers|Usage]]/[[Aros/Developer/IODeviceDriversDev|Development]]
# USB Device Drivers - [[Aros/Developer/USBDrivers|Usage]]/[[Aros/Developer/USBDriversDev|Development]]
# PCI Device Drivers - [[Aros/Developer/PCIDrivers|Usage]]/[[Aros/Developer/PCIDriversDev|Development]]
# [http://www.libsdl.org/ SDL] [https://github.com/search?q=repo%3Aaros-development-team%2Fcontrib%20SDL2&type=code SDL2 commits], [https://github.com/aros-development-team/contrib/commit/c62c3c425c35bac19dadc23be092b0b13a66c76c SDL3 initial commit], []
# [[w:Gallium3D|Gallium 3D]] [http://www.mesa3d.org/ openGL aka Mesa] - [[Aros/Developer/OpenGL|Usage]]/[[Aros/Developer/OpenGLDev|Development]] [http://www.swiftless.com/opengltuts.html Swfitless]
# A small subset of GTK2 through [http://sourceforge.net/projects/gtk-mui/ MUI-GTK]
# Cairo 2D Engine - [[Aros/Developer/Cairo|Usage]]/[[Aros/Developer/Cairo|Development]]
# [[Aros/Developer/Scalos|Scalos desktop API and plugin modules]]
# [[Aros/Developer/VHI|VHI video driver]]
====HIDDs====
*[[Aros/Developer/Docs/HIDD/HIDDClass|hiddclass.hidd]]
*[[Aros/Developer/Docs/HIDD/Graphics|graphics.hidd]]
*[[Aros/Developer/Docs/HIDD/VesaGfx|vesagfx.hidd]]
*[[Aros/Developer/Docs/HIDD/ATI|radeon.hidd]]
*[[Aros/Developer/Docs/HIDD/NVidia|nvidia.hidd]]
*[[Aros/Developer/Docs/HIDD/Nouveau|nouveau.hidd]]
*[[Aros/Developer/Docs/HIDD/Kbd|kbd.hidd]]
*[[Aros/Developer/Docs/HIDD/Mouse|mouse.hidd]]
*[[Aros/Developer/Docs/HIDD/i2c|i2c.hidd]]
*[[Aros/Developer/Docs/HIDD/IRQ|irq.hidd (deprecated)]]
*[[Aros/Developer/Docs/HIDD/PCI|pci.hidd]]
*[[Aros/Developer/Docs/HIDD/PCIPC|pcipc.hidd]]
*[[Aros/Developer/Docs/HIDD/Serial|serial.hidd]]
*[[Aros/Developer/Docs/HIDD/Thunderbolt|thunderbolt.hidd]]
https://github.com/aros-development-team/AROS/commit/4f02ea691799aff3a01f60cfa5f9182c82fc57a8
HIDD are used for device/peripheral low level hardware support drivers. The HIDD system is split up into a collection of classes with a strict inheritance hierarchy. A HIDD class implements a device driver for a single device or in rare cases a group of devices and provides an interface for other programs and devices to access.
In order to maintain portability of interfaces across a wide range of hardware this interface will in general not present the raw interface to the underlying hardware. Instead it will present a generic interface that describes many different hardware implementations. This allows for the best reuse of both interfaces and code.
HIDD API is heavyweight though. You need to open a HIDD library, open oop.library, instantiate an object (even if there's no object); and object calls are more costly compared to plain library calls.
Basically your task is to implement a subclass of hidd.ata.bus for your hardware. just implementing the XXXATA__Hidd_ATABus__xxxxxx methods for the Amiga chipset - and appropriate versions of the interface_xxx.c file(s). pretty much everything in probe.c could be ignored - just write a replacement scan for relevant amiga devices and store whatever info you need in the bus data? only the "SUPPORT_LEGACY" blocks might be related.
You do not need to depend on PCI API. PCI is just a way to discover the hardware on PCs, etc.
<hidd/pci.h> includes (at some depth) <interface/HW.h>, which defines IID_HW. This comes from the 'generic' HIDD class in:
rom/hidds/hidd/hiddclass.conf
did not split up HIDD and HW because they are always used in pair. It's the same as hidd/pci.h bringing definition for: PCI, PCIDriver and PCIDevice. PCI is actually PCIHW, just the name was not changed for backwards compatibility reasons. HW is a 'hub' where HIDD instances plug in.
ATA HIDD aoHidd_ATABus_Use32Bit value is completely ignored unless ata.device first detects correct command line parameter.
Yes. Unfortunately I was unable to find any comment in code or svn history with explanations. Looked at Linux source, there 32-bit PIO is also controller driver's property. Some of them enable it, some don't.
Actually, switching the default to ON should be safe. ata.device is fail-safe at this because during IDENTIFY command it validates upper 16 bits, and if they appear to be zeroes in all 128 longwords, then 32-bit mode is switched off. But, nevertheless, I know how tricky hardware can be, so I decided not to change original behavior. If you think it's wrong in some cases, then it's possible to add one more attribute like aHidd_ATABus_Default32Bit. If set to YES, then this means that 32-bit PIO is safe to use by default.
====Devices====
*[[Aros/Developer/Docs/Devices/ATA|ata.device]]
*[[Aros/Developer/Docs/Devices/Console|console.device]]
*[[Aros/Developer/Docs/Devices/Narrator|narrator.device]]
*[[Aros/Developer/Docs/Devices/Printer|printer.device]]
*[[Aros/Developer/Docs/Devices/Trackdisk|trackdisk.device]]
*[[Aros/Developer/Docs/Devices/AmberRAM|amberram.device]]
*[[Aros/Developer/Docs/Devices/Timer|timer.device]]
*[[Aros/Developer/Docs/Devices/|.device]]
The Amiga used [[Aros/Developer/Docs/Devices|Devices]] to communicate with [http://aros-exec.org/modules/newbb/viewtopic.php?start=0&topic_id=3475&viewmode=flat&order=ASC additional hardware]. AROS has replaced these hardware devices with hidd equivalents but some are still retained for backwards compatibility.
Local libraries/devices/handlers,etc. are supposed to override the ones in ROM if their version is higher than the one in ROM.
Here is the list of commands exec default:
{| class="wikitable"
| CMD_CLEAR
| Purge the buffer of the device
|----
| CMD_READ
| Playback Control
|----
| CMD_STOP
| Stopped the activity of the device
|----
| CMD_FLUSH
| Empty the queue of commands
|----
| CMD_RESET
| Reset a device
|----
| CMD_WRITE
| Playback Control
|----
| CMD_INVALID
| Create an error
|----
| CMD_UPDATE
| Gets updated device
|----
| CMD_START
| Will restart the device
|----
|}
While most other "stuff you communicate with" in AmigaOS are devices <ref>AMIGA ROM Kernel Reference Manual: Devices, 3rd Edition. Commodore-Amiga, Inc. Addison-Wesley, 1991. {{ISBN|0-201-56775-X}}</ref> that share a [http://gega.homelinux.net/AmigaDevDocs/ common base interface]. [[Aros/Developer/Docs/Devices1.3|OS 1.3 Device Drivers]].
====Handlers====
:[[Aros/Developer/Docs/Handlers/Pipe|pipe.handler]]
:[[Aros/Developer/Docs/Handlers/Port|port.handler]]
:[[Aros/Developer/Docs/Handlers/SFS|sfs.handler]]
:[[Aros/Developer/Docs/Handlers/FAT|fat.handler]]
:[[Aros/Developer/Docs/Handlers/PFS|pfs.handler]]
:[[Aros/Developer/Docs/Handlers/NTFS|fuse.handler]]
:[[Aros/Developer/Docs/Handlers/FFS|ffs.handler]]
filesystem handlers have their own separate system consisting of completely differently structured messages that dos.library use to pass requests (for things like reading, writing, getting directory contents etc.) to them. AROS originally went with implementing filesystem handlers as devices, which might arguably be more consistent with the rest of the AmigaOS API but which is quite incompatible with AmigaOS itself. However, it made it far harder to port filesystems and the gains were comparatively small, and so there's been a long standing goal of fixing this incompatibility. It has now, June 2011, been reintroduced to all AROS flavors.
are argstr and argsize valid for the handler startup environment?
DOS/RunHandler() calls DOS/CreateNewProcTags(), and then CallEntry() (in rom/dos/exit.c) to start the handler, so yes, argstr and argsize are *present* in the call signature of the handler.
Granted, argstr will be NULL and argsize 0, but those values *are* passed to the handler function using:
<pre>
AROS_UFC3(ULONG, entry,
AROS_UFCA(STRPTR, argptr, A0),
AROS_UFCA(ULONG, argsize, D0),
AROS_UFCA(struct ExecBase *, SysBase, A6));
</pre>
Creating your own [without the whole build tree http://pagesperso-orange.fr/franck.charlet/temp/radeon.zip] and then
<pre>
make stub
make
make install
</pre>
SFS has two Root blocks, one at the start and one at the end of the disk. The Root blocks both contain the same information. They hold various information about the disk structure and have the locations of some important blocks used by the filesystem.
The Root ObjectContainer contains the Root directory Object. The name of this Object is the name of the volume. It is identical to a normal directory Object.
The Bitmap is used to keep track of free space. Each bit in a bitmap represents a single block. A set bit indicates a free block and a cleared bit a used block.
AdminSpaceContainers are used to keep track of space which has been reserved for storing administration blocks. Only the Bitmap, the Root blocks and the actual data stored in files aren't stored in administration space. Administration space is allocated in chunks of 32 blocks at a time. A single AdminSpaceContainer can hold information about a large number of such areas each of which has its own little bitmap of 32 bits.
Extents are stored in a B-Tree. The Root block holds a pointer to the root of the Extent B-Tree. Extents keep track of space in use by a specific file. Each fragment a file consists of has its own Extent. Extents are in a double linked list. The list can be used to locate the next or previous fragment of a file.
Below is the standard block header. This header is found before EVERY type of block used in the filesystem, except data blocks. The id field is used to check if the block is of the correct type when it is being referred to using a BLCK pointer. The checksum field is the SUM of all LONGs in a block plus one, and then negated. When applying a checksum the checksum field itself should be set to zero. The checking a checksum the checksum is okay if the result of the checksum equals zero. The ownblock BLCK pointer points to the block itself. This field is an extra safety check to ensure we are using a valid block.
Field Type Description
id ULONG The id field is used to identify the type of block we are dealing with. It is used to make sure that when referencing a block we got a block of the correct type. The id consist of 4 bytes and each blocktype has its own unique foure letter code.
checksum ULONG This field contains the sum of all longs in this block, plus one and then negated. The checksum can be used to check if the block hasn't been corrupted in any way.
ownblock BLCK Points to itself, or in other words, this field contains the block number of this block. This is yet another way to check whether or not a block is valid.
<pre>
struct fsBlockHeader {
ULONG id;
ULONG checksum;
BLCK ownblock;
};
</pre>
The algorithm to calculate the checksum of a block:
<pre>
ULONG calcchecksum(struct fsBlockHeader *block, LONG blocksize} {
ULONG *data=(ULONG *)block;
ULONG checksum=1;
block->checksum=0;
while(blocksize>0) {
checksum+=*data++;
blocksize-=4;
}
return(-checksum);
}
</pre>
A Root block contains very important information about the structure of a SFS disk. It has information on the location and size of the disk, the blocksize used, locations of various important blocks, version information and some filesystem specific settings.
A SFS disk has two Root blocks; one located at the start of the partition and one at the end. On startup the filesystem will check both Roots to see if it is a valid SFS disk. If either one is missing SFS can still continue (although at the moment it won't).
A Root block could be missing on purpose. For example, if you extend the partition at the end (adding a few MB's) then SFS can detect this with the information stored in the Root block located at the beginning (since only the end-offset has changed). Same goes for the other way around, as long as you don't change start and end point at the same time.
When a Root block is missing because the partition has been made a bit larger, then SFS will in the future be able to resize itself without re-formatting the disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
version UWORD The version of the filesystem block structure. You can check this field to identify what version of the filesystem your dealing with it and to see if you can handle this structure correctly. Don't try to interpret the disk's structure when this field contains an unknown version number!
sequencenumber UWORD Used to identify which Root block was written last in case the sequencenumber on both Root blocks don't match.
datecreated ULONG Creation date of this volume. This is the date when the disk was last formatted and will never be changed.
bits UBYTE Various settings, see below.
<pre>
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
reserved1 ULONG[2] Reserved, leave zero.
firstbyteh ULONG High 32-bits of a 64-bit number. This is the first byte of our partition relative to the start of the disk.
firstbyte ULONG Low 32-bits of a 64-bit number.
lastbyteh ULONG High 32-bits of a 64-bit number. This is the last byte (exclusive) of our partition relative to the start of the disk.
lastbyte ULONG Low 32-bits of a 64-bit number.
totalblocks ULONG The total number of blocks this partition consists of.
blocksize ULONG The size of a block of this partition.
reserved2 ULONG[2] Reserved, leave zero.
reserved3 ULONG[8] Reserved, leave zero.
bitmapbase BLCK Block number of the start of the Bitmap.
adminspacecontainer BLCK Block number of the first AdminSpaceContainer.
rootobjectcontainer BLCK Block number of the ObjectContainer which contains the root of the disk (this is where the volume name is stored).
extentbnoderoot BLCK Block number of the root of the Extent B-Tree.
reserved4 ULONG[4] Reserved, leave zero.
</pre>
<pre>
struct fsRootBlock {
struct fsBlockHeader bheader;
UWORD version;
UWORD sequencenumber;
ULONG datecreated;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
ULONG reserved1[2];
ULONG firstbyteh;
ULONG firstbyte;
ULONG lastbyteh;
ULONG lastbyte;
BLCK totalblocks;
ULONG blocksize;
ULONG reserved2[2];
ULONG reserved3[8];
BLCK bitmapbase;
BLCK adminspacecontainer;
BLCK rootobjectcontainer;
BLCK extentbnoderoot;
ULONG reserved4[4];
};
</pre>
AdminSpaceContainers are used to store the location and bitmap of each administration space. The AdminSpaceContainers are located in a double linked list and they contain an array of fsAdminSpace structures. There is one fsAdminSpace structure for every administration space on disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
next BLCK The next AdminSpaceContainer, or zero if it is the last in the chain.
previous BLCK The previous AdminSpaceContainer, or zero if it is the first AdminSpaceContainer.
bits UBYTE The number of bits in each in the bits ULONG in the fsAdminSpace structure.
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
adminspace struct fsAdminSpace An array of fsAdminSpace structures. The size of the array is determined by the current blocksize.
<pre>
struct fsAdminSpaceContainer {
struct fsBlockHeader bheader;
BLCK next;
BLCK previous;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
struct fsAdminSpace adminspace[0];
};
</pre>
Field Type Description
space BLCK The first block of an administration space.
bits ULONG A small bitmap which is used to determine which blocks in an administration space are already in use. The number of bits in this bitmap is determined by the bits field in the AdminSpaceContainer.
<pre>
struct fsAdminSpace {
BLCK space;
ULONG bits;
};
</pre>
The fsBitmap structure is used for Bitmap blocks. A bitmap block is used to keep track of which space is in use and which isn't for a particular area of a disk. All bitmap blocks together keep track of the free space for an entire disk. The location of the first bitmap block is known and all other bitmap blocks are stored in order after the first one.
Field Type Description
bheader struct fsBlockHeader Standard block header.
bitmap ULONG An array of ULONG's. These hold the actual information on which blocks are in use and which aren't.
<pre>
struct fsBitmap {
struct fsBlockHeader bheader;
ULONG bitmap[0];
};
</pre>
Each bit in a bitmap block (except for the block header) represents a single block. If the bit is set than the block is free, and if the bit is clear then it is full. The first ULONG in the bitmap area of the first bitmap block represents blocks 0 through 31 on the disk. Bit 31 of this ULONG is block 0, 30 is block 1, and so on. Bit 0 of the first ULONG represents block 31.
Below is a table to clarify how bitmaps work even further. The first column is the bitmap block number, the second column is the number of the ULONG in the bitmap array. The third column is the bit number in this ULONG, and the last column is the block which this specific bit, in this specific bitmap block represents.
We'll assume here that a bitmap block has room for 120 ULONG's (meaning there is room for storing 32 * 120 bits).
<pre>
Bitmap block ULONG number Bit number Block represented
1 (first) 0 31 0
1 0 30 1
... ... ... ...
1 0 1 30
1 0 0 31
1 1 31 32
... ... ... ...
1 2 31 64
1 2 30 65
... ... ... ...
1 119 0 3839
2 0 31 3840
2 0 30 3841
... ... ... ...
</pre>
The last bitmap block doesn't need to be completely used. The unused bits (which belong to blocks which do not exist) all have to be clear, to indicate that these blocks are in use.
The fsObjectContainer structure is used to hold a variable number of fsObjects structures (Objects) which have the same parent directory. Each ObjectContainer must contain at least one Object. If there is space in the ObjectContainer not used by the variable number of Objects then that space is zero filled. Objects always start at 2-byte boundaries, which means sometimes a padding byte is inserted between two Objects.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the parent Object, or 0 if this object has no parent (which is only the case for the Root directory).
next BLCK The next ObjectContainer belonging to this directory, or zero if it is the last in the chain.
previous BLCK The previous ObjectContainer belonging to this directory, or zero if it is the first ObjectContainer in this directory.
object struct fsObject A variable number of fsObject structures. The number of structures depends on the individual sizes of each fsObject structure and the blocksize. These structures are located directly after each other with at most 1 byte of padding between them to get the structures aligned on a 2 byte boundary.
<pre>
struct fsObjectContainer {
struct fsBlockHeader bheader;
NODE parent;
BLCK next;
BLCK previous;
struct fsObject object[0];
};
</pre>
fsHashTable is the structure of a HashTable block. It functions much like the hash table found in FFS user directory blocks, except that it is stored in a separate block. This block contains a number of hash-chains (about 120 for a 512 byte block). Each hash-chain is a chain of Nodes. Each Node has a pointer to an Object and a pointer to the next entry in the hash-chain. Using such a hash-chain you can locate an object quickly by only knowing its name.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the directory Object this HashTable block belongs to.
hashentry NODE An array of Nodes. Each Node represents the start of a hash-chain (singly linked). A hash-value is calculated using the name of a file or directory, and this value determines in which chain the Object is linked. If there are no entries in a hash-chain then the hashentry value is zero.
<pre>
struct fsHashTable {
struct fsBlockHeader bheader;
NODE parent;
NODE hashentry[0];
};
</pre>
To calculate the hash-value using a name of an Object as input use these routines:
<pre>
UWORD calchash(UBYTE *name) {
UWORD hash=0;
/* Calculates a hash value over the passed in string.
The end of the string can be either a NUL byte or a
slash. The hash function is the same as the one
used in FastFileSystem set to international mode. */
while(name[hash]!=0 && name[hash]!='/') {
hash++;
}
while(*name!=0 && *name!='/') {
hash=hash*13+upperchar(*name++);
}
return((UWORD)(hash % (UWORD)((blocksize-sizeof(struct fsHashTable))>>2)));
}
UBYTE upperchar(UBYTE c) {
if((c>=224 && c<=254 && c!=247) || (c>='a' && c<='z')) {
c-=32;
}
return(c);
}
</pre>
The BNodeContainer is used to store B-Trees. Currently only one B-Tree is in use by this filesystem and it is used to store the location of file data. The fsBNodeContainer structure contains two other structures. The fsBlockHeader structure and the BTreeContainer structure.
Field Type Description
bheader struct fsBlockHeader Standard block header.
btc struct BTreeContainer Contains information about the B-Tree and its nodes contained in this block.
<pre>
struct fsBNodeContainer {
struct fsBlockHeader bheader;
struct BTreeContainer btc;
};
</pre>
First try and locate the Root block. It should start with "ROOT". SFS has two of these, one at the start of the partition and one at the end. One of the fields contains the block size, which will be the size of all important SFS blocks.
The root block has the root object container, which contains information about files and directories in the root directory. The object
containers basically hold one or more smaller structures that represent files and directories. Scanning them all should give you a list of
files and directories.
The root block also has the root of the Extent B-Tree. This is a standard B-Tree structure (not a binary tree) that is used commonly in
all kinds of system, you can read about how they work on Wikipedia if needed. The B-Tree holds the information about *where* all the data is
located for your files.
To recover your files, I'd do this:
* Find one of the root blocks, if not present, then figure out the block size your disk was using, and scan every block in turn to see if it
looks like an ObjectContainer (check the fsBlockHeader's ID, check if the ownblock number is equal to the block you are currently scanning,
and check its checksum). So if you currently have block 12, and you see a block with the correct id, and ownblock = 12 and its checksum is good,
then that's probably a valid ObjectContainer.
* With all the ObjectContainers found, you can extract filenames and directory names from these, but also the number of their first data
block (in the field data) and the file size. For small files (less than blocksize) this data block will be enough to recover the data.
For larger files, you might be lucky and all the remaining blocks are found after the first one (if the file was defragmented). You can't be
sure of that though so...
* For larger files, you need to find all the BNodeContainers. You could scan these in the same way you found all the ObjectContainers (look for
blocks with the correct id, ownblock number and checksum).
* With all the BNodeContainers found, you can try looking up the first data block of a file in the B-Tree structure. This is a bit complicated
-- the B-Tree consists of non-leaf nodes (blocks that only contain pointers to other B-Tree blocks), the isLeaf flag indicates this. Or it
can be a B-Tree leaf block. The leaf blocks contain extra information per entry (see https://hjohn.home.xs4all.nl/SFS/extents.htm)
<pre>
struct fsExtentBNode {
ULONG key;
ULONG next;
ULONG prev;
UWORD blocks;
};
</pre>
The key should be a block of a file (the first of a range), that is 1 to 65535 block long (depending the "blocks" field). If the file is split
up into more parts, then "next" will contain block number of the next range of blocks. You need to look this up again in the B-Tree
structure to find out how large it is.
You can for the most part ignore the other structures (bitmap, admin containers). The fsObjects and B-tree containers is what you'll need to
recover the data.
====Resources====
<pre>
rom/storage/mmakefile.src
rom/storage/storage.conf
rom/storage/storage_device.c
rom/storage/storage_ids.c
rom/storage/storage_init.c
rom/storage/storage_intern.h
rom/storage/storage_mount.c
rom/storage/storage_unit.c
</pre>
<pre>
rom/storage/includes/device.h
rom/storage/includes/unit.h
rom/storage/includes/volume.h
rom/storage/storage_intern.h
</pre>
<pre>
</pre>
*[[Aros/Developer/Docs/Resources/ACPI|acpi.resource]]
*[[Aros/Developer/Docs/Resources/Battclock|battclock.resource]]
*[[Aros/Developer/Docs/Resources/Bootloader|bootloader.resource]]
*[[Aros/Developer/Docs/Resources/Cia|cia.resource]]
*[[Aros/Developer/Docs/Resources/Filesystem|FileSystem.resource]]
*[[Aros/Developer/Docs/Resources/Hostlib|hostlib.resource]]
*[[Aros/Developer/Docs/Resources/Kernel|kernel.resource]]
*[[Aros/Developer/Docs/Resources/Misc|misc.resource]]
*[[Aros/Developer/Docs/Resources/Processor|processor.resource]]
==Debugging Code==
Please use the [http://sourceforge.net/tracker/?group_id=43586&atid=439463 AROS Bug Tracker] if any issues are found.
GRUB Command line list
<pre>
sysdebug
usbdebug - allows to see Poseidon's log in debug output
</pre>
How do I get debugging out of InitResident ? If running i386 hosted on linux sysdebug=initresident on command line.
This way you can enable any of listed flags. sysdebug=all stands for "everything"
Have an executable (crosscompiled C++ code) which has 6 MB size on disk, but after loading it in memory, 250 MB RAM is taken. Any software that would split AROS executable into ELF part which would show actual size values?
readelf -S executable
it will show you all sections in elf file, including sizes and requested alignment.
objdump -h filename
That's will give you a quick overview of the sections and sizes. Ignore all the .debug.* sections.
Would hazard a guess that you have a large .bss section. That's pretty common in C++.
Next step:
nm—size-sort filename | grep ' [bB] '
The last few will be your biggest consumers. Would suggest -C to demangle the symbols... ;)
Suggest profiling the program (just use some printf's in the main loop for time spent in each part), it usually is quite easy to spot slow parts in games or apps.
If someone has '#define IPTR ULONG' somewhere. To see where that define is, redefine IPTR in the source code that fails, just above the line that fails, and the preprocessor will tell you where it was defined first.
===How to setup gdb with AROS/hosted===
Download AROS sources (AROS-xxxxxxxx-source.tar.bz2, where xxxxxxxx is the current date) and AROS contrib sources (AROS-xxxxxxxx-contrib-source) from
Untar-bzip2 and cd to the unpacked archive directory.
> tar -xvjf AROS-xxxxxxxx-source.tar.bz2
> cd AROS-xxxxxxxx-source
Check the link to "contrib" (contrib-source) inside directory, e.g. correct like this:
> rm contrib
> ln -s ../AROS-xxxxxxxx-contrib-source.tar.bz2 contrib
Make sure you have the correct locale setting, otherwise compilation will fail at some point. See [http://aros.sourceforge.net/documentation/developers/compiling.php#setting-the-locale-to-iso8859 here] (or link below) for more on that. You might have to enter this:
> export LANG="en_US.ISO-8859-1"
Now configure for a debug build - see "./configure --help" for more - here are two examples:
> ./configure—enable-debug=stack,modules,symbols
> ./configure—enable-debug=all
You may "make" now, or choose a separate directory for your build (e.g. for easy removal), for example if compiling for i386 architecture you could create a directory like this:
> mkdir linux-i386
> cd linux-i386
> ../AROS/configure—enable-debug=stack,symbols,modules
When done configuring you're ready to go:
> make
Building AROS takes some time - minutes on fast machines (e.g. 2.5 GHz quadcore), up to hours on slower machines.
The result will be AROS Linux hosted with gdb debugging enabled.
See aros.org documentation for more on compiling AROS, including more [http://aros.sourceforge.net/documentation/developers/compiling.php --enable-debug] options.
When finished, enter bin/linux-i386/AROS directory (replace "linux-i386" with your compilation target platform, e.g. linux-x86_64, etc.) inside the unpacked archive directory. This directory contains the required .gdbinit file for properly running AROS inside gdb.
> cd bin/linux-i386/AROS
Run AROS (here: with 128MB of memory) from gdb:
> gdb—args boot/aros-unix -m 128
or
> gdb—args boot/arosboot -m 128
(gdb) r
Watch the shell output - in case AROS complains about "LoadKeyCode2RawKeyTable: Loading "DEVS:Keymaps/X11/keycode2rawkey.table" failed!" you should also see some instructions on how to create a keymap table. (see link above "more on compiling", too.)
Quit gdb, and try default keymap table:
(gdb) q
The program is running. Quit anyway (and kill it)? (y or n) y
> cd ../../..
> make default-x11keymaptable
Re-run AROS, as described above. Try e.g. RAros (= right windows key) + W to open a shell. If this doesn't work you have to create a keymap table yourself, quit gdb again, and make a new keytable:
> make change-x11keymaptable
A window will open. Watch the window's title bar, and follow the instructions.
When done, re-run AROS. RAros + W should now open a shell.
Next, compile your program with gdb support.
When you start GDB is there a warning which says
warning: File "<whatever>/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to ...
If so start gdb with "-ix .gdbinit"
<pre>
Summary - In short:
* build AROS with debugging support (i.e. ./configure --enable-debug=all)
* build your application with debugging support (i.e. option -g)
* run AROS in the GNU debugger (you may use the GUI frontend "ddd" which simplifies usage a bit)
* start your application
* use the commands "findaddr" and "add-symbol-file" as written in the debugging manual
* if the debugger doesn't find the source code of your application use the "dir" command of the debugger.
</pre>
===How to use gdb===
In AROS open a shell, then (in host shell) use CTRL-Z to go into gdb. Use "b Exec_CreatePool" (one of the functions used early on by startup code in programs) to add a breakpoint, then "cont" and gdb will interrupt somewhere early during startup of "program". Use "bt" to show backtrace and "loadseg" for "??" entries. One of them will be for "program". After that you can use "disassemble program".
One thing you need to make sure is that .gdbinit you have in your build directory is the same as in source tree. It has been modified some time ago, but the build system does not refresh it - you need to copy it manually
To recap, please read our debugging [http://aros.sourceforge.net/documentation/developers/debugging.php manual]:
To detect segfaulting when loading, try...
./configure—enable-debug—with-optimization="-O2"
Because crash or no crash may depend on optimization. For newer compilers maybe this helps...
--with-optimization=-"-O2 -fno-strict-aliasing"
One way to make crashes less random (more easily reproducible) is to activate the munging of free memory in rom/exec/freemem.c which is normally commented out:
<pre>
Index: freemem.c
===================================================================
--- freemem.c (revision 34289)
+++ freemem.c (working copy)
@@ -154,11 +154,12 @@
* created with their TCB placed in the tc_MemEntry list. The workaround
* is to avoid munging when FreeMem() is called with task switching disabled.
*/
+
/* DOH! it doesn't work even this way. What's wrong???
- *
- * if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
- * MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
*/
+
+ if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
+ MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
}
</pre>
Mungwall can be turned on at runtime. Currently this works in all hosted versions. Just specify "mungwall" on kernel command line and it works. It can work on native too. In order to enable it you need to parse kernel command line, and if "mungwall" is present, set EXECF_MungWall bit in IntExecBase.IntFlags.
This needs to be done before the first AllocMem() for obvious reasons. And never reset back this flag! If you change it on a working system, you are doomed.
Hosted ports do the processing in rom/exec/prepareexecbase.c --enable-debug=mungwall option in configure still works but is going obsolete. A kludge in rom/exec/allocmem.c is responsible for this and it needs to be removed when the transition is done.
BTW, on i386-pc port it can be activated by "mungwall" argument on command line, you don't need to rebuild AROS.
New mungwall affects not only AllocMem()/FreeMem(), but also pools. I also tested it with AllocAbs(), seems to work correctly.
Runtime mungwall works on:
* pc-i386
* pc-x86_64
* linux-i386
* linux-x86_64
* darwin-x86
* linux-ppc
Works on all hosted ports, if the port itself is working.
* amiga-m68k
* Not on sam440-ppc and efika-chrp-ppc, even if they would be able to be built at moment. Does not work on (for now, need NVRAM support)
When starting my freshly rebuilt i386-linux-aros which was compiled with full debugging support I get sometimes the error "Program exited with code 0377". Add the following to your .gdbinit:
set follow-fork-mode child
Here are some of the custom AROS gdb functions (defined in ".gdbinit" file) to resolve "in ?? ()" entries in backtrace:
<pre>
#0 0xb7ffd424 in __kernel_vsyscall ()
#1 0xb7e2a657 in sigsuspend () from /lib/libc.so.6
#2 0xb7c63900 in ?? ()
#3 0xb7c640e3 in ?? ()
#4 0xb7c641e0 in ?? ()
</pre>
You can use
loadseg 0xb7c63900
loadframe 2
or
loadbt
and some others. Use "help " for a little help text. If the commands do not work try "loadkick" first.
Use "thistask", "taskready", "taskwait" to get list of AROS tasks. "bttask " shows backtrace of a task which is in ready or in wait queue and "loadseg" to resolve "??" entries in it's backtrace ("loadframe" would not work as it assume current running task).
===Native debugging tools for AROS===
to enable debugging at boot time entering the GRUB menu editing line (E key) and adding "debug=memory" to your boot line, then press Ctrl+X to complete booting.
SYS:Tools/Debug/'''Bifteck'''
Open a shell and enter the line below to run Biftek and grab the debug messages collected in RAM into a text file.
tools/debug/bifteck > ram:debug.txt
and certainly does not open a window. It is a shell tool and only dumps data located from the debug location.
It is therefore important to 'catch' that debug data as soon as possible (before it gets overridden). You should invoke bifteck at the first opportunity before doing anything else. You can use the TO option to store bifteck output to a file or you can pipe it manually to a file.
SYS:Tools/Debug/'''Sashimi''' - displays error messages
One suggestion is to do a bug() debugging. Each time bug() is executed it will be output on sashimi.
You include <aros/debug.h> and place bug("something\n"); in your source code at location though which control passes.
To get the output - open an aros shell
SYS:Tools/Debug/sashimi > RAM:out.txt
'''Ctrl C''' to end the output to the RAM Disk.
# open shell, and type
# ram: (to switch to ram drive)
# System:Tools/Debug/Sashimi > mylogfile.txt
# open AHI prefs using wanderer (or use another opened shell)
# play test sound
# close AHI prefs
# shell still open with Sashimi running: press ctrl-c to break Sashimi and return to prompt.
# in shell: copy mylogfile.txt System: (or to your required location)
SYS:Utilities/'''Snoopy''' - monitors OS function calls, run "Sashimi" to see Snoopy's output
SYS:Tools/'''WiMP''' - the Window (and Screens) Manipulation Program
You can use the -E option of gcc to find out how preprocessor macros are expanded.
===Errors===
crash in strcasecmp usually means that one of its arguments is NULL.
empty space between these two names, prossibly some invisible character
Old Amiga [http://www.amigacoding.com/index.php?title=Guru_codes&redirect=no Guru Codes]
If the crash is in intuition. Sometimes, if it relates to text, a null pointer sets it off.
an uninitialised pointer can have any address (this is a common fault).
Compiling on 64bit, Many old code would not properly typecast when doing pointer-integer conversions and thus at least throw a warning. This can easily be located and fixed.
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
* Fix (change IPTR/SIPTR back to ULONG/LONG) the few places which really rely on ULONG/LONG being exactly 32 bit. That's for things like pixel (ARGB) buffers, structs written/read to disk, colormaps, but probably not much else.
Then again, many current compilers also throw a warning when you try to assign a pointer value to an integer and the integer is possibly too small. This happens under .NET for example when a 64 bit pointer is assigned to something like an ULONG - so exactly the case which you described.
=== AI ===
<---
Model <---> Agent ---> End user
Gemini LMStudio
Qwen Comfyui
etc
Recent, self hosting on laptops, mini pcs or desktops with '''quantization''' 4bit has reduced memory requirements but still require 16Gb+ and no high end gpu
*[https://lmstudio.ai/download LMstudio single gpu],
Google Gemma 4 Model
*[ 12B QAT]
Alibaba Cloud's [https://huggingface.co/ Qwen] team series of large language models LLMs
*[https://huggingface.co/models?other=qwen3 Qwen 3], [],
*[https://huggingface.co/models?other=qwen2 Qwen 2], [https://huggingface.co/Qwen/Qwen2.5-Coder-32B qwen 2.5 Coder],
Small Claude Model
*[https://github.com/sipeed/picoclaw picoclaw]
Bigger LLMs but with settings
*[https://ollama.com/download Ollama single gpu]
*[https://github.com/ggml-org/llama.cpp/releases llama.CPP multi gpus],
*[ VLM multiple gpus],
MiniMax H3
For the full experience
#Training learning using 1+ high end GPUs at least 16GB VRAM per GPU card or 64Gb+ of unified, 16Core CPU with at least 64Gb of RAM system memory, though training can take weeks
#Inference with custom asics or GPUs
=== Linux ===
<syntaxhighlight lang="c">
/* 1. Header for your name,date,purpose of program.
2. Pre-processor directives. This will include the #includes for files you want to add.
3. Includes for function prototypes if necessary.
4. Main()
Create Pointers for Libraries and any Window you want to open.
5. Open necessary libraries.
6. Check if open exit program if fail.
7. Open a window exit program if fail.
8. Add your program
9. Close Window
10 Close Libraries.
11 End Program. */
/* standard os included headers <.h> */
#include <dos/dos.h>
#include <dos/dosasl.h>
#include <dos/dosextens.h>
#include <dos/exall.h>
#include <dos/rdargs.h>
#include <exec/memory.h>
#include <exec/types.h>
#include <utility/utility.h>
#include <intuition/intuition.h>
/* define as unresolved external references (proto/xxx.h) and compiler will link to auto(matically) open library */
#include <proto/arossupport.h>
#include <proto/dos.h>
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/graphics.h>
#include <proto/cybergraphics.h>
#include <proto/datatypes.h>
#include <proto/icon.h>
#include <workbench/workbench.h>
#include <workbench/icon.h>
#include <datatypes/pictureclass.h>
#include <proto/muimaster.h>
#include <libraries/mui.h>
#include proto/bsdsocket.h
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* my own headers ".h" */
#define CTRL_C (SetSignal(0L,0L) & SIGBREAKF_CTRL_C)
#define isDir(fib) ((fib)->fib_DirEntryType >= 0)
#define ARG_TEMPLATE "FILE/A,ALL/S,QUIET/S,W=WIDTH/N,H=HEIGHT/N,M=METHOD,DEFTOOL"
int main(void)
{
return retval;
} /* main */
</syntaxhighlight>
If you used c++, there is not yet c++ support in our shared library system.
The easiest way to create / compile a shared library would be to use the AROS build system but the libraries can be created manually. You have to create a ROMTAG structure and some header files.
A shared library is built with the %build_module macro with a line like this:
%build_module mmake=MetaTarget modname=mylib modtype=library files=SourceFiles
This macro can build different AROS module types, like devices, Zune classes, HIDDs, etc.
<pre>
##begin config
version 1.0
##end config
##begin functionlist
void func1(LONG a, LONG b)
int func2(char *s, ULONG a)
##end functionlist
</pre>
There is more [http://aros.sourceforge.net/documentation/developers/sys-dev/libraries.php here]
Alternatively,
<pre>
#ifndef LIB_H
#define LIB_H
#define __NOLIBBASE__
#include <exec/libraries.h>
#include <exec/semaphores.h>
#include <dos/dos.h>
#ifdef __AROS__
//#include <aros/debug.h>
#define reg(x)
#define __saveds
#endif
#define USESYSBASE struct ExecBase *SysBase = Base->My_SysBase;
struct MyTestBase
{
struct Library My_Test_Lib;
struct ExecBase *My_SysBase;
APTR My_SegList;
int testint;
};
#endif
</pre>
<pre>
/*--------------------------------------------------------------------------*/
/* Resident header written for mytest.library */
/*--------------------------------------------------------------------------*/
#define __NOLIBBASE__
#define VERSION 1
#define REVISION 0
#define LIBHEADNAME mytest
#define LIBHEADNAMESTR "mytest"
#define COMPDATE "04.10.2015"
#define VERS "1.0"
#define LIBBASETYPE struct MyTestBase
#define LIBBASETYPEPTR LIBBASETYPE *
#include <aros/debug.h>
#include <exec/exec.h>
#include <proto/exec.h>
#include <exec/resident.h>
#include <exec/nodes.h>
#include <exec/libraries.h>
#include <aros/symbolsets.h>
#include "lib.h"
const UBYTE lib_name[] = LIBHEADNAMESTR ".library";
const UBYTE lib_id[] = "$VER: " LIBHEADNAMESTR ".library " VERS " (" COMPDATE ") by ALB42\n";
extern const APTR FuncTable[];
AROS_UFP3 (LIBBASETYPEPTR, InitLib,
AROS_UFPA(LIBBASETYPEPTR, Base, D0),
AROS_UFPA(BPTR, seglist, A0),
AROS_UFPA(struct ExecBase *, sysbase, A6)
);
static struct LibInitStruct
{
IPTR LibSize;
const APTR *FuncTable;
const struct DataTable *DataTable;
APTR InitFunc;
}
const LibInitStruct =
{
sizeof(LIBBASETYPE),
FuncTable,
NULL,
(APTR)InitLib
};
const struct Resident romtag =
{
RTC_MATCHWORD, /* match word */
(APTR)&romtag, /* back pointer */
(APTR)(&romtag + 1), /* skip pointer */
RTF_AUTOINIT | RTF_EXTENDED,/* flags */
VERSION, /* version */
NT_LIBRARY, /* type of module */
0, /* init priority */
(STRPTR)lib_name, /* module name */
(STRPTR)lib_id + 6,
(APTR)&LibInitStruct,
REVISION, NULL
};
AROS_UFH3 (LIBBASETYPEPTR, InitLib,
AROS_UFHA(LIBBASETYPEPTR, Base, D0),
AROS_UFHA(BPTR, seglist, A0),
AROS_UFHA(struct ExecBase *, sysbase, A6)
)
{
AROS_USERFUNC_INIT
Base->My_SegList = seglist;
Base->My_SysBase = (APTR)sysbase;
Base->testint = 0;
USESYSBASE
bug("InitLib\n");
if (!set_open_libraries())
{
set_close_libraries();
return NULL;
}
return Base;
AROS_USERFUNC_EXIT
}
AROS_LH1(LIBBASETYPEPTR, LibOpen,
AROS_LHA (ULONG, version, D0),
LIBBASETYPEPTR, Base, 1, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibOpen\n");
(void)version;
Base->My_Test_Lib.lib_OpenCnt++;
return Base;
AROS_LIBFUNC_EXIT
}
__saveds APTR LibExpungeInternal(LIBBASETYPE *Base reg(a6))
{
USESYSBASE
APTR seglist;
bug("LibExpungeInternal\n");
if (Base->My_Test_Lib.lib_OpenCnt)
{
return 0;
}
seglist = Base->My_SegList;
Forbid();
Remove((struct Node*)Base);
Permit();
FreeMem((APTR)Base - Base->My_Test_Lib.lib_NegSize, (LONG)Base->My_Test_Lib.lib_PosSize +
(LONG)Base->My_Test_Lib.lib_NegSize);
set_close_libraries();
return seglist;
}
AROS_LH0(BPTR, LibClose,
LIBBASETYPEPTR, Base, 2, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibClose\n");
if (!(--Base->My_Test_Lib.lib_OpenCnt))
{
return LibExpungeInternal(Base);
}
return 0;
AROS_LIBFUNC_EXIT
}
AROS_LH1(BPTR, LibExpunge,
AROS_LHA(LIBBASETYPEPTR, Base, D0),
struct ExecBase *, sysBase, 3, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
(void)sysBase;
USESYSBASE
bug("LibExpunge\n");
return LibExpungeInternal(Base);
AROS_LIBFUNC_EXIT
}
AROS_LH0(LIBBASETYPEPTR, LibReserved,
LIBBASETYPEPTR, Base, 4, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibReserved\n");
return 0;
//return (APTR)LibReserved();
AROS_LIBFUNC_EXIT
}
// Space for your own functions
// do not forget to update the FuncTable as well
AROS_LH1(int, TestFunction,
AROS_LHA(int, TestValue, D0),
LIBBASETYPEPTR, Base, 5, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("TestFunction\n");
Base->testint = TestValue + Base->testint;
return Base->testint;
AROS_LIBFUNC_EXIT
}
// Functable -> Table of all functions in the Library, in right order - important!
const APTR FuncTable[] =
{
&AROS_SLIB_ENTRY(LibOpen,LIBHEADNAME,1),
&AROS_SLIB_ENTRY(LibClose,LIBHEADNAME,2),
&AROS_SLIB_ENTRY(LibExpunge,LIBHEADNAME,3),
&AROS_SLIB_ENTRY(LibReserved,LIBHEADNAME,4),
&AROS_SLIB_ENTRY(TestFunction,LIBHEADNAME,5),
(void *)-1
};
// AutoInit stuff
void *__PROGRAM_ENTRIES__symbol_set_handler_missing;
void *__LIBS__symbol_set_handler_missing;
// end of AutoInitStuff
</pre>
Makefile
<pre>
VPATH =
CFLAGS = -O2 -g -fomit-frame-pointer -W -Wall -Wno-parentheses
CC = i386-aros-gcc
LD = i386-aros-gcc
LDFLAGS = -nostartfiles -Wl,-Map -Xlinker linkermap
LIBS = -lautoinit -llibinit
STRIP = i386-aros-strip --strip-unneeded --remove-section .comment
OBJS = lib_header.o
all: mytest.library
mytest.library: $(OBJS)
$(LD) $(LDFLAGS) $^ $(LIBS) -o $@
lib_header.o: lib_header.c lib.h
clean:
rm -f *.o *.library *.ppu testlibrary linkermap
</pre>
Porting UNIX library to AROS - dealing with static variables which would make it easy to port such libraries to AROS, keeping the benefits of sharing them on disk, but losing the benefit of actually sharing them in memory.
Our problem arises by the fact we want to share the actual code (the .text section of the library) and constant data, but we need to have per-task .bss and .data sections. If we get rid of our intention to share the .text and .rodata sections, things get quite easy: just load and relocate the library whenever it's open, by whoever it's open. It's like statically linking the library into the executable, except that the final linking is done at runtime.
In the V0 branch, in workbench/hidds/hidd.nouveau was committed pcimock.hidd. This is a pci driver that allows mocking real PCI devices under linux-hosted. The main idea is to be able to run the real hardware driver under linux-hosted with as little changes as possible (some changes will always be needed though unless someone wants to write complete device simulator) so that driver's code paths can be executed and debugged using gdb. This was a very helpful capability when porting nouveau. Now it is externalized from nouveau.hidd and can be used by other people porting drivers. The pcimock.hidd can currently mock 4 different nvidia cards, 1 AGP bridge and also mock irq.hidd.
What's the difference between this driver and the pcilinux.hidd? I used that one to develop many different HW drivers for aros. As far as I understood the intention of pcilinux.hidd it is supposed to get access to real hardware that is running under linux. The pcimock.hidd goal is to mock the hardware. For example my dev box is a PCIE system, but I still would like to run the AGP codes paths in nouveau under linux-hosted to check if they don't seg fault. The other case would be to run codes paths for hardware that the developer does not have (Fermi cards in my case). In the case of pcimock.hidd, the AROS driver's code paths will execute as long as you add proper mocking (for example fill in PCI config area or values for registers in BARs). This is an advantage for ported drivers - the code should already work (since it worked on another system) but there might have been mistakes made during porting which can be detected easily with gdb.
In case you are writing your driver from scratch, pcilinux.hidd hidd will give you more advantage, since you can actually access the real hardware from linux-hosted.
== Misc ==
===APL, MPL, BSD, GPL and LGPL Licences===
The majority of AROS sources in licensed under AROS Public License ([http://aros.sourceforge.net/license.html APL]) which (to a degree) protects us from someone taking AROS sources and not contributing improvements back (for example MorphOS took some AROS source and then contributed changes back)
It is written to allow the use of AROS code in other open source or commercial projects without exception whilst providing a mechanism so that improvements/additions can find their way back to the original source in one form or another.
There are "3rd" party applications used by AROS that do not fall under this license, which are an extra "Contrib" download for convenience.
Anyone can port GPL-ed network and sound drivers as AROSTCP and AHI are GPLed. Direct using (porting) [http://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs GPL]-ed code in other parts of AROS (gfx, sata, usb) is not possible because AROS license is not compatible with GPL. You need to utilize permissive licensed code like BSD or MIT/X11.
BSD and MPL license are the closest to APL.
APL however is not so compatible with LGPL/GPL.
LGPL case - you cannot statically combine APL code with LGPL. You can, however thank to LGPL being "lesser" restrictive, use LGPL dynamically loaded libraries in APL codes.
GPL case - you cannot combine APL code with GPL in any way if there is no explicit clause by GPLed code authors allowing that. If you do combine APL with GPL in "bad" ways described above - you have a problem (you violate GPL). This problem might result in everything in AROS becoming GPL or everything running or AROS becoming GPL (here I'm not sure really). The other scenario is that you are not allowed to legally distribute such code at all. To be honest I have grasped how to violate GPL, but I'm still no exactly sure what happens when you violate it (but I'm sure it's not anything nice)
GPL software can run on top of non-GPL "system components" (see system components exception of GPL), but the other way around (non-GPL using GPL) leads to problems. This means applications like scout, or Quake III are ok (in the majority of cases).
Theres no reason GPL drivers cannot be ported - but they cant be in AROS's ROM (requires linking APL code with GPL), nor can AROS depend on them (e.g. they must use existing apis).
If they are launched (dynamically linked) by a user action that is allowed. It is also allowed to distribute such binaries together for convenience.
GPL is not about statical or dynamic linking but is about executing process and function calls.
These components - SFS, isapnp, Zune texteditor, AHi, network drivers, freetype, openuirl, BHFormat, Edit and (" dynamically loaded libraries") are LGPL, not GPL. Mesa/Nouveau stuff is MIT. Some user tools are GPL though.
'''AROS (system)'''
* system components (libraries/classes/devices/etc) cannot be GPL as they would propagate GPL to complete system as well as GPL is not compatible with MPL from which APL is based
* system components can be LGPL v2 or a permissive license (MIT/BSD)
* system applications can be anything you like (but still I would prefer APL or permissive so the code can be reused if needed)
'''Contrib:'''
* no rules - contrib does not impact AROS system since nothing in AROS system depends on contrib.
About stealing code: The chances of this happening is exactly the same whether we are APL or GPL. If any closed-source option wanted to do it, there is no one that can validate otherwise. MorphOS has used some AROS codes, but contributed changes back.
The rationale behind APL is that while it guarantees that the original developer will get the improvements back (to a certain degree - file based), the person who uses the codes does not have to open his original codes. BSD does not guarantee that the original developer gets improvements. GPL requires the person using the codes to open his codes as well.
The copyright holders needs to stay - we just need information from them that the codes are available under APL (for example a checked-in file like in case of Poseidon). We don't do transfer of copyrights.
; Ultimately what can and cannot be done is up to the author(s) - not the licence.
===AROS source code tree===
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-trunk.txt
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
Found this interesting (non-GPL) licensing 'anomaly' - to keep in mind for distributors.
Programs that lose their license if sold ("non-profit only" licensed):
contrib/aminet/comm/term/TinyTerminal
contrib/aminet/dev/basic/bwBASIC
contrib/aminet/text/edit/xdme
contrib/fish/aroach
contrib/fish/lotto
contrib/fish/shuffle
contrib/fish/touch
+ cdvdfs.
Here is a list of all the GPL/GPLv2/GPLv3 licenses fossology found, what have explicit licenses in their comments.
excluded LGPL, BSD/GPL dual licensed and programs (such as Prefs/Edit and BHFormat)
<pre>
AROS/rom/dbus/include/ AFL_v2.1 ,GPL_v2+ (supposedly AFL < 3 is GPL incompatible)
AROS/workbench/classes/zune/betterstring/include/ GPL_v2+
AROS/workbench/classes/zune/texteditor/include/ GPL_v2+
AROS/workbench/classes/datatypes/gemimage/ GPL_v2+ GPL
AROS/workbench/classes/datatypes/degas/ GPL_v2+
AROS/workbench/libs/openurl/README: GPL
AROS/workbench/network/smbfs/documentation/ GPL_v2
AROS/workbench/network/smbfs/source_code/ GPL_v2+
AROS/workbench/network/stacks/AROSTCP/bsdsocket/kern/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/mmakefile.src conf.h GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/sys/ CMU ,GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/net/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/api/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/conf/conf.h: GPL_v2
AROS/workbench/network/stacks/AROSTCP/netinclude/net/radix.h: CMU ,GPL_v2
AROS/workbench/devs/AHI/AHI/ GPL_v2+
AROS/workbench/devs/AHI/AddAudioModes/ GPL_v2+ AROS/workbench/devs/AHI/AddAudioModes/COPYING: GPL
AROS/workbench/devs/AHI/Docs/texinfo.tex: GPL_v2+
AROS/workbench/devs/AHI/COPYING: GPL
AROS/workbench/devs/AHI/Drivers/EMU10kx/ GPL_v2+
AROS/workbench/devs/AHI/AHI-Handler/ GPL_v2+
AROS/workbench/devs/networks/rtl8029/ GPL GPL_v2+
AROS/workbench/devs/networks/pcnet32/ GPL GPL_v2+
AROS/workbench/devs/networks/ppp/LEGAL: GPL
AROS/workbench/devs/networks/atheros5000/ GPL_v2+
AROS/workbench/devs/networks/rhine/ GPL_v2+
AROS/workbench/devs/networks/nForce/ GPL_v2+ GPL
AROS/workbench/devs/networks/prism2/ GPL GPL_v2+
AROS/workbench/devs/networks/fec/LEGAL: GPL
AROS/workbench/devs/networks/rtl8139/ GPL GPL_v2+
AROS/workbench/devs/networks/etherlink3/ GPL GPL_v2+
AROS/workbench/devs/networks/intelpro100/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8169/ GPL GPL_v2+
AROS/workbench/devs/networks/emac/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8168/ GPL GPL_v2+
AROS/workbench/devs/networks/realtek8180/ GPL_v2+
AROS/workbench/devs/networks/via-rhine/via-rhine.c: GPL_v2+
AROS/workbench/devs/networks/via-rhine/ GPL GPL_v2+
AROS/workbench/devs/networks/e1000/ GPL_v2
AROS/workbench/devs/networks/sis900/ GPL GPL_v2+
</pre>
AHI: it has special provisions (COPYING.DRIVERS). The library is LGPL, preferences software is GPL and drivers can be anything without breaking GPL/LGPL.
Network stack: well, we are long overdue for a new, IPv6 enabled network stack anyway, anyone interested? ;) Seriously though it seems like the glue code is GPL and as all the drivers. However some of the drivers are our own code, so they could be relicensed to LGPL.
Same filter as the AROS trunk list. These should all be libraries or plugins - no programs.
<pre>
contrib/regina/utsname.h: GPL_v2+
contrib/mui/classes/nlist/include/default-align.h: GPL_v2+
contrib/mui/classes/nlist/include/amiga-align.h: GPL_v2+
contrib/mui/classes/BWins/include/MUI/BWin_mcc.h: GPL
contrib/mui/classes/BWins/include/BWin_private_mcc.h: GPL
contrib/mui/classes/BWins/COPYING: GPL_v2
contrib/mui/classes/BWins/MCC_BWins.readme: GPL_v2
contrib/mui/classes/thebar/include/default-align.h: GPL_v2+
contrib/mui/classes/thebar/include/amiga-align.h: GPL_v2+
contrib/gfx/libs/wazp3d/LEGAL: GPL
contrib/gfx/libs/wazp3d/Wazp3D.readme: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.c: GPL
contrib/libs/mpega/ GPL_v2+
</pre>
http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
===Types===
On AROS following rules apply:
<pre>
1. BYTE/UBYTE is 8bit, WORD/UWORD is 16bit, LONG/ULONG is 32bit, QUAD/UQUAD is 64bit, the types are comparable with stdint types (int8_t, int16_t, int32_t, int64_t)
2. IPTR/SIPTR are integer types large enough to fit pointer, that is sizeof(IPTR) = sizeof(APTR) = 4 on 32bit system, and = 8 on 64bit system
3. ti_Data in TagList is large enough to hold a IPTR/APTR type.
4. never store a pointer in integer of type LONG. It may work (if the pointer has upper 32bits clear), but does not have to. Compiler should warn you about that.
5. If you are unsure about point 4, allocate your memory with MEMF_31BIT flag set. But don't expect that AROS internals will do the same.
</pre>
point 4 is actually important.
* UBYTE/BYTE for 8bit
* UWORD/WORD for 16bit
* ULONG/LONG for 32bit
* UQUAD/QUAD for 64bit
<pre>
UBYTE Unsigned 8 bit integer variable (byte).
BYTE Signed 8 bit integer variable (byte).
UWORD Unsigned 16 bit integer variable (word).
WORD Signed 16 bit integer variable (word).
ULONG Unsigned 32 bit integer variable (longword).
LONG Signed 32 bit integer variable (longword).
FLOAT 32 bit IEEE floating point variable.
UQUAD Unsigned 64 bit integer variable.
QUAD Signed 64 bit integer variable.
DOUBLE 64bit IEEE floating point variable.
BOOL Boolean variable, TRUE and FALSE are also defined in exec/types.h.
VOID Void.
APTR A generic pointer for multiple purposes - Arrays.
STRPTR A pointer to a null-terminated string.
IPTR Really important in AROS, the only way to declare a field that can contain both: an integer or a pointer.
</pre>
if you want to write really portable app, you may be interested in standard datatypes defined in C99: int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, intptr_t, uintptr_t. They are all defined in inttypes.h include file.
In exec/types.h the following short-cuts are typedef'd. They are used often in AROS, so you should nearly always include exec/types.h and soon only they will be removed from sys/_types.h include, all types are now defined in include files named aros/types/xxx.h.
(Preparation for C library split; sys/xxx.h include will only be available there when compiling with POSIX C library)
Compiler specific types, like int and long might change their size. In case of AROS, similar to linux, int remains 32 bit whereas long grows to 64 bits in size.
If you use Amiga-like data types, i.e. BYTE/UBYTE, WORD/UWORD, LONG/ULONG and QUAD/UQUAD or the C99 standard types (uint8_t and so on, see stdint.h include) then you should have less issues to solve than by using types without size guarantee.
Of course, all pointers grow to 64 bytes using 64bit cpu. Most of the code can be just recompiled and will work. In rare cases, where e.g. pointers are casted to integers, a special care must be taken. Especially in the cases, where pointer is casted to LONG/ULONG (this code will break on 64 bit AROS) e.g. '#define IPTR ULONG'.
With compiler delint patches which the majority of them are simple casting issues to make the compiler happy. Notice some of the changes involve introducing double casts. In very recent versions of GCC. Yes, the bulk of the double casts are for converting 32 bit addresses (ie from a 32 bit PCI DMA address register) to a 64 bit pointer. First cast is to IPTR (to expand to 64 bits, and prevent sign extension if the address is above 0x7FFFFFFF), and then to APTR.
ULONG != IPTR except on 32bit .. so if you need to store pointers make sure and use IPTR and not ULONG (which some old code does). For this reason things like Taglist elements are 64bit (since the tag data can be a pointer).
If your passing items on the stack you should use the STACKED attribute to make sure they are correctly aligned (on 64bit all items on the stack are 64bit..)
There is more issues like using "== 0L" causes problems.
===Endian===
*BE
*LE
Use the macros from <endian.h> instead making a guess based upon architecture defines
<pre>
#if _BYTE_ORDER == _BIG_ENDIAN
#elif _BYTE_ORDER == _LITTLE_ENDIAN
#else
+
#error <whatever.h> - Byte order for this architecture is unsupported!
</pre>
===SVN and GIT===
If you want to help develop AROS OS itself, you can
* view current GIT/SVN entries [http://aros.sourceforge.net/ Aros Org website] or [https://github.com/aros-development-team/AROS Github], [https://github.com/ezrec older ezrec mirror], [https://github.com/michalsc/AROS/ older mirror], [https://trac.aros.org/trac/timeline TRAC], [],
* awaiting update [http://repo.or.cz/w/AROS.git git repo], [http://www.ohloh.net/p/aros/commits ohloh] or [https://svn.aros.org/svn/aros/trunk/ svn repo] and access [Git version git://repo.or.cz/AROS.git here],
* deprecated [https://www.gitorious.org/aros/aros/commit/a7fda9e ARIX commits] or [https://gitorious.org/aros/aros GIT old]
If you have SVN access (early 2015 introduced a new SVN server, create a new account at trac aros org) and/or have obtained the source [http://aros.sourceforge.net/download.php AROS site] - you can compile the current build tools/environment using:
> make development
and follow this [http://aros.sourceforge.net/documentation/developers/compiling.php#building procedure] or [https://github.com/apiraino/aros_guide Guide]
https://trac.aros.org/trac#Developing
If you plan on contributing back changes, please post information about such changes first on this [http://mail.aros.org/mailman/listinfo/aros-dev/ mailing list] for more experience developers can validate whether they are correct.
Then there are the nightly build machines. They svn update before the build and run configure as one of the next steps. autoconf might be added to the nightly build scripts.
Our build relies on packages downloaded from Internet (SDL for example) - it always worked this way. The minimal requirement (when just building core AROS) is binutils and gcc. If you build contrib as well, you need many more packages to be downloaded.
https://gitorious.org/aros/aros/commits/crosstools-II
git://gitorious.org/aros/aros.git
Branch crosstools-II there is only one commit on top of ABI_V1
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-x86_64
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-x86_64
</pre>
and
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-i386
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-i386
</pre>
build OK.
:''More information: [[Aros/Developer/Maintainer|AROS Maintainer Docs]]''
===SDI Calls===
Integrate the 'SDI'-headers to allow easier porting to all amiga-like platforms.
<pre>
PUTCHARPROTO( PutTheChar, char c, struct SPrintfStream *s )
{
// REAL CODE
}
</pre>
have "SDI_compiler.h" and "SDI_hook.h" included
its more organized like
#include SDI/SDI_hook.h
than
#include SDI_hook.h
option 1 --- i also use when back porting from amiga's..
<pre>
#ifdef __AROS__
#include SDI/SDI_hook.h
#else
#include SDI_hook.h
#endif
</pre>
also
you can add the -i include/sdi/ location if you do not want to add or edit any files.
Defining HOOKPROTO to IPTR name(struct IClass * cl, Object * obj, Msg msg); solved the problem
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order. examine compiler/include/aros/symbolsets.h (AROS_LIBREQ)
compiling mui stuff for aros setting -std=gnu99 is necessary (i have had -std=c99 most of the time).
===Locale with Flexcat===
Most languages have a locale, but not every app is localized, the only thing needed is to translate the "catalog" files. It is a case of locating the correct catalog and saving the translated version.
For every app that lacks of your language catalog and is localized anyway, you should find (in the sources) files related to locale:
* file.cd = catalog descriptor, contains base msg, with internal language (usually english)
* language.ct = catalog translation, contains every translated msg, indexed as in the file.cd.
Compare with other localized apps... Then, "make my_app-catalogs" should create and install your translated catalogs. ex : for, saying, sys:prefs/wanderer:
on root of AROS sources, type:
"make workbench-prefs-wanderer-catalogs"
then (if you changed the .cd file):
"make workbench-prefs-wanderer"
For apps not localized, you have to adapt their code to support it, if it is possible...
noticed the original .cd file has many (//) strings at the end of any voice, so added them also to the .ct file.
That (//) is only for cd files. I'm highly recommending to use FlexCat for updating ct files, e.g. like this:
flexcat app.cd deutsch.ct newctfile deutsch.ct
You'll get error checking and new entries are marked in the resulting ct file.
When editing .ct files, only change those lines containing translation and perhaps version string, nothing else.
The rest is up to the relevant tool, flexcat. In order to update your translation, type in the following in your shell:
flexcat xyz.cd xyz.ct NEWCTFILE xyz_upd.ct COPYMSGNEW
This way you will not only make sure you have correct translation file but flexcat also pre-fills newly added strings with "*** NEW *** text. Even better tool for checking cd/ct/catalog files is catcheck, but this one is sadly only available for AmigaOS/68k...
Some languages have variations, like portugues from portugal and portugues from brasil differs...
This is the way to go. I will have a look at language files, but basically if those two languages differ you have to do two separated set of translation files, yes.
(you could create a brazilian slang language localization too)
* At system level localization for one language is a dot language file.
(ex: locale:languages/klingon.language)
* At app level localization is a dot catalog file
(ex: locale:catalogs/klingon/system/libs/dos.catalog)
* At sources level, the dot ct file, and "$language" dot cd files and some building framework.
(ex: catalogs/my_app.ct catalogs/klingon.cd catalogs/mmakefile.src support.c support.h)
Please, use Flexcat to generate CT files:
FlexCat wanderer.cd NEWCTFILE=deutsch.ct
Then fill the first 2 lines with something useful:
<pre>
## version $VER: wanderer.catalog 1.1 (9.2.2006)
## language deutsch
</pre>
You can even update the CT-File: (This adds the new strings)
FlexCat wanderer.cd deutsch.ct NEWCTFILE=deutsch.ct
To compile a catalog you only need the .cd file and your translation (.ct file):
FlexCat multiview.cd deutsch.ct CATALOG=MultiView.catalog
[http://murks-ide.svn.sourceforge.net/viewvc/murks-ide/trunk/src/Catalogs/flexcat_linux?revision=100 Linux version of FlexCat]
: [http://aros.sourceforge.net/documentation/developers/app-dev/localization.php#localization-for-non-developers More information]
A script which compares the required version (i.e. the version which an application/module etc. tries to open) with the version of the existing CT files. The result is in this table:
https://github.com/aros-translation-team/translations/wiki/Progress
The following cases are highlighted:
n/a i.e. CT misses at all
version in existing CT file is lower than the required version
It might be a bit difficult to participate if you haven't worked with Git before but alternatively you can send your CT files to our Slack channel.
When the ct file has been generated via flexcat (flexcat keyshow.cd NEWCTFILE=spanish.ct) it has the following header:
---------------------------------------------------------------------------------------------------------------
## version $VER: <name>.catalog <ver>.<rev> (04.01.2021)
## language nolanguage
## codeset 0
;
---------------------------------------------------------------------------------------------------------------
Those values <ver>.<rev> are the version and revision of the CT file for the languaje or are the values of the application being localized?
The <ver> part must match with version which the application tries to open. You can find the value either in the column "Required Version" in the table which I've linked above, our you can look in the git repository. For keyshow it would be https://github.com/aros-translation-team/keyshow. You can find in the file "catalog_version.h" the right version number.
The <rev> part starts for new CT files with 0 and should be increased every time the CT file is updated.
Updated several files and created a few more that were missing on the spanish catalog.
The catalogs are in Git repositories at https://github.com/aros-translation-team
a) You tell me your Github user name. I'll invite you. You can work directly with the Git repositories.
b) You create Github forks of the catalog repositories and create pull requests.
c) You send the CT files to mrustler gmx de
===C Utils Misc===
The AROS source uses at several places the __DATE__ macro to fill the date entry of a $VER tag. Problem is that c:version doesn't understand that date format (e.g. "May 21, 2011"). As a result the output of e.g.
> "version c:shell full" contains "(null)". Is extending the version command to understand the format of __DATE__ the right solution for that problem?
AmigaOs compilers should use __AMIGADATE__ macro or similar form, if it isn't implemented it could be emulated in makefile: -D__AMIGADATE__=\"$(shell date "+%d.%m.%Y")\"
BTW. I think DD.MM.YYYY is better format than "Month DD YYY" because "Month DD YYY" is not localized in any way.
"strnicmp" shouldn't work with NULL pointers
The Situation:
compiled a linklib using c++ object files (using the c++ cross compiler).
compiled a C stub that uses the linklib (using the c++ cross compiler).
Try to link them together (using the c++ cross compiler) with C object
files (using the normal target c compiler) that need to use -nostartup
= cant do because using the c++ files pulls in arosc (for stdio etc.) -
so wants to have the autoinit stuff present.
What can I do about this??
If it is possible to manually open it then what do I need to do exactly?
=== ENV ===
The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact. However in some cases (like this one) it is not required.
99% of the time that statement is true (not required) for pretty much every file in ENV: or do people change their default icons - and prefs settings - every boot?
There seem to be a bad habit of late with developers changing things to reflect their own personal preference when the change isn't actually necessary - It would be nice if people could refrain from doing that in the tree without at least discussing it on the dev-list first (and with good reasoning unless they committed said work in the first place..)
We're not keen on the pollution of the "S:" dir: it's meant to be for scripts. What's wrong with "ENV:"?
Only the fact that it takes up RAM. I understand that for PCs with several gigabytes of RAM this is
irrelevant. But let's remember about other machines. The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact.
However in some cases (like this one) it is not required.
How about implementing in the style of HappyENV then? RAM-disk handler that falls through to reading from ENVARC: if there is no such file stored in it already. Removes RAM usage for unchanged files, removes the need to copy ENVARC to ENV in startup-sequence.
Shouldn't be too hard to make from AmberRAM, or even just extend AmberRAM to provide this service.
Is it feasable to build a special version of AmberRAM handling ENV: that will try and copy the requested file from ENVARC: if it isnt found in ENV: ?
Additionaly it could mark closed "files" as untouched - and expunge them from ENV: after a period of time to free up additional RAM:, or when the system is running low on free memory?
Silenty disappearing files may not be a good plan. Would be nice if the following would work:
ASSIGN :ENV SYS:Prefs/Env-Arc ADD
ASSIGN :ENV RAM:ENV ADD
Where new files put in ENV: end up in RAM:ENV, and opening files looks in RAM:ENV first, then SYS:Prefs/Env-Arc
Well - that's essentially what im proposing but without the assigns - or need for a RAM:ENV directory.
Adding it as a feature of AmberRAM sounds like the most memory efficient way (one handler to load in RAM) but that's only if it is possible to make it handle ENV: additionally to RAM:, and if it is even possible to add the proposed functionality (...and how to make it enable it when accessing ENV:).
===(AS)MP support===
If one has to recompile software for SMP multi core, is there any thing special one has to do to get software to run?
Use task.resource if you need to query information about what tasks are running, and clear msgports completely when they are allocated.
Most code should not need Forbid. Use Semaphores, Messages etc. to sync your own code.
Accessing system structures is a different thing. Use the proper API whenever possible.
How single structures will be protected in the future is still a moving target, at least it is not documented. And you should never use undocumented stuff
Ideas on for SMP multi-core
Another suggestion is ... Forbid/Permit function calls are meant to halt multitasking so as no other task could intervene with what ever the calling task is doing, e.g. setting semaphores. Disable/Enable calls are meant to halt interrupts and as a side effect they also halt task switching.
One option is to make it compulsory to protect shared resources with semaphores and forbid the use of simple Forbid() calls as to protect something. Setting semaphore should be done if possible with atomic instructions (check and alter in one instruction). Or make the second concurrent ObtainSemaphore call halt the second calling task and force if possible a task switch which ever gives better results.
Semaphores could store the owning tasks task pointer instead of boolean to make things easier.
As long as the CPU initiates the DMA transfers through the OS, and the OS ensures that the transferred memory is within the region accessible to the user initiating the transfer, everything is fine. The CPU is the conductor, and the CPU by that has the control of which DMA transfer is initiated and which is not.
All you need to do is to write device drivers reasonable. Hint: CachePreDMA and CachePostDMA exist.
All the Os has to do is to verify that the memory regions to be transferred are valid, and prohibit direct access to the DMA control registers from user space. None of these algorithms imply huge costs.
The current OS design doesn't really allow virtual memory in first place, Forbid() is again the problem.
[http://www.tbs-software.com/guide/index.php?guide=autodocs.doc%2Fmemory.doc&node=1 memory.library API] seem to low level. IMHO the programs should not know how the swapping is implemented. I would just go for one new memory flag
MEMF_SWAPPABLE that indicates that a certain memory region or a whole memory pool won't be accessed during Forbid()/Permit() etc. It only solves part of the problem, it only implements virtual memory and not memory protection. For the latter you need to be able make certain memory inaccessible by other programs, some memory read-only for one task and read-write for other tasks, etc. And I think this should be done in the same Address Space in order to avoid you constantly need to swap between different address spaces.
So to summarize, if there are programs using this API we may provide a wrapper layer to get them working but I am not convinced this API should be the reference API with whom to provide VM to AROS programs.
=== Variadic ===
variadic functions (i.e. functions with an arbitrary amount of arguments).
<pre>
#include <stdarg.h>
[...]
char * STDARGS GetKeyWord(int value, char *def, ...)
{
[...]
va_list va;
[...]
va_start(va, def);
[...]
va_end (args);
</pre>
Please keep with using stdarg rather than having va casted to a LONG * type and varargs handled manually. Doing so, prevents tons of casting, where a simple va_arg can be used. So, string = *((char **) args) instead of string=va_arg(va, char *).
<pre>
#include <stdio.h>
#include <stdarg.h>
int printf (const char * format, ...)
{
int retval;
va_list args;
va_start (args, format);
retval = vfprintf (stdout, format, args);
va_end (args);
fflush (stdout);
return retval;
} /* printf */
</pre>
Couldn't find varargs.h or stdarg.h. and have no use for AROS_SLOWSTACKHOOKS or AROS_SLOWSTACKTAGS.
GCC looks for stdarg.h in a different place:
/bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/include/stdarg.h
Here is a path for a "normal" header:
bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/../../../../i386-aros/sys-include/aros/system.h
The use of vararg.h isn't supported by newer gcc versions. If you want your code to run on architectures that pass part of variadic arguments in a number of registers you need to use AROS_SLOWSTACK macros. Otherwise your program will not work on powerpc and x86_64 ports.
Of course the SLOWSTACK stuff is not needed in a function that can use va_list, va_start, va_arg and va_end. It's only needed if you want to write functions like DoMethod or similar.
#include <stdarg.h>
should be enough no matter if you do cross or native compiling. If it does not work, something is wrong and should be corrected.
Stdarg.h is here, Development:lib/gcc/i386-aros/4.2.2/include/
...which is part of the compiler's default include paths. In other words, #include <stdarg.h> works out of the box, indeed. (sorry, I should have just tried it before invoking "search" or "find"...)
furthermore, myprintf() as shown above won't work, because...
printf(format, args);
...is wrong - the second argument does not match printf() prototype, it expects a argument list, but args is of type va_list (obviously) - so one has to use...
vfprintf(stdout, format, args);
...instead, just like in the original printf(), and add fflush(stdout).
additionally, one could use...
int myarg = va_arg(args, int);
...between va_start() and va_end() to access individual arguments, where each call to va_arg() returns an argument casted to the desired type (here: "int") from the list given (here: "args") and advances to the next one.
wrapping up vfprintf() and modifying the format string now is a major speedup! no more backslash-n typing! this has been haunting me for years!
On MOS and AmigaOS, the NewObject variadic function is kept in the static library. It takes most of the parameters on the stack - thanks to that the implementation of NewObject calls the NewObjectA function. Everything works perfect, and the typical MUI macros may be easily used.
This, however, is not the case when you compile for AROS. Here, NewObject is a variadic macro, not a function. Thanks such approach we do not need any custom compiler in case of systems, where the arguments of variadic functions are passed partially through registers and partially through the stack (This is the case of PPC and x86_64, this is also the reason why both OS4 and MOS require specially patched compilers).
Since NewObject is a macro, the gcc's preprocessor expects the list of macros arguments enclosed within parentheses. In MUI macros it is not the case. Imagine the following test code:
<pre>
#define foo(a,b) ((a)+(b))
int loosy_function(int a, int b)
{
return foo(a,b);
}
</pre>
This will compile and work, but the following piece of code:
<pre>
#define foo(a,b) ((a)+(b))
#define END )
int loosy_function(int a, int b)
{
return foo(a,b END;
}
</pre>
will fail with the error: unterminated argument list invoking macro "foo"
There are two ways of fixing your issue. Either create your new objects outside this huge MUI constructions, and in there use just a pointer, or get rid of the "End" macro and exchange it with "TAG_DONE)".
Badly written software is, for example, casting va_list to an APTR or even doing so as if va_list were a plain table of function arguments. Such code needs to be fixed because it has very few chances to work anywhere but on author's machine ;)
The problem is nOt that they assume sizeof(APTR) == 4, its that they often do not use APTR, and use ULONG to store pointers exclusively. If the code used APTR/IPTR as it should - most of the "problems" wouldn't exist.
It would also help if people would start using variadic arguments properly. Many coders do assumptions which shall never be made. Instead, they should consider using stdarg.h file and all the va_* functions :)
===ABI===
In the head of our SVN repository there are now only 3 directories:
<pre>
admin/
branches/
trunk/
</pre>
We have added two extra dirs there: tags and imports
As discussed when we branch ABI V0 and [[Aros/Developer/ABIv1|ABI V1]] it would also be good to introduce tags. Normally this is done in a directory in the repository called tags. Currently we don't have this directory there. (We do have branches/tags that is a hack I have done because one doesn't have write access in the top directory. I think this directory is not clean and should be removed).
The second directory I would introduce is an imports directory for implementing vendor branches as discussed in the svn [http://svnbook.red-bean.com/en/1.5/svn.advanced.vendorbr.html book]. Currently we use code from several different projects and that code is stored inside the AROS tree; we seem to have problems with keeping this code up to date and merge our changes upstream. Maintainers of up stream projects like the MUI classes etc. have complained about this (to put it lightly).
Introducing these vendor branches would make it easier to see what changes we have made and make patches to be sent upstream and make it easier to import newer upstream versions of their code. Although can't "copy" the vendor branch into the main branch because it's already there, so start with a "merge".
Yes, the first step to make the code already in the repository compatible with the vendor branches will be the most difficult. The best way to do it the following way:
* first import the version on which the current AROS code is based into the vendor branch
* then import the new version over it in the vendor branch
* finally merge the difference between these two version in the AROS code present in the repository.
For example, place NList directly under vendor and not in a subdirectory like "contrib/zune/classes".
Actually after we have a stable [http://aros.sourceforge.net/documentation/developers/specifications/drafts/abiv1.php ABIv1 (2012 or later)]. We need to move away as much as possible from the contrib directory to some other repositories. The reasons are ...
* The AROS repository should be for the core AROS code.
* other contrib projects should be tried to be compiled for all Amiga-like OSes.
* The release scheme for AROS and the other programs should not have to be aligned.
* Binary versions should be provided on aros-archives and on aminet and/or OS4Depot to install them. (Some clever programs should maybe be provided to make the life of distribution developers easier).
* avoid parallel forks of programs for AROS and the other amiga OSes.
If there is really a need for a place for hosting AROS projects we may investigate setting up such a server but then including bug tracking, governance, maillist, etc. for each project separately. I personally think there are already enough places like sourceforge, google code, savannah, etc. where people can go for hosting such projects.
==Links==
* http://amigadocs.hokstad.com
* http://amigadocs.hokstad.com/doku.php?id=dev-links
* http://www.liquido2.com/tutorial/index.html
* Amiga(TM) OS4 has a [http://www.ast-workshops.co.uk/os4pg/ workshop] page and hope to produce a [http://amigaworld.net/modules/newbb/viewtopic.php?topic_id=31117&forum=42#549091 book] soon. [http://www.solie.ca/articles/map/map.html Brief Guide].
In the future...?
*AROS 64bit - SMP, Vulkan with OpenGL compability layer
*AROS 32bit - keep for historic reasons
What would you like to see implemented in AROS?
ABIv1 completed, SMP (x86_64), SendMsg()/GetMsg() to support memory protection between target and destination, in that order. Michal Schulz and Jason McMullan have been toying with the question "What are the minimal changes needed to the AmigaOS 3.1 API to support SMP"? The answer so far seems to be "few, but subtle". For example, SysBase->ThisTask is no longer meaningful on SMP, but FindTask(NULL) is. Disable() and Forbid() are shockingly bad on performance, but adding a spinlock semaphore mode to SignalSemaphore will help new code on SMP.
Leveraging a 'common' OS with a lot of machine support (Linux, MacOS, Windows, QNX, etc.) is something that AROS has been doing for quite a long time, and it is the biggest strength of AROS. This AROS experience and programming model, in the same way the Google's Android layers on top of Linux, or MacOS X layers on top of the Darwin/BSD kernel, as a first step
* The graphics + layers subsystem could be implemented as a shim on top of a OpenGL ES implementation (ie on any modern Linux system, or the RaspberryPI's hardware, MacOS X, etc).
- This also allows every window to be on its own 3D surface with backing store, allowing Wanderer (or a Commodity)
rearrange/zoom/animate app windows without having to send a pile or refreshes to them
* Use OpenAL as the sound backend
* AROSTCP would be a thin layer over the native OS's TCP/IP stack
* dos.library, poseidon.library, and input.device would be slim shims over the native APIs
* If we move to loading all libraries' into the application's task space, instead of a single global instance of the library, this will allow SMP and MMU more easily.
- Yes, it will require a lot of work in the libraries to make this transition
- Yes, I do think it will be worth it in the end.
* A 'fat binary' install format (or, maybe LLVM bytecode) that can be 'flattend' to the target architecture on installation.
So, what would this 'AROS of the future' look like?
* AmigaOS 3.x style API, with certain 'fundamental changes' to message passing
* Uses the underlying OS' device drivers, so more AROS developer effort can go to user-visible features and bugfixes
* Allows AROS applications to run side-by-side with the OS's native apps
And why would anyone want to program on such a system?
* AROS applications would run on any system that has the AROS Framework installed
* AROS applications are pixel-for-pixel the same on all platforms.
* Develop with the knowledge that you are guaranteed OpenGL and OpenAL, and the rest of the AROS Framework
an option for mmake to dump its dependency of metatarget in a graphviz[*] input file. This should make it possible to visualize the dependencies and hopefully be inspiration for cleaning up some mess, circular or unneeded dependencies and so on.
AmigaOS gcc 9 [https://franke.ms/amiga/gcc.wiki Old versions] able to create binaries for AmigaOS and [https://eab.abime.net/showthread.php?t=93813 Upgrading gcc versions]
==References==
{{reflist}}
{{status|50%}}
{{BookCat}}
rp1z7l0g40e0odnrrd737nbn2t3t46m
4656310
4656309
2026-08-05T06:44:53Z
Jeff1138
301139
4656310
wikitext
text/x-wiki
{{ArosNav}}
==A technical overview of AROS==
Google translation [http://translate.google.com/translate?hl=en&sl=auto&tl=de&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs German], [http://translate.google.com/translate?hl=en&sl=auto&tl=fr&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs French], [http://translate.google.com/translate?hl=en&sl=auto&tl=it&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Italian], [http://translate.google.com/translate?hl=en&sl=auto&tl=es&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Spanish], [http://translate.google.com/translate?hl=en&sl=auto&tl=hi&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Hindi], [http://translate.google.com/translate?hl=en&sl=auto&tl=zh-CN&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Chinese],
[http://translate.google.com/translate?hl=en&sl=auto&tl=ru&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Russian],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pl&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Polish],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pt&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Portuguese]
{{Uncited}}
AROS,<ref>[http://aros.sourceforge.net/download.php References and sources]</ref> like AmigaOS (TM), is a [[w:Message passing|message-passing]], [[w:Preemption (computing)|preemptive]] [[w:Multitasking|multitasking]] [[w:Operating system|OS]].
It uses [[w:Reentrant (subroutine)|re-entrant]] shared libraries to save memory space.
AROS is based around an executive library kernel (Exec) and two other libraries:
* Exec (the "kernel", which is not a kernel in the modern sense),
* Intuition (graphics and GUI, integrated into the system) and
* AmigaDOS (Disk Operating System, the Metacomco's Tripos modified to work with Exec).
The design philosophies of AmigaDOS and Intuition are rather different, the former adopting a C-like API and the latter creating an [http://www.basden.demon.co.uk/amiga/amiga.oo.html object-oriented], message passing aware environment for the programmer. The system base is the only absolute address in AmigaOS (located at 0x00000004) this does differ with AROS as AROS SysBase is automatically provided (no $4) but everything else is dynamically loaded. The OS is well known for delivering high performance due to its close connections with the hardware, while simultaneously having the flexibility to support re-targetable graphics (Cybergraphics) and retargetable audio subsystems (AHI).
: Diagram showing relationships of libraries to system needed
Remember, AROS is a [http://en.wikibooks.org/wiki/Aros/Developer/ABIv1 research] operating system, and while all contributions to the base AROS code are welcome, please contact the dev list first for any core changes. Writing applications for AROS does not have this requirement.
While AROS appears and feels almost feature complete, it is still [[Aros/Developer/IncompleteAPIs|missing a small number of functions]] from the Amiga API - as well as a few implementations of [[Aros/MissingFunctionaility|core functionality]]. There are also a number of user applications that, while not strictly part of the AmigaOS 3.1 environment, need to be written.
[https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1201 This thread provides] information for setup, [http://www.aros.org/documentation/developers/index.php documentation] and whether you are interested in core OS changes and/or writing/porting software apps
*you compile directly under AROS, which can be running on either real hardware, virtual hardware
*in hosted mode under linux/window, cross-compile from that host OS (save your files as ISO-8859-15 encoding instead of UTF-8)
The repository for the [https://github.com/aros-development-team/AROS current development version ABIv1], the [https://github.com/deadw00d/AROS/tree/alt-abiv0 repository for current stable PC version ABIv0 with backported ABIv1 features is located which is used on AROS One and Icaros x86 based distros]
Any [https://github.com/aros-development-team/AROS/issues bugs / issues can be added]
We have a [https://arosdevteam.slack.com/archives/CUFV48U3H slack here], discord on [https://discord.gg/UKp9qdEBuQ Discord@AmigaDev],
==Software Development for AROS==
===Programming languages===
Apart from 'The Developer Environment', which primarily supports C/C++ code, there are other programming languages available for AROS:
'''Scripting'''
:[[Aros/User/DOS|DOS]], included in all
:[[Aros/Developer/Docs/LUA|LUA]], included in all or [http://www.airsoftsoftwair.de/en/prod_hollywood.html Hollywood]
:REXX [[Aros/Developer/Docs/Rexx|Regina (AROS' ARexx)]], included in all
:Python [ Info], included in Icaros
:Ruby [http://www.ruby-lang.org/en Info]/[http://archives.aros-exec.org/index.php?function=browse&cat=development/language download]
'''Basic'''
:[http://amos.pspuae.com/AmosProManual/contents/c1.html '''Amos Pro'''] [http://amos.pspuae.com/index.php?action=forum#1 compatible] [http://www.amigacoding.com/index.php/Main_Page commands] (all incomplete)
::[http://sourceforge.net/projects/xamos/ X-Amos]
::[http://sdlbasic.sourceforge.net/ SDLBasic] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://alvyn.sourceforge.net/ Alvyn] ([http://www.dusabledanslherbe.eu/AROSPage/MISC.14.html download])
::[[Aros/Developer/Basic/Basic4SDL|Basic4SDL]] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://www.ultimateamiga.co.uk/index.php?topic=9425.0 Project Deimos],
:'''Blitz Basic''' [http://aros-exec.org/modules/newbb/viewtopic.php?post_id=46537#forumpost46537 none on AROS]
:: [http://www.amiforce.de/main.php Amiblitz] on JanusUAE amiga(TM) emulator
:'''Amiga Basic'''
:: [ ACEBasic]
'''Misc'''
:[[Aros/Developer/Docs/E|AmigaE Portable E]]
:[https://ae.arosworld.org/index.php?board=11.0 FreePascal FPC Aros-Exec thread], [http://archives.aros-exec.org/index.php?function=browse&cat=development/language Download], FreePascal for AROS has its own [http://fpcaroswiki.alb42.de/ Wikibook],
:[[Aros/Developer/Docs/LLVM|LLVM]],
===Where to get the C/C++ Environment===
If you want to develop for AROS, its generally easier to be running linux hosted AROS development environment especially for C++, cross compiling the code. That's how most developers now are doing it. g++ is used to compile owb web browser as well as some other AROS software. If you were hoping for a rich set of C++ libraries or classes defined for the OS feature set, you might be disappointed.
AROS Native compiling is possible, but you're much more likely to run into the odd bug(s) in the dev environment since it gets little testing and fixing by other developers.
Is there a sftp software or scp over ssh available?
Maybe. At least the security part would be handled by [https://github.com/jens-maus/amissl amissl] [https://archives.arosworld.org/index.php?function=browse&cat=network/misc port]. DOpus5 has recently added sftp support. See here for a [https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1974&highlight=ssh&pid=12073#post_12073 ssh scp client]
[https://arosdevteam.slack.com/join/shared_invite/enQtOTc4Mzg0NDIzNzQ0LWQ2NWZmNmMwNGIwNGEyNTgxNzU3MGFjMTk3ZThmOTQ1MTVjMzhmNTllYWQ0ZTUxMjBjMGE0Y2VjMDJmNTc5MzI#/shared-invite/email Slack Dev Forum]
====Cross compilers from Windows or Linux====
*Windows WSL2 walkthrough can be [https://arosnews.github.io/how-to-cross-compile-aros-hosted-wsl/ found here]
you want to build AROS. No problem.
Here are instructions for 64-bit:
https://github.com/deadw00d/AROS/blob/master/INSTALL.md
Here are instructions for 32-bit:
https://github.com/deadw00d/AROS/blob/alt-abiv0/INSTALL.md
And as always has been the case you can use the contrib archive to 'obtain' the development directory which contains the /native/ AROS gcc compiler and tools. That compiler is used to build AROS itself but can be used outside the AROS build process by providing --sysroot with indicated directory to cross compile for AROS.
=====Older guides for Linux hosted compiler=====
Please install these packages before moving to next step. Below is a reference list for Debian-based distributions. Reference build system was Ubuntu 18.04/20.04 amd64.
subversion git-core gcc g++ make gawk bison flex bzip2 netpbm autoconf automake libx11-dev libxext-dev libc6-dev liblzo2-dev libxxf86vm-dev libpng-dev gcc-multilib libsdl1.2-dev byacc python-mako libxcursor-dev cmake zsh mingw64
Do all of these operations under home directory of your user or another directory where your user has write permissions.
Specifically, in a section "Linux-i386", be sure first to build the cross-compiler (toolchain-alt-abiv0-i386) and only then AROS itself (alt-abiv0-linux-i386).
Clone & build
<pre>
$ mkdir myrepo
$ cd myrepo
$ git clone https://github.com/deadw00d/AROS.git AROS
$ cd AROS
$ git checkout alt-abiv0
$ cd ..
$ cp ./AROS/scripts/rebuild.sh .
$ ./rebuild.sh
</pre>
Now to the build selection below - Linux-i386
Select toolchain-alt-abiv0-i386 - Select alt-abiv0-linux-i386 (DEBUG)
Start AROS by:
<pre>
$ cd alt-abiv0-linux-i386/bin/linux-i386/AROS
$ ./Arch/linux/AROSBootstrap
</pre>
Pc-i386 Select toolchain-alt-abiv0-i386 (if not built yet) - Select alt-abiv0-pc-i386
ISO image available in alt-abiv0-pc-i386/distfiles
Now that we have linux-hosted build, we can resume native (option 2).
Run ./rebuild.sh and selection option 2. Wait until it finished, then:
<pre>
$ cd alt-abiv0-pc-i386
$ make
</pre>
Now
<pre>
$ make bootiso
</pre>
Now, your compiler is located in toolchain-alt-abiv0-i386 directory and named i386-aros-gcc. Includes are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/include and libraries are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development.lib.
This is how then can be passed to the compiler:
/home/xxx/toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot /home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development -L/home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/lib
../toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot bin/linux-i386/AROS/Development local/helloworld/helloworld.c -o local/helloworld/helloworld
Another method was using Debian like distros and download the gimmearos.sh script (on [http://archives.aros-exec.org/index.php?function=browse&cat=development/cross aros-archives]) to setup the developer environment by downloading necessary packages ...
The gimmearos script is a good start in that direction, building the cross compilers and hosted AROS environment, but gimmearos.sh might be out of date or not be completely compatible with any given linux distro.
In order to do that, you have to compile AROS yourself. Download AROS source archive not contrib. Compile AROS by entering the main directory
./configure
make
([http://aros.sourceforge.net/documentation/developers/compiling.php More on compiling AROS]). The result will be a basic AROS system without development tools.
To compile C++ on Linux, type 'make gnu-contrib-crosstools', creating the cross-compilers in ./bin/linux-i386/tools/, named i386-aros-gcc, etc.
'''Note''': Currently, to make the cross compilers usable copy 'collect-aros' from tools/ to tools/i386-aros/bin/. At the moment the cross compilers if used from the Linux command line will only find it when it's there.
If you want to compile native compilers (the Developer Environment), type 'make contrib-gnu-gcc', creating native compilers in AROS' System:Development/bin directory.
When the output needs to be stripped <code>--strip-unneeded --remove-section .comment</code>
The Obj-C backend should build out of the box.
Open contrib/gnu/gcc/mmakefile.src and search for the line which contains "--enable-languages" and add "objc" to the list of languages that follows it.
--enable-languages=c,c++,objc
Better make it—enable-languages=c,c++,objc,obj-c++
ObjC++ is broken as soon as you try to use exceptions, but that might change in future GCC versions and it does not hurt having it there already.
Do you need a cross-compiler or a real compiler? In the first case you can get away with just downloading the proper gcc archive, apply the patch and proceed with the normal gcc build. In the case of a real cross-compiler then when downloading the contrib sources, also need to download the normal sources, place the contrib sources into a directory called contrib, need to install autoconf+automake+perl+python, call ./configure, cd into the subdirectory and type make.
to rebuild GCC with host == build == target == i386-pc-aros. So just get the vanilla sources and apply the patches without bothering about the build system?
[https://vmwaros.blogspot.com/2019/10/a-pre-configured-development-machine.html pre-configured VM environment vmware virtual machine to develop AROS and AROS software]
'''64 bit'''
'''32 bit'''
A good option for multiple OS is [https://axrt.org/index.php?tab=download-aros AxRuntime lets developers compile their Amiga API-based applications as Linux binaries being able to utilize modern development tools available on Linux, like IDEs, debuggers, profilers, etc]
====Native compilers for AROS====
Namely gcc for C or g++ for C++ are supplied with the [[Aros/Developer/Docs#The Developer Environment|Developer Environment]], which is already '''setup''' and part of any current AROS distribution like AROS One or the nightlies
* Current GCC 6.5 (32bit) though moving to 10.5 and 15.1 (64bit)
* Older software components. GNU GCC 4.x GNU BinUtils, GNU Fileutils 4.x, GNU Textutils and others.
On single partition systems and the Boot ISO, the AROS Developer environment is installed under "SYS:Development/". Systems with multiple partitions - such as a Work: partition - tend to install it to there instead, however it can be installed manually to any location. Please remember, if moving, that you will need to correct the Development packages 'install location' env variable to point to the new locations root - look in SYS:S/startup-sequence.
<pre>
Assign Development: SYS:Development
Assign C: Development:bin ADD
</pre>
In the aros build instructions. you need to check out contrib and/or ports into your AROS source directory, as subdirs. then, assuming you are building in an external build dir, as you should, you simply configure and "make contrib" for instance or whatever submodule you might want to build.
===Beginners Tutorials in C C++===
As AROS is [http://eab.abime.net/showthread.php?t=29856 C based] API compatible to AmigaOS 3.x, so most of the information on programming C on the Amiga applies to AROS as well. Please note that there is a lot of AmigaOS 1.3 (1985-1989) and [https://www.markround.com/amigaguide AmigaOS AOS 2.x (1990-1992)] information around but OS3.1 is recommended but limited in amount.
Brief overview of what is required to write AROS Applications
# Using [[Aros/Developer/Docs/Libraries/Intuition|Intuition]] for basic screens/windows
# Using graphics within windows via 8bit [[Aros/Developer/Docs/Libraries/Graphics|graphics]] and so onto 15-16-24bit [[Aros/Developer/Docs/Libraries/CGFX|cybergraphx]]
# Load and save work to [[Aros/Developer/Docs/Libraries/DOS|dos]] disk drives
# Using the [[Aros/Developer/Zune|ZUNE GUI Environment]]
Writing native games require this extra information
# Using [[Aros/Developer/AHIDrivers|AHI audio hardware independent API]]
# Using USB joystick/joypad with the Poseidon USB stack through [[Aros/Developer/Docs/Libraries/LowLevel|LowLevel]] library
Additional features that could be added later
# Adding additional [[Aros/Developer/Docs/Libraries/Locale|Locale]] language translations to your program
# Adding a [[Aros/Developer/Docs/Rexx|AREXX/Regina]] port to your application
# Executing Amiga(TM) [[Aros/User/DOS|DOS]] commands from your application
# Using [[Aros/Developer/Docs/Libraries/Icon|icons]] (.info files) and icon tooltypes (stack, version, and program startup options)
# Local couch or IP based SANA2 networking co-op multi player gaming support
Most AmigaOS programming books are nowadays very much out of date as most are from the late 1980s and do not cover later amigaOS releases like 3.1 for example, Rob Peck's book "Programmer's Guide to the Amiga". The Amiga ROM Kernel manuals aka RKMs like Libraries (3rd edition), Devices (), the AmigaDOS manual (3rd edition) and the Style Guide may have their uses. There are some reference examples from AmigaMail and Devcon notes (available again on an Amiga developers CD 2.1).
For Arexx then "The Amiga Programmer's Guide to ARexx" by Eric Giguere, which was published by Commodore is useful as well as an "Arexx Cookbook".
Curly brackets missing - try SHIFT + ALT + 7 or 0.
* Beginners C Guide [http://www.iu.hio.no/~mark/CTutorial/CTutorial.html C Tutorial],
* [http://thecguru.com/ C for beginners],
* [http://fresh2refresh.com/c/c-basic-program/ C programming basics] for students,
* [https://www.edx.org/courses Free Online course] from American Universities
* Reference Amiga [http://amigadev.elowar.com/ API reference].
* AROS based c source can be found [[Aros/Developer/Docs/Examples|here]] and lots of example code can be found inside [https://github.com/aros-development-team AROS sources] themselves and from the contrib section of the archives from [https://github.com/aros-development-team/contrib Aros site], and study the AROS applications source code, e.g. the test programs from the Tests drawer (folder/directory). Take a look at the code of some smaller AROS programs might be a better and more up to date guide. Some old Os3 [http://www.blackfiveservices.co.uk/amiga-c/ here]
When you upload your builds, please write the architecture (like i386-aros, x86_64-aros, etc.) in the archive name
and it is also advisable to write in the field "Requirements" what ABI (ABIv11, ABIv0 or ABIv1)
===Compiling C/C++ Code===
Native, although we have a IDE Integrated Development Environment (Murks), it does lack a debugger. Whilst others use a combination of a text editor and shell to edit code. Most though use an AROS hosted on Linux to take advantage of the better GCC tools like GDB and various IDEs.
Open shell - its a menu option at the top left of Wanderer (desktop). Or by using the right Win key and w (or F12 and w) within the directory with the source code. Type in
sh
to change the amiga shell into a unix shell. You can then type in ls (unix equivalent to amiga dir). Take a look [http://en.wikibooks.org/wiki/Linux_commands here] for more commands.
For a single file program-name.c or program-name.cpp
gcc -o program-name program-name.c
or
g++ -o program-name program-name.cpp
or
g++ -o test -Wall -g main.cc texturelib.cpp xmodelib.cc -lsdl -lgl
To close the shell, click on the top left-hand corner to close (twice). Once to get back the aros shell and then again to close finally. Use [http://freshmeat.net/projects/cksfv/ cksfv] as a test.
Some source code requires the addition of Amiga API libraries, like dos, which you can flag at the compile time as
gcc -o julia.exe julia.c -ldos
For DOS use -ldos as example and if you are compiling mui codes it will be -lmui or intuition -lintuition. Other missing symbols are due to linker libraries being necessary for linking in functions that aren't in the standard C libraries. For example some source code would need added
-lz or -lm or -lpng or -larosc etc.
use this in unix line command mode to search for 'search-item' in many .c files (*.cpp for c++, etc.)
grep -l 'search-item' *.c
If the program is not executable, try using parameter fno-common
"Delete #?.o"? Or if you are using abcshell then "rm *.o"
:''More information: [[Aros/Developer/Porting software]]''
=== How to make Apps have AROS 64-bit specific support code ===
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
AROS64 already uses 64bit addressing, it just doesn't setup the MMU for more than 4GB physical memory currently.
When porting software to AROS64 it is "mostly" a case of converting ULONG's that are used to store pointers, into IPTR's instead, etc. Another quirk, is making sure items on the stack are the correct size by using the STACKED attribute for them.
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
compiling mui stuff for aros setting -std=gnu99 is necessary, had -std=c99 usually
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order.
crash which suggest memory corruption. From my experience porting from 32-bit to 64-bit these kinds of errors can happen if a pointer is passed somewhere via ULONG variable. Then half of the pointer is cut.
To generate this error, please run AROSBootstrap with -m 1024. This will allocate heap to 64-bit address space which will make these errors immediatelly visible. These types of crashes are hard to debug. Disabled as little code as possible to stop corruption from occurring and then try to read from the code where it can be broken
Crashing in tslf_freevec is another symptom of memory corruption and these memory corruptions will manifest differently on different setups.
==Coding conventions==
As the AROS core source is a shared developer experience, there are rules regarding structure and style. When it comes to your creating your own app and coding, the structure and style should be your own, i.e. you should enjoy what you do and do it so that you can understand what is going on.
===Layout===
<syntaxhighlight lang="c">
static void 1st_function()
{
program
exit(0);
}
int main(void)
{
1st_function();
2nd_function();
3rd_function();
return 0;
}
</syntaxhighlight>
<syntaxhighlight lang="c">
struct Screen * openscreen(void);
struct Window *openwindow(struct Screen *screen, const char *title, LONG x, LONG y, LONG w, LONG h);
VOID 1st_function();
VOID 2nd_function();
int main(int argc, char **argv)
{
program
return 0;
} /* main */
VOID 1st_function()
{
}
VOID 2nd_function()
{
}
</syntaxhighlight>
===General style===
This code is used by many people and therefore you should keep some things in mind when you submit source code:
* Keep things simple
* Keep the source clean
* Always know what you are doing, if not flag it and describe what needs to be done...
* Explain clearly/simply what you are doing
* Remember that you write code once but that it is read many times by many people
===Comments===
AROS uses some of the comments in the source to generate the documentation. Therefore it's necessary to keep a certain format so the tools can find their information. Other comments are ignored but they should explain what you thought when you wrote the code. If you really can't think of an explanation, then don't write the code a second time like this:
<pre>
/* This adds 1 to t */
t ++;
</pre>
What we think of is this:
<pre>
/* Go on with next element */
t ++;
</pre>
===Formatting===
This is only '''IMPORTANT''' if you are going to work on the core AROS code or contrib but not applications which may reside outside like on AROS Archives or other websites.
<syntaxhighlight lang="c">
{
/* a */
struct RastPort * rp;
int a;
/* b */
rp = NULL;
a = 1;
/* c */
if (a == 1)
printf ("Init worked\n");
/* d */
if
(
!(rp = Get_a_pointer_to_the_RastPort
(
some
, long
, arguments
)
)
||
a <= 0
)
{
printf ("Something failed\n");
return FAIL;
}
/* e */
a = printf ("My RastPort is %p, a=%d\n"
, rp
, a
);
return OK;
}
</syntaxhighlight>
Looks ugly, eh ? :-) Ok, here are the rules:
<pre>
If several lines contain similar code, put similar things below each other (see a and b);
Put spaces between operands and operators
Put braces {}, brackets [] and parentheses () below each other (d) if there is much code between.
Brackets and parentheses may be in one line if the code between is small (c)
Indent by 4 Spaces. Two indent levels may be abbreviated by one tab.
</pre>
'''Before committing please normalize the indentation - if you have a mixture of tabs and spaced - please always use spaces, 1 tab = 4 spaces.'''
The reasons for this are:
# While some editors can use an arbitrary sizes for tabs, it's a bit complicated to tell another editor which tab size was used by the one used to write the code.
# Most code in AROS was written this way and your code should look like the rest.
# You can print this code on any printer without special tools to "fix" the tabs.
# Most editors have smart tabs which do exactly this. If your editor doesn't, write a bug report.
If you have a function with many arguments (d, e) you should put the parentheses in lines of their own and each argument in one line (d) or put the first argument behind the opening parentheses (e) and each following argument in a line of its own with the comma in front. The closing parentheses is in a line of its own and aligned with the beginning of the expression (i.e. the a and not the opening parentheses or the printf()).
Use a single blank line to separate logical blocks. Large comments should have a blank line before and after them, small comments should be put before the code they explain with only one blank line before them.
If you see any TABS in AROS core sources then the suggestion is to "detab the file and commit that separately" either before or afterwards from making functionality changes. Make two commits instead of one. This makes it easier for others to see the real changes instead of having to dig through multiple lines of irrelevant diffs.
===Eliminating Global Variables===
i.e. pass variables to functions (local scope) or classes making it easier to track and debug your code.
Any time you find that you need a particular thing in 'a lot of different places', chances are that all those places are conceptually related, and so you can create a class, a namespace, a function, or some other higher-level organizational unit to represent that relationship. This makes the program easier to understand.
Bad Designs
* All variables are global.
* There are no standalone functions, only sub-procedures which act on the global variables.
* Every sub-procedure is at least 500 lines to several thousand
* Every sub-procedure has more than one task to perform
* Copy-paste is preferred to writing methods, AND subtle changes are made in the middle of the code
Good Designs
* structure program into functions (C or basic) - top-down procedural approach
* put in class(es) (freepascal or C++) - the object is fixed and you use methods to access the object
<pre>
class String_List
{
private:
list<string> m_List; // member
public:
void read_strings() { /* read strings into m_List */ }
void print_strings() { /* write contents of m_List to stdout */ }
void sort_strings() { /* sort contents of m_List */ }
void sort_strings_reverse() { /* reverse-sort contents of m_List */ }
void unique_strings() { /* remove duplicate strings */ }
};
int main()
{
String_List myList; // local
myList.read_strings();
myList.sort_strings();
myList.print_strings();
myList.sort_strings_reverse();
myList.print_strings();
myList.unique_strings();
myList.print_strings();
return 0;
}
</pre>
This way it is very easy to replace the list with new list for debugging purposes, or replacing the methods without replacing the list, when you want different results. You only have to replace the content of the local variables.
So create the structure that matches your data (linked lists, trees, arrays, etc.) and what to do with them (sorting, searching, etc.)
<pre>
.h usually contain #define #include typedef enum struct extern screen and window definitions (data structures)
.c should contains functions and algorithms
</pre>
One way to look at it is that menu headings act as the .c file and sub-menu headings as functions.
When you start a project, you place a couple of declarations in the include file. As the project continues, you place more and more declarations in the include file, some of which refer to or contain previous declarations. Before you know it, you have a real mess on your hands. The majority of your source files have knowledge of the data structures and directly reference elements from the structures.
Making changes in an environment where many data structures directly refer to other data structures becomes, at best, a headache. Consider what happens when you change a data structure.
Use good variables names to help clarify code and only comment when you need to explain why a certain programming approach was made.
You're Refactoring Legacy Code, you see a global, you want to get rid of it. How do you do this?
Exactly what to do depends on how the global is used. The first step is to find all uses of the global throughout the code, and get a feel for what the significance of the variable is and how it relates to the rest of the program. Pay particular attention to the "lifetime" of the variable (when it gets initialized, when it is first used, when it is last used, how it gets cleaned up). Then, you will probably make the global a data member of a class (for OO languages), or you will write some get/set functions. Converting to the Singleton Pattern is common, but you may discover that it makes more sense for the data element to be a member of an existing singleton, or maybe even an instance variable.
# Create a basic read method, either as a class or a global function. Replace all reads with the access method, but leave the variable defined as a global.
# Review each of the writes to the method and extract action functions one at a time. Unless two operations are coded identically in the original code, extract each write access separately.
# Change the variable scope from global to local.
# Analyze similar action functions to determine if any can be merged, i.e., there are no functional differences in the results of the function, just differences in the implementation details.
# Review the calls to the read method and see if a more complex functionality should be applied. Follow the approach for writes and unless implementations are identical, create separate access functions.
# Analyze the access functions for duplication.
As returning variables by "passing by value" are forgotten, so "passing by reference" is often used instead. The reference is a pointer to the variable so the value is remembered when returned.
Alternatives
* Hidden Globals
* Singleton Pattern
* Database or TupleSpace
* Context Object
* Dependency Injection
* Stateful Procedures
==AROS/AmigaOS APIs and Docs==
<pre>
Library:
- Private data structure
- Many public access methods
Device:
- Private data structure
- Two (BeginIO/AbortIO) access methods
Resource:
- Public data structure
- *NO* access methods
</pre>
And, being Amiga OS-compatible, there are exceptions to all of these.
===System Libraries===
The [http://aros.sourceforge.net/documentation/developers/app-dev/index.php AROS Guide To Libraries] can be used as a guide to individual commands and Old Dev Docs are used in application programming.
The generated [http://aros.sourceforge.net/documentation/developers/autodocs/ Aros AutoDocs HTML Read] or download [http://aros.sourceforge.net/download.php docs-html.bz2 from here].
Amiga/Aros styles libraries are very different from windows and linux libs. Typical .so/dll libraries are foreign to most Amiga-like OS
*[[Aros/Developer/Docs/Libraries/AROSC|arosc.library]]
*[[Aros/Developer/Docs/Libraries/AmigaGuide|amigaguide.library]]
*[[Aros/Developer/Docs/Libraries/ASL|asl.library]]
*[[Aros/Developer/Docs/Libraries/Bullet|bullet.library]]
*[[Aros/Developer/Docs/Libraries/BSDsocket|bsdsocket.library]]
*[[Aros/Developer/Docs/Libraries/CAMD|camd.library]]
*[[Aros/Developer/Docs/Libraries/Codesets|codesets.library]]
*[[Aros/Developer/Docs/Libraries/CGFX|cybergraphics.library]]
*[[Aros/Developer/Docs/Libraries/CGXVIDEO|cgxvideo.library]]
*[[Aros/Developer/Docs/Libraries/Commodities|commodities.library]]
*[[Aros/Developer/Docs/Libraries/DataTypes|datatypes.library]]
*[[Aros/Developer/Docs/Libraries/DiskFont|diskfont.library]]
*[[Aros/Developer/Docs/Libraries/DOS|dos.library]]
*[[Aros/Developer/Docs/Libraries/Exec|exec.library]]
*[[Aros/Developer/Docs/Libraries/Expansion|expansion.library]]
*[[Aros/Developer/Docs/Libraries/FreeType2|freetype.library]]
*[[Aros/Developer/Docs/Libraries/GadTools|gadtools.library]]
*[[Aros/Developer/Docs/Libraries/Graphics|graphics.library]]
*[[Aros/Developer/Docs/Libraries/Icon|icon.library]]
*[[Aros/Developer/Docs/Libraries/Identify|identify.library]]
*[[Aros/Developer/Docs/Libraries/IFFParse|iffparse.library]]
*[[Aros/Developer/Docs/Libraries/Intuition|intuition.library]]
*[[Aros/Developer/Docs/Libraries/Keymap|keymap.library]]
*[[Aros/Developer/Docs/Libraries/Layers|layers.library]]
*[[Aros/Developer/Docs/Libraries/Locale|locale.library]]
*[[Aros/Developer/Docs/Libraries/LowLevel|lowlevel.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingBas|mathieeesingbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubBas|mathieeedoubbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingTrans|mathieeesingtrans.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubTrans|mathieeedoubtrans.library]]
*[[Aros/Developer/Docs/Libraries/Mathtrans|mathtrans.library]]
*[[Aros/Developer/Docs/Libraries/MUIMaster|muimaster.library]]
*[[Aros/Developer/Docs/Libraries/Partition|partition.library]]
*[[Aros/Developer/Docs/Libraries/PopUpMenu|popupmenu.library]]
*[[Aros/Developer/Docs/Libraries/OOP|oop.library]]
*[[Aros/Developer/Docs/Libraries/Regina|regina.library]]
*[[Aros/Developer/Docs/Libraries/Reqtools|reqtools.library]]
*[[Aros/Developer/Docs/Libraries/RexxSysLib|rexxsyslib.library]]
*[[Aros/Developer/Docs/Libraries/ScreenNotify|screennotify.library]]
*[[Aros/Developer/Docs/Libraries/TTEngine|ttengine.library]]
*[[Aros/Developer/Docs/Libraries/Thread|thread.library]]
*[[Aros/Developer/Docs/Libraries/Utility|utility.library]]
*[[Aros/Developer/Docs/Libraries/Xadmaster|xadmaster.library]]
*[[Aros/Developer/Docs/Libraries/Workbench|workbench.library]]
*[https://github.com/aros-development-team/AROS/commit/c82e86b8480277998014cc327b56c7664023a52f ClassAct Reaction boopsi class]
===AROS Subsystems===
# [[Aros/Developer/Zune|Zune MUI compatible GUI]]
# [[Aros/Developer/AROSAppPackages|AROS Application Packages]]
# AHI Audio Drivers - [[Aros/Developer/AHIDrivers|Usage]]/[[Aros/Developer/AHIDriversDev|Development]]
# AROSTCP Sana2 Network Interface Drivers - [[Aros/Developer/NICDrivers|Usage]]/[[Aros/Developer/NICDriversDev|Development]]
# [[Aros/Developer/AmiSSL|AmiSSL]]
# gfx.hidd/cybergraphics Video Drivers - [[Aros/Developer/GfxDrivers|Usage]]/[[Aros/Developer/GfxDriversDev|Development]]
# IO Device Drivers - [[Aros/Developer/IODeviceDrivers|Usage]]/[[Aros/Developer/IODeviceDriversDev|Development]]
# USB Device Drivers - [[Aros/Developer/USBDrivers|Usage]]/[[Aros/Developer/USBDriversDev|Development]]
# PCI Device Drivers - [[Aros/Developer/PCIDrivers|Usage]]/[[Aros/Developer/PCIDriversDev|Development]]
# [http://www.libsdl.org/ SDL] [https://github.com/search?q=repo%3Aaros-development-team%2Fcontrib%20SDL2&type=code SDL2 commits], [https://github.com/aros-development-team/contrib/commit/c62c3c425c35bac19dadc23be092b0b13a66c76c SDL3 initial commit], []
# [[w:Gallium3D|Gallium 3D]] [http://www.mesa3d.org/ openGL aka Mesa] - [[Aros/Developer/OpenGL|Usage]]/[[Aros/Developer/OpenGLDev|Development]] [http://www.swiftless.com/opengltuts.html Swfitless]
# A small subset of GTK2 through [http://sourceforge.net/projects/gtk-mui/ MUI-GTK]
# Cairo 2D Engine - [[Aros/Developer/Cairo|Usage]]/[[Aros/Developer/Cairo|Development]]
# [[Aros/Developer/Scalos|Scalos desktop API and plugin modules]]
# [[Aros/Developer/VHI|VHI video driver]]
====HIDDs====
*[[Aros/Developer/Docs/HIDD/HIDDClass|hiddclass.hidd]]
*[[Aros/Developer/Docs/HIDD/Graphics|graphics.hidd]]
*[[Aros/Developer/Docs/HIDD/VesaGfx|vesagfx.hidd]]
*[[Aros/Developer/Docs/HIDD/ATI|radeon.hidd]]
*[[Aros/Developer/Docs/HIDD/NVidia|nvidia.hidd]]
*[[Aros/Developer/Docs/HIDD/Nouveau|nouveau.hidd]]
*[[Aros/Developer/Docs/HIDD/Kbd|kbd.hidd]]
*[[Aros/Developer/Docs/HIDD/Mouse|mouse.hidd]]
*[[Aros/Developer/Docs/HIDD/i2c|i2c.hidd]]
*[[Aros/Developer/Docs/HIDD/IRQ|irq.hidd (deprecated)]]
*[[Aros/Developer/Docs/HIDD/PCI|pci.hidd]]
*[[Aros/Developer/Docs/HIDD/PCIPC|pcipc.hidd]]
*[[Aros/Developer/Docs/HIDD/Serial|serial.hidd]]
*[[Aros/Developer/Docs/HIDD/Thunderbolt|thunderbolt.hidd]]
https://github.com/aros-development-team/AROS/commit/4f02ea691799aff3a01f60cfa5f9182c82fc57a8
HIDD are used for device/peripheral low level hardware support drivers. The HIDD system is split up into a collection of classes with a strict inheritance hierarchy. A HIDD class implements a device driver for a single device or in rare cases a group of devices and provides an interface for other programs and devices to access.
In order to maintain portability of interfaces across a wide range of hardware this interface will in general not present the raw interface to the underlying hardware. Instead it will present a generic interface that describes many different hardware implementations. This allows for the best reuse of both interfaces and code.
HIDD API is heavyweight though. You need to open a HIDD library, open oop.library, instantiate an object (even if there's no object); and object calls are more costly compared to plain library calls.
Basically your task is to implement a subclass of hidd.ata.bus for your hardware. just implementing the XXXATA__Hidd_ATABus__xxxxxx methods for the Amiga chipset - and appropriate versions of the interface_xxx.c file(s). pretty much everything in probe.c could be ignored - just write a replacement scan for relevant amiga devices and store whatever info you need in the bus data? only the "SUPPORT_LEGACY" blocks might be related.
You do not need to depend on PCI API. PCI is just a way to discover the hardware on PCs, etc.
<hidd/pci.h> includes (at some depth) <interface/HW.h>, which defines IID_HW. This comes from the 'generic' HIDD class in:
rom/hidds/hidd/hiddclass.conf
did not split up HIDD and HW because they are always used in pair. It's the same as hidd/pci.h bringing definition for: PCI, PCIDriver and PCIDevice. PCI is actually PCIHW, just the name was not changed for backwards compatibility reasons. HW is a 'hub' where HIDD instances plug in.
ATA HIDD aoHidd_ATABus_Use32Bit value is completely ignored unless ata.device first detects correct command line parameter.
Yes. Unfortunately I was unable to find any comment in code or svn history with explanations. Looked at Linux source, there 32-bit PIO is also controller driver's property. Some of them enable it, some don't.
Actually, switching the default to ON should be safe. ata.device is fail-safe at this because during IDENTIFY command it validates upper 16 bits, and if they appear to be zeroes in all 128 longwords, then 32-bit mode is switched off. But, nevertheless, I know how tricky hardware can be, so I decided not to change original behavior. If you think it's wrong in some cases, then it's possible to add one more attribute like aHidd_ATABus_Default32Bit. If set to YES, then this means that 32-bit PIO is safe to use by default.
====Devices====
*[[Aros/Developer/Docs/Devices/ATA|ata.device]]
*[[Aros/Developer/Docs/Devices/Console|console.device]]
*[[Aros/Developer/Docs/Devices/Narrator|narrator.device]]
*[[Aros/Developer/Docs/Devices/Printer|printer.device]]
*[[Aros/Developer/Docs/Devices/Trackdisk|trackdisk.device]]
*[[Aros/Developer/Docs/Devices/AmberRAM|amberram.device]]
*[[Aros/Developer/Docs/Devices/Timer|timer.device]]
*[[Aros/Developer/Docs/Devices/|.device]]
The Amiga used [[Aros/Developer/Docs/Devices|Devices]] to communicate with [http://aros-exec.org/modules/newbb/viewtopic.php?start=0&topic_id=3475&viewmode=flat&order=ASC additional hardware]. AROS has replaced these hardware devices with hidd equivalents but some are still retained for backwards compatibility.
Local libraries/devices/handlers,etc. are supposed to override the ones in ROM if their version is higher than the one in ROM.
Here is the list of commands exec default:
{| class="wikitable"
| CMD_CLEAR
| Purge the buffer of the device
|----
| CMD_READ
| Playback Control
|----
| CMD_STOP
| Stopped the activity of the device
|----
| CMD_FLUSH
| Empty the queue of commands
|----
| CMD_RESET
| Reset a device
|----
| CMD_WRITE
| Playback Control
|----
| CMD_INVALID
| Create an error
|----
| CMD_UPDATE
| Gets updated device
|----
| CMD_START
| Will restart the device
|----
|}
While most other "stuff you communicate with" in AmigaOS are devices <ref>AMIGA ROM Kernel Reference Manual: Devices, 3rd Edition. Commodore-Amiga, Inc. Addison-Wesley, 1991. {{ISBN|0-201-56775-X}}</ref> that share a [http://gega.homelinux.net/AmigaDevDocs/ common base interface]. [[Aros/Developer/Docs/Devices1.3|OS 1.3 Device Drivers]].
====Handlers====
:[[Aros/Developer/Docs/Handlers/Pipe|pipe.handler]]
:[[Aros/Developer/Docs/Handlers/Port|port.handler]]
:[[Aros/Developer/Docs/Handlers/SFS|sfs.handler]]
:[[Aros/Developer/Docs/Handlers/FAT|fat.handler]]
:[[Aros/Developer/Docs/Handlers/PFS|pfs.handler]]
:[[Aros/Developer/Docs/Handlers/NTFS|fuse.handler]]
:[[Aros/Developer/Docs/Handlers/FFS|ffs.handler]]
filesystem handlers have their own separate system consisting of completely differently structured messages that dos.library use to pass requests (for things like reading, writing, getting directory contents etc.) to them. AROS originally went with implementing filesystem handlers as devices, which might arguably be more consistent with the rest of the AmigaOS API but which is quite incompatible with AmigaOS itself. However, it made it far harder to port filesystems and the gains were comparatively small, and so there's been a long standing goal of fixing this incompatibility. It has now, June 2011, been reintroduced to all AROS flavors.
are argstr and argsize valid for the handler startup environment?
DOS/RunHandler() calls DOS/CreateNewProcTags(), and then CallEntry() (in rom/dos/exit.c) to start the handler, so yes, argstr and argsize are *present* in the call signature of the handler.
Granted, argstr will be NULL and argsize 0, but those values *are* passed to the handler function using:
<pre>
AROS_UFC3(ULONG, entry,
AROS_UFCA(STRPTR, argptr, A0),
AROS_UFCA(ULONG, argsize, D0),
AROS_UFCA(struct ExecBase *, SysBase, A6));
</pre>
Creating your own [without the whole build tree http://pagesperso-orange.fr/franck.charlet/temp/radeon.zip] and then
<pre>
make stub
make
make install
</pre>
SFS has two Root blocks, one at the start and one at the end of the disk. The Root blocks both contain the same information. They hold various information about the disk structure and have the locations of some important blocks used by the filesystem.
The Root ObjectContainer contains the Root directory Object. The name of this Object is the name of the volume. It is identical to a normal directory Object.
The Bitmap is used to keep track of free space. Each bit in a bitmap represents a single block. A set bit indicates a free block and a cleared bit a used block.
AdminSpaceContainers are used to keep track of space which has been reserved for storing administration blocks. Only the Bitmap, the Root blocks and the actual data stored in files aren't stored in administration space. Administration space is allocated in chunks of 32 blocks at a time. A single AdminSpaceContainer can hold information about a large number of such areas each of which has its own little bitmap of 32 bits.
Extents are stored in a B-Tree. The Root block holds a pointer to the root of the Extent B-Tree. Extents keep track of space in use by a specific file. Each fragment a file consists of has its own Extent. Extents are in a double linked list. The list can be used to locate the next or previous fragment of a file.
Below is the standard block header. This header is found before EVERY type of block used in the filesystem, except data blocks. The id field is used to check if the block is of the correct type when it is being referred to using a BLCK pointer. The checksum field is the SUM of all LONGs in a block plus one, and then negated. When applying a checksum the checksum field itself should be set to zero. The checking a checksum the checksum is okay if the result of the checksum equals zero. The ownblock BLCK pointer points to the block itself. This field is an extra safety check to ensure we are using a valid block.
Field Type Description
id ULONG The id field is used to identify the type of block we are dealing with. It is used to make sure that when referencing a block we got a block of the correct type. The id consist of 4 bytes and each blocktype has its own unique foure letter code.
checksum ULONG This field contains the sum of all longs in this block, plus one and then negated. The checksum can be used to check if the block hasn't been corrupted in any way.
ownblock BLCK Points to itself, or in other words, this field contains the block number of this block. This is yet another way to check whether or not a block is valid.
<pre>
struct fsBlockHeader {
ULONG id;
ULONG checksum;
BLCK ownblock;
};
</pre>
The algorithm to calculate the checksum of a block:
<pre>
ULONG calcchecksum(struct fsBlockHeader *block, LONG blocksize} {
ULONG *data=(ULONG *)block;
ULONG checksum=1;
block->checksum=0;
while(blocksize>0) {
checksum+=*data++;
blocksize-=4;
}
return(-checksum);
}
</pre>
A Root block contains very important information about the structure of a SFS disk. It has information on the location and size of the disk, the blocksize used, locations of various important blocks, version information and some filesystem specific settings.
A SFS disk has two Root blocks; one located at the start of the partition and one at the end. On startup the filesystem will check both Roots to see if it is a valid SFS disk. If either one is missing SFS can still continue (although at the moment it won't).
A Root block could be missing on purpose. For example, if you extend the partition at the end (adding a few MB's) then SFS can detect this with the information stored in the Root block located at the beginning (since only the end-offset has changed). Same goes for the other way around, as long as you don't change start and end point at the same time.
When a Root block is missing because the partition has been made a bit larger, then SFS will in the future be able to resize itself without re-formatting the disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
version UWORD The version of the filesystem block structure. You can check this field to identify what version of the filesystem your dealing with it and to see if you can handle this structure correctly. Don't try to interpret the disk's structure when this field contains an unknown version number!
sequencenumber UWORD Used to identify which Root block was written last in case the sequencenumber on both Root blocks don't match.
datecreated ULONG Creation date of this volume. This is the date when the disk was last formatted and will never be changed.
bits UBYTE Various settings, see below.
<pre>
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
reserved1 ULONG[2] Reserved, leave zero.
firstbyteh ULONG High 32-bits of a 64-bit number. This is the first byte of our partition relative to the start of the disk.
firstbyte ULONG Low 32-bits of a 64-bit number.
lastbyteh ULONG High 32-bits of a 64-bit number. This is the last byte (exclusive) of our partition relative to the start of the disk.
lastbyte ULONG Low 32-bits of a 64-bit number.
totalblocks ULONG The total number of blocks this partition consists of.
blocksize ULONG The size of a block of this partition.
reserved2 ULONG[2] Reserved, leave zero.
reserved3 ULONG[8] Reserved, leave zero.
bitmapbase BLCK Block number of the start of the Bitmap.
adminspacecontainer BLCK Block number of the first AdminSpaceContainer.
rootobjectcontainer BLCK Block number of the ObjectContainer which contains the root of the disk (this is where the volume name is stored).
extentbnoderoot BLCK Block number of the root of the Extent B-Tree.
reserved4 ULONG[4] Reserved, leave zero.
</pre>
<pre>
struct fsRootBlock {
struct fsBlockHeader bheader;
UWORD version;
UWORD sequencenumber;
ULONG datecreated;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
ULONG reserved1[2];
ULONG firstbyteh;
ULONG firstbyte;
ULONG lastbyteh;
ULONG lastbyte;
BLCK totalblocks;
ULONG blocksize;
ULONG reserved2[2];
ULONG reserved3[8];
BLCK bitmapbase;
BLCK adminspacecontainer;
BLCK rootobjectcontainer;
BLCK extentbnoderoot;
ULONG reserved4[4];
};
</pre>
AdminSpaceContainers are used to store the location and bitmap of each administration space. The AdminSpaceContainers are located in a double linked list and they contain an array of fsAdminSpace structures. There is one fsAdminSpace structure for every administration space on disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
next BLCK The next AdminSpaceContainer, or zero if it is the last in the chain.
previous BLCK The previous AdminSpaceContainer, or zero if it is the first AdminSpaceContainer.
bits UBYTE The number of bits in each in the bits ULONG in the fsAdminSpace structure.
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
adminspace struct fsAdminSpace An array of fsAdminSpace structures. The size of the array is determined by the current blocksize.
<pre>
struct fsAdminSpaceContainer {
struct fsBlockHeader bheader;
BLCK next;
BLCK previous;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
struct fsAdminSpace adminspace[0];
};
</pre>
Field Type Description
space BLCK The first block of an administration space.
bits ULONG A small bitmap which is used to determine which blocks in an administration space are already in use. The number of bits in this bitmap is determined by the bits field in the AdminSpaceContainer.
<pre>
struct fsAdminSpace {
BLCK space;
ULONG bits;
};
</pre>
The fsBitmap structure is used for Bitmap blocks. A bitmap block is used to keep track of which space is in use and which isn't for a particular area of a disk. All bitmap blocks together keep track of the free space for an entire disk. The location of the first bitmap block is known and all other bitmap blocks are stored in order after the first one.
Field Type Description
bheader struct fsBlockHeader Standard block header.
bitmap ULONG An array of ULONG's. These hold the actual information on which blocks are in use and which aren't.
<pre>
struct fsBitmap {
struct fsBlockHeader bheader;
ULONG bitmap[0];
};
</pre>
Each bit in a bitmap block (except for the block header) represents a single block. If the bit is set than the block is free, and if the bit is clear then it is full. The first ULONG in the bitmap area of the first bitmap block represents blocks 0 through 31 on the disk. Bit 31 of this ULONG is block 0, 30 is block 1, and so on. Bit 0 of the first ULONG represents block 31.
Below is a table to clarify how bitmaps work even further. The first column is the bitmap block number, the second column is the number of the ULONG in the bitmap array. The third column is the bit number in this ULONG, and the last column is the block which this specific bit, in this specific bitmap block represents.
We'll assume here that a bitmap block has room for 120 ULONG's (meaning there is room for storing 32 * 120 bits).
<pre>
Bitmap block ULONG number Bit number Block represented
1 (first) 0 31 0
1 0 30 1
... ... ... ...
1 0 1 30
1 0 0 31
1 1 31 32
... ... ... ...
1 2 31 64
1 2 30 65
... ... ... ...
1 119 0 3839
2 0 31 3840
2 0 30 3841
... ... ... ...
</pre>
The last bitmap block doesn't need to be completely used. The unused bits (which belong to blocks which do not exist) all have to be clear, to indicate that these blocks are in use.
The fsObjectContainer structure is used to hold a variable number of fsObjects structures (Objects) which have the same parent directory. Each ObjectContainer must contain at least one Object. If there is space in the ObjectContainer not used by the variable number of Objects then that space is zero filled. Objects always start at 2-byte boundaries, which means sometimes a padding byte is inserted between two Objects.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the parent Object, or 0 if this object has no parent (which is only the case for the Root directory).
next BLCK The next ObjectContainer belonging to this directory, or zero if it is the last in the chain.
previous BLCK The previous ObjectContainer belonging to this directory, or zero if it is the first ObjectContainer in this directory.
object struct fsObject A variable number of fsObject structures. The number of structures depends on the individual sizes of each fsObject structure and the blocksize. These structures are located directly after each other with at most 1 byte of padding between them to get the structures aligned on a 2 byte boundary.
<pre>
struct fsObjectContainer {
struct fsBlockHeader bheader;
NODE parent;
BLCK next;
BLCK previous;
struct fsObject object[0];
};
</pre>
fsHashTable is the structure of a HashTable block. It functions much like the hash table found in FFS user directory blocks, except that it is stored in a separate block. This block contains a number of hash-chains (about 120 for a 512 byte block). Each hash-chain is a chain of Nodes. Each Node has a pointer to an Object and a pointer to the next entry in the hash-chain. Using such a hash-chain you can locate an object quickly by only knowing its name.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the directory Object this HashTable block belongs to.
hashentry NODE An array of Nodes. Each Node represents the start of a hash-chain (singly linked). A hash-value is calculated using the name of a file or directory, and this value determines in which chain the Object is linked. If there are no entries in a hash-chain then the hashentry value is zero.
<pre>
struct fsHashTable {
struct fsBlockHeader bheader;
NODE parent;
NODE hashentry[0];
};
</pre>
To calculate the hash-value using a name of an Object as input use these routines:
<pre>
UWORD calchash(UBYTE *name) {
UWORD hash=0;
/* Calculates a hash value over the passed in string.
The end of the string can be either a NUL byte or a
slash. The hash function is the same as the one
used in FastFileSystem set to international mode. */
while(name[hash]!=0 && name[hash]!='/') {
hash++;
}
while(*name!=0 && *name!='/') {
hash=hash*13+upperchar(*name++);
}
return((UWORD)(hash % (UWORD)((blocksize-sizeof(struct fsHashTable))>>2)));
}
UBYTE upperchar(UBYTE c) {
if((c>=224 && c<=254 && c!=247) || (c>='a' && c<='z')) {
c-=32;
}
return(c);
}
</pre>
The BNodeContainer is used to store B-Trees. Currently only one B-Tree is in use by this filesystem and it is used to store the location of file data. The fsBNodeContainer structure contains two other structures. The fsBlockHeader structure and the BTreeContainer structure.
Field Type Description
bheader struct fsBlockHeader Standard block header.
btc struct BTreeContainer Contains information about the B-Tree and its nodes contained in this block.
<pre>
struct fsBNodeContainer {
struct fsBlockHeader bheader;
struct BTreeContainer btc;
};
</pre>
First try and locate the Root block. It should start with "ROOT". SFS has two of these, one at the start of the partition and one at the end. One of the fields contains the block size, which will be the size of all important SFS blocks.
The root block has the root object container, which contains information about files and directories in the root directory. The object
containers basically hold one or more smaller structures that represent files and directories. Scanning them all should give you a list of
files and directories.
The root block also has the root of the Extent B-Tree. This is a standard B-Tree structure (not a binary tree) that is used commonly in
all kinds of system, you can read about how they work on Wikipedia if needed. The B-Tree holds the information about *where* all the data is
located for your files.
To recover your files, I'd do this:
* Find one of the root blocks, if not present, then figure out the block size your disk was using, and scan every block in turn to see if it
looks like an ObjectContainer (check the fsBlockHeader's ID, check if the ownblock number is equal to the block you are currently scanning,
and check its checksum). So if you currently have block 12, and you see a block with the correct id, and ownblock = 12 and its checksum is good,
then that's probably a valid ObjectContainer.
* With all the ObjectContainers found, you can extract filenames and directory names from these, but also the number of their first data
block (in the field data) and the file size. For small files (less than blocksize) this data block will be enough to recover the data.
For larger files, you might be lucky and all the remaining blocks are found after the first one (if the file was defragmented). You can't be
sure of that though so...
* For larger files, you need to find all the BNodeContainers. You could scan these in the same way you found all the ObjectContainers (look for
blocks with the correct id, ownblock number and checksum).
* With all the BNodeContainers found, you can try looking up the first data block of a file in the B-Tree structure. This is a bit complicated
-- the B-Tree consists of non-leaf nodes (blocks that only contain pointers to other B-Tree blocks), the isLeaf flag indicates this. Or it
can be a B-Tree leaf block. The leaf blocks contain extra information per entry (see https://hjohn.home.xs4all.nl/SFS/extents.htm)
<pre>
struct fsExtentBNode {
ULONG key;
ULONG next;
ULONG prev;
UWORD blocks;
};
</pre>
The key should be a block of a file (the first of a range), that is 1 to 65535 block long (depending the "blocks" field). If the file is split
up into more parts, then "next" will contain block number of the next range of blocks. You need to look this up again in the B-Tree
structure to find out how large it is.
You can for the most part ignore the other structures (bitmap, admin containers). The fsObjects and B-tree containers is what you'll need to
recover the data.
====Resources====
<pre>
rom/storage/mmakefile.src
rom/storage/storage.conf
rom/storage/storage_device.c
rom/storage/storage_ids.c
rom/storage/storage_init.c
rom/storage/storage_intern.h
rom/storage/storage_mount.c
rom/storage/storage_unit.c
</pre>
<pre>
rom/storage/includes/device.h
rom/storage/includes/unit.h
rom/storage/includes/volume.h
rom/storage/storage_intern.h
</pre>
<pre>
</pre>
*[[Aros/Developer/Docs/Resources/ACPI|acpi.resource]]
*[[Aros/Developer/Docs/Resources/Battclock|battclock.resource]]
*[[Aros/Developer/Docs/Resources/Bootloader|bootloader.resource]]
*[[Aros/Developer/Docs/Resources/Cia|cia.resource]]
*[[Aros/Developer/Docs/Resources/Filesystem|FileSystem.resource]]
*[[Aros/Developer/Docs/Resources/Hostlib|hostlib.resource]]
*[[Aros/Developer/Docs/Resources/Kernel|kernel.resource]]
*[[Aros/Developer/Docs/Resources/Misc|misc.resource]]
*[[Aros/Developer/Docs/Resources/Processor|processor.resource]]
==Debugging Code==
Please use the [http://sourceforge.net/tracker/?group_id=43586&atid=439463 AROS Bug Tracker] if any issues are found.
GRUB Command line list
<pre>
sysdebug
usbdebug - allows to see Poseidon's log in debug output
</pre>
How do I get debugging out of InitResident ? If running i386 hosted on linux sysdebug=initresident on command line.
This way you can enable any of listed flags. sysdebug=all stands for "everything"
Have an executable (crosscompiled C++ code) which has 6 MB size on disk, but after loading it in memory, 250 MB RAM is taken. Any software that would split AROS executable into ELF part which would show actual size values?
readelf -S executable
it will show you all sections in elf file, including sizes and requested alignment.
objdump -h filename
That's will give you a quick overview of the sections and sizes. Ignore all the .debug.* sections.
Would hazard a guess that you have a large .bss section. That's pretty common in C++.
Next step:
nm—size-sort filename | grep ' [bB] '
The last few will be your biggest consumers. Would suggest -C to demangle the symbols... ;)
Suggest profiling the program (just use some printf's in the main loop for time spent in each part), it usually is quite easy to spot slow parts in games or apps.
If someone has '#define IPTR ULONG' somewhere. To see where that define is, redefine IPTR in the source code that fails, just above the line that fails, and the preprocessor will tell you where it was defined first.
===How to setup gdb with AROS/hosted===
Download AROS sources (AROS-xxxxxxxx-source.tar.bz2, where xxxxxxxx is the current date) and AROS contrib sources (AROS-xxxxxxxx-contrib-source) from
Untar-bzip2 and cd to the unpacked archive directory.
> tar -xvjf AROS-xxxxxxxx-source.tar.bz2
> cd AROS-xxxxxxxx-source
Check the link to "contrib" (contrib-source) inside directory, e.g. correct like this:
> rm contrib
> ln -s ../AROS-xxxxxxxx-contrib-source.tar.bz2 contrib
Make sure you have the correct locale setting, otherwise compilation will fail at some point. See [http://aros.sourceforge.net/documentation/developers/compiling.php#setting-the-locale-to-iso8859 here] (or link below) for more on that. You might have to enter this:
> export LANG="en_US.ISO-8859-1"
Now configure for a debug build - see "./configure --help" for more - here are two examples:
> ./configure—enable-debug=stack,modules,symbols
> ./configure—enable-debug=all
You may "make" now, or choose a separate directory for your build (e.g. for easy removal), for example if compiling for i386 architecture you could create a directory like this:
> mkdir linux-i386
> cd linux-i386
> ../AROS/configure—enable-debug=stack,symbols,modules
When done configuring you're ready to go:
> make
Building AROS takes some time - minutes on fast machines (e.g. 2.5 GHz quadcore), up to hours on slower machines.
The result will be AROS Linux hosted with gdb debugging enabled.
See aros.org documentation for more on compiling AROS, including more [http://aros.sourceforge.net/documentation/developers/compiling.php --enable-debug] options.
When finished, enter bin/linux-i386/AROS directory (replace "linux-i386" with your compilation target platform, e.g. linux-x86_64, etc.) inside the unpacked archive directory. This directory contains the required .gdbinit file for properly running AROS inside gdb.
> cd bin/linux-i386/AROS
Run AROS (here: with 128MB of memory) from gdb:
> gdb—args boot/aros-unix -m 128
or
> gdb—args boot/arosboot -m 128
(gdb) r
Watch the shell output - in case AROS complains about "LoadKeyCode2RawKeyTable: Loading "DEVS:Keymaps/X11/keycode2rawkey.table" failed!" you should also see some instructions on how to create a keymap table. (see link above "more on compiling", too.)
Quit gdb, and try default keymap table:
(gdb) q
The program is running. Quit anyway (and kill it)? (y or n) y
> cd ../../..
> make default-x11keymaptable
Re-run AROS, as described above. Try e.g. RAros (= right windows key) + W to open a shell. If this doesn't work you have to create a keymap table yourself, quit gdb again, and make a new keytable:
> make change-x11keymaptable
A window will open. Watch the window's title bar, and follow the instructions.
When done, re-run AROS. RAros + W should now open a shell.
Next, compile your program with gdb support.
When you start GDB is there a warning which says
warning: File "<whatever>/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to ...
If so start gdb with "-ix .gdbinit"
<pre>
Summary - In short:
* build AROS with debugging support (i.e. ./configure --enable-debug=all)
* build your application with debugging support (i.e. option -g)
* run AROS in the GNU debugger (you may use the GUI frontend "ddd" which simplifies usage a bit)
* start your application
* use the commands "findaddr" and "add-symbol-file" as written in the debugging manual
* if the debugger doesn't find the source code of your application use the "dir" command of the debugger.
</pre>
===How to use gdb===
In AROS open a shell, then (in host shell) use CTRL-Z to go into gdb. Use "b Exec_CreatePool" (one of the functions used early on by startup code in programs) to add a breakpoint, then "cont" and gdb will interrupt somewhere early during startup of "program". Use "bt" to show backtrace and "loadseg" for "??" entries. One of them will be for "program". After that you can use "disassemble program".
One thing you need to make sure is that .gdbinit you have in your build directory is the same as in source tree. It has been modified some time ago, but the build system does not refresh it - you need to copy it manually
To recap, please read our debugging [http://aros.sourceforge.net/documentation/developers/debugging.php manual]:
To detect segfaulting when loading, try...
./configure—enable-debug—with-optimization="-O2"
Because crash or no crash may depend on optimization. For newer compilers maybe this helps...
--with-optimization=-"-O2 -fno-strict-aliasing"
One way to make crashes less random (more easily reproducible) is to activate the munging of free memory in rom/exec/freemem.c which is normally commented out:
<pre>
Index: freemem.c
===================================================================
--- freemem.c (revision 34289)
+++ freemem.c (working copy)
@@ -154,11 +154,12 @@
* created with their TCB placed in the tc_MemEntry list. The workaround
* is to avoid munging when FreeMem() is called with task switching disabled.
*/
+
/* DOH! it doesn't work even this way. What's wrong???
- *
- * if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
- * MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
*/
+
+ if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
+ MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
}
</pre>
Mungwall can be turned on at runtime. Currently this works in all hosted versions. Just specify "mungwall" on kernel command line and it works. It can work on native too. In order to enable it you need to parse kernel command line, and if "mungwall" is present, set EXECF_MungWall bit in IntExecBase.IntFlags.
This needs to be done before the first AllocMem() for obvious reasons. And never reset back this flag! If you change it on a working system, you are doomed.
Hosted ports do the processing in rom/exec/prepareexecbase.c --enable-debug=mungwall option in configure still works but is going obsolete. A kludge in rom/exec/allocmem.c is responsible for this and it needs to be removed when the transition is done.
BTW, on i386-pc port it can be activated by "mungwall" argument on command line, you don't need to rebuild AROS.
New mungwall affects not only AllocMem()/FreeMem(), but also pools. I also tested it with AllocAbs(), seems to work correctly.
Runtime mungwall works on:
* pc-i386
* pc-x86_64
* linux-i386
* linux-x86_64
* darwin-x86
* linux-ppc
Works on all hosted ports, if the port itself is working.
* amiga-m68k
* Not on sam440-ppc and efika-chrp-ppc, even if they would be able to be built at moment. Does not work on (for now, need NVRAM support)
When starting my freshly rebuilt i386-linux-aros which was compiled with full debugging support I get sometimes the error "Program exited with code 0377". Add the following to your .gdbinit:
set follow-fork-mode child
Here are some of the custom AROS gdb functions (defined in ".gdbinit" file) to resolve "in ?? ()" entries in backtrace:
<pre>
#0 0xb7ffd424 in __kernel_vsyscall ()
#1 0xb7e2a657 in sigsuspend () from /lib/libc.so.6
#2 0xb7c63900 in ?? ()
#3 0xb7c640e3 in ?? ()
#4 0xb7c641e0 in ?? ()
</pre>
You can use
loadseg 0xb7c63900
loadframe 2
or
loadbt
and some others. Use "help " for a little help text. If the commands do not work try "loadkick" first.
Use "thistask", "taskready", "taskwait" to get list of AROS tasks. "bttask " shows backtrace of a task which is in ready or in wait queue and "loadseg" to resolve "??" entries in it's backtrace ("loadframe" would not work as it assume current running task).
===Native debugging tools for AROS===
to enable debugging at boot time entering the GRUB menu editing line (E key) and adding "debug=memory" to your boot line, then press Ctrl+X to complete booting.
SYS:Tools/Debug/'''Bifteck'''
Open a shell and enter the line below to run Biftek and grab the debug messages collected in RAM into a text file.
tools/debug/bifteck > ram:debug.txt
and certainly does not open a window. It is a shell tool and only dumps data located from the debug location.
It is therefore important to 'catch' that debug data as soon as possible (before it gets overridden). You should invoke bifteck at the first opportunity before doing anything else. You can use the TO option to store bifteck output to a file or you can pipe it manually to a file.
SYS:Tools/Debug/'''Sashimi''' - displays error messages
One suggestion is to do a bug() debugging. Each time bug() is executed it will be output on sashimi.
You include <aros/debug.h> and place bug("something\n"); in your source code at location though which control passes.
To get the output - open an aros shell
SYS:Tools/Debug/sashimi > RAM:out.txt
'''Ctrl C''' to end the output to the RAM Disk.
# open shell, and type
# ram: (to switch to ram drive)
# System:Tools/Debug/Sashimi > mylogfile.txt
# open AHI prefs using wanderer (or use another opened shell)
# play test sound
# close AHI prefs
# shell still open with Sashimi running: press ctrl-c to break Sashimi and return to prompt.
# in shell: copy mylogfile.txt System: (or to your required location)
SYS:Utilities/'''Snoopy''' - monitors OS function calls, run "Sashimi" to see Snoopy's output
SYS:Tools/'''WiMP''' - the Window (and Screens) Manipulation Program
You can use the -E option of gcc to find out how preprocessor macros are expanded.
===Errors===
crash in strcasecmp usually means that one of its arguments is NULL.
empty space between these two names, prossibly some invisible character
Old Amiga [http://www.amigacoding.com/index.php?title=Guru_codes&redirect=no Guru Codes]
If the crash is in intuition. Sometimes, if it relates to text, a null pointer sets it off.
an uninitialised pointer can have any address (this is a common fault).
Compiling on 64bit, Many old code would not properly typecast when doing pointer-integer conversions and thus at least throw a warning. This can easily be located and fixed.
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
* Fix (change IPTR/SIPTR back to ULONG/LONG) the few places which really rely on ULONG/LONG being exactly 32 bit. That's for things like pixel (ARGB) buffers, structs written/read to disk, colormaps, but probably not much else.
Then again, many current compilers also throw a warning when you try to assign a pointer value to an integer and the integer is possibly too small. This happens under .NET for example when a 64 bit pointer is assigned to something like an ULONG - so exactly the case which you described.
=== AI ===
<---
Model <---> Agent ---> End user
Gemini LMStudio
Qwen Comfyui
etc
Recent, self hosting on laptops, mini pcs or desktops with '''quantization''' 4bit has reduced memory requirements but still require 16Gb+ and no high end gpu
*[https://lmstudio.ai/download LMstudio single gpu],
Google Gemma 4 Model
*[ 12B QAT]
Alibaba Cloud's [https://huggingface.co/ Qwen] team series of large language models LLMs
*[https://huggingface.co/models?other=qwen3 Qwen 3], [],
*[https://huggingface.co/models?other=qwen2 Qwen 2], [https://huggingface.co/Qwen/Qwen2.5-Coder-32B qwen 2.5 Coder],
Small Claude Model
*[https://github.com/sipeed/picoclaw picoclaw]
Bigger LLMs but with settings
*[https://ollama.com/download Ollama single gpu]
*[https://github.com/ggml-org/llama.cpp/releases llama.CPP multi gpus],
*[ VLM multiple gpus],
For the full experience
#Training learning using 1+ high end GPUs at least 16GB VRAM per GPU card or 64Gb+ of unified, 16Core CPU with at least 64Gb of RAM system memory, though training can take weeks
#Inference with custom asics or GPUs
[ MiniMax H3]
=== Linux ===
<syntaxhighlight lang="c">
/* 1. Header for your name,date,purpose of program.
2. Pre-processor directives. This will include the #includes for files you want to add.
3. Includes for function prototypes if necessary.
4. Main()
Create Pointers for Libraries and any Window you want to open.
5. Open necessary libraries.
6. Check if open exit program if fail.
7. Open a window exit program if fail.
8. Add your program
9. Close Window
10 Close Libraries.
11 End Program. */
/* standard os included headers <.h> */
#include <dos/dos.h>
#include <dos/dosasl.h>
#include <dos/dosextens.h>
#include <dos/exall.h>
#include <dos/rdargs.h>
#include <exec/memory.h>
#include <exec/types.h>
#include <utility/utility.h>
#include <intuition/intuition.h>
/* define as unresolved external references (proto/xxx.h) and compiler will link to auto(matically) open library */
#include <proto/arossupport.h>
#include <proto/dos.h>
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/graphics.h>
#include <proto/cybergraphics.h>
#include <proto/datatypes.h>
#include <proto/icon.h>
#include <workbench/workbench.h>
#include <workbench/icon.h>
#include <datatypes/pictureclass.h>
#include <proto/muimaster.h>
#include <libraries/mui.h>
#include proto/bsdsocket.h
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* my own headers ".h" */
#define CTRL_C (SetSignal(0L,0L) & SIGBREAKF_CTRL_C)
#define isDir(fib) ((fib)->fib_DirEntryType >= 0)
#define ARG_TEMPLATE "FILE/A,ALL/S,QUIET/S,W=WIDTH/N,H=HEIGHT/N,M=METHOD,DEFTOOL"
int main(void)
{
return retval;
} /* main */
</syntaxhighlight>
If you used c++, there is not yet c++ support in our shared library system.
The easiest way to create / compile a shared library would be to use the AROS build system but the libraries can be created manually. You have to create a ROMTAG structure and some header files.
A shared library is built with the %build_module macro with a line like this:
%build_module mmake=MetaTarget modname=mylib modtype=library files=SourceFiles
This macro can build different AROS module types, like devices, Zune classes, HIDDs, etc.
<pre>
##begin config
version 1.0
##end config
##begin functionlist
void func1(LONG a, LONG b)
int func2(char *s, ULONG a)
##end functionlist
</pre>
There is more [http://aros.sourceforge.net/documentation/developers/sys-dev/libraries.php here]
Alternatively,
<pre>
#ifndef LIB_H
#define LIB_H
#define __NOLIBBASE__
#include <exec/libraries.h>
#include <exec/semaphores.h>
#include <dos/dos.h>
#ifdef __AROS__
//#include <aros/debug.h>
#define reg(x)
#define __saveds
#endif
#define USESYSBASE struct ExecBase *SysBase = Base->My_SysBase;
struct MyTestBase
{
struct Library My_Test_Lib;
struct ExecBase *My_SysBase;
APTR My_SegList;
int testint;
};
#endif
</pre>
<pre>
/*--------------------------------------------------------------------------*/
/* Resident header written for mytest.library */
/*--------------------------------------------------------------------------*/
#define __NOLIBBASE__
#define VERSION 1
#define REVISION 0
#define LIBHEADNAME mytest
#define LIBHEADNAMESTR "mytest"
#define COMPDATE "04.10.2015"
#define VERS "1.0"
#define LIBBASETYPE struct MyTestBase
#define LIBBASETYPEPTR LIBBASETYPE *
#include <aros/debug.h>
#include <exec/exec.h>
#include <proto/exec.h>
#include <exec/resident.h>
#include <exec/nodes.h>
#include <exec/libraries.h>
#include <aros/symbolsets.h>
#include "lib.h"
const UBYTE lib_name[] = LIBHEADNAMESTR ".library";
const UBYTE lib_id[] = "$VER: " LIBHEADNAMESTR ".library " VERS " (" COMPDATE ") by ALB42\n";
extern const APTR FuncTable[];
AROS_UFP3 (LIBBASETYPEPTR, InitLib,
AROS_UFPA(LIBBASETYPEPTR, Base, D0),
AROS_UFPA(BPTR, seglist, A0),
AROS_UFPA(struct ExecBase *, sysbase, A6)
);
static struct LibInitStruct
{
IPTR LibSize;
const APTR *FuncTable;
const struct DataTable *DataTable;
APTR InitFunc;
}
const LibInitStruct =
{
sizeof(LIBBASETYPE),
FuncTable,
NULL,
(APTR)InitLib
};
const struct Resident romtag =
{
RTC_MATCHWORD, /* match word */
(APTR)&romtag, /* back pointer */
(APTR)(&romtag + 1), /* skip pointer */
RTF_AUTOINIT | RTF_EXTENDED,/* flags */
VERSION, /* version */
NT_LIBRARY, /* type of module */
0, /* init priority */
(STRPTR)lib_name, /* module name */
(STRPTR)lib_id + 6,
(APTR)&LibInitStruct,
REVISION, NULL
};
AROS_UFH3 (LIBBASETYPEPTR, InitLib,
AROS_UFHA(LIBBASETYPEPTR, Base, D0),
AROS_UFHA(BPTR, seglist, A0),
AROS_UFHA(struct ExecBase *, sysbase, A6)
)
{
AROS_USERFUNC_INIT
Base->My_SegList = seglist;
Base->My_SysBase = (APTR)sysbase;
Base->testint = 0;
USESYSBASE
bug("InitLib\n");
if (!set_open_libraries())
{
set_close_libraries();
return NULL;
}
return Base;
AROS_USERFUNC_EXIT
}
AROS_LH1(LIBBASETYPEPTR, LibOpen,
AROS_LHA (ULONG, version, D0),
LIBBASETYPEPTR, Base, 1, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibOpen\n");
(void)version;
Base->My_Test_Lib.lib_OpenCnt++;
return Base;
AROS_LIBFUNC_EXIT
}
__saveds APTR LibExpungeInternal(LIBBASETYPE *Base reg(a6))
{
USESYSBASE
APTR seglist;
bug("LibExpungeInternal\n");
if (Base->My_Test_Lib.lib_OpenCnt)
{
return 0;
}
seglist = Base->My_SegList;
Forbid();
Remove((struct Node*)Base);
Permit();
FreeMem((APTR)Base - Base->My_Test_Lib.lib_NegSize, (LONG)Base->My_Test_Lib.lib_PosSize +
(LONG)Base->My_Test_Lib.lib_NegSize);
set_close_libraries();
return seglist;
}
AROS_LH0(BPTR, LibClose,
LIBBASETYPEPTR, Base, 2, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibClose\n");
if (!(--Base->My_Test_Lib.lib_OpenCnt))
{
return LibExpungeInternal(Base);
}
return 0;
AROS_LIBFUNC_EXIT
}
AROS_LH1(BPTR, LibExpunge,
AROS_LHA(LIBBASETYPEPTR, Base, D0),
struct ExecBase *, sysBase, 3, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
(void)sysBase;
USESYSBASE
bug("LibExpunge\n");
return LibExpungeInternal(Base);
AROS_LIBFUNC_EXIT
}
AROS_LH0(LIBBASETYPEPTR, LibReserved,
LIBBASETYPEPTR, Base, 4, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibReserved\n");
return 0;
//return (APTR)LibReserved();
AROS_LIBFUNC_EXIT
}
// Space for your own functions
// do not forget to update the FuncTable as well
AROS_LH1(int, TestFunction,
AROS_LHA(int, TestValue, D0),
LIBBASETYPEPTR, Base, 5, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("TestFunction\n");
Base->testint = TestValue + Base->testint;
return Base->testint;
AROS_LIBFUNC_EXIT
}
// Functable -> Table of all functions in the Library, in right order - important!
const APTR FuncTable[] =
{
&AROS_SLIB_ENTRY(LibOpen,LIBHEADNAME,1),
&AROS_SLIB_ENTRY(LibClose,LIBHEADNAME,2),
&AROS_SLIB_ENTRY(LibExpunge,LIBHEADNAME,3),
&AROS_SLIB_ENTRY(LibReserved,LIBHEADNAME,4),
&AROS_SLIB_ENTRY(TestFunction,LIBHEADNAME,5),
(void *)-1
};
// AutoInit stuff
void *__PROGRAM_ENTRIES__symbol_set_handler_missing;
void *__LIBS__symbol_set_handler_missing;
// end of AutoInitStuff
</pre>
Makefile
<pre>
VPATH =
CFLAGS = -O2 -g -fomit-frame-pointer -W -Wall -Wno-parentheses
CC = i386-aros-gcc
LD = i386-aros-gcc
LDFLAGS = -nostartfiles -Wl,-Map -Xlinker linkermap
LIBS = -lautoinit -llibinit
STRIP = i386-aros-strip --strip-unneeded --remove-section .comment
OBJS = lib_header.o
all: mytest.library
mytest.library: $(OBJS)
$(LD) $(LDFLAGS) $^ $(LIBS) -o $@
lib_header.o: lib_header.c lib.h
clean:
rm -f *.o *.library *.ppu testlibrary linkermap
</pre>
Porting UNIX library to AROS - dealing with static variables which would make it easy to port such libraries to AROS, keeping the benefits of sharing them on disk, but losing the benefit of actually sharing them in memory.
Our problem arises by the fact we want to share the actual code (the .text section of the library) and constant data, but we need to have per-task .bss and .data sections. If we get rid of our intention to share the .text and .rodata sections, things get quite easy: just load and relocate the library whenever it's open, by whoever it's open. It's like statically linking the library into the executable, except that the final linking is done at runtime.
In the V0 branch, in workbench/hidds/hidd.nouveau was committed pcimock.hidd. This is a pci driver that allows mocking real PCI devices under linux-hosted. The main idea is to be able to run the real hardware driver under linux-hosted with as little changes as possible (some changes will always be needed though unless someone wants to write complete device simulator) so that driver's code paths can be executed and debugged using gdb. This was a very helpful capability when porting nouveau. Now it is externalized from nouveau.hidd and can be used by other people porting drivers. The pcimock.hidd can currently mock 4 different nvidia cards, 1 AGP bridge and also mock irq.hidd.
What's the difference between this driver and the pcilinux.hidd? I used that one to develop many different HW drivers for aros. As far as I understood the intention of pcilinux.hidd it is supposed to get access to real hardware that is running under linux. The pcimock.hidd goal is to mock the hardware. For example my dev box is a PCIE system, but I still would like to run the AGP codes paths in nouveau under linux-hosted to check if they don't seg fault. The other case would be to run codes paths for hardware that the developer does not have (Fermi cards in my case). In the case of pcimock.hidd, the AROS driver's code paths will execute as long as you add proper mocking (for example fill in PCI config area or values for registers in BARs). This is an advantage for ported drivers - the code should already work (since it worked on another system) but there might have been mistakes made during porting which can be detected easily with gdb.
In case you are writing your driver from scratch, pcilinux.hidd hidd will give you more advantage, since you can actually access the real hardware from linux-hosted.
== Misc ==
===APL, MPL, BSD, GPL and LGPL Licences===
The majority of AROS sources in licensed under AROS Public License ([http://aros.sourceforge.net/license.html APL]) which (to a degree) protects us from someone taking AROS sources and not contributing improvements back (for example MorphOS took some AROS source and then contributed changes back)
It is written to allow the use of AROS code in other open source or commercial projects without exception whilst providing a mechanism so that improvements/additions can find their way back to the original source in one form or another.
There are "3rd" party applications used by AROS that do not fall under this license, which are an extra "Contrib" download for convenience.
Anyone can port GPL-ed network and sound drivers as AROSTCP and AHI are GPLed. Direct using (porting) [http://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs GPL]-ed code in other parts of AROS (gfx, sata, usb) is not possible because AROS license is not compatible with GPL. You need to utilize permissive licensed code like BSD or MIT/X11.
BSD and MPL license are the closest to APL.
APL however is not so compatible with LGPL/GPL.
LGPL case - you cannot statically combine APL code with LGPL. You can, however thank to LGPL being "lesser" restrictive, use LGPL dynamically loaded libraries in APL codes.
GPL case - you cannot combine APL code with GPL in any way if there is no explicit clause by GPLed code authors allowing that. If you do combine APL with GPL in "bad" ways described above - you have a problem (you violate GPL). This problem might result in everything in AROS becoming GPL or everything running or AROS becoming GPL (here I'm not sure really). The other scenario is that you are not allowed to legally distribute such code at all. To be honest I have grasped how to violate GPL, but I'm still no exactly sure what happens when you violate it (but I'm sure it's not anything nice)
GPL software can run on top of non-GPL "system components" (see system components exception of GPL), but the other way around (non-GPL using GPL) leads to problems. This means applications like scout, or Quake III are ok (in the majority of cases).
Theres no reason GPL drivers cannot be ported - but they cant be in AROS's ROM (requires linking APL code with GPL), nor can AROS depend on them (e.g. they must use existing apis).
If they are launched (dynamically linked) by a user action that is allowed. It is also allowed to distribute such binaries together for convenience.
GPL is not about statical or dynamic linking but is about executing process and function calls.
These components - SFS, isapnp, Zune texteditor, AHi, network drivers, freetype, openuirl, BHFormat, Edit and (" dynamically loaded libraries") are LGPL, not GPL. Mesa/Nouveau stuff is MIT. Some user tools are GPL though.
'''AROS (system)'''
* system components (libraries/classes/devices/etc) cannot be GPL as they would propagate GPL to complete system as well as GPL is not compatible with MPL from which APL is based
* system components can be LGPL v2 or a permissive license (MIT/BSD)
* system applications can be anything you like (but still I would prefer APL or permissive so the code can be reused if needed)
'''Contrib:'''
* no rules - contrib does not impact AROS system since nothing in AROS system depends on contrib.
About stealing code: The chances of this happening is exactly the same whether we are APL or GPL. If any closed-source option wanted to do it, there is no one that can validate otherwise. MorphOS has used some AROS codes, but contributed changes back.
The rationale behind APL is that while it guarantees that the original developer will get the improvements back (to a certain degree - file based), the person who uses the codes does not have to open his original codes. BSD does not guarantee that the original developer gets improvements. GPL requires the person using the codes to open his codes as well.
The copyright holders needs to stay - we just need information from them that the codes are available under APL (for example a checked-in file like in case of Poseidon). We don't do transfer of copyrights.
; Ultimately what can and cannot be done is up to the author(s) - not the licence.
===AROS source code tree===
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-trunk.txt
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
Found this interesting (non-GPL) licensing 'anomaly' - to keep in mind for distributors.
Programs that lose their license if sold ("non-profit only" licensed):
contrib/aminet/comm/term/TinyTerminal
contrib/aminet/dev/basic/bwBASIC
contrib/aminet/text/edit/xdme
contrib/fish/aroach
contrib/fish/lotto
contrib/fish/shuffle
contrib/fish/touch
+ cdvdfs.
Here is a list of all the GPL/GPLv2/GPLv3 licenses fossology found, what have explicit licenses in their comments.
excluded LGPL, BSD/GPL dual licensed and programs (such as Prefs/Edit and BHFormat)
<pre>
AROS/rom/dbus/include/ AFL_v2.1 ,GPL_v2+ (supposedly AFL < 3 is GPL incompatible)
AROS/workbench/classes/zune/betterstring/include/ GPL_v2+
AROS/workbench/classes/zune/texteditor/include/ GPL_v2+
AROS/workbench/classes/datatypes/gemimage/ GPL_v2+ GPL
AROS/workbench/classes/datatypes/degas/ GPL_v2+
AROS/workbench/libs/openurl/README: GPL
AROS/workbench/network/smbfs/documentation/ GPL_v2
AROS/workbench/network/smbfs/source_code/ GPL_v2+
AROS/workbench/network/stacks/AROSTCP/bsdsocket/kern/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/mmakefile.src conf.h GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/sys/ CMU ,GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/net/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/api/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/conf/conf.h: GPL_v2
AROS/workbench/network/stacks/AROSTCP/netinclude/net/radix.h: CMU ,GPL_v2
AROS/workbench/devs/AHI/AHI/ GPL_v2+
AROS/workbench/devs/AHI/AddAudioModes/ GPL_v2+ AROS/workbench/devs/AHI/AddAudioModes/COPYING: GPL
AROS/workbench/devs/AHI/Docs/texinfo.tex: GPL_v2+
AROS/workbench/devs/AHI/COPYING: GPL
AROS/workbench/devs/AHI/Drivers/EMU10kx/ GPL_v2+
AROS/workbench/devs/AHI/AHI-Handler/ GPL_v2+
AROS/workbench/devs/networks/rtl8029/ GPL GPL_v2+
AROS/workbench/devs/networks/pcnet32/ GPL GPL_v2+
AROS/workbench/devs/networks/ppp/LEGAL: GPL
AROS/workbench/devs/networks/atheros5000/ GPL_v2+
AROS/workbench/devs/networks/rhine/ GPL_v2+
AROS/workbench/devs/networks/nForce/ GPL_v2+ GPL
AROS/workbench/devs/networks/prism2/ GPL GPL_v2+
AROS/workbench/devs/networks/fec/LEGAL: GPL
AROS/workbench/devs/networks/rtl8139/ GPL GPL_v2+
AROS/workbench/devs/networks/etherlink3/ GPL GPL_v2+
AROS/workbench/devs/networks/intelpro100/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8169/ GPL GPL_v2+
AROS/workbench/devs/networks/emac/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8168/ GPL GPL_v2+
AROS/workbench/devs/networks/realtek8180/ GPL_v2+
AROS/workbench/devs/networks/via-rhine/via-rhine.c: GPL_v2+
AROS/workbench/devs/networks/via-rhine/ GPL GPL_v2+
AROS/workbench/devs/networks/e1000/ GPL_v2
AROS/workbench/devs/networks/sis900/ GPL GPL_v2+
</pre>
AHI: it has special provisions (COPYING.DRIVERS). The library is LGPL, preferences software is GPL and drivers can be anything without breaking GPL/LGPL.
Network stack: well, we are long overdue for a new, IPv6 enabled network stack anyway, anyone interested? ;) Seriously though it seems like the glue code is GPL and as all the drivers. However some of the drivers are our own code, so they could be relicensed to LGPL.
Same filter as the AROS trunk list. These should all be libraries or plugins - no programs.
<pre>
contrib/regina/utsname.h: GPL_v2+
contrib/mui/classes/nlist/include/default-align.h: GPL_v2+
contrib/mui/classes/nlist/include/amiga-align.h: GPL_v2+
contrib/mui/classes/BWins/include/MUI/BWin_mcc.h: GPL
contrib/mui/classes/BWins/include/BWin_private_mcc.h: GPL
contrib/mui/classes/BWins/COPYING: GPL_v2
contrib/mui/classes/BWins/MCC_BWins.readme: GPL_v2
contrib/mui/classes/thebar/include/default-align.h: GPL_v2+
contrib/mui/classes/thebar/include/amiga-align.h: GPL_v2+
contrib/gfx/libs/wazp3d/LEGAL: GPL
contrib/gfx/libs/wazp3d/Wazp3D.readme: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.c: GPL
contrib/libs/mpega/ GPL_v2+
</pre>
http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
===Types===
On AROS following rules apply:
<pre>
1. BYTE/UBYTE is 8bit, WORD/UWORD is 16bit, LONG/ULONG is 32bit, QUAD/UQUAD is 64bit, the types are comparable with stdint types (int8_t, int16_t, int32_t, int64_t)
2. IPTR/SIPTR are integer types large enough to fit pointer, that is sizeof(IPTR) = sizeof(APTR) = 4 on 32bit system, and = 8 on 64bit system
3. ti_Data in TagList is large enough to hold a IPTR/APTR type.
4. never store a pointer in integer of type LONG. It may work (if the pointer has upper 32bits clear), but does not have to. Compiler should warn you about that.
5. If you are unsure about point 4, allocate your memory with MEMF_31BIT flag set. But don't expect that AROS internals will do the same.
</pre>
point 4 is actually important.
* UBYTE/BYTE for 8bit
* UWORD/WORD for 16bit
* ULONG/LONG for 32bit
* UQUAD/QUAD for 64bit
<pre>
UBYTE Unsigned 8 bit integer variable (byte).
BYTE Signed 8 bit integer variable (byte).
UWORD Unsigned 16 bit integer variable (word).
WORD Signed 16 bit integer variable (word).
ULONG Unsigned 32 bit integer variable (longword).
LONG Signed 32 bit integer variable (longword).
FLOAT 32 bit IEEE floating point variable.
UQUAD Unsigned 64 bit integer variable.
QUAD Signed 64 bit integer variable.
DOUBLE 64bit IEEE floating point variable.
BOOL Boolean variable, TRUE and FALSE are also defined in exec/types.h.
VOID Void.
APTR A generic pointer for multiple purposes - Arrays.
STRPTR A pointer to a null-terminated string.
IPTR Really important in AROS, the only way to declare a field that can contain both: an integer or a pointer.
</pre>
if you want to write really portable app, you may be interested in standard datatypes defined in C99: int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, intptr_t, uintptr_t. They are all defined in inttypes.h include file.
In exec/types.h the following short-cuts are typedef'd. They are used often in AROS, so you should nearly always include exec/types.h and soon only they will be removed from sys/_types.h include, all types are now defined in include files named aros/types/xxx.h.
(Preparation for C library split; sys/xxx.h include will only be available there when compiling with POSIX C library)
Compiler specific types, like int and long might change their size. In case of AROS, similar to linux, int remains 32 bit whereas long grows to 64 bits in size.
If you use Amiga-like data types, i.e. BYTE/UBYTE, WORD/UWORD, LONG/ULONG and QUAD/UQUAD or the C99 standard types (uint8_t and so on, see stdint.h include) then you should have less issues to solve than by using types without size guarantee.
Of course, all pointers grow to 64 bytes using 64bit cpu. Most of the code can be just recompiled and will work. In rare cases, where e.g. pointers are casted to integers, a special care must be taken. Especially in the cases, where pointer is casted to LONG/ULONG (this code will break on 64 bit AROS) e.g. '#define IPTR ULONG'.
With compiler delint patches which the majority of them are simple casting issues to make the compiler happy. Notice some of the changes involve introducing double casts. In very recent versions of GCC. Yes, the bulk of the double casts are for converting 32 bit addresses (ie from a 32 bit PCI DMA address register) to a 64 bit pointer. First cast is to IPTR (to expand to 64 bits, and prevent sign extension if the address is above 0x7FFFFFFF), and then to APTR.
ULONG != IPTR except on 32bit .. so if you need to store pointers make sure and use IPTR and not ULONG (which some old code does). For this reason things like Taglist elements are 64bit (since the tag data can be a pointer).
If your passing items on the stack you should use the STACKED attribute to make sure they are correctly aligned (on 64bit all items on the stack are 64bit..)
There is more issues like using "== 0L" causes problems.
===Endian===
*BE
*LE
Use the macros from <endian.h> instead making a guess based upon architecture defines
<pre>
#if _BYTE_ORDER == _BIG_ENDIAN
#elif _BYTE_ORDER == _LITTLE_ENDIAN
#else
+
#error <whatever.h> - Byte order for this architecture is unsupported!
</pre>
===SVN and GIT===
If you want to help develop AROS OS itself, you can
* view current GIT/SVN entries [http://aros.sourceforge.net/ Aros Org website] or [https://github.com/aros-development-team/AROS Github], [https://github.com/ezrec older ezrec mirror], [https://github.com/michalsc/AROS/ older mirror], [https://trac.aros.org/trac/timeline TRAC], [],
* awaiting update [http://repo.or.cz/w/AROS.git git repo], [http://www.ohloh.net/p/aros/commits ohloh] or [https://svn.aros.org/svn/aros/trunk/ svn repo] and access [Git version git://repo.or.cz/AROS.git here],
* deprecated [https://www.gitorious.org/aros/aros/commit/a7fda9e ARIX commits] or [https://gitorious.org/aros/aros GIT old]
If you have SVN access (early 2015 introduced a new SVN server, create a new account at trac aros org) and/or have obtained the source [http://aros.sourceforge.net/download.php AROS site] - you can compile the current build tools/environment using:
> make development
and follow this [http://aros.sourceforge.net/documentation/developers/compiling.php#building procedure] or [https://github.com/apiraino/aros_guide Guide]
https://trac.aros.org/trac#Developing
If you plan on contributing back changes, please post information about such changes first on this [http://mail.aros.org/mailman/listinfo/aros-dev/ mailing list] for more experience developers can validate whether they are correct.
Then there are the nightly build machines. They svn update before the build and run configure as one of the next steps. autoconf might be added to the nightly build scripts.
Our build relies on packages downloaded from Internet (SDL for example) - it always worked this way. The minimal requirement (when just building core AROS) is binutils and gcc. If you build contrib as well, you need many more packages to be downloaded.
https://gitorious.org/aros/aros/commits/crosstools-II
git://gitorious.org/aros/aros.git
Branch crosstools-II there is only one commit on top of ABI_V1
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-x86_64
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-x86_64
</pre>
and
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-i386
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-i386
</pre>
build OK.
:''More information: [[Aros/Developer/Maintainer|AROS Maintainer Docs]]''
===SDI Calls===
Integrate the 'SDI'-headers to allow easier porting to all amiga-like platforms.
<pre>
PUTCHARPROTO( PutTheChar, char c, struct SPrintfStream *s )
{
// REAL CODE
}
</pre>
have "SDI_compiler.h" and "SDI_hook.h" included
its more organized like
#include SDI/SDI_hook.h
than
#include SDI_hook.h
option 1 --- i also use when back porting from amiga's..
<pre>
#ifdef __AROS__
#include SDI/SDI_hook.h
#else
#include SDI_hook.h
#endif
</pre>
also
you can add the -i include/sdi/ location if you do not want to add or edit any files.
Defining HOOKPROTO to IPTR name(struct IClass * cl, Object * obj, Msg msg); solved the problem
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order. examine compiler/include/aros/symbolsets.h (AROS_LIBREQ)
compiling mui stuff for aros setting -std=gnu99 is necessary (i have had -std=c99 most of the time).
===Locale with Flexcat===
Most languages have a locale, but not every app is localized, the only thing needed is to translate the "catalog" files. It is a case of locating the correct catalog and saving the translated version.
For every app that lacks of your language catalog and is localized anyway, you should find (in the sources) files related to locale:
* file.cd = catalog descriptor, contains base msg, with internal language (usually english)
* language.ct = catalog translation, contains every translated msg, indexed as in the file.cd.
Compare with other localized apps... Then, "make my_app-catalogs" should create and install your translated catalogs. ex : for, saying, sys:prefs/wanderer:
on root of AROS sources, type:
"make workbench-prefs-wanderer-catalogs"
then (if you changed the .cd file):
"make workbench-prefs-wanderer"
For apps not localized, you have to adapt their code to support it, if it is possible...
noticed the original .cd file has many (//) strings at the end of any voice, so added them also to the .ct file.
That (//) is only for cd files. I'm highly recommending to use FlexCat for updating ct files, e.g. like this:
flexcat app.cd deutsch.ct newctfile deutsch.ct
You'll get error checking and new entries are marked in the resulting ct file.
When editing .ct files, only change those lines containing translation and perhaps version string, nothing else.
The rest is up to the relevant tool, flexcat. In order to update your translation, type in the following in your shell:
flexcat xyz.cd xyz.ct NEWCTFILE xyz_upd.ct COPYMSGNEW
This way you will not only make sure you have correct translation file but flexcat also pre-fills newly added strings with "*** NEW *** text. Even better tool for checking cd/ct/catalog files is catcheck, but this one is sadly only available for AmigaOS/68k...
Some languages have variations, like portugues from portugal and portugues from brasil differs...
This is the way to go. I will have a look at language files, but basically if those two languages differ you have to do two separated set of translation files, yes.
(you could create a brazilian slang language localization too)
* At system level localization for one language is a dot language file.
(ex: locale:languages/klingon.language)
* At app level localization is a dot catalog file
(ex: locale:catalogs/klingon/system/libs/dos.catalog)
* At sources level, the dot ct file, and "$language" dot cd files and some building framework.
(ex: catalogs/my_app.ct catalogs/klingon.cd catalogs/mmakefile.src support.c support.h)
Please, use Flexcat to generate CT files:
FlexCat wanderer.cd NEWCTFILE=deutsch.ct
Then fill the first 2 lines with something useful:
<pre>
## version $VER: wanderer.catalog 1.1 (9.2.2006)
## language deutsch
</pre>
You can even update the CT-File: (This adds the new strings)
FlexCat wanderer.cd deutsch.ct NEWCTFILE=deutsch.ct
To compile a catalog you only need the .cd file and your translation (.ct file):
FlexCat multiview.cd deutsch.ct CATALOG=MultiView.catalog
[http://murks-ide.svn.sourceforge.net/viewvc/murks-ide/trunk/src/Catalogs/flexcat_linux?revision=100 Linux version of FlexCat]
: [http://aros.sourceforge.net/documentation/developers/app-dev/localization.php#localization-for-non-developers More information]
A script which compares the required version (i.e. the version which an application/module etc. tries to open) with the version of the existing CT files. The result is in this table:
https://github.com/aros-translation-team/translations/wiki/Progress
The following cases are highlighted:
n/a i.e. CT misses at all
version in existing CT file is lower than the required version
It might be a bit difficult to participate if you haven't worked with Git before but alternatively you can send your CT files to our Slack channel.
When the ct file has been generated via flexcat (flexcat keyshow.cd NEWCTFILE=spanish.ct) it has the following header:
---------------------------------------------------------------------------------------------------------------
## version $VER: <name>.catalog <ver>.<rev> (04.01.2021)
## language nolanguage
## codeset 0
;
---------------------------------------------------------------------------------------------------------------
Those values <ver>.<rev> are the version and revision of the CT file for the languaje or are the values of the application being localized?
The <ver> part must match with version which the application tries to open. You can find the value either in the column "Required Version" in the table which I've linked above, our you can look in the git repository. For keyshow it would be https://github.com/aros-translation-team/keyshow. You can find in the file "catalog_version.h" the right version number.
The <rev> part starts for new CT files with 0 and should be increased every time the CT file is updated.
Updated several files and created a few more that were missing on the spanish catalog.
The catalogs are in Git repositories at https://github.com/aros-translation-team
a) You tell me your Github user name. I'll invite you. You can work directly with the Git repositories.
b) You create Github forks of the catalog repositories and create pull requests.
c) You send the CT files to mrustler gmx de
===C Utils Misc===
The AROS source uses at several places the __DATE__ macro to fill the date entry of a $VER tag. Problem is that c:version doesn't understand that date format (e.g. "May 21, 2011"). As a result the output of e.g.
> "version c:shell full" contains "(null)". Is extending the version command to understand the format of __DATE__ the right solution for that problem?
AmigaOs compilers should use __AMIGADATE__ macro or similar form, if it isn't implemented it could be emulated in makefile: -D__AMIGADATE__=\"$(shell date "+%d.%m.%Y")\"
BTW. I think DD.MM.YYYY is better format than "Month DD YYY" because "Month DD YYY" is not localized in any way.
"strnicmp" shouldn't work with NULL pointers
The Situation:
compiled a linklib using c++ object files (using the c++ cross compiler).
compiled a C stub that uses the linklib (using the c++ cross compiler).
Try to link them together (using the c++ cross compiler) with C object
files (using the normal target c compiler) that need to use -nostartup
= cant do because using the c++ files pulls in arosc (for stdio etc.) -
so wants to have the autoinit stuff present.
What can I do about this??
If it is possible to manually open it then what do I need to do exactly?
=== ENV ===
The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact. However in some cases (like this one) it is not required.
99% of the time that statement is true (not required) for pretty much every file in ENV: or do people change their default icons - and prefs settings - every boot?
There seem to be a bad habit of late with developers changing things to reflect their own personal preference when the change isn't actually necessary - It would be nice if people could refrain from doing that in the tree without at least discussing it on the dev-list first (and with good reasoning unless they committed said work in the first place..)
We're not keen on the pollution of the "S:" dir: it's meant to be for scripts. What's wrong with "ENV:"?
Only the fact that it takes up RAM. I understand that for PCs with several gigabytes of RAM this is
irrelevant. But let's remember about other machines. The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact.
However in some cases (like this one) it is not required.
How about implementing in the style of HappyENV then? RAM-disk handler that falls through to reading from ENVARC: if there is no such file stored in it already. Removes RAM usage for unchanged files, removes the need to copy ENVARC to ENV in startup-sequence.
Shouldn't be too hard to make from AmberRAM, or even just extend AmberRAM to provide this service.
Is it feasable to build a special version of AmberRAM handling ENV: that will try and copy the requested file from ENVARC: if it isnt found in ENV: ?
Additionaly it could mark closed "files" as untouched - and expunge them from ENV: after a period of time to free up additional RAM:, or when the system is running low on free memory?
Silenty disappearing files may not be a good plan. Would be nice if the following would work:
ASSIGN :ENV SYS:Prefs/Env-Arc ADD
ASSIGN :ENV RAM:ENV ADD
Where new files put in ENV: end up in RAM:ENV, and opening files looks in RAM:ENV first, then SYS:Prefs/Env-Arc
Well - that's essentially what im proposing but without the assigns - or need for a RAM:ENV directory.
Adding it as a feature of AmberRAM sounds like the most memory efficient way (one handler to load in RAM) but that's only if it is possible to make it handle ENV: additionally to RAM:, and if it is even possible to add the proposed functionality (...and how to make it enable it when accessing ENV:).
===(AS)MP support===
If one has to recompile software for SMP multi core, is there any thing special one has to do to get software to run?
Use task.resource if you need to query information about what tasks are running, and clear msgports completely when they are allocated.
Most code should not need Forbid. Use Semaphores, Messages etc. to sync your own code.
Accessing system structures is a different thing. Use the proper API whenever possible.
How single structures will be protected in the future is still a moving target, at least it is not documented. And you should never use undocumented stuff
Ideas on for SMP multi-core
Another suggestion is ... Forbid/Permit function calls are meant to halt multitasking so as no other task could intervene with what ever the calling task is doing, e.g. setting semaphores. Disable/Enable calls are meant to halt interrupts and as a side effect they also halt task switching.
One option is to make it compulsory to protect shared resources with semaphores and forbid the use of simple Forbid() calls as to protect something. Setting semaphore should be done if possible with atomic instructions (check and alter in one instruction). Or make the second concurrent ObtainSemaphore call halt the second calling task and force if possible a task switch which ever gives better results.
Semaphores could store the owning tasks task pointer instead of boolean to make things easier.
As long as the CPU initiates the DMA transfers through the OS, and the OS ensures that the transferred memory is within the region accessible to the user initiating the transfer, everything is fine. The CPU is the conductor, and the CPU by that has the control of which DMA transfer is initiated and which is not.
All you need to do is to write device drivers reasonable. Hint: CachePreDMA and CachePostDMA exist.
All the Os has to do is to verify that the memory regions to be transferred are valid, and prohibit direct access to the DMA control registers from user space. None of these algorithms imply huge costs.
The current OS design doesn't really allow virtual memory in first place, Forbid() is again the problem.
[http://www.tbs-software.com/guide/index.php?guide=autodocs.doc%2Fmemory.doc&node=1 memory.library API] seem to low level. IMHO the programs should not know how the swapping is implemented. I would just go for one new memory flag
MEMF_SWAPPABLE that indicates that a certain memory region or a whole memory pool won't be accessed during Forbid()/Permit() etc. It only solves part of the problem, it only implements virtual memory and not memory protection. For the latter you need to be able make certain memory inaccessible by other programs, some memory read-only for one task and read-write for other tasks, etc. And I think this should be done in the same Address Space in order to avoid you constantly need to swap between different address spaces.
So to summarize, if there are programs using this API we may provide a wrapper layer to get them working but I am not convinced this API should be the reference API with whom to provide VM to AROS programs.
=== Variadic ===
variadic functions (i.e. functions with an arbitrary amount of arguments).
<pre>
#include <stdarg.h>
[...]
char * STDARGS GetKeyWord(int value, char *def, ...)
{
[...]
va_list va;
[...]
va_start(va, def);
[...]
va_end (args);
</pre>
Please keep with using stdarg rather than having va casted to a LONG * type and varargs handled manually. Doing so, prevents tons of casting, where a simple va_arg can be used. So, string = *((char **) args) instead of string=va_arg(va, char *).
<pre>
#include <stdio.h>
#include <stdarg.h>
int printf (const char * format, ...)
{
int retval;
va_list args;
va_start (args, format);
retval = vfprintf (stdout, format, args);
va_end (args);
fflush (stdout);
return retval;
} /* printf */
</pre>
Couldn't find varargs.h or stdarg.h. and have no use for AROS_SLOWSTACKHOOKS or AROS_SLOWSTACKTAGS.
GCC looks for stdarg.h in a different place:
/bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/include/stdarg.h
Here is a path for a "normal" header:
bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/../../../../i386-aros/sys-include/aros/system.h
The use of vararg.h isn't supported by newer gcc versions. If you want your code to run on architectures that pass part of variadic arguments in a number of registers you need to use AROS_SLOWSTACK macros. Otherwise your program will not work on powerpc and x86_64 ports.
Of course the SLOWSTACK stuff is not needed in a function that can use va_list, va_start, va_arg and va_end. It's only needed if you want to write functions like DoMethod or similar.
#include <stdarg.h>
should be enough no matter if you do cross or native compiling. If it does not work, something is wrong and should be corrected.
Stdarg.h is here, Development:lib/gcc/i386-aros/4.2.2/include/
...which is part of the compiler's default include paths. In other words, #include <stdarg.h> works out of the box, indeed. (sorry, I should have just tried it before invoking "search" or "find"...)
furthermore, myprintf() as shown above won't work, because...
printf(format, args);
...is wrong - the second argument does not match printf() prototype, it expects a argument list, but args is of type va_list (obviously) - so one has to use...
vfprintf(stdout, format, args);
...instead, just like in the original printf(), and add fflush(stdout).
additionally, one could use...
int myarg = va_arg(args, int);
...between va_start() and va_end() to access individual arguments, where each call to va_arg() returns an argument casted to the desired type (here: "int") from the list given (here: "args") and advances to the next one.
wrapping up vfprintf() and modifying the format string now is a major speedup! no more backslash-n typing! this has been haunting me for years!
On MOS and AmigaOS, the NewObject variadic function is kept in the static library. It takes most of the parameters on the stack - thanks to that the implementation of NewObject calls the NewObjectA function. Everything works perfect, and the typical MUI macros may be easily used.
This, however, is not the case when you compile for AROS. Here, NewObject is a variadic macro, not a function. Thanks such approach we do not need any custom compiler in case of systems, where the arguments of variadic functions are passed partially through registers and partially through the stack (This is the case of PPC and x86_64, this is also the reason why both OS4 and MOS require specially patched compilers).
Since NewObject is a macro, the gcc's preprocessor expects the list of macros arguments enclosed within parentheses. In MUI macros it is not the case. Imagine the following test code:
<pre>
#define foo(a,b) ((a)+(b))
int loosy_function(int a, int b)
{
return foo(a,b);
}
</pre>
This will compile and work, but the following piece of code:
<pre>
#define foo(a,b) ((a)+(b))
#define END )
int loosy_function(int a, int b)
{
return foo(a,b END;
}
</pre>
will fail with the error: unterminated argument list invoking macro "foo"
There are two ways of fixing your issue. Either create your new objects outside this huge MUI constructions, and in there use just a pointer, or get rid of the "End" macro and exchange it with "TAG_DONE)".
Badly written software is, for example, casting va_list to an APTR or even doing so as if va_list were a plain table of function arguments. Such code needs to be fixed because it has very few chances to work anywhere but on author's machine ;)
The problem is nOt that they assume sizeof(APTR) == 4, its that they often do not use APTR, and use ULONG to store pointers exclusively. If the code used APTR/IPTR as it should - most of the "problems" wouldn't exist.
It would also help if people would start using variadic arguments properly. Many coders do assumptions which shall never be made. Instead, they should consider using stdarg.h file and all the va_* functions :)
===ABI===
In the head of our SVN repository there are now only 3 directories:
<pre>
admin/
branches/
trunk/
</pre>
We have added two extra dirs there: tags and imports
As discussed when we branch ABI V0 and [[Aros/Developer/ABIv1|ABI V1]] it would also be good to introduce tags. Normally this is done in a directory in the repository called tags. Currently we don't have this directory there. (We do have branches/tags that is a hack I have done because one doesn't have write access in the top directory. I think this directory is not clean and should be removed).
The second directory I would introduce is an imports directory for implementing vendor branches as discussed in the svn [http://svnbook.red-bean.com/en/1.5/svn.advanced.vendorbr.html book]. Currently we use code from several different projects and that code is stored inside the AROS tree; we seem to have problems with keeping this code up to date and merge our changes upstream. Maintainers of up stream projects like the MUI classes etc. have complained about this (to put it lightly).
Introducing these vendor branches would make it easier to see what changes we have made and make patches to be sent upstream and make it easier to import newer upstream versions of their code. Although can't "copy" the vendor branch into the main branch because it's already there, so start with a "merge".
Yes, the first step to make the code already in the repository compatible with the vendor branches will be the most difficult. The best way to do it the following way:
* first import the version on which the current AROS code is based into the vendor branch
* then import the new version over it in the vendor branch
* finally merge the difference between these two version in the AROS code present in the repository.
For example, place NList directly under vendor and not in a subdirectory like "contrib/zune/classes".
Actually after we have a stable [http://aros.sourceforge.net/documentation/developers/specifications/drafts/abiv1.php ABIv1 (2012 or later)]. We need to move away as much as possible from the contrib directory to some other repositories. The reasons are ...
* The AROS repository should be for the core AROS code.
* other contrib projects should be tried to be compiled for all Amiga-like OSes.
* The release scheme for AROS and the other programs should not have to be aligned.
* Binary versions should be provided on aros-archives and on aminet and/or OS4Depot to install them. (Some clever programs should maybe be provided to make the life of distribution developers easier).
* avoid parallel forks of programs for AROS and the other amiga OSes.
If there is really a need for a place for hosting AROS projects we may investigate setting up such a server but then including bug tracking, governance, maillist, etc. for each project separately. I personally think there are already enough places like sourceforge, google code, savannah, etc. where people can go for hosting such projects.
==Links==
* http://amigadocs.hokstad.com
* http://amigadocs.hokstad.com/doku.php?id=dev-links
* http://www.liquido2.com/tutorial/index.html
* Amiga(TM) OS4 has a [http://www.ast-workshops.co.uk/os4pg/ workshop] page and hope to produce a [http://amigaworld.net/modules/newbb/viewtopic.php?topic_id=31117&forum=42#549091 book] soon. [http://www.solie.ca/articles/map/map.html Brief Guide].
In the future...?
*AROS 64bit - SMP, Vulkan with OpenGL compability layer
*AROS 32bit - keep for historic reasons
What would you like to see implemented in AROS?
ABIv1 completed, SMP (x86_64), SendMsg()/GetMsg() to support memory protection between target and destination, in that order. Michal Schulz and Jason McMullan have been toying with the question "What are the minimal changes needed to the AmigaOS 3.1 API to support SMP"? The answer so far seems to be "few, but subtle". For example, SysBase->ThisTask is no longer meaningful on SMP, but FindTask(NULL) is. Disable() and Forbid() are shockingly bad on performance, but adding a spinlock semaphore mode to SignalSemaphore will help new code on SMP.
Leveraging a 'common' OS with a lot of machine support (Linux, MacOS, Windows, QNX, etc.) is something that AROS has been doing for quite a long time, and it is the biggest strength of AROS. This AROS experience and programming model, in the same way the Google's Android layers on top of Linux, or MacOS X layers on top of the Darwin/BSD kernel, as a first step
* The graphics + layers subsystem could be implemented as a shim on top of a OpenGL ES implementation (ie on any modern Linux system, or the RaspberryPI's hardware, MacOS X, etc).
- This also allows every window to be on its own 3D surface with backing store, allowing Wanderer (or a Commodity)
rearrange/zoom/animate app windows without having to send a pile or refreshes to them
* Use OpenAL as the sound backend
* AROSTCP would be a thin layer over the native OS's TCP/IP stack
* dos.library, poseidon.library, and input.device would be slim shims over the native APIs
* If we move to loading all libraries' into the application's task space, instead of a single global instance of the library, this will allow SMP and MMU more easily.
- Yes, it will require a lot of work in the libraries to make this transition
- Yes, I do think it will be worth it in the end.
* A 'fat binary' install format (or, maybe LLVM bytecode) that can be 'flattend' to the target architecture on installation.
So, what would this 'AROS of the future' look like?
* AmigaOS 3.x style API, with certain 'fundamental changes' to message passing
* Uses the underlying OS' device drivers, so more AROS developer effort can go to user-visible features and bugfixes
* Allows AROS applications to run side-by-side with the OS's native apps
And why would anyone want to program on such a system?
* AROS applications would run on any system that has the AROS Framework installed
* AROS applications are pixel-for-pixel the same on all platforms.
* Develop with the knowledge that you are guaranteed OpenGL and OpenAL, and the rest of the AROS Framework
an option for mmake to dump its dependency of metatarget in a graphviz[*] input file. This should make it possible to visualize the dependencies and hopefully be inspiration for cleaning up some mess, circular or unneeded dependencies and so on.
AmigaOS gcc 9 [https://franke.ms/amiga/gcc.wiki Old versions] able to create binaries for AmigaOS and [https://eab.abime.net/showthread.php?t=93813 Upgrading gcc versions]
==References==
{{reflist}}
{{status|50%}}
{{BookCat}}
nrclbvpqe872ec0k2g2pj70lcpv44aj
4656311
4656310
2026-08-05T06:45:53Z
Jeff1138
301139
4656311
wikitext
text/x-wiki
{{ArosNav}}
==A technical overview of AROS==
Google translation [http://translate.google.com/translate?hl=en&sl=auto&tl=de&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs German], [http://translate.google.com/translate?hl=en&sl=auto&tl=fr&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs French], [http://translate.google.com/translate?hl=en&sl=auto&tl=it&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Italian], [http://translate.google.com/translate?hl=en&sl=auto&tl=es&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Spanish], [http://translate.google.com/translate?hl=en&sl=auto&tl=hi&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Hindi], [http://translate.google.com/translate?hl=en&sl=auto&tl=zh-CN&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Chinese],
[http://translate.google.com/translate?hl=en&sl=auto&tl=ru&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Russian],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pl&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Polish],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pt&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Portuguese]
{{Uncited}}
AROS,<ref>[http://aros.sourceforge.net/download.php References and sources]</ref> like AmigaOS (TM), is a [[w:Message passing|message-passing]], [[w:Preemption (computing)|preemptive]] [[w:Multitasking|multitasking]] [[w:Operating system|OS]].
It uses [[w:Reentrant (subroutine)|re-entrant]] shared libraries to save memory space.
AROS is based around an executive library kernel (Exec) and two other libraries:
* Exec (the "kernel", which is not a kernel in the modern sense),
* Intuition (graphics and GUI, integrated into the system) and
* AmigaDOS (Disk Operating System, the Metacomco's Tripos modified to work with Exec).
The design philosophies of AmigaDOS and Intuition are rather different, the former adopting a C-like API and the latter creating an [http://www.basden.demon.co.uk/amiga/amiga.oo.html object-oriented], message passing aware environment for the programmer. The system base is the only absolute address in AmigaOS (located at 0x00000004) this does differ with AROS as AROS SysBase is automatically provided (no $4) but everything else is dynamically loaded. The OS is well known for delivering high performance due to its close connections with the hardware, while simultaneously having the flexibility to support re-targetable graphics (Cybergraphics) and retargetable audio subsystems (AHI).
: Diagram showing relationships of libraries to system needed
Remember, AROS is a [http://en.wikibooks.org/wiki/Aros/Developer/ABIv1 research] operating system, and while all contributions to the base AROS code are welcome, please contact the dev list first for any core changes. Writing applications for AROS does not have this requirement.
While AROS appears and feels almost feature complete, it is still [[Aros/Developer/IncompleteAPIs|missing a small number of functions]] from the Amiga API - as well as a few implementations of [[Aros/MissingFunctionaility|core functionality]]. There are also a number of user applications that, while not strictly part of the AmigaOS 3.1 environment, need to be written.
[https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1201 This thread provides] information for setup, [http://www.aros.org/documentation/developers/index.php documentation] and whether you are interested in core OS changes and/or writing/porting software apps
*you compile directly under AROS, which can be running on either real hardware, virtual hardware
*in hosted mode under linux/window, cross-compile from that host OS (save your files as ISO-8859-15 encoding instead of UTF-8)
The repository for the [https://github.com/aros-development-team/AROS current development version ABIv1], the [https://github.com/deadw00d/AROS/tree/alt-abiv0 repository for current stable PC version ABIv0 with backported ABIv1 features is located which is used on AROS One and Icaros x86 based distros]
Any [https://github.com/aros-development-team/AROS/issues bugs / issues can be added]
We have a [https://arosdevteam.slack.com/archives/CUFV48U3H slack here], discord on [https://discord.gg/UKp9qdEBuQ Discord@AmigaDev],
==Software Development for AROS==
===Programming languages===
Apart from 'The Developer Environment', which primarily supports C/C++ code, there are other programming languages available for AROS:
'''Scripting'''
:[[Aros/User/DOS|DOS]], included in all
:[[Aros/Developer/Docs/LUA|LUA]], included in all or [http://www.airsoftsoftwair.de/en/prod_hollywood.html Hollywood]
:REXX [[Aros/Developer/Docs/Rexx|Regina (AROS' ARexx)]], included in all
:Python [ Info], included in Icaros
:Ruby [http://www.ruby-lang.org/en Info]/[http://archives.aros-exec.org/index.php?function=browse&cat=development/language download]
'''Basic'''
:[http://amos.pspuae.com/AmosProManual/contents/c1.html '''Amos Pro'''] [http://amos.pspuae.com/index.php?action=forum#1 compatible] [http://www.amigacoding.com/index.php/Main_Page commands] (all incomplete)
::[http://sourceforge.net/projects/xamos/ X-Amos]
::[http://sdlbasic.sourceforge.net/ SDLBasic] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://alvyn.sourceforge.net/ Alvyn] ([http://www.dusabledanslherbe.eu/AROSPage/MISC.14.html download])
::[[Aros/Developer/Basic/Basic4SDL|Basic4SDL]] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://www.ultimateamiga.co.uk/index.php?topic=9425.0 Project Deimos],
:'''Blitz Basic''' [http://aros-exec.org/modules/newbb/viewtopic.php?post_id=46537#forumpost46537 none on AROS]
:: [http://www.amiforce.de/main.php Amiblitz] on JanusUAE amiga(TM) emulator
:'''Amiga Basic'''
:: [ ACEBasic]
'''Misc'''
:[[Aros/Developer/Docs/E|AmigaE Portable E]]
:[https://ae.arosworld.org/index.php?board=11.0 FreePascal FPC Aros-Exec thread], [http://archives.aros-exec.org/index.php?function=browse&cat=development/language Download], FreePascal for AROS has its own [http://fpcaroswiki.alb42.de/ Wikibook],
:[[Aros/Developer/Docs/LLVM|LLVM]],
===Where to get the C/C++ Environment===
If you want to develop for AROS, its generally easier to be running linux hosted AROS development environment especially for C++, cross compiling the code. That's how most developers now are doing it. g++ is used to compile owb web browser as well as some other AROS software. If you were hoping for a rich set of C++ libraries or classes defined for the OS feature set, you might be disappointed.
AROS Native compiling is possible, but you're much more likely to run into the odd bug(s) in the dev environment since it gets little testing and fixing by other developers.
Is there a sftp software or scp over ssh available?
Maybe. At least the security part would be handled by [https://github.com/jens-maus/amissl amissl] [https://archives.arosworld.org/index.php?function=browse&cat=network/misc port]. DOpus5 has recently added sftp support. See here for a [https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1974&highlight=ssh&pid=12073#post_12073 ssh scp client]
[https://arosdevteam.slack.com/join/shared_invite/enQtOTc4Mzg0NDIzNzQ0LWQ2NWZmNmMwNGIwNGEyNTgxNzU3MGFjMTk3ZThmOTQ1MTVjMzhmNTllYWQ0ZTUxMjBjMGE0Y2VjMDJmNTc5MzI#/shared-invite/email Slack Dev Forum]
====Cross compilers from Windows or Linux====
*Windows WSL2 walkthrough can be [https://arosnews.github.io/how-to-cross-compile-aros-hosted-wsl/ found here]
you want to build AROS. No problem.
Here are instructions for 64-bit:
https://github.com/deadw00d/AROS/blob/master/INSTALL.md
Here are instructions for 32-bit:
https://github.com/deadw00d/AROS/blob/alt-abiv0/INSTALL.md
And as always has been the case you can use the contrib archive to 'obtain' the development directory which contains the /native/ AROS gcc compiler and tools. That compiler is used to build AROS itself but can be used outside the AROS build process by providing --sysroot with indicated directory to cross compile for AROS.
=====Older guides for Linux hosted compiler=====
Please install these packages before moving to next step. Below is a reference list for Debian-based distributions. Reference build system was Ubuntu 18.04/20.04 amd64.
subversion git-core gcc g++ make gawk bison flex bzip2 netpbm autoconf automake libx11-dev libxext-dev libc6-dev liblzo2-dev libxxf86vm-dev libpng-dev gcc-multilib libsdl1.2-dev byacc python-mako libxcursor-dev cmake zsh mingw64
Do all of these operations under home directory of your user or another directory where your user has write permissions.
Specifically, in a section "Linux-i386", be sure first to build the cross-compiler (toolchain-alt-abiv0-i386) and only then AROS itself (alt-abiv0-linux-i386).
Clone & build
<pre>
$ mkdir myrepo
$ cd myrepo
$ git clone https://github.com/deadw00d/AROS.git AROS
$ cd AROS
$ git checkout alt-abiv0
$ cd ..
$ cp ./AROS/scripts/rebuild.sh .
$ ./rebuild.sh
</pre>
Now to the build selection below - Linux-i386
Select toolchain-alt-abiv0-i386 - Select alt-abiv0-linux-i386 (DEBUG)
Start AROS by:
<pre>
$ cd alt-abiv0-linux-i386/bin/linux-i386/AROS
$ ./Arch/linux/AROSBootstrap
</pre>
Pc-i386 Select toolchain-alt-abiv0-i386 (if not built yet) - Select alt-abiv0-pc-i386
ISO image available in alt-abiv0-pc-i386/distfiles
Now that we have linux-hosted build, we can resume native (option 2).
Run ./rebuild.sh and selection option 2. Wait until it finished, then:
<pre>
$ cd alt-abiv0-pc-i386
$ make
</pre>
Now
<pre>
$ make bootiso
</pre>
Now, your compiler is located in toolchain-alt-abiv0-i386 directory and named i386-aros-gcc. Includes are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/include and libraries are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development.lib.
This is how then can be passed to the compiler:
/home/xxx/toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot /home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development -L/home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/lib
../toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot bin/linux-i386/AROS/Development local/helloworld/helloworld.c -o local/helloworld/helloworld
Another method was using Debian like distros and download the gimmearos.sh script (on [http://archives.aros-exec.org/index.php?function=browse&cat=development/cross aros-archives]) to setup the developer environment by downloading necessary packages ...
The gimmearos script is a good start in that direction, building the cross compilers and hosted AROS environment, but gimmearos.sh might be out of date or not be completely compatible with any given linux distro.
In order to do that, you have to compile AROS yourself. Download AROS source archive not contrib. Compile AROS by entering the main directory
./configure
make
([http://aros.sourceforge.net/documentation/developers/compiling.php More on compiling AROS]). The result will be a basic AROS system without development tools.
To compile C++ on Linux, type 'make gnu-contrib-crosstools', creating the cross-compilers in ./bin/linux-i386/tools/, named i386-aros-gcc, etc.
'''Note''': Currently, to make the cross compilers usable copy 'collect-aros' from tools/ to tools/i386-aros/bin/. At the moment the cross compilers if used from the Linux command line will only find it when it's there.
If you want to compile native compilers (the Developer Environment), type 'make contrib-gnu-gcc', creating native compilers in AROS' System:Development/bin directory.
When the output needs to be stripped <code>--strip-unneeded --remove-section .comment</code>
The Obj-C backend should build out of the box.
Open contrib/gnu/gcc/mmakefile.src and search for the line which contains "--enable-languages" and add "objc" to the list of languages that follows it.
--enable-languages=c,c++,objc
Better make it—enable-languages=c,c++,objc,obj-c++
ObjC++ is broken as soon as you try to use exceptions, but that might change in future GCC versions and it does not hurt having it there already.
Do you need a cross-compiler or a real compiler? In the first case you can get away with just downloading the proper gcc archive, apply the patch and proceed with the normal gcc build. In the case of a real cross-compiler then when downloading the contrib sources, also need to download the normal sources, place the contrib sources into a directory called contrib, need to install autoconf+automake+perl+python, call ./configure, cd into the subdirectory and type make.
to rebuild GCC with host == build == target == i386-pc-aros. So just get the vanilla sources and apply the patches without bothering about the build system?
[https://vmwaros.blogspot.com/2019/10/a-pre-configured-development-machine.html pre-configured VM environment vmware virtual machine to develop AROS and AROS software]
'''64 bit'''
'''32 bit'''
A good option for multiple OS is [https://axrt.org/index.php?tab=download-aros AxRuntime lets developers compile their Amiga API-based applications as Linux binaries being able to utilize modern development tools available on Linux, like IDEs, debuggers, profilers, etc]
====Native compilers for AROS====
Namely gcc for C or g++ for C++ are supplied with the [[Aros/Developer/Docs#The Developer Environment|Developer Environment]], which is already '''setup''' and part of any current AROS distribution like AROS One or the nightlies
* Current GCC 6.5 (32bit) though moving to 10.5 and 15.1 (64bit)
* Older software components. GNU GCC 4.x GNU BinUtils, GNU Fileutils 4.x, GNU Textutils and others.
On single partition systems and the Boot ISO, the AROS Developer environment is installed under "SYS:Development/". Systems with multiple partitions - such as a Work: partition - tend to install it to there instead, however it can be installed manually to any location. Please remember, if moving, that you will need to correct the Development packages 'install location' env variable to point to the new locations root - look in SYS:S/startup-sequence.
<pre>
Assign Development: SYS:Development
Assign C: Development:bin ADD
</pre>
In the aros build instructions. you need to check out contrib and/or ports into your AROS source directory, as subdirs. then, assuming you are building in an external build dir, as you should, you simply configure and "make contrib" for instance or whatever submodule you might want to build.
===Beginners Tutorials in C C++===
As AROS is [http://eab.abime.net/showthread.php?t=29856 C based] API compatible to AmigaOS 3.x, so most of the information on programming C on the Amiga applies to AROS as well. Please note that there is a lot of AmigaOS 1.3 (1985-1989) and [https://www.markround.com/amigaguide AmigaOS AOS 2.x (1990-1992)] information around but OS3.1 is recommended but limited in amount.
Brief overview of what is required to write AROS Applications
# Using [[Aros/Developer/Docs/Libraries/Intuition|Intuition]] for basic screens/windows
# Using graphics within windows via 8bit [[Aros/Developer/Docs/Libraries/Graphics|graphics]] and so onto 15-16-24bit [[Aros/Developer/Docs/Libraries/CGFX|cybergraphx]]
# Load and save work to [[Aros/Developer/Docs/Libraries/DOS|dos]] disk drives
# Using the [[Aros/Developer/Zune|ZUNE GUI Environment]]
Writing native games require this extra information
# Using [[Aros/Developer/AHIDrivers|AHI audio hardware independent API]]
# Using USB joystick/joypad with the Poseidon USB stack through [[Aros/Developer/Docs/Libraries/LowLevel|LowLevel]] library
Additional features that could be added later
# Adding additional [[Aros/Developer/Docs/Libraries/Locale|Locale]] language translations to your program
# Adding a [[Aros/Developer/Docs/Rexx|AREXX/Regina]] port to your application
# Executing Amiga(TM) [[Aros/User/DOS|DOS]] commands from your application
# Using [[Aros/Developer/Docs/Libraries/Icon|icons]] (.info files) and icon tooltypes (stack, version, and program startup options)
# Local couch or IP based SANA2 networking co-op multi player gaming support
Most AmigaOS programming books are nowadays very much out of date as most are from the late 1980s and do not cover later amigaOS releases like 3.1 for example, Rob Peck's book "Programmer's Guide to the Amiga". The Amiga ROM Kernel manuals aka RKMs like Libraries (3rd edition), Devices (), the AmigaDOS manual (3rd edition) and the Style Guide may have their uses. There are some reference examples from AmigaMail and Devcon notes (available again on an Amiga developers CD 2.1).
For Arexx then "The Amiga Programmer's Guide to ARexx" by Eric Giguere, which was published by Commodore is useful as well as an "Arexx Cookbook".
Curly brackets missing - try SHIFT + ALT + 7 or 0.
* Beginners C Guide [http://www.iu.hio.no/~mark/CTutorial/CTutorial.html C Tutorial],
* [http://thecguru.com/ C for beginners],
* [http://fresh2refresh.com/c/c-basic-program/ C programming basics] for students,
* [https://www.edx.org/courses Free Online course] from American Universities
* Reference Amiga [http://amigadev.elowar.com/ API reference].
* AROS based c source can be found [[Aros/Developer/Docs/Examples|here]] and lots of example code can be found inside [https://github.com/aros-development-team AROS sources] themselves and from the contrib section of the archives from [https://github.com/aros-development-team/contrib Aros site], and study the AROS applications source code, e.g. the test programs from the Tests drawer (folder/directory). Take a look at the code of some smaller AROS programs might be a better and more up to date guide. Some old Os3 [http://www.blackfiveservices.co.uk/amiga-c/ here]
When you upload your builds, please write the architecture (like i386-aros, x86_64-aros, etc.) in the archive name
and it is also advisable to write in the field "Requirements" what ABI (ABIv11, ABIv0 or ABIv1)
===Compiling C/C++ Code===
Native, although we have a IDE Integrated Development Environment (Murks), it does lack a debugger. Whilst others use a combination of a text editor and shell to edit code. Most though use an AROS hosted on Linux to take advantage of the better GCC tools like GDB and various IDEs.
Open shell - its a menu option at the top left of Wanderer (desktop). Or by using the right Win key and w (or F12 and w) within the directory with the source code. Type in
sh
to change the amiga shell into a unix shell. You can then type in ls (unix equivalent to amiga dir). Take a look [http://en.wikibooks.org/wiki/Linux_commands here] for more commands.
For a single file program-name.c or program-name.cpp
gcc -o program-name program-name.c
or
g++ -o program-name program-name.cpp
or
g++ -o test -Wall -g main.cc texturelib.cpp xmodelib.cc -lsdl -lgl
To close the shell, click on the top left-hand corner to close (twice). Once to get back the aros shell and then again to close finally. Use [http://freshmeat.net/projects/cksfv/ cksfv] as a test.
Some source code requires the addition of Amiga API libraries, like dos, which you can flag at the compile time as
gcc -o julia.exe julia.c -ldos
For DOS use -ldos as example and if you are compiling mui codes it will be -lmui or intuition -lintuition. Other missing symbols are due to linker libraries being necessary for linking in functions that aren't in the standard C libraries. For example some source code would need added
-lz or -lm or -lpng or -larosc etc.
use this in unix line command mode to search for 'search-item' in many .c files (*.cpp for c++, etc.)
grep -l 'search-item' *.c
If the program is not executable, try using parameter fno-common
"Delete #?.o"? Or if you are using abcshell then "rm *.o"
:''More information: [[Aros/Developer/Porting software]]''
=== How to make Apps have AROS 64-bit specific support code ===
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
AROS64 already uses 64bit addressing, it just doesn't setup the MMU for more than 4GB physical memory currently.
When porting software to AROS64 it is "mostly" a case of converting ULONG's that are used to store pointers, into IPTR's instead, etc. Another quirk, is making sure items on the stack are the correct size by using the STACKED attribute for them.
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
compiling mui stuff for aros setting -std=gnu99 is necessary, had -std=c99 usually
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order.
crash which suggest memory corruption. From my experience porting from 32-bit to 64-bit these kinds of errors can happen if a pointer is passed somewhere via ULONG variable. Then half of the pointer is cut.
To generate this error, please run AROSBootstrap with -m 1024. This will allocate heap to 64-bit address space which will make these errors immediatelly visible. These types of crashes are hard to debug. Disabled as little code as possible to stop corruption from occurring and then try to read from the code where it can be broken
Crashing in tslf_freevec is another symptom of memory corruption and these memory corruptions will manifest differently on different setups.
==Coding conventions==
As the AROS core source is a shared developer experience, there are rules regarding structure and style. When it comes to your creating your own app and coding, the structure and style should be your own, i.e. you should enjoy what you do and do it so that you can understand what is going on.
===Layout===
<syntaxhighlight lang="c">
static void 1st_function()
{
program
exit(0);
}
int main(void)
{
1st_function();
2nd_function();
3rd_function();
return 0;
}
</syntaxhighlight>
<syntaxhighlight lang="c">
struct Screen * openscreen(void);
struct Window *openwindow(struct Screen *screen, const char *title, LONG x, LONG y, LONG w, LONG h);
VOID 1st_function();
VOID 2nd_function();
int main(int argc, char **argv)
{
program
return 0;
} /* main */
VOID 1st_function()
{
}
VOID 2nd_function()
{
}
</syntaxhighlight>
===General style===
This code is used by many people and therefore you should keep some things in mind when you submit source code:
* Keep things simple
* Keep the source clean
* Always know what you are doing, if not flag it and describe what needs to be done...
* Explain clearly/simply what you are doing
* Remember that you write code once but that it is read many times by many people
===Comments===
AROS uses some of the comments in the source to generate the documentation. Therefore it's necessary to keep a certain format so the tools can find their information. Other comments are ignored but they should explain what you thought when you wrote the code. If you really can't think of an explanation, then don't write the code a second time like this:
<pre>
/* This adds 1 to t */
t ++;
</pre>
What we think of is this:
<pre>
/* Go on with next element */
t ++;
</pre>
===Formatting===
This is only '''IMPORTANT''' if you are going to work on the core AROS code or contrib but not applications which may reside outside like on AROS Archives or other websites.
<syntaxhighlight lang="c">
{
/* a */
struct RastPort * rp;
int a;
/* b */
rp = NULL;
a = 1;
/* c */
if (a == 1)
printf ("Init worked\n");
/* d */
if
(
!(rp = Get_a_pointer_to_the_RastPort
(
some
, long
, arguments
)
)
||
a <= 0
)
{
printf ("Something failed\n");
return FAIL;
}
/* e */
a = printf ("My RastPort is %p, a=%d\n"
, rp
, a
);
return OK;
}
</syntaxhighlight>
Looks ugly, eh ? :-) Ok, here are the rules:
<pre>
If several lines contain similar code, put similar things below each other (see a and b);
Put spaces between operands and operators
Put braces {}, brackets [] and parentheses () below each other (d) if there is much code between.
Brackets and parentheses may be in one line if the code between is small (c)
Indent by 4 Spaces. Two indent levels may be abbreviated by one tab.
</pre>
'''Before committing please normalize the indentation - if you have a mixture of tabs and spaced - please always use spaces, 1 tab = 4 spaces.'''
The reasons for this are:
# While some editors can use an arbitrary sizes for tabs, it's a bit complicated to tell another editor which tab size was used by the one used to write the code.
# Most code in AROS was written this way and your code should look like the rest.
# You can print this code on any printer without special tools to "fix" the tabs.
# Most editors have smart tabs which do exactly this. If your editor doesn't, write a bug report.
If you have a function with many arguments (d, e) you should put the parentheses in lines of their own and each argument in one line (d) or put the first argument behind the opening parentheses (e) and each following argument in a line of its own with the comma in front. The closing parentheses is in a line of its own and aligned with the beginning of the expression (i.e. the a and not the opening parentheses or the printf()).
Use a single blank line to separate logical blocks. Large comments should have a blank line before and after them, small comments should be put before the code they explain with only one blank line before them.
If you see any TABS in AROS core sources then the suggestion is to "detab the file and commit that separately" either before or afterwards from making functionality changes. Make two commits instead of one. This makes it easier for others to see the real changes instead of having to dig through multiple lines of irrelevant diffs.
===Eliminating Global Variables===
i.e. pass variables to functions (local scope) or classes making it easier to track and debug your code.
Any time you find that you need a particular thing in 'a lot of different places', chances are that all those places are conceptually related, and so you can create a class, a namespace, a function, or some other higher-level organizational unit to represent that relationship. This makes the program easier to understand.
Bad Designs
* All variables are global.
* There are no standalone functions, only sub-procedures which act on the global variables.
* Every sub-procedure is at least 500 lines to several thousand
* Every sub-procedure has more than one task to perform
* Copy-paste is preferred to writing methods, AND subtle changes are made in the middle of the code
Good Designs
* structure program into functions (C or basic) - top-down procedural approach
* put in class(es) (freepascal or C++) - the object is fixed and you use methods to access the object
<pre>
class String_List
{
private:
list<string> m_List; // member
public:
void read_strings() { /* read strings into m_List */ }
void print_strings() { /* write contents of m_List to stdout */ }
void sort_strings() { /* sort contents of m_List */ }
void sort_strings_reverse() { /* reverse-sort contents of m_List */ }
void unique_strings() { /* remove duplicate strings */ }
};
int main()
{
String_List myList; // local
myList.read_strings();
myList.sort_strings();
myList.print_strings();
myList.sort_strings_reverse();
myList.print_strings();
myList.unique_strings();
myList.print_strings();
return 0;
}
</pre>
This way it is very easy to replace the list with new list for debugging purposes, or replacing the methods without replacing the list, when you want different results. You only have to replace the content of the local variables.
So create the structure that matches your data (linked lists, trees, arrays, etc.) and what to do with them (sorting, searching, etc.)
<pre>
.h usually contain #define #include typedef enum struct extern screen and window definitions (data structures)
.c should contains functions and algorithms
</pre>
One way to look at it is that menu headings act as the .c file and sub-menu headings as functions.
When you start a project, you place a couple of declarations in the include file. As the project continues, you place more and more declarations in the include file, some of which refer to or contain previous declarations. Before you know it, you have a real mess on your hands. The majority of your source files have knowledge of the data structures and directly reference elements from the structures.
Making changes in an environment where many data structures directly refer to other data structures becomes, at best, a headache. Consider what happens when you change a data structure.
Use good variables names to help clarify code and only comment when you need to explain why a certain programming approach was made.
You're Refactoring Legacy Code, you see a global, you want to get rid of it. How do you do this?
Exactly what to do depends on how the global is used. The first step is to find all uses of the global throughout the code, and get a feel for what the significance of the variable is and how it relates to the rest of the program. Pay particular attention to the "lifetime" of the variable (when it gets initialized, when it is first used, when it is last used, how it gets cleaned up). Then, you will probably make the global a data member of a class (for OO languages), or you will write some get/set functions. Converting to the Singleton Pattern is common, but you may discover that it makes more sense for the data element to be a member of an existing singleton, or maybe even an instance variable.
# Create a basic read method, either as a class or a global function. Replace all reads with the access method, but leave the variable defined as a global.
# Review each of the writes to the method and extract action functions one at a time. Unless two operations are coded identically in the original code, extract each write access separately.
# Change the variable scope from global to local.
# Analyze similar action functions to determine if any can be merged, i.e., there are no functional differences in the results of the function, just differences in the implementation details.
# Review the calls to the read method and see if a more complex functionality should be applied. Follow the approach for writes and unless implementations are identical, create separate access functions.
# Analyze the access functions for duplication.
As returning variables by "passing by value" are forgotten, so "passing by reference" is often used instead. The reference is a pointer to the variable so the value is remembered when returned.
Alternatives
* Hidden Globals
* Singleton Pattern
* Database or TupleSpace
* Context Object
* Dependency Injection
* Stateful Procedures
==AROS/AmigaOS APIs and Docs==
<pre>
Library:
- Private data structure
- Many public access methods
Device:
- Private data structure
- Two (BeginIO/AbortIO) access methods
Resource:
- Public data structure
- *NO* access methods
</pre>
And, being Amiga OS-compatible, there are exceptions to all of these.
===System Libraries===
The [http://aros.sourceforge.net/documentation/developers/app-dev/index.php AROS Guide To Libraries] can be used as a guide to individual commands and Old Dev Docs are used in application programming.
The generated [http://aros.sourceforge.net/documentation/developers/autodocs/ Aros AutoDocs HTML Read] or download [http://aros.sourceforge.net/download.php docs-html.bz2 from here].
Amiga/Aros styles libraries are very different from windows and linux libs. Typical .so/dll libraries are foreign to most Amiga-like OS
*[[Aros/Developer/Docs/Libraries/AROSC|arosc.library]]
*[[Aros/Developer/Docs/Libraries/AmigaGuide|amigaguide.library]]
*[[Aros/Developer/Docs/Libraries/ASL|asl.library]]
*[[Aros/Developer/Docs/Libraries/Bullet|bullet.library]]
*[[Aros/Developer/Docs/Libraries/BSDsocket|bsdsocket.library]]
*[[Aros/Developer/Docs/Libraries/CAMD|camd.library]]
*[[Aros/Developer/Docs/Libraries/Codesets|codesets.library]]
*[[Aros/Developer/Docs/Libraries/CGFX|cybergraphics.library]]
*[[Aros/Developer/Docs/Libraries/CGXVIDEO|cgxvideo.library]]
*[[Aros/Developer/Docs/Libraries/Commodities|commodities.library]]
*[[Aros/Developer/Docs/Libraries/DataTypes|datatypes.library]]
*[[Aros/Developer/Docs/Libraries/DiskFont|diskfont.library]]
*[[Aros/Developer/Docs/Libraries/DOS|dos.library]]
*[[Aros/Developer/Docs/Libraries/Exec|exec.library]]
*[[Aros/Developer/Docs/Libraries/Expansion|expansion.library]]
*[[Aros/Developer/Docs/Libraries/FreeType2|freetype.library]]
*[[Aros/Developer/Docs/Libraries/GadTools|gadtools.library]]
*[[Aros/Developer/Docs/Libraries/Graphics|graphics.library]]
*[[Aros/Developer/Docs/Libraries/Icon|icon.library]]
*[[Aros/Developer/Docs/Libraries/Identify|identify.library]]
*[[Aros/Developer/Docs/Libraries/IFFParse|iffparse.library]]
*[[Aros/Developer/Docs/Libraries/Intuition|intuition.library]]
*[[Aros/Developer/Docs/Libraries/Keymap|keymap.library]]
*[[Aros/Developer/Docs/Libraries/Layers|layers.library]]
*[[Aros/Developer/Docs/Libraries/Locale|locale.library]]
*[[Aros/Developer/Docs/Libraries/LowLevel|lowlevel.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingBas|mathieeesingbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubBas|mathieeedoubbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingTrans|mathieeesingtrans.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubTrans|mathieeedoubtrans.library]]
*[[Aros/Developer/Docs/Libraries/Mathtrans|mathtrans.library]]
*[[Aros/Developer/Docs/Libraries/MUIMaster|muimaster.library]]
*[[Aros/Developer/Docs/Libraries/Partition|partition.library]]
*[[Aros/Developer/Docs/Libraries/PopUpMenu|popupmenu.library]]
*[[Aros/Developer/Docs/Libraries/OOP|oop.library]]
*[[Aros/Developer/Docs/Libraries/Regina|regina.library]]
*[[Aros/Developer/Docs/Libraries/Reqtools|reqtools.library]]
*[[Aros/Developer/Docs/Libraries/RexxSysLib|rexxsyslib.library]]
*[[Aros/Developer/Docs/Libraries/ScreenNotify|screennotify.library]]
*[[Aros/Developer/Docs/Libraries/TTEngine|ttengine.library]]
*[[Aros/Developer/Docs/Libraries/Thread|thread.library]]
*[[Aros/Developer/Docs/Libraries/Utility|utility.library]]
*[[Aros/Developer/Docs/Libraries/Xadmaster|xadmaster.library]]
*[[Aros/Developer/Docs/Libraries/Workbench|workbench.library]]
*[https://github.com/aros-development-team/AROS/commit/c82e86b8480277998014cc327b56c7664023a52f ClassAct Reaction boopsi class]
===AROS Subsystems===
# [[Aros/Developer/Zune|Zune MUI compatible GUI]]
# [[Aros/Developer/AROSAppPackages|AROS Application Packages]]
# AHI Audio Drivers - [[Aros/Developer/AHIDrivers|Usage]]/[[Aros/Developer/AHIDriversDev|Development]]
# AROSTCP Sana2 Network Interface Drivers - [[Aros/Developer/NICDrivers|Usage]]/[[Aros/Developer/NICDriversDev|Development]]
# [[Aros/Developer/AmiSSL|AmiSSL]]
# gfx.hidd/cybergraphics Video Drivers - [[Aros/Developer/GfxDrivers|Usage]]/[[Aros/Developer/GfxDriversDev|Development]]
# IO Device Drivers - [[Aros/Developer/IODeviceDrivers|Usage]]/[[Aros/Developer/IODeviceDriversDev|Development]]
# USB Device Drivers - [[Aros/Developer/USBDrivers|Usage]]/[[Aros/Developer/USBDriversDev|Development]]
# PCI Device Drivers - [[Aros/Developer/PCIDrivers|Usage]]/[[Aros/Developer/PCIDriversDev|Development]]
# [http://www.libsdl.org/ SDL] [https://github.com/search?q=repo%3Aaros-development-team%2Fcontrib%20SDL2&type=code SDL2 commits], [https://github.com/aros-development-team/contrib/commit/c62c3c425c35bac19dadc23be092b0b13a66c76c SDL3 initial commit], []
# [[w:Gallium3D|Gallium 3D]] [http://www.mesa3d.org/ openGL aka Mesa] - [[Aros/Developer/OpenGL|Usage]]/[[Aros/Developer/OpenGLDev|Development]] [http://www.swiftless.com/opengltuts.html Swfitless]
# A small subset of GTK2 through [http://sourceforge.net/projects/gtk-mui/ MUI-GTK]
# Cairo 2D Engine - [[Aros/Developer/Cairo|Usage]]/[[Aros/Developer/Cairo|Development]]
# [[Aros/Developer/Scalos|Scalos desktop API and plugin modules]]
# [[Aros/Developer/VHI|VHI video driver]]
====HIDDs====
*[[Aros/Developer/Docs/HIDD/HIDDClass|hiddclass.hidd]]
*[[Aros/Developer/Docs/HIDD/Graphics|graphics.hidd]]
*[[Aros/Developer/Docs/HIDD/VesaGfx|vesagfx.hidd]]
*[[Aros/Developer/Docs/HIDD/ATI|radeon.hidd]]
*[[Aros/Developer/Docs/HIDD/NVidia|nvidia.hidd]]
*[[Aros/Developer/Docs/HIDD/Nouveau|nouveau.hidd]]
*[[Aros/Developer/Docs/HIDD/Kbd|kbd.hidd]]
*[[Aros/Developer/Docs/HIDD/Mouse|mouse.hidd]]
*[[Aros/Developer/Docs/HIDD/i2c|i2c.hidd]]
*[[Aros/Developer/Docs/HIDD/IRQ|irq.hidd (deprecated)]]
*[[Aros/Developer/Docs/HIDD/PCI|pci.hidd]]
*[[Aros/Developer/Docs/HIDD/PCIPC|pcipc.hidd]]
*[[Aros/Developer/Docs/HIDD/Serial|serial.hidd]]
*[[Aros/Developer/Docs/HIDD/Thunderbolt|thunderbolt.hidd]]
https://github.com/aros-development-team/AROS/commit/4f02ea691799aff3a01f60cfa5f9182c82fc57a8
HIDD are used for device/peripheral low level hardware support drivers. The HIDD system is split up into a collection of classes with a strict inheritance hierarchy. A HIDD class implements a device driver for a single device or in rare cases a group of devices and provides an interface for other programs and devices to access.
In order to maintain portability of interfaces across a wide range of hardware this interface will in general not present the raw interface to the underlying hardware. Instead it will present a generic interface that describes many different hardware implementations. This allows for the best reuse of both interfaces and code.
HIDD API is heavyweight though. You need to open a HIDD library, open oop.library, instantiate an object (even if there's no object); and object calls are more costly compared to plain library calls.
Basically your task is to implement a subclass of hidd.ata.bus for your hardware. just implementing the XXXATA__Hidd_ATABus__xxxxxx methods for the Amiga chipset - and appropriate versions of the interface_xxx.c file(s). pretty much everything in probe.c could be ignored - just write a replacement scan for relevant amiga devices and store whatever info you need in the bus data? only the "SUPPORT_LEGACY" blocks might be related.
You do not need to depend on PCI API. PCI is just a way to discover the hardware on PCs, etc.
<hidd/pci.h> includes (at some depth) <interface/HW.h>, which defines IID_HW. This comes from the 'generic' HIDD class in:
rom/hidds/hidd/hiddclass.conf
did not split up HIDD and HW because they are always used in pair. It's the same as hidd/pci.h bringing definition for: PCI, PCIDriver and PCIDevice. PCI is actually PCIHW, just the name was not changed for backwards compatibility reasons. HW is a 'hub' where HIDD instances plug in.
ATA HIDD aoHidd_ATABus_Use32Bit value is completely ignored unless ata.device first detects correct command line parameter.
Yes. Unfortunately I was unable to find any comment in code or svn history with explanations. Looked at Linux source, there 32-bit PIO is also controller driver's property. Some of them enable it, some don't.
Actually, switching the default to ON should be safe. ata.device is fail-safe at this because during IDENTIFY command it validates upper 16 bits, and if they appear to be zeroes in all 128 longwords, then 32-bit mode is switched off. But, nevertheless, I know how tricky hardware can be, so I decided not to change original behavior. If you think it's wrong in some cases, then it's possible to add one more attribute like aHidd_ATABus_Default32Bit. If set to YES, then this means that 32-bit PIO is safe to use by default.
====Devices====
*[[Aros/Developer/Docs/Devices/ATA|ata.device]]
*[[Aros/Developer/Docs/Devices/Console|console.device]]
*[[Aros/Developer/Docs/Devices/Narrator|narrator.device]]
*[[Aros/Developer/Docs/Devices/Printer|printer.device]]
*[[Aros/Developer/Docs/Devices/Trackdisk|trackdisk.device]]
*[[Aros/Developer/Docs/Devices/AmberRAM|amberram.device]]
*[[Aros/Developer/Docs/Devices/Timer|timer.device]]
*[[Aros/Developer/Docs/Devices/|.device]]
The Amiga used [[Aros/Developer/Docs/Devices|Devices]] to communicate with [http://aros-exec.org/modules/newbb/viewtopic.php?start=0&topic_id=3475&viewmode=flat&order=ASC additional hardware]. AROS has replaced these hardware devices with hidd equivalents but some are still retained for backwards compatibility.
Local libraries/devices/handlers,etc. are supposed to override the ones in ROM if their version is higher than the one in ROM.
Here is the list of commands exec default:
{| class="wikitable"
| CMD_CLEAR
| Purge the buffer of the device
|----
| CMD_READ
| Playback Control
|----
| CMD_STOP
| Stopped the activity of the device
|----
| CMD_FLUSH
| Empty the queue of commands
|----
| CMD_RESET
| Reset a device
|----
| CMD_WRITE
| Playback Control
|----
| CMD_INVALID
| Create an error
|----
| CMD_UPDATE
| Gets updated device
|----
| CMD_START
| Will restart the device
|----
|}
While most other "stuff you communicate with" in AmigaOS are devices <ref>AMIGA ROM Kernel Reference Manual: Devices, 3rd Edition. Commodore-Amiga, Inc. Addison-Wesley, 1991. {{ISBN|0-201-56775-X}}</ref> that share a [http://gega.homelinux.net/AmigaDevDocs/ common base interface]. [[Aros/Developer/Docs/Devices1.3|OS 1.3 Device Drivers]].
====Handlers====
:[[Aros/Developer/Docs/Handlers/Pipe|pipe.handler]]
:[[Aros/Developer/Docs/Handlers/Port|port.handler]]
:[[Aros/Developer/Docs/Handlers/SFS|sfs.handler]]
:[[Aros/Developer/Docs/Handlers/FAT|fat.handler]]
:[[Aros/Developer/Docs/Handlers/PFS|pfs.handler]]
:[[Aros/Developer/Docs/Handlers/NTFS|fuse.handler]]
:[[Aros/Developer/Docs/Handlers/FFS|ffs.handler]]
filesystem handlers have their own separate system consisting of completely differently structured messages that dos.library use to pass requests (for things like reading, writing, getting directory contents etc.) to them. AROS originally went with implementing filesystem handlers as devices, which might arguably be more consistent with the rest of the AmigaOS API but which is quite incompatible with AmigaOS itself. However, it made it far harder to port filesystems and the gains were comparatively small, and so there's been a long standing goal of fixing this incompatibility. It has now, June 2011, been reintroduced to all AROS flavors.
are argstr and argsize valid for the handler startup environment?
DOS/RunHandler() calls DOS/CreateNewProcTags(), and then CallEntry() (in rom/dos/exit.c) to start the handler, so yes, argstr and argsize are *present* in the call signature of the handler.
Granted, argstr will be NULL and argsize 0, but those values *are* passed to the handler function using:
<pre>
AROS_UFC3(ULONG, entry,
AROS_UFCA(STRPTR, argptr, A0),
AROS_UFCA(ULONG, argsize, D0),
AROS_UFCA(struct ExecBase *, SysBase, A6));
</pre>
Creating your own [without the whole build tree http://pagesperso-orange.fr/franck.charlet/temp/radeon.zip] and then
<pre>
make stub
make
make install
</pre>
SFS has two Root blocks, one at the start and one at the end of the disk. The Root blocks both contain the same information. They hold various information about the disk structure and have the locations of some important blocks used by the filesystem.
The Root ObjectContainer contains the Root directory Object. The name of this Object is the name of the volume. It is identical to a normal directory Object.
The Bitmap is used to keep track of free space. Each bit in a bitmap represents a single block. A set bit indicates a free block and a cleared bit a used block.
AdminSpaceContainers are used to keep track of space which has been reserved for storing administration blocks. Only the Bitmap, the Root blocks and the actual data stored in files aren't stored in administration space. Administration space is allocated in chunks of 32 blocks at a time. A single AdminSpaceContainer can hold information about a large number of such areas each of which has its own little bitmap of 32 bits.
Extents are stored in a B-Tree. The Root block holds a pointer to the root of the Extent B-Tree. Extents keep track of space in use by a specific file. Each fragment a file consists of has its own Extent. Extents are in a double linked list. The list can be used to locate the next or previous fragment of a file.
Below is the standard block header. This header is found before EVERY type of block used in the filesystem, except data blocks. The id field is used to check if the block is of the correct type when it is being referred to using a BLCK pointer. The checksum field is the SUM of all LONGs in a block plus one, and then negated. When applying a checksum the checksum field itself should be set to zero. The checking a checksum the checksum is okay if the result of the checksum equals zero. The ownblock BLCK pointer points to the block itself. This field is an extra safety check to ensure we are using a valid block.
Field Type Description
id ULONG The id field is used to identify the type of block we are dealing with. It is used to make sure that when referencing a block we got a block of the correct type. The id consist of 4 bytes and each blocktype has its own unique foure letter code.
checksum ULONG This field contains the sum of all longs in this block, plus one and then negated. The checksum can be used to check if the block hasn't been corrupted in any way.
ownblock BLCK Points to itself, or in other words, this field contains the block number of this block. This is yet another way to check whether or not a block is valid.
<pre>
struct fsBlockHeader {
ULONG id;
ULONG checksum;
BLCK ownblock;
};
</pre>
The algorithm to calculate the checksum of a block:
<pre>
ULONG calcchecksum(struct fsBlockHeader *block, LONG blocksize} {
ULONG *data=(ULONG *)block;
ULONG checksum=1;
block->checksum=0;
while(blocksize>0) {
checksum+=*data++;
blocksize-=4;
}
return(-checksum);
}
</pre>
A Root block contains very important information about the structure of a SFS disk. It has information on the location and size of the disk, the blocksize used, locations of various important blocks, version information and some filesystem specific settings.
A SFS disk has two Root blocks; one located at the start of the partition and one at the end. On startup the filesystem will check both Roots to see if it is a valid SFS disk. If either one is missing SFS can still continue (although at the moment it won't).
A Root block could be missing on purpose. For example, if you extend the partition at the end (adding a few MB's) then SFS can detect this with the information stored in the Root block located at the beginning (since only the end-offset has changed). Same goes for the other way around, as long as you don't change start and end point at the same time.
When a Root block is missing because the partition has been made a bit larger, then SFS will in the future be able to resize itself without re-formatting the disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
version UWORD The version of the filesystem block structure. You can check this field to identify what version of the filesystem your dealing with it and to see if you can handle this structure correctly. Don't try to interpret the disk's structure when this field contains an unknown version number!
sequencenumber UWORD Used to identify which Root block was written last in case the sequencenumber on both Root blocks don't match.
datecreated ULONG Creation date of this volume. This is the date when the disk was last formatted and will never be changed.
bits UBYTE Various settings, see below.
<pre>
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
reserved1 ULONG[2] Reserved, leave zero.
firstbyteh ULONG High 32-bits of a 64-bit number. This is the first byte of our partition relative to the start of the disk.
firstbyte ULONG Low 32-bits of a 64-bit number.
lastbyteh ULONG High 32-bits of a 64-bit number. This is the last byte (exclusive) of our partition relative to the start of the disk.
lastbyte ULONG Low 32-bits of a 64-bit number.
totalblocks ULONG The total number of blocks this partition consists of.
blocksize ULONG The size of a block of this partition.
reserved2 ULONG[2] Reserved, leave zero.
reserved3 ULONG[8] Reserved, leave zero.
bitmapbase BLCK Block number of the start of the Bitmap.
adminspacecontainer BLCK Block number of the first AdminSpaceContainer.
rootobjectcontainer BLCK Block number of the ObjectContainer which contains the root of the disk (this is where the volume name is stored).
extentbnoderoot BLCK Block number of the root of the Extent B-Tree.
reserved4 ULONG[4] Reserved, leave zero.
</pre>
<pre>
struct fsRootBlock {
struct fsBlockHeader bheader;
UWORD version;
UWORD sequencenumber;
ULONG datecreated;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
ULONG reserved1[2];
ULONG firstbyteh;
ULONG firstbyte;
ULONG lastbyteh;
ULONG lastbyte;
BLCK totalblocks;
ULONG blocksize;
ULONG reserved2[2];
ULONG reserved3[8];
BLCK bitmapbase;
BLCK adminspacecontainer;
BLCK rootobjectcontainer;
BLCK extentbnoderoot;
ULONG reserved4[4];
};
</pre>
AdminSpaceContainers are used to store the location and bitmap of each administration space. The AdminSpaceContainers are located in a double linked list and they contain an array of fsAdminSpace structures. There is one fsAdminSpace structure for every administration space on disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
next BLCK The next AdminSpaceContainer, or zero if it is the last in the chain.
previous BLCK The previous AdminSpaceContainer, or zero if it is the first AdminSpaceContainer.
bits UBYTE The number of bits in each in the bits ULONG in the fsAdminSpace structure.
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
adminspace struct fsAdminSpace An array of fsAdminSpace structures. The size of the array is determined by the current blocksize.
<pre>
struct fsAdminSpaceContainer {
struct fsBlockHeader bheader;
BLCK next;
BLCK previous;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
struct fsAdminSpace adminspace[0];
};
</pre>
Field Type Description
space BLCK The first block of an administration space.
bits ULONG A small bitmap which is used to determine which blocks in an administration space are already in use. The number of bits in this bitmap is determined by the bits field in the AdminSpaceContainer.
<pre>
struct fsAdminSpace {
BLCK space;
ULONG bits;
};
</pre>
The fsBitmap structure is used for Bitmap blocks. A bitmap block is used to keep track of which space is in use and which isn't for a particular area of a disk. All bitmap blocks together keep track of the free space for an entire disk. The location of the first bitmap block is known and all other bitmap blocks are stored in order after the first one.
Field Type Description
bheader struct fsBlockHeader Standard block header.
bitmap ULONG An array of ULONG's. These hold the actual information on which blocks are in use and which aren't.
<pre>
struct fsBitmap {
struct fsBlockHeader bheader;
ULONG bitmap[0];
};
</pre>
Each bit in a bitmap block (except for the block header) represents a single block. If the bit is set than the block is free, and if the bit is clear then it is full. The first ULONG in the bitmap area of the first bitmap block represents blocks 0 through 31 on the disk. Bit 31 of this ULONG is block 0, 30 is block 1, and so on. Bit 0 of the first ULONG represents block 31.
Below is a table to clarify how bitmaps work even further. The first column is the bitmap block number, the second column is the number of the ULONG in the bitmap array. The third column is the bit number in this ULONG, and the last column is the block which this specific bit, in this specific bitmap block represents.
We'll assume here that a bitmap block has room for 120 ULONG's (meaning there is room for storing 32 * 120 bits).
<pre>
Bitmap block ULONG number Bit number Block represented
1 (first) 0 31 0
1 0 30 1
... ... ... ...
1 0 1 30
1 0 0 31
1 1 31 32
... ... ... ...
1 2 31 64
1 2 30 65
... ... ... ...
1 119 0 3839
2 0 31 3840
2 0 30 3841
... ... ... ...
</pre>
The last bitmap block doesn't need to be completely used. The unused bits (which belong to blocks which do not exist) all have to be clear, to indicate that these blocks are in use.
The fsObjectContainer structure is used to hold a variable number of fsObjects structures (Objects) which have the same parent directory. Each ObjectContainer must contain at least one Object. If there is space in the ObjectContainer not used by the variable number of Objects then that space is zero filled. Objects always start at 2-byte boundaries, which means sometimes a padding byte is inserted between two Objects.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the parent Object, or 0 if this object has no parent (which is only the case for the Root directory).
next BLCK The next ObjectContainer belonging to this directory, or zero if it is the last in the chain.
previous BLCK The previous ObjectContainer belonging to this directory, or zero if it is the first ObjectContainer in this directory.
object struct fsObject A variable number of fsObject structures. The number of structures depends on the individual sizes of each fsObject structure and the blocksize. These structures are located directly after each other with at most 1 byte of padding between them to get the structures aligned on a 2 byte boundary.
<pre>
struct fsObjectContainer {
struct fsBlockHeader bheader;
NODE parent;
BLCK next;
BLCK previous;
struct fsObject object[0];
};
</pre>
fsHashTable is the structure of a HashTable block. It functions much like the hash table found in FFS user directory blocks, except that it is stored in a separate block. This block contains a number of hash-chains (about 120 for a 512 byte block). Each hash-chain is a chain of Nodes. Each Node has a pointer to an Object and a pointer to the next entry in the hash-chain. Using such a hash-chain you can locate an object quickly by only knowing its name.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the directory Object this HashTable block belongs to.
hashentry NODE An array of Nodes. Each Node represents the start of a hash-chain (singly linked). A hash-value is calculated using the name of a file or directory, and this value determines in which chain the Object is linked. If there are no entries in a hash-chain then the hashentry value is zero.
<pre>
struct fsHashTable {
struct fsBlockHeader bheader;
NODE parent;
NODE hashentry[0];
};
</pre>
To calculate the hash-value using a name of an Object as input use these routines:
<pre>
UWORD calchash(UBYTE *name) {
UWORD hash=0;
/* Calculates a hash value over the passed in string.
The end of the string can be either a NUL byte or a
slash. The hash function is the same as the one
used in FastFileSystem set to international mode. */
while(name[hash]!=0 && name[hash]!='/') {
hash++;
}
while(*name!=0 && *name!='/') {
hash=hash*13+upperchar(*name++);
}
return((UWORD)(hash % (UWORD)((blocksize-sizeof(struct fsHashTable))>>2)));
}
UBYTE upperchar(UBYTE c) {
if((c>=224 && c<=254 && c!=247) || (c>='a' && c<='z')) {
c-=32;
}
return(c);
}
</pre>
The BNodeContainer is used to store B-Trees. Currently only one B-Tree is in use by this filesystem and it is used to store the location of file data. The fsBNodeContainer structure contains two other structures. The fsBlockHeader structure and the BTreeContainer structure.
Field Type Description
bheader struct fsBlockHeader Standard block header.
btc struct BTreeContainer Contains information about the B-Tree and its nodes contained in this block.
<pre>
struct fsBNodeContainer {
struct fsBlockHeader bheader;
struct BTreeContainer btc;
};
</pre>
First try and locate the Root block. It should start with "ROOT". SFS has two of these, one at the start of the partition and one at the end. One of the fields contains the block size, which will be the size of all important SFS blocks.
The root block has the root object container, which contains information about files and directories in the root directory. The object
containers basically hold one or more smaller structures that represent files and directories. Scanning them all should give you a list of
files and directories.
The root block also has the root of the Extent B-Tree. This is a standard B-Tree structure (not a binary tree) that is used commonly in
all kinds of system, you can read about how they work on Wikipedia if needed. The B-Tree holds the information about *where* all the data is
located for your files.
To recover your files, I'd do this:
* Find one of the root blocks, if not present, then figure out the block size your disk was using, and scan every block in turn to see if it
looks like an ObjectContainer (check the fsBlockHeader's ID, check if the ownblock number is equal to the block you are currently scanning,
and check its checksum). So if you currently have block 12, and you see a block with the correct id, and ownblock = 12 and its checksum is good,
then that's probably a valid ObjectContainer.
* With all the ObjectContainers found, you can extract filenames and directory names from these, but also the number of their first data
block (in the field data) and the file size. For small files (less than blocksize) this data block will be enough to recover the data.
For larger files, you might be lucky and all the remaining blocks are found after the first one (if the file was defragmented). You can't be
sure of that though so...
* For larger files, you need to find all the BNodeContainers. You could scan these in the same way you found all the ObjectContainers (look for
blocks with the correct id, ownblock number and checksum).
* With all the BNodeContainers found, you can try looking up the first data block of a file in the B-Tree structure. This is a bit complicated
-- the B-Tree consists of non-leaf nodes (blocks that only contain pointers to other B-Tree blocks), the isLeaf flag indicates this. Or it
can be a B-Tree leaf block. The leaf blocks contain extra information per entry (see https://hjohn.home.xs4all.nl/SFS/extents.htm)
<pre>
struct fsExtentBNode {
ULONG key;
ULONG next;
ULONG prev;
UWORD blocks;
};
</pre>
The key should be a block of a file (the first of a range), that is 1 to 65535 block long (depending the "blocks" field). If the file is split
up into more parts, then "next" will contain block number of the next range of blocks. You need to look this up again in the B-Tree
structure to find out how large it is.
You can for the most part ignore the other structures (bitmap, admin containers). The fsObjects and B-tree containers is what you'll need to
recover the data.
====Resources====
<pre>
rom/storage/mmakefile.src
rom/storage/storage.conf
rom/storage/storage_device.c
rom/storage/storage_ids.c
rom/storage/storage_init.c
rom/storage/storage_intern.h
rom/storage/storage_mount.c
rom/storage/storage_unit.c
</pre>
<pre>
rom/storage/includes/device.h
rom/storage/includes/unit.h
rom/storage/includes/volume.h
rom/storage/storage_intern.h
</pre>
<pre>
</pre>
*[[Aros/Developer/Docs/Resources/ACPI|acpi.resource]]
*[[Aros/Developer/Docs/Resources/Battclock|battclock.resource]]
*[[Aros/Developer/Docs/Resources/Bootloader|bootloader.resource]]
*[[Aros/Developer/Docs/Resources/Cia|cia.resource]]
*[[Aros/Developer/Docs/Resources/Filesystem|FileSystem.resource]]
*[[Aros/Developer/Docs/Resources/Hostlib|hostlib.resource]]
*[[Aros/Developer/Docs/Resources/Kernel|kernel.resource]]
*[[Aros/Developer/Docs/Resources/Misc|misc.resource]]
*[[Aros/Developer/Docs/Resources/Processor|processor.resource]]
==Debugging Code==
Please use the [http://sourceforge.net/tracker/?group_id=43586&atid=439463 AROS Bug Tracker] if any issues are found.
GRUB Command line list
<pre>
sysdebug
usbdebug - allows to see Poseidon's log in debug output
</pre>
How do I get debugging out of InitResident ? If running i386 hosted on linux sysdebug=initresident on command line.
This way you can enable any of listed flags. sysdebug=all stands for "everything"
Have an executable (crosscompiled C++ code) which has 6 MB size on disk, but after loading it in memory, 250 MB RAM is taken. Any software that would split AROS executable into ELF part which would show actual size values?
readelf -S executable
it will show you all sections in elf file, including sizes and requested alignment.
objdump -h filename
That's will give you a quick overview of the sections and sizes. Ignore all the .debug.* sections.
Would hazard a guess that you have a large .bss section. That's pretty common in C++.
Next step:
nm—size-sort filename | grep ' [bB] '
The last few will be your biggest consumers. Would suggest -C to demangle the symbols... ;)
Suggest profiling the program (just use some printf's in the main loop for time spent in each part), it usually is quite easy to spot slow parts in games or apps.
If someone has '#define IPTR ULONG' somewhere. To see where that define is, redefine IPTR in the source code that fails, just above the line that fails, and the preprocessor will tell you where it was defined first.
===How to setup gdb with AROS/hosted===
Download AROS sources (AROS-xxxxxxxx-source.tar.bz2, where xxxxxxxx is the current date) and AROS contrib sources (AROS-xxxxxxxx-contrib-source) from
Untar-bzip2 and cd to the unpacked archive directory.
> tar -xvjf AROS-xxxxxxxx-source.tar.bz2
> cd AROS-xxxxxxxx-source
Check the link to "contrib" (contrib-source) inside directory, e.g. correct like this:
> rm contrib
> ln -s ../AROS-xxxxxxxx-contrib-source.tar.bz2 contrib
Make sure you have the correct locale setting, otherwise compilation will fail at some point. See [http://aros.sourceforge.net/documentation/developers/compiling.php#setting-the-locale-to-iso8859 here] (or link below) for more on that. You might have to enter this:
> export LANG="en_US.ISO-8859-1"
Now configure for a debug build - see "./configure --help" for more - here are two examples:
> ./configure—enable-debug=stack,modules,symbols
> ./configure—enable-debug=all
You may "make" now, or choose a separate directory for your build (e.g. for easy removal), for example if compiling for i386 architecture you could create a directory like this:
> mkdir linux-i386
> cd linux-i386
> ../AROS/configure—enable-debug=stack,symbols,modules
When done configuring you're ready to go:
> make
Building AROS takes some time - minutes on fast machines (e.g. 2.5 GHz quadcore), up to hours on slower machines.
The result will be AROS Linux hosted with gdb debugging enabled.
See aros.org documentation for more on compiling AROS, including more [http://aros.sourceforge.net/documentation/developers/compiling.php --enable-debug] options.
When finished, enter bin/linux-i386/AROS directory (replace "linux-i386" with your compilation target platform, e.g. linux-x86_64, etc.) inside the unpacked archive directory. This directory contains the required .gdbinit file for properly running AROS inside gdb.
> cd bin/linux-i386/AROS
Run AROS (here: with 128MB of memory) from gdb:
> gdb—args boot/aros-unix -m 128
or
> gdb—args boot/arosboot -m 128
(gdb) r
Watch the shell output - in case AROS complains about "LoadKeyCode2RawKeyTable: Loading "DEVS:Keymaps/X11/keycode2rawkey.table" failed!" you should also see some instructions on how to create a keymap table. (see link above "more on compiling", too.)
Quit gdb, and try default keymap table:
(gdb) q
The program is running. Quit anyway (and kill it)? (y or n) y
> cd ../../..
> make default-x11keymaptable
Re-run AROS, as described above. Try e.g. RAros (= right windows key) + W to open a shell. If this doesn't work you have to create a keymap table yourself, quit gdb again, and make a new keytable:
> make change-x11keymaptable
A window will open. Watch the window's title bar, and follow the instructions.
When done, re-run AROS. RAros + W should now open a shell.
Next, compile your program with gdb support.
When you start GDB is there a warning which says
warning: File "<whatever>/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to ...
If so start gdb with "-ix .gdbinit"
<pre>
Summary - In short:
* build AROS with debugging support (i.e. ./configure --enable-debug=all)
* build your application with debugging support (i.e. option -g)
* run AROS in the GNU debugger (you may use the GUI frontend "ddd" which simplifies usage a bit)
* start your application
* use the commands "findaddr" and "add-symbol-file" as written in the debugging manual
* if the debugger doesn't find the source code of your application use the "dir" command of the debugger.
</pre>
===How to use gdb===
In AROS open a shell, then (in host shell) use CTRL-Z to go into gdb. Use "b Exec_CreatePool" (one of the functions used early on by startup code in programs) to add a breakpoint, then "cont" and gdb will interrupt somewhere early during startup of "program". Use "bt" to show backtrace and "loadseg" for "??" entries. One of them will be for "program". After that you can use "disassemble program".
One thing you need to make sure is that .gdbinit you have in your build directory is the same as in source tree. It has been modified some time ago, but the build system does not refresh it - you need to copy it manually
To recap, please read our debugging [http://aros.sourceforge.net/documentation/developers/debugging.php manual]:
To detect segfaulting when loading, try...
./configure—enable-debug—with-optimization="-O2"
Because crash or no crash may depend on optimization. For newer compilers maybe this helps...
--with-optimization=-"-O2 -fno-strict-aliasing"
One way to make crashes less random (more easily reproducible) is to activate the munging of free memory in rom/exec/freemem.c which is normally commented out:
<pre>
Index: freemem.c
===================================================================
--- freemem.c (revision 34289)
+++ freemem.c (working copy)
@@ -154,11 +154,12 @@
* created with their TCB placed in the tc_MemEntry list. The workaround
* is to avoid munging when FreeMem() is called with task switching disabled.
*/
+
/* DOH! it doesn't work even this way. What's wrong???
- *
- * if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
- * MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
*/
+
+ if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
+ MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
}
</pre>
Mungwall can be turned on at runtime. Currently this works in all hosted versions. Just specify "mungwall" on kernel command line and it works. It can work on native too. In order to enable it you need to parse kernel command line, and if "mungwall" is present, set EXECF_MungWall bit in IntExecBase.IntFlags.
This needs to be done before the first AllocMem() for obvious reasons. And never reset back this flag! If you change it on a working system, you are doomed.
Hosted ports do the processing in rom/exec/prepareexecbase.c --enable-debug=mungwall option in configure still works but is going obsolete. A kludge in rom/exec/allocmem.c is responsible for this and it needs to be removed when the transition is done.
BTW, on i386-pc port it can be activated by "mungwall" argument on command line, you don't need to rebuild AROS.
New mungwall affects not only AllocMem()/FreeMem(), but also pools. I also tested it with AllocAbs(), seems to work correctly.
Runtime mungwall works on:
* pc-i386
* pc-x86_64
* linux-i386
* linux-x86_64
* darwin-x86
* linux-ppc
Works on all hosted ports, if the port itself is working.
* amiga-m68k
* Not on sam440-ppc and efika-chrp-ppc, even if they would be able to be built at moment. Does not work on (for now, need NVRAM support)
When starting my freshly rebuilt i386-linux-aros which was compiled with full debugging support I get sometimes the error "Program exited with code 0377". Add the following to your .gdbinit:
set follow-fork-mode child
Here are some of the custom AROS gdb functions (defined in ".gdbinit" file) to resolve "in ?? ()" entries in backtrace:
<pre>
#0 0xb7ffd424 in __kernel_vsyscall ()
#1 0xb7e2a657 in sigsuspend () from /lib/libc.so.6
#2 0xb7c63900 in ?? ()
#3 0xb7c640e3 in ?? ()
#4 0xb7c641e0 in ?? ()
</pre>
You can use
loadseg 0xb7c63900
loadframe 2
or
loadbt
and some others. Use "help " for a little help text. If the commands do not work try "loadkick" first.
Use "thistask", "taskready", "taskwait" to get list of AROS tasks. "bttask " shows backtrace of a task which is in ready or in wait queue and "loadseg" to resolve "??" entries in it's backtrace ("loadframe" would not work as it assume current running task).
===Native debugging tools for AROS===
to enable debugging at boot time entering the GRUB menu editing line (E key) and adding "debug=memory" to your boot line, then press Ctrl+X to complete booting.
SYS:Tools/Debug/'''Bifteck'''
Open a shell and enter the line below to run Biftek and grab the debug messages collected in RAM into a text file.
tools/debug/bifteck > ram:debug.txt
and certainly does not open a window. It is a shell tool and only dumps data located from the debug location.
It is therefore important to 'catch' that debug data as soon as possible (before it gets overridden). You should invoke bifteck at the first opportunity before doing anything else. You can use the TO option to store bifteck output to a file or you can pipe it manually to a file.
SYS:Tools/Debug/'''Sashimi''' - displays error messages
One suggestion is to do a bug() debugging. Each time bug() is executed it will be output on sashimi.
You include <aros/debug.h> and place bug("something\n"); in your source code at location though which control passes.
To get the output - open an aros shell
SYS:Tools/Debug/sashimi > RAM:out.txt
'''Ctrl C''' to end the output to the RAM Disk.
# open shell, and type
# ram: (to switch to ram drive)
# System:Tools/Debug/Sashimi > mylogfile.txt
# open AHI prefs using wanderer (or use another opened shell)
# play test sound
# close AHI prefs
# shell still open with Sashimi running: press ctrl-c to break Sashimi and return to prompt.
# in shell: copy mylogfile.txt System: (or to your required location)
SYS:Utilities/'''Snoopy''' - monitors OS function calls, run "Sashimi" to see Snoopy's output
SYS:Tools/'''WiMP''' - the Window (and Screens) Manipulation Program
You can use the -E option of gcc to find out how preprocessor macros are expanded.
===Errors===
crash in strcasecmp usually means that one of its arguments is NULL.
empty space between these two names, prossibly some invisible character
Old Amiga [http://www.amigacoding.com/index.php?title=Guru_codes&redirect=no Guru Codes]
If the crash is in intuition. Sometimes, if it relates to text, a null pointer sets it off.
an uninitialised pointer can have any address (this is a common fault).
Compiling on 64bit, Many old code would not properly typecast when doing pointer-integer conversions and thus at least throw a warning. This can easily be located and fixed.
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
* Fix (change IPTR/SIPTR back to ULONG/LONG) the few places which really rely on ULONG/LONG being exactly 32 bit. That's for things like pixel (ARGB) buffers, structs written/read to disk, colormaps, but probably not much else.
Then again, many current compilers also throw a warning when you try to assign a pointer value to an integer and the integer is possibly too small. This happens under .NET for example when a 64 bit pointer is assigned to something like an ULONG - so exactly the case which you described.
=== AI ===
<---
Model <---> Agent ---> End user
Gemini LMStudio
Qwen Comfyui
etc
Recent, self hosting on laptops, mini pcs or desktops with '''quantization''' 4bit has reduced memory requirements but still require 16Gb+ and no high end gpu for text based
*[https://lmstudio.ai/download LMstudio single gpu],
Google Gemma 4 Model
*[ 12B QAT]
Alibaba Cloud's [https://huggingface.co/ Qwen] team series of large language models LLMs
*[https://huggingface.co/models?other=qwen3 Qwen 3], [],
*[https://huggingface.co/models?other=qwen2 Qwen 2], [https://huggingface.co/Qwen/Qwen2.5-Coder-32B qwen 2.5 Coder],
Small Claude Model
*[https://github.com/sipeed/picoclaw picoclaw]
Bigger LLMs but with settings
*[https://ollama.com/download Ollama single gpu]
*[https://github.com/ggml-org/llama.cpp/releases llama.CPP multi gpus],
*[ VLM multiple gpus],
For the full experience
#Training learning using 1+ high end GPUs at least 16GB VRAM per GPU card or 64Gb+ of unified, 16Core CPU with at least 64Gb of RAM system memory, though training can take weeks
#Inference with custom asics or GPUs
[ MiniMax H3] for audio and video but gpu 8Gb+
=== Linux ===
<syntaxhighlight lang="c">
/* 1. Header for your name,date,purpose of program.
2. Pre-processor directives. This will include the #includes for files you want to add.
3. Includes for function prototypes if necessary.
4. Main()
Create Pointers for Libraries and any Window you want to open.
5. Open necessary libraries.
6. Check if open exit program if fail.
7. Open a window exit program if fail.
8. Add your program
9. Close Window
10 Close Libraries.
11 End Program. */
/* standard os included headers <.h> */
#include <dos/dos.h>
#include <dos/dosasl.h>
#include <dos/dosextens.h>
#include <dos/exall.h>
#include <dos/rdargs.h>
#include <exec/memory.h>
#include <exec/types.h>
#include <utility/utility.h>
#include <intuition/intuition.h>
/* define as unresolved external references (proto/xxx.h) and compiler will link to auto(matically) open library */
#include <proto/arossupport.h>
#include <proto/dos.h>
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/graphics.h>
#include <proto/cybergraphics.h>
#include <proto/datatypes.h>
#include <proto/icon.h>
#include <workbench/workbench.h>
#include <workbench/icon.h>
#include <datatypes/pictureclass.h>
#include <proto/muimaster.h>
#include <libraries/mui.h>
#include proto/bsdsocket.h
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* my own headers ".h" */
#define CTRL_C (SetSignal(0L,0L) & SIGBREAKF_CTRL_C)
#define isDir(fib) ((fib)->fib_DirEntryType >= 0)
#define ARG_TEMPLATE "FILE/A,ALL/S,QUIET/S,W=WIDTH/N,H=HEIGHT/N,M=METHOD,DEFTOOL"
int main(void)
{
return retval;
} /* main */
</syntaxhighlight>
If you used c++, there is not yet c++ support in our shared library system.
The easiest way to create / compile a shared library would be to use the AROS build system but the libraries can be created manually. You have to create a ROMTAG structure and some header files.
A shared library is built with the %build_module macro with a line like this:
%build_module mmake=MetaTarget modname=mylib modtype=library files=SourceFiles
This macro can build different AROS module types, like devices, Zune classes, HIDDs, etc.
<pre>
##begin config
version 1.0
##end config
##begin functionlist
void func1(LONG a, LONG b)
int func2(char *s, ULONG a)
##end functionlist
</pre>
There is more [http://aros.sourceforge.net/documentation/developers/sys-dev/libraries.php here]
Alternatively,
<pre>
#ifndef LIB_H
#define LIB_H
#define __NOLIBBASE__
#include <exec/libraries.h>
#include <exec/semaphores.h>
#include <dos/dos.h>
#ifdef __AROS__
//#include <aros/debug.h>
#define reg(x)
#define __saveds
#endif
#define USESYSBASE struct ExecBase *SysBase = Base->My_SysBase;
struct MyTestBase
{
struct Library My_Test_Lib;
struct ExecBase *My_SysBase;
APTR My_SegList;
int testint;
};
#endif
</pre>
<pre>
/*--------------------------------------------------------------------------*/
/* Resident header written for mytest.library */
/*--------------------------------------------------------------------------*/
#define __NOLIBBASE__
#define VERSION 1
#define REVISION 0
#define LIBHEADNAME mytest
#define LIBHEADNAMESTR "mytest"
#define COMPDATE "04.10.2015"
#define VERS "1.0"
#define LIBBASETYPE struct MyTestBase
#define LIBBASETYPEPTR LIBBASETYPE *
#include <aros/debug.h>
#include <exec/exec.h>
#include <proto/exec.h>
#include <exec/resident.h>
#include <exec/nodes.h>
#include <exec/libraries.h>
#include <aros/symbolsets.h>
#include "lib.h"
const UBYTE lib_name[] = LIBHEADNAMESTR ".library";
const UBYTE lib_id[] = "$VER: " LIBHEADNAMESTR ".library " VERS " (" COMPDATE ") by ALB42\n";
extern const APTR FuncTable[];
AROS_UFP3 (LIBBASETYPEPTR, InitLib,
AROS_UFPA(LIBBASETYPEPTR, Base, D0),
AROS_UFPA(BPTR, seglist, A0),
AROS_UFPA(struct ExecBase *, sysbase, A6)
);
static struct LibInitStruct
{
IPTR LibSize;
const APTR *FuncTable;
const struct DataTable *DataTable;
APTR InitFunc;
}
const LibInitStruct =
{
sizeof(LIBBASETYPE),
FuncTable,
NULL,
(APTR)InitLib
};
const struct Resident romtag =
{
RTC_MATCHWORD, /* match word */
(APTR)&romtag, /* back pointer */
(APTR)(&romtag + 1), /* skip pointer */
RTF_AUTOINIT | RTF_EXTENDED,/* flags */
VERSION, /* version */
NT_LIBRARY, /* type of module */
0, /* init priority */
(STRPTR)lib_name, /* module name */
(STRPTR)lib_id + 6,
(APTR)&LibInitStruct,
REVISION, NULL
};
AROS_UFH3 (LIBBASETYPEPTR, InitLib,
AROS_UFHA(LIBBASETYPEPTR, Base, D0),
AROS_UFHA(BPTR, seglist, A0),
AROS_UFHA(struct ExecBase *, sysbase, A6)
)
{
AROS_USERFUNC_INIT
Base->My_SegList = seglist;
Base->My_SysBase = (APTR)sysbase;
Base->testint = 0;
USESYSBASE
bug("InitLib\n");
if (!set_open_libraries())
{
set_close_libraries();
return NULL;
}
return Base;
AROS_USERFUNC_EXIT
}
AROS_LH1(LIBBASETYPEPTR, LibOpen,
AROS_LHA (ULONG, version, D0),
LIBBASETYPEPTR, Base, 1, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibOpen\n");
(void)version;
Base->My_Test_Lib.lib_OpenCnt++;
return Base;
AROS_LIBFUNC_EXIT
}
__saveds APTR LibExpungeInternal(LIBBASETYPE *Base reg(a6))
{
USESYSBASE
APTR seglist;
bug("LibExpungeInternal\n");
if (Base->My_Test_Lib.lib_OpenCnt)
{
return 0;
}
seglist = Base->My_SegList;
Forbid();
Remove((struct Node*)Base);
Permit();
FreeMem((APTR)Base - Base->My_Test_Lib.lib_NegSize, (LONG)Base->My_Test_Lib.lib_PosSize +
(LONG)Base->My_Test_Lib.lib_NegSize);
set_close_libraries();
return seglist;
}
AROS_LH0(BPTR, LibClose,
LIBBASETYPEPTR, Base, 2, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibClose\n");
if (!(--Base->My_Test_Lib.lib_OpenCnt))
{
return LibExpungeInternal(Base);
}
return 0;
AROS_LIBFUNC_EXIT
}
AROS_LH1(BPTR, LibExpunge,
AROS_LHA(LIBBASETYPEPTR, Base, D0),
struct ExecBase *, sysBase, 3, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
(void)sysBase;
USESYSBASE
bug("LibExpunge\n");
return LibExpungeInternal(Base);
AROS_LIBFUNC_EXIT
}
AROS_LH0(LIBBASETYPEPTR, LibReserved,
LIBBASETYPEPTR, Base, 4, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibReserved\n");
return 0;
//return (APTR)LibReserved();
AROS_LIBFUNC_EXIT
}
// Space for your own functions
// do not forget to update the FuncTable as well
AROS_LH1(int, TestFunction,
AROS_LHA(int, TestValue, D0),
LIBBASETYPEPTR, Base, 5, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("TestFunction\n");
Base->testint = TestValue + Base->testint;
return Base->testint;
AROS_LIBFUNC_EXIT
}
// Functable -> Table of all functions in the Library, in right order - important!
const APTR FuncTable[] =
{
&AROS_SLIB_ENTRY(LibOpen,LIBHEADNAME,1),
&AROS_SLIB_ENTRY(LibClose,LIBHEADNAME,2),
&AROS_SLIB_ENTRY(LibExpunge,LIBHEADNAME,3),
&AROS_SLIB_ENTRY(LibReserved,LIBHEADNAME,4),
&AROS_SLIB_ENTRY(TestFunction,LIBHEADNAME,5),
(void *)-1
};
// AutoInit stuff
void *__PROGRAM_ENTRIES__symbol_set_handler_missing;
void *__LIBS__symbol_set_handler_missing;
// end of AutoInitStuff
</pre>
Makefile
<pre>
VPATH =
CFLAGS = -O2 -g -fomit-frame-pointer -W -Wall -Wno-parentheses
CC = i386-aros-gcc
LD = i386-aros-gcc
LDFLAGS = -nostartfiles -Wl,-Map -Xlinker linkermap
LIBS = -lautoinit -llibinit
STRIP = i386-aros-strip --strip-unneeded --remove-section .comment
OBJS = lib_header.o
all: mytest.library
mytest.library: $(OBJS)
$(LD) $(LDFLAGS) $^ $(LIBS) -o $@
lib_header.o: lib_header.c lib.h
clean:
rm -f *.o *.library *.ppu testlibrary linkermap
</pre>
Porting UNIX library to AROS - dealing with static variables which would make it easy to port such libraries to AROS, keeping the benefits of sharing them on disk, but losing the benefit of actually sharing them in memory.
Our problem arises by the fact we want to share the actual code (the .text section of the library) and constant data, but we need to have per-task .bss and .data sections. If we get rid of our intention to share the .text and .rodata sections, things get quite easy: just load and relocate the library whenever it's open, by whoever it's open. It's like statically linking the library into the executable, except that the final linking is done at runtime.
In the V0 branch, in workbench/hidds/hidd.nouveau was committed pcimock.hidd. This is a pci driver that allows mocking real PCI devices under linux-hosted. The main idea is to be able to run the real hardware driver under linux-hosted with as little changes as possible (some changes will always be needed though unless someone wants to write complete device simulator) so that driver's code paths can be executed and debugged using gdb. This was a very helpful capability when porting nouveau. Now it is externalized from nouveau.hidd and can be used by other people porting drivers. The pcimock.hidd can currently mock 4 different nvidia cards, 1 AGP bridge and also mock irq.hidd.
What's the difference between this driver and the pcilinux.hidd? I used that one to develop many different HW drivers for aros. As far as I understood the intention of pcilinux.hidd it is supposed to get access to real hardware that is running under linux. The pcimock.hidd goal is to mock the hardware. For example my dev box is a PCIE system, but I still would like to run the AGP codes paths in nouveau under linux-hosted to check if they don't seg fault. The other case would be to run codes paths for hardware that the developer does not have (Fermi cards in my case). In the case of pcimock.hidd, the AROS driver's code paths will execute as long as you add proper mocking (for example fill in PCI config area or values for registers in BARs). This is an advantage for ported drivers - the code should already work (since it worked on another system) but there might have been mistakes made during porting which can be detected easily with gdb.
In case you are writing your driver from scratch, pcilinux.hidd hidd will give you more advantage, since you can actually access the real hardware from linux-hosted.
== Misc ==
===APL, MPL, BSD, GPL and LGPL Licences===
The majority of AROS sources in licensed under AROS Public License ([http://aros.sourceforge.net/license.html APL]) which (to a degree) protects us from someone taking AROS sources and not contributing improvements back (for example MorphOS took some AROS source and then contributed changes back)
It is written to allow the use of AROS code in other open source or commercial projects without exception whilst providing a mechanism so that improvements/additions can find their way back to the original source in one form or another.
There are "3rd" party applications used by AROS that do not fall under this license, which are an extra "Contrib" download for convenience.
Anyone can port GPL-ed network and sound drivers as AROSTCP and AHI are GPLed. Direct using (porting) [http://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs GPL]-ed code in other parts of AROS (gfx, sata, usb) is not possible because AROS license is not compatible with GPL. You need to utilize permissive licensed code like BSD or MIT/X11.
BSD and MPL license are the closest to APL.
APL however is not so compatible with LGPL/GPL.
LGPL case - you cannot statically combine APL code with LGPL. You can, however thank to LGPL being "lesser" restrictive, use LGPL dynamically loaded libraries in APL codes.
GPL case - you cannot combine APL code with GPL in any way if there is no explicit clause by GPLed code authors allowing that. If you do combine APL with GPL in "bad" ways described above - you have a problem (you violate GPL). This problem might result in everything in AROS becoming GPL or everything running or AROS becoming GPL (here I'm not sure really). The other scenario is that you are not allowed to legally distribute such code at all. To be honest I have grasped how to violate GPL, but I'm still no exactly sure what happens when you violate it (but I'm sure it's not anything nice)
GPL software can run on top of non-GPL "system components" (see system components exception of GPL), but the other way around (non-GPL using GPL) leads to problems. This means applications like scout, or Quake III are ok (in the majority of cases).
Theres no reason GPL drivers cannot be ported - but they cant be in AROS's ROM (requires linking APL code with GPL), nor can AROS depend on them (e.g. they must use existing apis).
If they are launched (dynamically linked) by a user action that is allowed. It is also allowed to distribute such binaries together for convenience.
GPL is not about statical or dynamic linking but is about executing process and function calls.
These components - SFS, isapnp, Zune texteditor, AHi, network drivers, freetype, openuirl, BHFormat, Edit and (" dynamically loaded libraries") are LGPL, not GPL. Mesa/Nouveau stuff is MIT. Some user tools are GPL though.
'''AROS (system)'''
* system components (libraries/classes/devices/etc) cannot be GPL as they would propagate GPL to complete system as well as GPL is not compatible with MPL from which APL is based
* system components can be LGPL v2 or a permissive license (MIT/BSD)
* system applications can be anything you like (but still I would prefer APL or permissive so the code can be reused if needed)
'''Contrib:'''
* no rules - contrib does not impact AROS system since nothing in AROS system depends on contrib.
About stealing code: The chances of this happening is exactly the same whether we are APL or GPL. If any closed-source option wanted to do it, there is no one that can validate otherwise. MorphOS has used some AROS codes, but contributed changes back.
The rationale behind APL is that while it guarantees that the original developer will get the improvements back (to a certain degree - file based), the person who uses the codes does not have to open his original codes. BSD does not guarantee that the original developer gets improvements. GPL requires the person using the codes to open his codes as well.
The copyright holders needs to stay - we just need information from them that the codes are available under APL (for example a checked-in file like in case of Poseidon). We don't do transfer of copyrights.
; Ultimately what can and cannot be done is up to the author(s) - not the licence.
===AROS source code tree===
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-trunk.txt
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
Found this interesting (non-GPL) licensing 'anomaly' - to keep in mind for distributors.
Programs that lose their license if sold ("non-profit only" licensed):
contrib/aminet/comm/term/TinyTerminal
contrib/aminet/dev/basic/bwBASIC
contrib/aminet/text/edit/xdme
contrib/fish/aroach
contrib/fish/lotto
contrib/fish/shuffle
contrib/fish/touch
+ cdvdfs.
Here is a list of all the GPL/GPLv2/GPLv3 licenses fossology found, what have explicit licenses in their comments.
excluded LGPL, BSD/GPL dual licensed and programs (such as Prefs/Edit and BHFormat)
<pre>
AROS/rom/dbus/include/ AFL_v2.1 ,GPL_v2+ (supposedly AFL < 3 is GPL incompatible)
AROS/workbench/classes/zune/betterstring/include/ GPL_v2+
AROS/workbench/classes/zune/texteditor/include/ GPL_v2+
AROS/workbench/classes/datatypes/gemimage/ GPL_v2+ GPL
AROS/workbench/classes/datatypes/degas/ GPL_v2+
AROS/workbench/libs/openurl/README: GPL
AROS/workbench/network/smbfs/documentation/ GPL_v2
AROS/workbench/network/smbfs/source_code/ GPL_v2+
AROS/workbench/network/stacks/AROSTCP/bsdsocket/kern/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/mmakefile.src conf.h GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/sys/ CMU ,GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/net/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/api/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/conf/conf.h: GPL_v2
AROS/workbench/network/stacks/AROSTCP/netinclude/net/radix.h: CMU ,GPL_v2
AROS/workbench/devs/AHI/AHI/ GPL_v2+
AROS/workbench/devs/AHI/AddAudioModes/ GPL_v2+ AROS/workbench/devs/AHI/AddAudioModes/COPYING: GPL
AROS/workbench/devs/AHI/Docs/texinfo.tex: GPL_v2+
AROS/workbench/devs/AHI/COPYING: GPL
AROS/workbench/devs/AHI/Drivers/EMU10kx/ GPL_v2+
AROS/workbench/devs/AHI/AHI-Handler/ GPL_v2+
AROS/workbench/devs/networks/rtl8029/ GPL GPL_v2+
AROS/workbench/devs/networks/pcnet32/ GPL GPL_v2+
AROS/workbench/devs/networks/ppp/LEGAL: GPL
AROS/workbench/devs/networks/atheros5000/ GPL_v2+
AROS/workbench/devs/networks/rhine/ GPL_v2+
AROS/workbench/devs/networks/nForce/ GPL_v2+ GPL
AROS/workbench/devs/networks/prism2/ GPL GPL_v2+
AROS/workbench/devs/networks/fec/LEGAL: GPL
AROS/workbench/devs/networks/rtl8139/ GPL GPL_v2+
AROS/workbench/devs/networks/etherlink3/ GPL GPL_v2+
AROS/workbench/devs/networks/intelpro100/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8169/ GPL GPL_v2+
AROS/workbench/devs/networks/emac/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8168/ GPL GPL_v2+
AROS/workbench/devs/networks/realtek8180/ GPL_v2+
AROS/workbench/devs/networks/via-rhine/via-rhine.c: GPL_v2+
AROS/workbench/devs/networks/via-rhine/ GPL GPL_v2+
AROS/workbench/devs/networks/e1000/ GPL_v2
AROS/workbench/devs/networks/sis900/ GPL GPL_v2+
</pre>
AHI: it has special provisions (COPYING.DRIVERS). The library is LGPL, preferences software is GPL and drivers can be anything without breaking GPL/LGPL.
Network stack: well, we are long overdue for a new, IPv6 enabled network stack anyway, anyone interested? ;) Seriously though it seems like the glue code is GPL and as all the drivers. However some of the drivers are our own code, so they could be relicensed to LGPL.
Same filter as the AROS trunk list. These should all be libraries or plugins - no programs.
<pre>
contrib/regina/utsname.h: GPL_v2+
contrib/mui/classes/nlist/include/default-align.h: GPL_v2+
contrib/mui/classes/nlist/include/amiga-align.h: GPL_v2+
contrib/mui/classes/BWins/include/MUI/BWin_mcc.h: GPL
contrib/mui/classes/BWins/include/BWin_private_mcc.h: GPL
contrib/mui/classes/BWins/COPYING: GPL_v2
contrib/mui/classes/BWins/MCC_BWins.readme: GPL_v2
contrib/mui/classes/thebar/include/default-align.h: GPL_v2+
contrib/mui/classes/thebar/include/amiga-align.h: GPL_v2+
contrib/gfx/libs/wazp3d/LEGAL: GPL
contrib/gfx/libs/wazp3d/Wazp3D.readme: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.c: GPL
contrib/libs/mpega/ GPL_v2+
</pre>
http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
===Types===
On AROS following rules apply:
<pre>
1. BYTE/UBYTE is 8bit, WORD/UWORD is 16bit, LONG/ULONG is 32bit, QUAD/UQUAD is 64bit, the types are comparable with stdint types (int8_t, int16_t, int32_t, int64_t)
2. IPTR/SIPTR are integer types large enough to fit pointer, that is sizeof(IPTR) = sizeof(APTR) = 4 on 32bit system, and = 8 on 64bit system
3. ti_Data in TagList is large enough to hold a IPTR/APTR type.
4. never store a pointer in integer of type LONG. It may work (if the pointer has upper 32bits clear), but does not have to. Compiler should warn you about that.
5. If you are unsure about point 4, allocate your memory with MEMF_31BIT flag set. But don't expect that AROS internals will do the same.
</pre>
point 4 is actually important.
* UBYTE/BYTE for 8bit
* UWORD/WORD for 16bit
* ULONG/LONG for 32bit
* UQUAD/QUAD for 64bit
<pre>
UBYTE Unsigned 8 bit integer variable (byte).
BYTE Signed 8 bit integer variable (byte).
UWORD Unsigned 16 bit integer variable (word).
WORD Signed 16 bit integer variable (word).
ULONG Unsigned 32 bit integer variable (longword).
LONG Signed 32 bit integer variable (longword).
FLOAT 32 bit IEEE floating point variable.
UQUAD Unsigned 64 bit integer variable.
QUAD Signed 64 bit integer variable.
DOUBLE 64bit IEEE floating point variable.
BOOL Boolean variable, TRUE and FALSE are also defined in exec/types.h.
VOID Void.
APTR A generic pointer for multiple purposes - Arrays.
STRPTR A pointer to a null-terminated string.
IPTR Really important in AROS, the only way to declare a field that can contain both: an integer or a pointer.
</pre>
if you want to write really portable app, you may be interested in standard datatypes defined in C99: int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, intptr_t, uintptr_t. They are all defined in inttypes.h include file.
In exec/types.h the following short-cuts are typedef'd. They are used often in AROS, so you should nearly always include exec/types.h and soon only they will be removed from sys/_types.h include, all types are now defined in include files named aros/types/xxx.h.
(Preparation for C library split; sys/xxx.h include will only be available there when compiling with POSIX C library)
Compiler specific types, like int and long might change their size. In case of AROS, similar to linux, int remains 32 bit whereas long grows to 64 bits in size.
If you use Amiga-like data types, i.e. BYTE/UBYTE, WORD/UWORD, LONG/ULONG and QUAD/UQUAD or the C99 standard types (uint8_t and so on, see stdint.h include) then you should have less issues to solve than by using types without size guarantee.
Of course, all pointers grow to 64 bytes using 64bit cpu. Most of the code can be just recompiled and will work. In rare cases, where e.g. pointers are casted to integers, a special care must be taken. Especially in the cases, where pointer is casted to LONG/ULONG (this code will break on 64 bit AROS) e.g. '#define IPTR ULONG'.
With compiler delint patches which the majority of them are simple casting issues to make the compiler happy. Notice some of the changes involve introducing double casts. In very recent versions of GCC. Yes, the bulk of the double casts are for converting 32 bit addresses (ie from a 32 bit PCI DMA address register) to a 64 bit pointer. First cast is to IPTR (to expand to 64 bits, and prevent sign extension if the address is above 0x7FFFFFFF), and then to APTR.
ULONG != IPTR except on 32bit .. so if you need to store pointers make sure and use IPTR and not ULONG (which some old code does). For this reason things like Taglist elements are 64bit (since the tag data can be a pointer).
If your passing items on the stack you should use the STACKED attribute to make sure they are correctly aligned (on 64bit all items on the stack are 64bit..)
There is more issues like using "== 0L" causes problems.
===Endian===
*BE
*LE
Use the macros from <endian.h> instead making a guess based upon architecture defines
<pre>
#if _BYTE_ORDER == _BIG_ENDIAN
#elif _BYTE_ORDER == _LITTLE_ENDIAN
#else
+
#error <whatever.h> - Byte order for this architecture is unsupported!
</pre>
===SVN and GIT===
If you want to help develop AROS OS itself, you can
* view current GIT/SVN entries [http://aros.sourceforge.net/ Aros Org website] or [https://github.com/aros-development-team/AROS Github], [https://github.com/ezrec older ezrec mirror], [https://github.com/michalsc/AROS/ older mirror], [https://trac.aros.org/trac/timeline TRAC], [],
* awaiting update [http://repo.or.cz/w/AROS.git git repo], [http://www.ohloh.net/p/aros/commits ohloh] or [https://svn.aros.org/svn/aros/trunk/ svn repo] and access [Git version git://repo.or.cz/AROS.git here],
* deprecated [https://www.gitorious.org/aros/aros/commit/a7fda9e ARIX commits] or [https://gitorious.org/aros/aros GIT old]
If you have SVN access (early 2015 introduced a new SVN server, create a new account at trac aros org) and/or have obtained the source [http://aros.sourceforge.net/download.php AROS site] - you can compile the current build tools/environment using:
> make development
and follow this [http://aros.sourceforge.net/documentation/developers/compiling.php#building procedure] or [https://github.com/apiraino/aros_guide Guide]
https://trac.aros.org/trac#Developing
If you plan on contributing back changes, please post information about such changes first on this [http://mail.aros.org/mailman/listinfo/aros-dev/ mailing list] for more experience developers can validate whether they are correct.
Then there are the nightly build machines. They svn update before the build and run configure as one of the next steps. autoconf might be added to the nightly build scripts.
Our build relies on packages downloaded from Internet (SDL for example) - it always worked this way. The minimal requirement (when just building core AROS) is binutils and gcc. If you build contrib as well, you need many more packages to be downloaded.
https://gitorious.org/aros/aros/commits/crosstools-II
git://gitorious.org/aros/aros.git
Branch crosstools-II there is only one commit on top of ABI_V1
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-x86_64
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-x86_64
</pre>
and
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-i386
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-i386
</pre>
build OK.
:''More information: [[Aros/Developer/Maintainer|AROS Maintainer Docs]]''
===SDI Calls===
Integrate the 'SDI'-headers to allow easier porting to all amiga-like platforms.
<pre>
PUTCHARPROTO( PutTheChar, char c, struct SPrintfStream *s )
{
// REAL CODE
}
</pre>
have "SDI_compiler.h" and "SDI_hook.h" included
its more organized like
#include SDI/SDI_hook.h
than
#include SDI_hook.h
option 1 --- i also use when back porting from amiga's..
<pre>
#ifdef __AROS__
#include SDI/SDI_hook.h
#else
#include SDI_hook.h
#endif
</pre>
also
you can add the -i include/sdi/ location if you do not want to add or edit any files.
Defining HOOKPROTO to IPTR name(struct IClass * cl, Object * obj, Msg msg); solved the problem
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order. examine compiler/include/aros/symbolsets.h (AROS_LIBREQ)
compiling mui stuff for aros setting -std=gnu99 is necessary (i have had -std=c99 most of the time).
===Locale with Flexcat===
Most languages have a locale, but not every app is localized, the only thing needed is to translate the "catalog" files. It is a case of locating the correct catalog and saving the translated version.
For every app that lacks of your language catalog and is localized anyway, you should find (in the sources) files related to locale:
* file.cd = catalog descriptor, contains base msg, with internal language (usually english)
* language.ct = catalog translation, contains every translated msg, indexed as in the file.cd.
Compare with other localized apps... Then, "make my_app-catalogs" should create and install your translated catalogs. ex : for, saying, sys:prefs/wanderer:
on root of AROS sources, type:
"make workbench-prefs-wanderer-catalogs"
then (if you changed the .cd file):
"make workbench-prefs-wanderer"
For apps not localized, you have to adapt their code to support it, if it is possible...
noticed the original .cd file has many (//) strings at the end of any voice, so added them also to the .ct file.
That (//) is only for cd files. I'm highly recommending to use FlexCat for updating ct files, e.g. like this:
flexcat app.cd deutsch.ct newctfile deutsch.ct
You'll get error checking and new entries are marked in the resulting ct file.
When editing .ct files, only change those lines containing translation and perhaps version string, nothing else.
The rest is up to the relevant tool, flexcat. In order to update your translation, type in the following in your shell:
flexcat xyz.cd xyz.ct NEWCTFILE xyz_upd.ct COPYMSGNEW
This way you will not only make sure you have correct translation file but flexcat also pre-fills newly added strings with "*** NEW *** text. Even better tool for checking cd/ct/catalog files is catcheck, but this one is sadly only available for AmigaOS/68k...
Some languages have variations, like portugues from portugal and portugues from brasil differs...
This is the way to go. I will have a look at language files, but basically if those two languages differ you have to do two separated set of translation files, yes.
(you could create a brazilian slang language localization too)
* At system level localization for one language is a dot language file.
(ex: locale:languages/klingon.language)
* At app level localization is a dot catalog file
(ex: locale:catalogs/klingon/system/libs/dos.catalog)
* At sources level, the dot ct file, and "$language" dot cd files and some building framework.
(ex: catalogs/my_app.ct catalogs/klingon.cd catalogs/mmakefile.src support.c support.h)
Please, use Flexcat to generate CT files:
FlexCat wanderer.cd NEWCTFILE=deutsch.ct
Then fill the first 2 lines with something useful:
<pre>
## version $VER: wanderer.catalog 1.1 (9.2.2006)
## language deutsch
</pre>
You can even update the CT-File: (This adds the new strings)
FlexCat wanderer.cd deutsch.ct NEWCTFILE=deutsch.ct
To compile a catalog you only need the .cd file and your translation (.ct file):
FlexCat multiview.cd deutsch.ct CATALOG=MultiView.catalog
[http://murks-ide.svn.sourceforge.net/viewvc/murks-ide/trunk/src/Catalogs/flexcat_linux?revision=100 Linux version of FlexCat]
: [http://aros.sourceforge.net/documentation/developers/app-dev/localization.php#localization-for-non-developers More information]
A script which compares the required version (i.e. the version which an application/module etc. tries to open) with the version of the existing CT files. The result is in this table:
https://github.com/aros-translation-team/translations/wiki/Progress
The following cases are highlighted:
n/a i.e. CT misses at all
version in existing CT file is lower than the required version
It might be a bit difficult to participate if you haven't worked with Git before but alternatively you can send your CT files to our Slack channel.
When the ct file has been generated via flexcat (flexcat keyshow.cd NEWCTFILE=spanish.ct) it has the following header:
---------------------------------------------------------------------------------------------------------------
## version $VER: <name>.catalog <ver>.<rev> (04.01.2021)
## language nolanguage
## codeset 0
;
---------------------------------------------------------------------------------------------------------------
Those values <ver>.<rev> are the version and revision of the CT file for the languaje or are the values of the application being localized?
The <ver> part must match with version which the application tries to open. You can find the value either in the column "Required Version" in the table which I've linked above, our you can look in the git repository. For keyshow it would be https://github.com/aros-translation-team/keyshow. You can find in the file "catalog_version.h" the right version number.
The <rev> part starts for new CT files with 0 and should be increased every time the CT file is updated.
Updated several files and created a few more that were missing on the spanish catalog.
The catalogs are in Git repositories at https://github.com/aros-translation-team
a) You tell me your Github user name. I'll invite you. You can work directly with the Git repositories.
b) You create Github forks of the catalog repositories and create pull requests.
c) You send the CT files to mrustler gmx de
===C Utils Misc===
The AROS source uses at several places the __DATE__ macro to fill the date entry of a $VER tag. Problem is that c:version doesn't understand that date format (e.g. "May 21, 2011"). As a result the output of e.g.
> "version c:shell full" contains "(null)". Is extending the version command to understand the format of __DATE__ the right solution for that problem?
AmigaOs compilers should use __AMIGADATE__ macro or similar form, if it isn't implemented it could be emulated in makefile: -D__AMIGADATE__=\"$(shell date "+%d.%m.%Y")\"
BTW. I think DD.MM.YYYY is better format than "Month DD YYY" because "Month DD YYY" is not localized in any way.
"strnicmp" shouldn't work with NULL pointers
The Situation:
compiled a linklib using c++ object files (using the c++ cross compiler).
compiled a C stub that uses the linklib (using the c++ cross compiler).
Try to link them together (using the c++ cross compiler) with C object
files (using the normal target c compiler) that need to use -nostartup
= cant do because using the c++ files pulls in arosc (for stdio etc.) -
so wants to have the autoinit stuff present.
What can I do about this??
If it is possible to manually open it then what do I need to do exactly?
=== ENV ===
The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact. However in some cases (like this one) it is not required.
99% of the time that statement is true (not required) for pretty much every file in ENV: or do people change their default icons - and prefs settings - every boot?
There seem to be a bad habit of late with developers changing things to reflect their own personal preference when the change isn't actually necessary - It would be nice if people could refrain from doing that in the tree without at least discussing it on the dev-list first (and with good reasoning unless they committed said work in the first place..)
We're not keen on the pollution of the "S:" dir: it's meant to be for scripts. What's wrong with "ENV:"?
Only the fact that it takes up RAM. I understand that for PCs with several gigabytes of RAM this is
irrelevant. But let's remember about other machines. The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact.
However in some cases (like this one) it is not required.
How about implementing in the style of HappyENV then? RAM-disk handler that falls through to reading from ENVARC: if there is no such file stored in it already. Removes RAM usage for unchanged files, removes the need to copy ENVARC to ENV in startup-sequence.
Shouldn't be too hard to make from AmberRAM, or even just extend AmberRAM to provide this service.
Is it feasable to build a special version of AmberRAM handling ENV: that will try and copy the requested file from ENVARC: if it isnt found in ENV: ?
Additionaly it could mark closed "files" as untouched - and expunge them from ENV: after a period of time to free up additional RAM:, or when the system is running low on free memory?
Silenty disappearing files may not be a good plan. Would be nice if the following would work:
ASSIGN :ENV SYS:Prefs/Env-Arc ADD
ASSIGN :ENV RAM:ENV ADD
Where new files put in ENV: end up in RAM:ENV, and opening files looks in RAM:ENV first, then SYS:Prefs/Env-Arc
Well - that's essentially what im proposing but without the assigns - or need for a RAM:ENV directory.
Adding it as a feature of AmberRAM sounds like the most memory efficient way (one handler to load in RAM) but that's only if it is possible to make it handle ENV: additionally to RAM:, and if it is even possible to add the proposed functionality (...and how to make it enable it when accessing ENV:).
===(AS)MP support===
If one has to recompile software for SMP multi core, is there any thing special one has to do to get software to run?
Use task.resource if you need to query information about what tasks are running, and clear msgports completely when they are allocated.
Most code should not need Forbid. Use Semaphores, Messages etc. to sync your own code.
Accessing system structures is a different thing. Use the proper API whenever possible.
How single structures will be protected in the future is still a moving target, at least it is not documented. And you should never use undocumented stuff
Ideas on for SMP multi-core
Another suggestion is ... Forbid/Permit function calls are meant to halt multitasking so as no other task could intervene with what ever the calling task is doing, e.g. setting semaphores. Disable/Enable calls are meant to halt interrupts and as a side effect they also halt task switching.
One option is to make it compulsory to protect shared resources with semaphores and forbid the use of simple Forbid() calls as to protect something. Setting semaphore should be done if possible with atomic instructions (check and alter in one instruction). Or make the second concurrent ObtainSemaphore call halt the second calling task and force if possible a task switch which ever gives better results.
Semaphores could store the owning tasks task pointer instead of boolean to make things easier.
As long as the CPU initiates the DMA transfers through the OS, and the OS ensures that the transferred memory is within the region accessible to the user initiating the transfer, everything is fine. The CPU is the conductor, and the CPU by that has the control of which DMA transfer is initiated and which is not.
All you need to do is to write device drivers reasonable. Hint: CachePreDMA and CachePostDMA exist.
All the Os has to do is to verify that the memory regions to be transferred are valid, and prohibit direct access to the DMA control registers from user space. None of these algorithms imply huge costs.
The current OS design doesn't really allow virtual memory in first place, Forbid() is again the problem.
[http://www.tbs-software.com/guide/index.php?guide=autodocs.doc%2Fmemory.doc&node=1 memory.library API] seem to low level. IMHO the programs should not know how the swapping is implemented. I would just go for one new memory flag
MEMF_SWAPPABLE that indicates that a certain memory region or a whole memory pool won't be accessed during Forbid()/Permit() etc. It only solves part of the problem, it only implements virtual memory and not memory protection. For the latter you need to be able make certain memory inaccessible by other programs, some memory read-only for one task and read-write for other tasks, etc. And I think this should be done in the same Address Space in order to avoid you constantly need to swap between different address spaces.
So to summarize, if there are programs using this API we may provide a wrapper layer to get them working but I am not convinced this API should be the reference API with whom to provide VM to AROS programs.
=== Variadic ===
variadic functions (i.e. functions with an arbitrary amount of arguments).
<pre>
#include <stdarg.h>
[...]
char * STDARGS GetKeyWord(int value, char *def, ...)
{
[...]
va_list va;
[...]
va_start(va, def);
[...]
va_end (args);
</pre>
Please keep with using stdarg rather than having va casted to a LONG * type and varargs handled manually. Doing so, prevents tons of casting, where a simple va_arg can be used. So, string = *((char **) args) instead of string=va_arg(va, char *).
<pre>
#include <stdio.h>
#include <stdarg.h>
int printf (const char * format, ...)
{
int retval;
va_list args;
va_start (args, format);
retval = vfprintf (stdout, format, args);
va_end (args);
fflush (stdout);
return retval;
} /* printf */
</pre>
Couldn't find varargs.h or stdarg.h. and have no use for AROS_SLOWSTACKHOOKS or AROS_SLOWSTACKTAGS.
GCC looks for stdarg.h in a different place:
/bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/include/stdarg.h
Here is a path for a "normal" header:
bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/../../../../i386-aros/sys-include/aros/system.h
The use of vararg.h isn't supported by newer gcc versions. If you want your code to run on architectures that pass part of variadic arguments in a number of registers you need to use AROS_SLOWSTACK macros. Otherwise your program will not work on powerpc and x86_64 ports.
Of course the SLOWSTACK stuff is not needed in a function that can use va_list, va_start, va_arg and va_end. It's only needed if you want to write functions like DoMethod or similar.
#include <stdarg.h>
should be enough no matter if you do cross or native compiling. If it does not work, something is wrong and should be corrected.
Stdarg.h is here, Development:lib/gcc/i386-aros/4.2.2/include/
...which is part of the compiler's default include paths. In other words, #include <stdarg.h> works out of the box, indeed. (sorry, I should have just tried it before invoking "search" or "find"...)
furthermore, myprintf() as shown above won't work, because...
printf(format, args);
...is wrong - the second argument does not match printf() prototype, it expects a argument list, but args is of type va_list (obviously) - so one has to use...
vfprintf(stdout, format, args);
...instead, just like in the original printf(), and add fflush(stdout).
additionally, one could use...
int myarg = va_arg(args, int);
...between va_start() and va_end() to access individual arguments, where each call to va_arg() returns an argument casted to the desired type (here: "int") from the list given (here: "args") and advances to the next one.
wrapping up vfprintf() and modifying the format string now is a major speedup! no more backslash-n typing! this has been haunting me for years!
On MOS and AmigaOS, the NewObject variadic function is kept in the static library. It takes most of the parameters on the stack - thanks to that the implementation of NewObject calls the NewObjectA function. Everything works perfect, and the typical MUI macros may be easily used.
This, however, is not the case when you compile for AROS. Here, NewObject is a variadic macro, not a function. Thanks such approach we do not need any custom compiler in case of systems, where the arguments of variadic functions are passed partially through registers and partially through the stack (This is the case of PPC and x86_64, this is also the reason why both OS4 and MOS require specially patched compilers).
Since NewObject is a macro, the gcc's preprocessor expects the list of macros arguments enclosed within parentheses. In MUI macros it is not the case. Imagine the following test code:
<pre>
#define foo(a,b) ((a)+(b))
int loosy_function(int a, int b)
{
return foo(a,b);
}
</pre>
This will compile and work, but the following piece of code:
<pre>
#define foo(a,b) ((a)+(b))
#define END )
int loosy_function(int a, int b)
{
return foo(a,b END;
}
</pre>
will fail with the error: unterminated argument list invoking macro "foo"
There are two ways of fixing your issue. Either create your new objects outside this huge MUI constructions, and in there use just a pointer, or get rid of the "End" macro and exchange it with "TAG_DONE)".
Badly written software is, for example, casting va_list to an APTR or even doing so as if va_list were a plain table of function arguments. Such code needs to be fixed because it has very few chances to work anywhere but on author's machine ;)
The problem is nOt that they assume sizeof(APTR) == 4, its that they often do not use APTR, and use ULONG to store pointers exclusively. If the code used APTR/IPTR as it should - most of the "problems" wouldn't exist.
It would also help if people would start using variadic arguments properly. Many coders do assumptions which shall never be made. Instead, they should consider using stdarg.h file and all the va_* functions :)
===ABI===
In the head of our SVN repository there are now only 3 directories:
<pre>
admin/
branches/
trunk/
</pre>
We have added two extra dirs there: tags and imports
As discussed when we branch ABI V0 and [[Aros/Developer/ABIv1|ABI V1]] it would also be good to introduce tags. Normally this is done in a directory in the repository called tags. Currently we don't have this directory there. (We do have branches/tags that is a hack I have done because one doesn't have write access in the top directory. I think this directory is not clean and should be removed).
The second directory I would introduce is an imports directory for implementing vendor branches as discussed in the svn [http://svnbook.red-bean.com/en/1.5/svn.advanced.vendorbr.html book]. Currently we use code from several different projects and that code is stored inside the AROS tree; we seem to have problems with keeping this code up to date and merge our changes upstream. Maintainers of up stream projects like the MUI classes etc. have complained about this (to put it lightly).
Introducing these vendor branches would make it easier to see what changes we have made and make patches to be sent upstream and make it easier to import newer upstream versions of their code. Although can't "copy" the vendor branch into the main branch because it's already there, so start with a "merge".
Yes, the first step to make the code already in the repository compatible with the vendor branches will be the most difficult. The best way to do it the following way:
* first import the version on which the current AROS code is based into the vendor branch
* then import the new version over it in the vendor branch
* finally merge the difference between these two version in the AROS code present in the repository.
For example, place NList directly under vendor and not in a subdirectory like "contrib/zune/classes".
Actually after we have a stable [http://aros.sourceforge.net/documentation/developers/specifications/drafts/abiv1.php ABIv1 (2012 or later)]. We need to move away as much as possible from the contrib directory to some other repositories. The reasons are ...
* The AROS repository should be for the core AROS code.
* other contrib projects should be tried to be compiled for all Amiga-like OSes.
* The release scheme for AROS and the other programs should not have to be aligned.
* Binary versions should be provided on aros-archives and on aminet and/or OS4Depot to install them. (Some clever programs should maybe be provided to make the life of distribution developers easier).
* avoid parallel forks of programs for AROS and the other amiga OSes.
If there is really a need for a place for hosting AROS projects we may investigate setting up such a server but then including bug tracking, governance, maillist, etc. for each project separately. I personally think there are already enough places like sourceforge, google code, savannah, etc. where people can go for hosting such projects.
==Links==
* http://amigadocs.hokstad.com
* http://amigadocs.hokstad.com/doku.php?id=dev-links
* http://www.liquido2.com/tutorial/index.html
* Amiga(TM) OS4 has a [http://www.ast-workshops.co.uk/os4pg/ workshop] page and hope to produce a [http://amigaworld.net/modules/newbb/viewtopic.php?topic_id=31117&forum=42#549091 book] soon. [http://www.solie.ca/articles/map/map.html Brief Guide].
In the future...?
*AROS 64bit - SMP, Vulkan with OpenGL compability layer
*AROS 32bit - keep for historic reasons
What would you like to see implemented in AROS?
ABIv1 completed, SMP (x86_64), SendMsg()/GetMsg() to support memory protection between target and destination, in that order. Michal Schulz and Jason McMullan have been toying with the question "What are the minimal changes needed to the AmigaOS 3.1 API to support SMP"? The answer so far seems to be "few, but subtle". For example, SysBase->ThisTask is no longer meaningful on SMP, but FindTask(NULL) is. Disable() and Forbid() are shockingly bad on performance, but adding a spinlock semaphore mode to SignalSemaphore will help new code on SMP.
Leveraging a 'common' OS with a lot of machine support (Linux, MacOS, Windows, QNX, etc.) is something that AROS has been doing for quite a long time, and it is the biggest strength of AROS. This AROS experience and programming model, in the same way the Google's Android layers on top of Linux, or MacOS X layers on top of the Darwin/BSD kernel, as a first step
* The graphics + layers subsystem could be implemented as a shim on top of a OpenGL ES implementation (ie on any modern Linux system, or the RaspberryPI's hardware, MacOS X, etc).
- This also allows every window to be on its own 3D surface with backing store, allowing Wanderer (or a Commodity)
rearrange/zoom/animate app windows without having to send a pile or refreshes to them
* Use OpenAL as the sound backend
* AROSTCP would be a thin layer over the native OS's TCP/IP stack
* dos.library, poseidon.library, and input.device would be slim shims over the native APIs
* If we move to loading all libraries' into the application's task space, instead of a single global instance of the library, this will allow SMP and MMU more easily.
- Yes, it will require a lot of work in the libraries to make this transition
- Yes, I do think it will be worth it in the end.
* A 'fat binary' install format (or, maybe LLVM bytecode) that can be 'flattend' to the target architecture on installation.
So, what would this 'AROS of the future' look like?
* AmigaOS 3.x style API, with certain 'fundamental changes' to message passing
* Uses the underlying OS' device drivers, so more AROS developer effort can go to user-visible features and bugfixes
* Allows AROS applications to run side-by-side with the OS's native apps
And why would anyone want to program on such a system?
* AROS applications would run on any system that has the AROS Framework installed
* AROS applications are pixel-for-pixel the same on all platforms.
* Develop with the knowledge that you are guaranteed OpenGL and OpenAL, and the rest of the AROS Framework
an option for mmake to dump its dependency of metatarget in a graphviz[*] input file. This should make it possible to visualize the dependencies and hopefully be inspiration for cleaning up some mess, circular or unneeded dependencies and so on.
AmigaOS gcc 9 [https://franke.ms/amiga/gcc.wiki Old versions] able to create binaries for AmigaOS and [https://eab.abime.net/showthread.php?t=93813 Upgrading gcc versions]
==References==
{{reflist}}
{{status|50%}}
{{BookCat}}
n7uz66p8nyu148mx06xhvwkvsq8q4e3
4656341
4656311
2026-08-05T07:23:56Z
Jeff1138
301139
4656341
wikitext
text/x-wiki
{{ArosNav}}
==A technical overview of AROS==
Google translation [http://translate.google.com/translate?hl=en&sl=auto&tl=de&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs German], [http://translate.google.com/translate?hl=en&sl=auto&tl=fr&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs French], [http://translate.google.com/translate?hl=en&sl=auto&tl=it&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Italian], [http://translate.google.com/translate?hl=en&sl=auto&tl=es&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Spanish], [http://translate.google.com/translate?hl=en&sl=auto&tl=hi&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Hindi], [http://translate.google.com/translate?hl=en&sl=auto&tl=zh-CN&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Chinese],
[http://translate.google.com/translate?hl=en&sl=auto&tl=ru&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Russian],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pl&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Polish],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pt&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Portuguese]
{{Uncited}}
AROS,<ref>[http://aros.sourceforge.net/download.php References and sources]</ref> like AmigaOS (TM), is a [[w:Message passing|message-passing]], [[w:Preemption (computing)|preemptive]] [[w:Multitasking|multitasking]] [[w:Operating system|OS]].
It uses [[w:Reentrant (subroutine)|re-entrant]] shared libraries to save memory space.
AROS is based around an executive library kernel (Exec) and two other libraries:
* Exec (the "kernel", which is not a kernel in the modern sense),
* Intuition (graphics and GUI, integrated into the system) and
* AmigaDOS (Disk Operating System, the Metacomco's Tripos modified to work with Exec).
The design philosophies of AmigaDOS and Intuition are rather different, the former adopting a C-like API and the latter creating an [http://www.basden.demon.co.uk/amiga/amiga.oo.html object-oriented], message passing aware environment for the programmer. The system base is the only absolute address in AmigaOS (located at 0x00000004) this does differ with AROS as AROS SysBase is automatically provided (no $4) but everything else is dynamically loaded. The OS is well known for delivering high performance due to its close connections with the hardware, while simultaneously having the flexibility to support re-targetable graphics (Cybergraphics) and retargetable audio subsystems (AHI).
: Diagram showing relationships of libraries to system needed
Remember, AROS is a [http://en.wikibooks.org/wiki/Aros/Developer/ABIv1 research] operating system, and while all contributions to the base AROS code are welcome, please contact the dev list first for any core changes. Writing applications for AROS does not have this requirement.
While AROS appears and feels almost feature complete, it is still [[Aros/Developer/IncompleteAPIs|missing a small number of functions]] from the Amiga API - as well as a few implementations of [[Aros/MissingFunctionaility|core functionality]]. There are also a number of user applications that, while not strictly part of the AmigaOS 3.1 environment, need to be written.
[https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1201 This thread provides] information for setup, [http://www.aros.org/documentation/developers/index.php documentation] and whether you are interested in core OS changes and/or writing/porting software apps
*you compile directly under AROS, which can be running on either real hardware, virtual hardware
*in hosted mode under linux/window, cross-compile from that host OS (save your files as ISO-8859-15 encoding instead of UTF-8)
The repository for the [https://github.com/aros-development-team/AROS current development version ABIv1], the [https://github.com/deadw00d/AROS/tree/alt-abiv0 repository for current stable PC version ABIv0 with backported ABIv1 features is located which is used on AROS One and Icaros x86 based distros]
Any [https://github.com/aros-development-team/AROS/issues bugs / issues can be added]
We have a [https://arosdevteam.slack.com/archives/CUFV48U3H slack here], discord on [https://discord.gg/UKp9qdEBuQ Discord@AmigaDev],
==Software Development for AROS==
===Programming languages===
Apart from 'The Developer Environment', which primarily supports C/C++ code, there are other programming languages available for AROS:
'''Scripting'''
:[[Aros/User/DOS|DOS]], included in all
:[[Aros/Developer/Docs/LUA|LUA]], included in all or [http://www.airsoftsoftwair.de/en/prod_hollywood.html Hollywood]
:REXX [[Aros/Developer/Docs/Rexx|Regina (AROS' ARexx)]], included in all
:Python [ Info], included in Icaros
:Ruby [http://www.ruby-lang.org/en Info]/[http://archives.aros-exec.org/index.php?function=browse&cat=development/language download]
'''Basic'''
:[http://amos.pspuae.com/AmosProManual/contents/c1.html '''Amos Pro'''] [http://amos.pspuae.com/index.php?action=forum#1 compatible] [http://www.amigacoding.com/index.php/Main_Page commands] (all incomplete)
::[http://sourceforge.net/projects/xamos/ X-Amos]
::[http://sdlbasic.sourceforge.net/ SDLBasic] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://alvyn.sourceforge.net/ Alvyn] ([http://www.dusabledanslherbe.eu/AROSPage/MISC.14.html download])
::[[Aros/Developer/Basic/Basic4SDL|Basic4SDL]] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://www.ultimateamiga.co.uk/index.php?topic=9425.0 Project Deimos],
:'''Blitz Basic''' [http://aros-exec.org/modules/newbb/viewtopic.php?post_id=46537#forumpost46537 none on AROS]
:: [http://www.amiforce.de/main.php Amiblitz] on JanusUAE amiga(TM) emulator
:'''Amiga Basic'''
:: [ ACEBasic]
'''Misc'''
:[[Aros/Developer/Docs/E|AmigaE Portable E]]
:[https://ae.arosworld.org/index.php?board=11.0 FreePascal FPC Aros-Exec thread], [http://archives.aros-exec.org/index.php?function=browse&cat=development/language Download], FreePascal for AROS has its own [http://fpcaroswiki.alb42.de/ Wikibook],
:[[Aros/Developer/Docs/LLVM|LLVM]],
===Where to get the C/C++ Environment===
If you want to develop for AROS, its generally easier to be running linux hosted AROS development environment especially for C++, cross compiling the code. That's how most developers now are doing it. g++ is used to compile owb web browser as well as some other AROS software. If you were hoping for a rich set of C++ libraries or classes defined for the OS feature set, you might be disappointed.
AROS Native compiling is possible, but you're much more likely to run into the odd bug(s) in the dev environment since it gets little testing and fixing by other developers.
Is there a sftp software or scp over ssh available?
Maybe. At least the security part would be handled by [https://github.com/jens-maus/amissl amissl] [https://archives.arosworld.org/index.php?function=browse&cat=network/misc port]. DOpus5 has recently added sftp support. See here for a [https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1974&highlight=ssh&pid=12073#post_12073 ssh scp client]
[https://arosdevteam.slack.com/join/shared_invite/enQtOTc4Mzg0NDIzNzQ0LWQ2NWZmNmMwNGIwNGEyNTgxNzU3MGFjMTk3ZThmOTQ1MTVjMzhmNTllYWQ0ZTUxMjBjMGE0Y2VjMDJmNTc5MzI#/shared-invite/email Slack Dev Forum]
====Cross compilers from Windows or Linux====
*Windows WSL2 walkthrough can be [https://arosnews.github.io/how-to-cross-compile-aros-hosted-wsl/ found here]
you want to build AROS. No problem.
Here are instructions for 64-bit:
https://github.com/deadw00d/AROS/blob/master/INSTALL.md
Here are instructions for 32-bit:
https://github.com/deadw00d/AROS/blob/alt-abiv0/INSTALL.md
And as always has been the case you can use the contrib archive to 'obtain' the development directory which contains the /native/ AROS gcc compiler and tools. That compiler is used to build AROS itself but can be used outside the AROS build process by providing --sysroot with indicated directory to cross compile for AROS.
=====Older guides for Linux hosted compiler=====
Please install these packages before moving to next step. Below is a reference list for Debian-based distributions. Reference build system was Ubuntu 18.04/20.04 amd64.
subversion git-core gcc g++ make gawk bison flex bzip2 netpbm autoconf automake libx11-dev libxext-dev libc6-dev liblzo2-dev libxxf86vm-dev libpng-dev gcc-multilib libsdl1.2-dev byacc python-mako libxcursor-dev cmake zsh mingw64
Do all of these operations under home directory of your user or another directory where your user has write permissions.
Specifically, in a section "Linux-i386", be sure first to build the cross-compiler (toolchain-alt-abiv0-i386) and only then AROS itself (alt-abiv0-linux-i386).
Clone & build
<pre>
$ mkdir myrepo
$ cd myrepo
$ git clone https://github.com/deadw00d/AROS.git AROS
$ cd AROS
$ git checkout alt-abiv0
$ cd ..
$ cp ./AROS/scripts/rebuild.sh .
$ ./rebuild.sh
</pre>
Now to the build selection below - Linux-i386
Select toolchain-alt-abiv0-i386 - Select alt-abiv0-linux-i386 (DEBUG)
Start AROS by:
<pre>
$ cd alt-abiv0-linux-i386/bin/linux-i386/AROS
$ ./Arch/linux/AROSBootstrap
</pre>
Pc-i386 Select toolchain-alt-abiv0-i386 (if not built yet) - Select alt-abiv0-pc-i386
ISO image available in alt-abiv0-pc-i386/distfiles
Now that we have linux-hosted build, we can resume native (option 2).
Run ./rebuild.sh and selection option 2. Wait until it finished, then:
<pre>
$ cd alt-abiv0-pc-i386
$ make
</pre>
Now
<pre>
$ make bootiso
</pre>
Now, your compiler is located in toolchain-alt-abiv0-i386 directory and named i386-aros-gcc. Includes are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/include and libraries are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development.lib.
This is how then can be passed to the compiler:
/home/xxx/toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot /home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development -L/home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/lib
../toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot bin/linux-i386/AROS/Development local/helloworld/helloworld.c -o local/helloworld/helloworld
Another method was using Debian like distros and download the gimmearos.sh script (on [http://archives.aros-exec.org/index.php?function=browse&cat=development/cross aros-archives]) to setup the developer environment by downloading necessary packages ...
The gimmearos script is a good start in that direction, building the cross compilers and hosted AROS environment, but gimmearos.sh might be out of date or not be completely compatible with any given linux distro.
In order to do that, you have to compile AROS yourself. Download AROS source archive not contrib. Compile AROS by entering the main directory
./configure
make
([http://aros.sourceforge.net/documentation/developers/compiling.php More on compiling AROS]). The result will be a basic AROS system without development tools.
To compile C++ on Linux, type 'make gnu-contrib-crosstools', creating the cross-compilers in ./bin/linux-i386/tools/, named i386-aros-gcc, etc.
'''Note''': Currently, to make the cross compilers usable copy 'collect-aros' from tools/ to tools/i386-aros/bin/. At the moment the cross compilers if used from the Linux command line will only find it when it's there.
If you want to compile native compilers (the Developer Environment), type 'make contrib-gnu-gcc', creating native compilers in AROS' System:Development/bin directory.
When the output needs to be stripped <code>--strip-unneeded --remove-section .comment</code>
The Obj-C backend should build out of the box.
Open contrib/gnu/gcc/mmakefile.src and search for the line which contains "--enable-languages" and add "objc" to the list of languages that follows it.
--enable-languages=c,c++,objc
Better make it—enable-languages=c,c++,objc,obj-c++
ObjC++ is broken as soon as you try to use exceptions, but that might change in future GCC versions and it does not hurt having it there already.
Do you need a cross-compiler or a real compiler? In the first case you can get away with just downloading the proper gcc archive, apply the patch and proceed with the normal gcc build. In the case of a real cross-compiler then when downloading the contrib sources, also need to download the normal sources, place the contrib sources into a directory called contrib, need to install autoconf+automake+perl+python, call ./configure, cd into the subdirectory and type make.
to rebuild GCC with host == build == target == i386-pc-aros. So just get the vanilla sources and apply the patches without bothering about the build system?
[https://vmwaros.blogspot.com/2019/10/a-pre-configured-development-machine.html pre-configured VM environment vmware virtual machine to develop AROS and AROS software]
'''64 bit'''
'''32 bit'''
A good option for multiple OS is [https://axrt.org/index.php?tab=download-aros AxRuntime lets developers compile their Amiga API-based applications as Linux binaries being able to utilize modern development tools available on Linux, like IDEs, debuggers, profilers, etc]
====Native compilers for AROS====
Namely gcc for C or g++ for C++ are supplied with the [[Aros/Developer/Docs#The Developer Environment|Developer Environment]], which is already '''setup''' and part of any current AROS distribution like AROS One or the nightlies
* Current GCC 6.5 (32bit) though moving to 10.5 and 15.1 (64bit)
* Older software components. GNU GCC 4.x GNU BinUtils, GNU Fileutils 4.x, GNU Textutils and others.
On single partition systems and the Boot ISO, the AROS Developer environment is installed under "SYS:Development/". Systems with multiple partitions - such as a Work: partition - tend to install it to there instead, however it can be installed manually to any location. Please remember, if moving, that you will need to correct the Development packages 'install location' env variable to point to the new locations root - look in SYS:S/startup-sequence.
<pre>
Assign Development: SYS:Development
Assign C: Development:bin ADD
</pre>
In the aros build instructions. you need to check out contrib and/or ports into your AROS source directory, as subdirs. then, assuming you are building in an external build dir, as you should, you simply configure and "make contrib" for instance or whatever submodule you might want to build.
===Beginners Tutorials in C C++===
As AROS is [http://eab.abime.net/showthread.php?t=29856 C based] API compatible to AmigaOS 3.x, so most of the information on programming C on the Amiga applies to AROS as well. Please note that there is a lot of AmigaOS 1.3 (1985-1989) and [https://www.markround.com/amigaguide AmigaOS AOS 2.x (1990-1992)] information around but OS3.1 is recommended but limited in amount.
Brief overview of what is required to write AROS Applications
# Using [[Aros/Developer/Docs/Libraries/Intuition|Intuition]] for basic screens/windows
# Using graphics within windows via 8bit [[Aros/Developer/Docs/Libraries/Graphics|graphics]] and so onto 15-16-24bit [[Aros/Developer/Docs/Libraries/CGFX|cybergraphx]]
# Load and save work to [[Aros/Developer/Docs/Libraries/DOS|dos]] disk drives
# Using the [[Aros/Developer/Zune|ZUNE GUI Environment]]
Writing native games require this extra information
# Using [[Aros/Developer/AHIDrivers|AHI audio hardware independent API]]
# Using USB joystick/joypad with the Poseidon USB stack through [[Aros/Developer/Docs/Libraries/LowLevel|LowLevel]] library
Additional features that could be added later
# Adding additional [[Aros/Developer/Docs/Libraries/Locale|Locale]] language translations to your program
# Adding a [[Aros/Developer/Docs/Rexx|AREXX/Regina]] port to your application
# Executing Amiga(TM) [[Aros/User/DOS|DOS]] commands from your application
# Using [[Aros/Developer/Docs/Libraries/Icon|icons]] (.info files) and icon tooltypes (stack, version, and program startup options)
# Local couch or IP based SANA2 networking co-op multi player gaming support
Most AmigaOS programming books are nowadays very much out of date as most are from the late 1980s and do not cover later amigaOS releases like 3.1 for example, Rob Peck's book "Programmer's Guide to the Amiga". The Amiga ROM Kernel manuals aka RKMs like Libraries (3rd edition), Devices (), the AmigaDOS manual (3rd edition) and the Style Guide may have their uses. There are some reference examples from AmigaMail and Devcon notes (available again on an Amiga developers CD 2.1).
For Arexx then "The Amiga Programmer's Guide to ARexx" by Eric Giguere, which was published by Commodore is useful as well as an "Arexx Cookbook".
Curly brackets missing - try SHIFT + ALT + 7 or 0.
* Beginners C Guide [http://www.iu.hio.no/~mark/CTutorial/CTutorial.html C Tutorial],
* [http://thecguru.com/ C for beginners],
* [http://fresh2refresh.com/c/c-basic-program/ C programming basics] for students,
* [https://www.edx.org/courses Free Online course] from American Universities
* Reference Amiga [http://amigadev.elowar.com/ API reference].
* AROS based c source can be found [[Aros/Developer/Docs/Examples|here]] and lots of example code can be found inside [https://github.com/aros-development-team AROS sources] themselves and from the contrib section of the archives from [https://github.com/aros-development-team/contrib Aros site], and study the AROS applications source code, e.g. the test programs from the Tests drawer (folder/directory). Take a look at the code of some smaller AROS programs might be a better and more up to date guide. Some old Os3 [http://www.blackfiveservices.co.uk/amiga-c/ here]
When you upload your builds, please write the architecture (like i386-aros, x86_64-aros, etc.) in the archive name
and it is also advisable to write in the field "Requirements" what ABI (ABIv11, ABIv0 or ABIv1)
===Compiling C/C++ Code===
Native, although we have a IDE Integrated Development Environment (Murks), it does lack a debugger. Whilst others use a combination of a text editor and shell to edit code. Most though use an AROS hosted on Linux to take advantage of the better GCC tools like GDB and various IDEs.
Open shell - its a menu option at the top left of Wanderer (desktop). Or by using the right Win key and w (or F12 and w) within the directory with the source code. Type in
sh
to change the amiga shell into a unix shell. You can then type in ls (unix equivalent to amiga dir). Take a look [http://en.wikibooks.org/wiki/Linux_commands here] for more commands.
For a single file program-name.c or program-name.cpp
gcc -o program-name program-name.c
or
g++ -o program-name program-name.cpp
or
g++ -o test -Wall -g main.cc texturelib.cpp xmodelib.cc -lsdl -lgl
To close the shell, click on the top left-hand corner to close (twice). Once to get back the aros shell and then again to close finally. Use [http://freshmeat.net/projects/cksfv/ cksfv] as a test.
Some source code requires the addition of Amiga API libraries, like dos, which you can flag at the compile time as
gcc -o julia.exe julia.c -ldos
For DOS use -ldos as example and if you are compiling mui codes it will be -lmui or intuition -lintuition. Other missing symbols are due to linker libraries being necessary for linking in functions that aren't in the standard C libraries. For example some source code would need added
-lz or -lm or -lpng or -larosc etc.
use this in unix line command mode to search for 'search-item' in many .c files (*.cpp for c++, etc.)
grep -l 'search-item' *.c
If the program is not executable, try using parameter fno-common
"Delete #?.o"? Or if you are using abcshell then "rm *.o"
:''More information: [[Aros/Developer/Porting software]]''
=== How to make Apps have AROS 64-bit specific support code ===
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
AROS64 already uses 64bit addressing, it just doesn't setup the MMU for more than 4GB physical memory currently.
When porting software to AROS64 it is "mostly" a case of converting ULONG's that are used to store pointers, into IPTR's instead, etc. Another quirk, is making sure items on the stack are the correct size by using the STACKED attribute for them.
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
compiling mui stuff for aros setting -std=gnu99 is necessary, had -std=c99 usually
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order.
crash which suggest memory corruption. From my experience porting from 32-bit to 64-bit these kinds of errors can happen if a pointer is passed somewhere via ULONG variable. Then half of the pointer is cut.
To generate this error, please run AROSBootstrap with -m 1024. This will allocate heap to 64-bit address space which will make these errors immediatelly visible. These types of crashes are hard to debug. Disabled as little code as possible to stop corruption from occurring and then try to read from the code where it can be broken
Crashing in tslf_freevec is another symptom of memory corruption and these memory corruptions will manifest differently on different setups.
==Coding conventions==
As the AROS core source is a shared developer experience, there are rules regarding structure and style. When it comes to your creating your own app and coding, the structure and style should be your own, i.e. you should enjoy what you do and do it so that you can understand what is going on.
===Layout===
<syntaxhighlight lang="c">
static void 1st_function()
{
program
exit(0);
}
int main(void)
{
1st_function();
2nd_function();
3rd_function();
return 0;
}
</syntaxhighlight>
<syntaxhighlight lang="c">
struct Screen * openscreen(void);
struct Window *openwindow(struct Screen *screen, const char *title, LONG x, LONG y, LONG w, LONG h);
VOID 1st_function();
VOID 2nd_function();
int main(int argc, char **argv)
{
program
return 0;
} /* main */
VOID 1st_function()
{
}
VOID 2nd_function()
{
}
</syntaxhighlight>
===General style===
This code is used by many people and therefore you should keep some things in mind when you submit source code:
* Keep things simple
* Keep the source clean
* Always know what you are doing, if not flag it and describe what needs to be done...
* Explain clearly/simply what you are doing
* Remember that you write code once but that it is read many times by many people
===Comments===
AROS uses some of the comments in the source to generate the documentation. Therefore it's necessary to keep a certain format so the tools can find their information. Other comments are ignored but they should explain what you thought when you wrote the code. If you really can't think of an explanation, then don't write the code a second time like this:
<pre>
/* This adds 1 to t */
t ++;
</pre>
What we think of is this:
<pre>
/* Go on with next element */
t ++;
</pre>
===Formatting===
This is only '''IMPORTANT''' if you are going to work on the core AROS code or contrib but not applications which may reside outside like on AROS Archives or other websites.
<syntaxhighlight lang="c">
{
/* a */
struct RastPort * rp;
int a;
/* b */
rp = NULL;
a = 1;
/* c */
if (a == 1)
printf ("Init worked\n");
/* d */
if
(
!(rp = Get_a_pointer_to_the_RastPort
(
some
, long
, arguments
)
)
||
a <= 0
)
{
printf ("Something failed\n");
return FAIL;
}
/* e */
a = printf ("My RastPort is %p, a=%d\n"
, rp
, a
);
return OK;
}
</syntaxhighlight>
Looks ugly, eh ? :-) Ok, here are the rules:
<pre>
If several lines contain similar code, put similar things below each other (see a and b);
Put spaces between operands and operators
Put braces {}, brackets [] and parentheses () below each other (d) if there is much code between.
Brackets and parentheses may be in one line if the code between is small (c)
Indent by 4 Spaces. Two indent levels may be abbreviated by one tab.
</pre>
'''Before committing please normalize the indentation - if you have a mixture of tabs and spaced - please always use spaces, 1 tab = 4 spaces.'''
The reasons for this are:
# While some editors can use an arbitrary sizes for tabs, it's a bit complicated to tell another editor which tab size was used by the one used to write the code.
# Most code in AROS was written this way and your code should look like the rest.
# You can print this code on any printer without special tools to "fix" the tabs.
# Most editors have smart tabs which do exactly this. If your editor doesn't, write a bug report.
If you have a function with many arguments (d, e) you should put the parentheses in lines of their own and each argument in one line (d) or put the first argument behind the opening parentheses (e) and each following argument in a line of its own with the comma in front. The closing parentheses is in a line of its own and aligned with the beginning of the expression (i.e. the a and not the opening parentheses or the printf()).
Use a single blank line to separate logical blocks. Large comments should have a blank line before and after them, small comments should be put before the code they explain with only one blank line before them.
If you see any TABS in AROS core sources then the suggestion is to "detab the file and commit that separately" either before or afterwards from making functionality changes. Make two commits instead of one. This makes it easier for others to see the real changes instead of having to dig through multiple lines of irrelevant diffs.
===Eliminating Global Variables===
i.e. pass variables to functions (local scope) or classes making it easier to track and debug your code.
Any time you find that you need a particular thing in 'a lot of different places', chances are that all those places are conceptually related, and so you can create a class, a namespace, a function, or some other higher-level organizational unit to represent that relationship. This makes the program easier to understand.
Bad Designs
* All variables are global.
* There are no standalone functions, only sub-procedures which act on the global variables.
* Every sub-procedure is at least 500 lines to several thousand
* Every sub-procedure has more than one task to perform
* Copy-paste is preferred to writing methods, AND subtle changes are made in the middle of the code
Good Designs
* structure program into functions (C or basic) - top-down procedural approach
* put in class(es) (freepascal or C++) - the object is fixed and you use methods to access the object
<pre>
class String_List
{
private:
list<string> m_List; // member
public:
void read_strings() { /* read strings into m_List */ }
void print_strings() { /* write contents of m_List to stdout */ }
void sort_strings() { /* sort contents of m_List */ }
void sort_strings_reverse() { /* reverse-sort contents of m_List */ }
void unique_strings() { /* remove duplicate strings */ }
};
int main()
{
String_List myList; // local
myList.read_strings();
myList.sort_strings();
myList.print_strings();
myList.sort_strings_reverse();
myList.print_strings();
myList.unique_strings();
myList.print_strings();
return 0;
}
</pre>
This way it is very easy to replace the list with new list for debugging purposes, or replacing the methods without replacing the list, when you want different results. You only have to replace the content of the local variables.
So create the structure that matches your data (linked lists, trees, arrays, etc.) and what to do with them (sorting, searching, etc.)
<pre>
.h usually contain #define #include typedef enum struct extern screen and window definitions (data structures)
.c should contains functions and algorithms
</pre>
One way to look at it is that menu headings act as the .c file and sub-menu headings as functions.
When you start a project, you place a couple of declarations in the include file. As the project continues, you place more and more declarations in the include file, some of which refer to or contain previous declarations. Before you know it, you have a real mess on your hands. The majority of your source files have knowledge of the data structures and directly reference elements from the structures.
Making changes in an environment where many data structures directly refer to other data structures becomes, at best, a headache. Consider what happens when you change a data structure.
Use good variables names to help clarify code and only comment when you need to explain why a certain programming approach was made.
You're Refactoring Legacy Code, you see a global, you want to get rid of it. How do you do this?
Exactly what to do depends on how the global is used. The first step is to find all uses of the global throughout the code, and get a feel for what the significance of the variable is and how it relates to the rest of the program. Pay particular attention to the "lifetime" of the variable (when it gets initialized, when it is first used, when it is last used, how it gets cleaned up). Then, you will probably make the global a data member of a class (for OO languages), or you will write some get/set functions. Converting to the Singleton Pattern is common, but you may discover that it makes more sense for the data element to be a member of an existing singleton, or maybe even an instance variable.
# Create a basic read method, either as a class or a global function. Replace all reads with the access method, but leave the variable defined as a global.
# Review each of the writes to the method and extract action functions one at a time. Unless two operations are coded identically in the original code, extract each write access separately.
# Change the variable scope from global to local.
# Analyze similar action functions to determine if any can be merged, i.e., there are no functional differences in the results of the function, just differences in the implementation details.
# Review the calls to the read method and see if a more complex functionality should be applied. Follow the approach for writes and unless implementations are identical, create separate access functions.
# Analyze the access functions for duplication.
As returning variables by "passing by value" are forgotten, so "passing by reference" is often used instead. The reference is a pointer to the variable so the value is remembered when returned.
Alternatives
* Hidden Globals
* Singleton Pattern
* Database or TupleSpace
* Context Object
* Dependency Injection
* Stateful Procedures
==AROS/AmigaOS APIs and Docs==
<pre>
Library:
- Private data structure
- Many public access methods
Device:
- Private data structure
- Two (BeginIO/AbortIO) access methods
Resource:
- Public data structure
- *NO* access methods
</pre>
And, being Amiga OS-compatible, there are exceptions to all of these.
===System Libraries===
The [http://aros.sourceforge.net/documentation/developers/app-dev/index.php AROS Guide To Libraries] can be used as a guide to individual commands and Old Dev Docs are used in application programming.
The generated [http://aros.sourceforge.net/documentation/developers/autodocs/ Aros AutoDocs HTML Read] or download [http://aros.sourceforge.net/download.php docs-html.bz2 from here].
Amiga/Aros styles libraries are very different from windows and linux libs. Typical .so/dll libraries are foreign to most Amiga-like OS
*[[Aros/Developer/Docs/Libraries/AROSC|arosc.library]]
*[[Aros/Developer/Docs/Libraries/AmigaGuide|amigaguide.library]]
*[[Aros/Developer/Docs/Libraries/ASL|asl.library]]
*[[Aros/Developer/Docs/Libraries/Bullet|bullet.library]]
*[[Aros/Developer/Docs/Libraries/BSDsocket|bsdsocket.library]]
*[[Aros/Developer/Docs/Libraries/CAMD|camd.library]]
*[[Aros/Developer/Docs/Libraries/Codesets|codesets.library]]
*[[Aros/Developer/Docs/Libraries/CGFX|cybergraphics.library]]
*[[Aros/Developer/Docs/Libraries/CGXVIDEO|cgxvideo.library]]
*[[Aros/Developer/Docs/Libraries/Commodities|commodities.library]]
*[[Aros/Developer/Docs/Libraries/DataTypes|datatypes.library]]
*[[Aros/Developer/Docs/Libraries/DiskFont|diskfont.library]]
*[[Aros/Developer/Docs/Libraries/DOS|dos.library]]
*[[Aros/Developer/Docs/Libraries/Exec|exec.library]]
*[[Aros/Developer/Docs/Libraries/Expansion|expansion.library]]
*[[Aros/Developer/Docs/Libraries/FreeType2|freetype.library]]
*[[Aros/Developer/Docs/Libraries/GadTools|gadtools.library]]
*[[Aros/Developer/Docs/Libraries/Graphics|graphics.library]]
*[[Aros/Developer/Docs/Libraries/Icon|icon.library]]
*[[Aros/Developer/Docs/Libraries/Identify|identify.library]]
*[[Aros/Developer/Docs/Libraries/IFFParse|iffparse.library]]
*[[Aros/Developer/Docs/Libraries/Intuition|intuition.library]]
*[[Aros/Developer/Docs/Libraries/Keymap|keymap.library]]
*[[Aros/Developer/Docs/Libraries/Layers|layers.library]]
*[[Aros/Developer/Docs/Libraries/Locale|locale.library]]
*[[Aros/Developer/Docs/Libraries/LowLevel|lowlevel.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingBas|mathieeesingbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubBas|mathieeedoubbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingTrans|mathieeesingtrans.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubTrans|mathieeedoubtrans.library]]
*[[Aros/Developer/Docs/Libraries/Mathtrans|mathtrans.library]]
*[[Aros/Developer/Docs/Libraries/MUIMaster|muimaster.library]]
*[[Aros/Developer/Docs/Libraries/Partition|partition.library]]
*[[Aros/Developer/Docs/Libraries/PopUpMenu|popupmenu.library]]
*[[Aros/Developer/Docs/Libraries/OOP|oop.library]]
*[[Aros/Developer/Docs/Libraries/Regina|regina.library]]
*[[Aros/Developer/Docs/Libraries/Reqtools|reqtools.library]]
*[[Aros/Developer/Docs/Libraries/RexxSysLib|rexxsyslib.library]]
*[[Aros/Developer/Docs/Libraries/ScreenNotify|screennotify.library]]
*[[Aros/Developer/Docs/Libraries/TTEngine|ttengine.library]]
*[[Aros/Developer/Docs/Libraries/Thread|thread.library]]
*[[Aros/Developer/Docs/Libraries/Utility|utility.library]]
*[[Aros/Developer/Docs/Libraries/Xadmaster|xadmaster.library]]
*[[Aros/Developer/Docs/Libraries/Workbench|workbench.library]]
*[https://github.com/aros-development-team/AROS/commit/c82e86b8480277998014cc327b56c7664023a52f ClassAct Reaction boopsi class]
===AROS Subsystems===
# [[Aros/Developer/Zune|Zune MUI compatible GUI]]
# [[Aros/Developer/AROSAppPackages|AROS Application Packages]]
# AHI Audio Drivers - [[Aros/Developer/AHIDrivers|Usage]]/[[Aros/Developer/AHIDriversDev|Development]]
# AROSTCP Sana2 Network Interface Drivers - [[Aros/Developer/NICDrivers|Usage]]/[[Aros/Developer/NICDriversDev|Development]]
# [[Aros/Developer/AmiSSL|AmiSSL]]
# gfx.hidd/cybergraphics Video Drivers - [[Aros/Developer/GfxDrivers|Usage]]/[[Aros/Developer/GfxDriversDev|Development]]
# IO Device Drivers - [[Aros/Developer/IODeviceDrivers|Usage]]/[[Aros/Developer/IODeviceDriversDev|Development]]
# USB Device Drivers - [[Aros/Developer/USBDrivers|Usage]]/[[Aros/Developer/USBDriversDev|Development]]
# PCI Device Drivers - [[Aros/Developer/PCIDrivers|Usage]]/[[Aros/Developer/PCIDriversDev|Development]]
# [http://www.libsdl.org/ SDL] [https://github.com/search?q=repo%3Aaros-development-team%2Fcontrib%20SDL2&type=code SDL2 commits], [https://github.com/aros-development-team/contrib/commit/c62c3c425c35bac19dadc23be092b0b13a66c76c SDL3 initial commit], []
# [[w:Gallium3D|Gallium 3D]] [http://www.mesa3d.org/ openGL aka Mesa] - [[Aros/Developer/OpenGL|Usage]]/[[Aros/Developer/OpenGLDev|Development]] [http://www.swiftless.com/opengltuts.html Swfitless]
# A small subset of GTK2 through [http://sourceforge.net/projects/gtk-mui/ MUI-GTK]
# Cairo 2D Engine - [[Aros/Developer/Cairo|Usage]]/[[Aros/Developer/Cairo|Development]]
# [[Aros/Developer/Scalos|Scalos desktop API and plugin modules]]
# [[Aros/Developer/VHI|VHI video driver]]
====HIDDs====
*[[Aros/Developer/Docs/HIDD/HIDDClass|hiddclass.hidd]]
*[[Aros/Developer/Docs/HIDD/Graphics|graphics.hidd]]
*[[Aros/Developer/Docs/HIDD/VesaGfx|vesagfx.hidd]]
*[[Aros/Developer/Docs/HIDD/ATI|radeon.hidd]]
*[[Aros/Developer/Docs/HIDD/NVidia|nvidia.hidd]]
*[[Aros/Developer/Docs/HIDD/Nouveau|nouveau.hidd]]
*[[Aros/Developer/Docs/HIDD/Kbd|kbd.hidd]]
*[[Aros/Developer/Docs/HIDD/Mouse|mouse.hidd]]
*[[Aros/Developer/Docs/HIDD/i2c|i2c.hidd]]
*[[Aros/Developer/Docs/HIDD/IRQ|irq.hidd (deprecated)]]
*[[Aros/Developer/Docs/HIDD/PCI|pci.hidd]]
*[[Aros/Developer/Docs/HIDD/PCIPC|pcipc.hidd]]
*[[Aros/Developer/Docs/HIDD/Serial|serial.hidd]]
*[[Aros/Developer/Docs/HIDD/Thunderbolt|thunderbolt.hidd]]
https://github.com/aros-development-team/AROS/commit/4f02ea691799aff3a01f60cfa5f9182c82fc57a8
HIDD are used for device/peripheral low level hardware support drivers. The HIDD system is split up into a collection of classes with a strict inheritance hierarchy. A HIDD class implements a device driver for a single device or in rare cases a group of devices and provides an interface for other programs and devices to access.
In order to maintain portability of interfaces across a wide range of hardware this interface will in general not present the raw interface to the underlying hardware. Instead it will present a generic interface that describes many different hardware implementations. This allows for the best reuse of both interfaces and code.
HIDD API is heavyweight though. You need to open a HIDD library, open oop.library, instantiate an object (even if there's no object); and object calls are more costly compared to plain library calls.
Basically your task is to implement a subclass of hidd.ata.bus for your hardware. just implementing the XXXATA__Hidd_ATABus__xxxxxx methods for the Amiga chipset - and appropriate versions of the interface_xxx.c file(s). pretty much everything in probe.c could be ignored - just write a replacement scan for relevant amiga devices and store whatever info you need in the bus data? only the "SUPPORT_LEGACY" blocks might be related.
You do not need to depend on PCI API. PCI is just a way to discover the hardware on PCs, etc.
<hidd/pci.h> includes (at some depth) <interface/HW.h>, which defines IID_HW. This comes from the 'generic' HIDD class in:
rom/hidds/hidd/hiddclass.conf
did not split up HIDD and HW because they are always used in pair. It's the same as hidd/pci.h bringing definition for: PCI, PCIDriver and PCIDevice. PCI is actually PCIHW, just the name was not changed for backwards compatibility reasons. HW is a 'hub' where HIDD instances plug in.
ATA HIDD aoHidd_ATABus_Use32Bit value is completely ignored unless ata.device first detects correct command line parameter.
Yes. Unfortunately I was unable to find any comment in code or svn history with explanations. Looked at Linux source, there 32-bit PIO is also controller driver's property. Some of them enable it, some don't.
Actually, switching the default to ON should be safe. ata.device is fail-safe at this because during IDENTIFY command it validates upper 16 bits, and if they appear to be zeroes in all 128 longwords, then 32-bit mode is switched off. But, nevertheless, I know how tricky hardware can be, so I decided not to change original behavior. If you think it's wrong in some cases, then it's possible to add one more attribute like aHidd_ATABus_Default32Bit. If set to YES, then this means that 32-bit PIO is safe to use by default.
====Devices====
*[[Aros/Developer/Docs/Devices/ATA|ata.device]]
*[[Aros/Developer/Docs/Devices/Console|console.device]]
*[[Aros/Developer/Docs/Devices/Narrator|narrator.device]]
*[[Aros/Developer/Docs/Devices/Printer|printer.device]]
*[[Aros/Developer/Docs/Devices/Trackdisk|trackdisk.device]]
*[[Aros/Developer/Docs/Devices/AmberRAM|amberram.device]]
*[[Aros/Developer/Docs/Devices/Timer|timer.device]]
*[[Aros/Developer/Docs/Devices/|.device]]
The Amiga used [[Aros/Developer/Docs/Devices|Devices]] to communicate with [http://aros-exec.org/modules/newbb/viewtopic.php?start=0&topic_id=3475&viewmode=flat&order=ASC additional hardware]. AROS has replaced these hardware devices with hidd equivalents but some are still retained for backwards compatibility.
Local libraries/devices/handlers,etc. are supposed to override the ones in ROM if their version is higher than the one in ROM.
Here is the list of commands exec default:
{| class="wikitable"
| CMD_CLEAR
| Purge the buffer of the device
|----
| CMD_READ
| Playback Control
|----
| CMD_STOP
| Stopped the activity of the device
|----
| CMD_FLUSH
| Empty the queue of commands
|----
| CMD_RESET
| Reset a device
|----
| CMD_WRITE
| Playback Control
|----
| CMD_INVALID
| Create an error
|----
| CMD_UPDATE
| Gets updated device
|----
| CMD_START
| Will restart the device
|----
|}
While most other "stuff you communicate with" in AmigaOS are devices <ref>AMIGA ROM Kernel Reference Manual: Devices, 3rd Edition. Commodore-Amiga, Inc. Addison-Wesley, 1991. {{ISBN|0-201-56775-X}}</ref> that share a [http://gega.homelinux.net/AmigaDevDocs/ common base interface]. [[Aros/Developer/Docs/Devices1.3|OS 1.3 Device Drivers]].
====Handlers====
:[[Aros/Developer/Docs/Handlers/Pipe|pipe.handler]]
:[[Aros/Developer/Docs/Handlers/Port|port.handler]]
:[[Aros/Developer/Docs/Handlers/SFS|sfs.handler]]
:[[Aros/Developer/Docs/Handlers/FAT|fat.handler]]
:[[Aros/Developer/Docs/Handlers/PFS|pfs.handler]]
:[[Aros/Developer/Docs/Handlers/NTFS|fuse.handler]]
:[[Aros/Developer/Docs/Handlers/FFS|ffs.handler]]
filesystem handlers have their own separate system consisting of completely differently structured messages that dos.library use to pass requests (for things like reading, writing, getting directory contents etc.) to them. AROS originally went with implementing filesystem handlers as devices, which might arguably be more consistent with the rest of the AmigaOS API but which is quite incompatible with AmigaOS itself. However, it made it far harder to port filesystems and the gains were comparatively small, and so there's been a long standing goal of fixing this incompatibility. It has now, June 2011, been reintroduced to all AROS flavors.
are argstr and argsize valid for the handler startup environment?
DOS/RunHandler() calls DOS/CreateNewProcTags(), and then CallEntry() (in rom/dos/exit.c) to start the handler, so yes, argstr and argsize are *present* in the call signature of the handler.
Granted, argstr will be NULL and argsize 0, but those values *are* passed to the handler function using:
<pre>
AROS_UFC3(ULONG, entry,
AROS_UFCA(STRPTR, argptr, A0),
AROS_UFCA(ULONG, argsize, D0),
AROS_UFCA(struct ExecBase *, SysBase, A6));
</pre>
Creating your own [without the whole build tree http://pagesperso-orange.fr/franck.charlet/temp/radeon.zip] and then
<pre>
make stub
make
make install
</pre>
SFS has two Root blocks, one at the start and one at the end of the disk. The Root blocks both contain the same information. They hold various information about the disk structure and have the locations of some important blocks used by the filesystem.
The Root ObjectContainer contains the Root directory Object. The name of this Object is the name of the volume. It is identical to a normal directory Object.
The Bitmap is used to keep track of free space. Each bit in a bitmap represents a single block. A set bit indicates a free block and a cleared bit a used block.
AdminSpaceContainers are used to keep track of space which has been reserved for storing administration blocks. Only the Bitmap, the Root blocks and the actual data stored in files aren't stored in administration space. Administration space is allocated in chunks of 32 blocks at a time. A single AdminSpaceContainer can hold information about a large number of such areas each of which has its own little bitmap of 32 bits.
Extents are stored in a B-Tree. The Root block holds a pointer to the root of the Extent B-Tree. Extents keep track of space in use by a specific file. Each fragment a file consists of has its own Extent. Extents are in a double linked list. The list can be used to locate the next or previous fragment of a file.
Below is the standard block header. This header is found before EVERY type of block used in the filesystem, except data blocks. The id field is used to check if the block is of the correct type when it is being referred to using a BLCK pointer. The checksum field is the SUM of all LONGs in a block plus one, and then negated. When applying a checksum the checksum field itself should be set to zero. The checking a checksum the checksum is okay if the result of the checksum equals zero. The ownblock BLCK pointer points to the block itself. This field is an extra safety check to ensure we are using a valid block.
Field Type Description
id ULONG The id field is used to identify the type of block we are dealing with. It is used to make sure that when referencing a block we got a block of the correct type. The id consist of 4 bytes and each blocktype has its own unique foure letter code.
checksum ULONG This field contains the sum of all longs in this block, plus one and then negated. The checksum can be used to check if the block hasn't been corrupted in any way.
ownblock BLCK Points to itself, or in other words, this field contains the block number of this block. This is yet another way to check whether or not a block is valid.
<pre>
struct fsBlockHeader {
ULONG id;
ULONG checksum;
BLCK ownblock;
};
</pre>
The algorithm to calculate the checksum of a block:
<pre>
ULONG calcchecksum(struct fsBlockHeader *block, LONG blocksize} {
ULONG *data=(ULONG *)block;
ULONG checksum=1;
block->checksum=0;
while(blocksize>0) {
checksum+=*data++;
blocksize-=4;
}
return(-checksum);
}
</pre>
A Root block contains very important information about the structure of a SFS disk. It has information on the location and size of the disk, the blocksize used, locations of various important blocks, version information and some filesystem specific settings.
A SFS disk has two Root blocks; one located at the start of the partition and one at the end. On startup the filesystem will check both Roots to see if it is a valid SFS disk. If either one is missing SFS can still continue (although at the moment it won't).
A Root block could be missing on purpose. For example, if you extend the partition at the end (adding a few MB's) then SFS can detect this with the information stored in the Root block located at the beginning (since only the end-offset has changed). Same goes for the other way around, as long as you don't change start and end point at the same time.
When a Root block is missing because the partition has been made a bit larger, then SFS will in the future be able to resize itself without re-formatting the disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
version UWORD The version of the filesystem block structure. You can check this field to identify what version of the filesystem your dealing with it and to see if you can handle this structure correctly. Don't try to interpret the disk's structure when this field contains an unknown version number!
sequencenumber UWORD Used to identify which Root block was written last in case the sequencenumber on both Root blocks don't match.
datecreated ULONG Creation date of this volume. This is the date when the disk was last formatted and will never be changed.
bits UBYTE Various settings, see below.
<pre>
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
reserved1 ULONG[2] Reserved, leave zero.
firstbyteh ULONG High 32-bits of a 64-bit number. This is the first byte of our partition relative to the start of the disk.
firstbyte ULONG Low 32-bits of a 64-bit number.
lastbyteh ULONG High 32-bits of a 64-bit number. This is the last byte (exclusive) of our partition relative to the start of the disk.
lastbyte ULONG Low 32-bits of a 64-bit number.
totalblocks ULONG The total number of blocks this partition consists of.
blocksize ULONG The size of a block of this partition.
reserved2 ULONG[2] Reserved, leave zero.
reserved3 ULONG[8] Reserved, leave zero.
bitmapbase BLCK Block number of the start of the Bitmap.
adminspacecontainer BLCK Block number of the first AdminSpaceContainer.
rootobjectcontainer BLCK Block number of the ObjectContainer which contains the root of the disk (this is where the volume name is stored).
extentbnoderoot BLCK Block number of the root of the Extent B-Tree.
reserved4 ULONG[4] Reserved, leave zero.
</pre>
<pre>
struct fsRootBlock {
struct fsBlockHeader bheader;
UWORD version;
UWORD sequencenumber;
ULONG datecreated;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
ULONG reserved1[2];
ULONG firstbyteh;
ULONG firstbyte;
ULONG lastbyteh;
ULONG lastbyte;
BLCK totalblocks;
ULONG blocksize;
ULONG reserved2[2];
ULONG reserved3[8];
BLCK bitmapbase;
BLCK adminspacecontainer;
BLCK rootobjectcontainer;
BLCK extentbnoderoot;
ULONG reserved4[4];
};
</pre>
AdminSpaceContainers are used to store the location and bitmap of each administration space. The AdminSpaceContainers are located in a double linked list and they contain an array of fsAdminSpace structures. There is one fsAdminSpace structure for every administration space on disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
next BLCK The next AdminSpaceContainer, or zero if it is the last in the chain.
previous BLCK The previous AdminSpaceContainer, or zero if it is the first AdminSpaceContainer.
bits UBYTE The number of bits in each in the bits ULONG in the fsAdminSpace structure.
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
adminspace struct fsAdminSpace An array of fsAdminSpace structures. The size of the array is determined by the current blocksize.
<pre>
struct fsAdminSpaceContainer {
struct fsBlockHeader bheader;
BLCK next;
BLCK previous;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
struct fsAdminSpace adminspace[0];
};
</pre>
Field Type Description
space BLCK The first block of an administration space.
bits ULONG A small bitmap which is used to determine which blocks in an administration space are already in use. The number of bits in this bitmap is determined by the bits field in the AdminSpaceContainer.
<pre>
struct fsAdminSpace {
BLCK space;
ULONG bits;
};
</pre>
The fsBitmap structure is used for Bitmap blocks. A bitmap block is used to keep track of which space is in use and which isn't for a particular area of a disk. All bitmap blocks together keep track of the free space for an entire disk. The location of the first bitmap block is known and all other bitmap blocks are stored in order after the first one.
Field Type Description
bheader struct fsBlockHeader Standard block header.
bitmap ULONG An array of ULONG's. These hold the actual information on which blocks are in use and which aren't.
<pre>
struct fsBitmap {
struct fsBlockHeader bheader;
ULONG bitmap[0];
};
</pre>
Each bit in a bitmap block (except for the block header) represents a single block. If the bit is set than the block is free, and if the bit is clear then it is full. The first ULONG in the bitmap area of the first bitmap block represents blocks 0 through 31 on the disk. Bit 31 of this ULONG is block 0, 30 is block 1, and so on. Bit 0 of the first ULONG represents block 31.
Below is a table to clarify how bitmaps work even further. The first column is the bitmap block number, the second column is the number of the ULONG in the bitmap array. The third column is the bit number in this ULONG, and the last column is the block which this specific bit, in this specific bitmap block represents.
We'll assume here that a bitmap block has room for 120 ULONG's (meaning there is room for storing 32 * 120 bits).
<pre>
Bitmap block ULONG number Bit number Block represented
1 (first) 0 31 0
1 0 30 1
... ... ... ...
1 0 1 30
1 0 0 31
1 1 31 32
... ... ... ...
1 2 31 64
1 2 30 65
... ... ... ...
1 119 0 3839
2 0 31 3840
2 0 30 3841
... ... ... ...
</pre>
The last bitmap block doesn't need to be completely used. The unused bits (which belong to blocks which do not exist) all have to be clear, to indicate that these blocks are in use.
The fsObjectContainer structure is used to hold a variable number of fsObjects structures (Objects) which have the same parent directory. Each ObjectContainer must contain at least one Object. If there is space in the ObjectContainer not used by the variable number of Objects then that space is zero filled. Objects always start at 2-byte boundaries, which means sometimes a padding byte is inserted between two Objects.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the parent Object, or 0 if this object has no parent (which is only the case for the Root directory).
next BLCK The next ObjectContainer belonging to this directory, or zero if it is the last in the chain.
previous BLCK The previous ObjectContainer belonging to this directory, or zero if it is the first ObjectContainer in this directory.
object struct fsObject A variable number of fsObject structures. The number of structures depends on the individual sizes of each fsObject structure and the blocksize. These structures are located directly after each other with at most 1 byte of padding between them to get the structures aligned on a 2 byte boundary.
<pre>
struct fsObjectContainer {
struct fsBlockHeader bheader;
NODE parent;
BLCK next;
BLCK previous;
struct fsObject object[0];
};
</pre>
fsHashTable is the structure of a HashTable block. It functions much like the hash table found in FFS user directory blocks, except that it is stored in a separate block. This block contains a number of hash-chains (about 120 for a 512 byte block). Each hash-chain is a chain of Nodes. Each Node has a pointer to an Object and a pointer to the next entry in the hash-chain. Using such a hash-chain you can locate an object quickly by only knowing its name.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the directory Object this HashTable block belongs to.
hashentry NODE An array of Nodes. Each Node represents the start of a hash-chain (singly linked). A hash-value is calculated using the name of a file or directory, and this value determines in which chain the Object is linked. If there are no entries in a hash-chain then the hashentry value is zero.
<pre>
struct fsHashTable {
struct fsBlockHeader bheader;
NODE parent;
NODE hashentry[0];
};
</pre>
To calculate the hash-value using a name of an Object as input use these routines:
<pre>
UWORD calchash(UBYTE *name) {
UWORD hash=0;
/* Calculates a hash value over the passed in string.
The end of the string can be either a NUL byte or a
slash. The hash function is the same as the one
used in FastFileSystem set to international mode. */
while(name[hash]!=0 && name[hash]!='/') {
hash++;
}
while(*name!=0 && *name!='/') {
hash=hash*13+upperchar(*name++);
}
return((UWORD)(hash % (UWORD)((blocksize-sizeof(struct fsHashTable))>>2)));
}
UBYTE upperchar(UBYTE c) {
if((c>=224 && c<=254 && c!=247) || (c>='a' && c<='z')) {
c-=32;
}
return(c);
}
</pre>
The BNodeContainer is used to store B-Trees. Currently only one B-Tree is in use by this filesystem and it is used to store the location of file data. The fsBNodeContainer structure contains two other structures. The fsBlockHeader structure and the BTreeContainer structure.
Field Type Description
bheader struct fsBlockHeader Standard block header.
btc struct BTreeContainer Contains information about the B-Tree and its nodes contained in this block.
<pre>
struct fsBNodeContainer {
struct fsBlockHeader bheader;
struct BTreeContainer btc;
};
</pre>
First try and locate the Root block. It should start with "ROOT". SFS has two of these, one at the start of the partition and one at the end. One of the fields contains the block size, which will be the size of all important SFS blocks.
The root block has the root object container, which contains information about files and directories in the root directory. The object
containers basically hold one or more smaller structures that represent files and directories. Scanning them all should give you a list of
files and directories.
The root block also has the root of the Extent B-Tree. This is a standard B-Tree structure (not a binary tree) that is used commonly in
all kinds of system, you can read about how they work on Wikipedia if needed. The B-Tree holds the information about *where* all the data is
located for your files.
To recover your files, I'd do this:
* Find one of the root blocks, if not present, then figure out the block size your disk was using, and scan every block in turn to see if it
looks like an ObjectContainer (check the fsBlockHeader's ID, check if the ownblock number is equal to the block you are currently scanning,
and check its checksum). So if you currently have block 12, and you see a block with the correct id, and ownblock = 12 and its checksum is good,
then that's probably a valid ObjectContainer.
* With all the ObjectContainers found, you can extract filenames and directory names from these, but also the number of their first data
block (in the field data) and the file size. For small files (less than blocksize) this data block will be enough to recover the data.
For larger files, you might be lucky and all the remaining blocks are found after the first one (if the file was defragmented). You can't be
sure of that though so...
* For larger files, you need to find all the BNodeContainers. You could scan these in the same way you found all the ObjectContainers (look for
blocks with the correct id, ownblock number and checksum).
* With all the BNodeContainers found, you can try looking up the first data block of a file in the B-Tree structure. This is a bit complicated
-- the B-Tree consists of non-leaf nodes (blocks that only contain pointers to other B-Tree blocks), the isLeaf flag indicates this. Or it
can be a B-Tree leaf block. The leaf blocks contain extra information per entry (see https://hjohn.home.xs4all.nl/SFS/extents.htm)
<pre>
struct fsExtentBNode {
ULONG key;
ULONG next;
ULONG prev;
UWORD blocks;
};
</pre>
The key should be a block of a file (the first of a range), that is 1 to 65535 block long (depending the "blocks" field). If the file is split
up into more parts, then "next" will contain block number of the next range of blocks. You need to look this up again in the B-Tree
structure to find out how large it is.
You can for the most part ignore the other structures (bitmap, admin containers). The fsObjects and B-tree containers is what you'll need to
recover the data.
====Resources====
<pre>
rom/storage/mmakefile.src
rom/storage/storage.conf
rom/storage/storage_device.c
rom/storage/storage_ids.c
rom/storage/storage_init.c
rom/storage/storage_intern.h
rom/storage/storage_mount.c
rom/storage/storage_unit.c
</pre>
<pre>
rom/storage/includes/device.h
rom/storage/includes/unit.h
rom/storage/includes/volume.h
rom/storage/storage_intern.h
</pre>
<pre>
</pre>
*[[Aros/Developer/Docs/Resources/ACPI|acpi.resource]]
*[[Aros/Developer/Docs/Resources/Battclock|battclock.resource]]
*[[Aros/Developer/Docs/Resources/Bootloader|bootloader.resource]]
*[[Aros/Developer/Docs/Resources/Cia|cia.resource]]
*[[Aros/Developer/Docs/Resources/Filesystem|FileSystem.resource]]
*[[Aros/Developer/Docs/Resources/Hostlib|hostlib.resource]]
*[[Aros/Developer/Docs/Resources/Kernel|kernel.resource]]
*[[Aros/Developer/Docs/Resources/Misc|misc.resource]]
*[[Aros/Developer/Docs/Resources/Processor|processor.resource]]
==Debugging Code==
Please use the [http://sourceforge.net/tracker/?group_id=43586&atid=439463 AROS Bug Tracker] if any issues are found.
GRUB Command line list
<pre>
sysdebug
usbdebug - allows to see Poseidon's log in debug output
</pre>
How do I get debugging out of InitResident ? If running i386 hosted on linux sysdebug=initresident on command line.
This way you can enable any of listed flags. sysdebug=all stands for "everything"
Have an executable (crosscompiled C++ code) which has 6 MB size on disk, but after loading it in memory, 250 MB RAM is taken. Any software that would split AROS executable into ELF part which would show actual size values?
readelf -S executable
it will show you all sections in elf file, including sizes and requested alignment.
objdump -h filename
That's will give you a quick overview of the sections and sizes. Ignore all the .debug.* sections.
Would hazard a guess that you have a large .bss section. That's pretty common in C++.
Next step:
nm—size-sort filename | grep ' [bB] '
The last few will be your biggest consumers. Would suggest -C to demangle the symbols... ;)
Suggest profiling the program (just use some printf's in the main loop for time spent in each part), it usually is quite easy to spot slow parts in games or apps.
If someone has '#define IPTR ULONG' somewhere. To see where that define is, redefine IPTR in the source code that fails, just above the line that fails, and the preprocessor will tell you where it was defined first.
===How to setup gdb with AROS/hosted===
Download AROS sources (AROS-xxxxxxxx-source.tar.bz2, where xxxxxxxx is the current date) and AROS contrib sources (AROS-xxxxxxxx-contrib-source) from
Untar-bzip2 and cd to the unpacked archive directory.
> tar -xvjf AROS-xxxxxxxx-source.tar.bz2
> cd AROS-xxxxxxxx-source
Check the link to "contrib" (contrib-source) inside directory, e.g. correct like this:
> rm contrib
> ln -s ../AROS-xxxxxxxx-contrib-source.tar.bz2 contrib
Make sure you have the correct locale setting, otherwise compilation will fail at some point. See [http://aros.sourceforge.net/documentation/developers/compiling.php#setting-the-locale-to-iso8859 here] (or link below) for more on that. You might have to enter this:
> export LANG="en_US.ISO-8859-1"
Now configure for a debug build - see "./configure --help" for more - here are two examples:
> ./configure—enable-debug=stack,modules,symbols
> ./configure—enable-debug=all
You may "make" now, or choose a separate directory for your build (e.g. for easy removal), for example if compiling for i386 architecture you could create a directory like this:
> mkdir linux-i386
> cd linux-i386
> ../AROS/configure—enable-debug=stack,symbols,modules
When done configuring you're ready to go:
> make
Building AROS takes some time - minutes on fast machines (e.g. 2.5 GHz quadcore), up to hours on slower machines.
The result will be AROS Linux hosted with gdb debugging enabled.
See aros.org documentation for more on compiling AROS, including more [http://aros.sourceforge.net/documentation/developers/compiling.php --enable-debug] options.
When finished, enter bin/linux-i386/AROS directory (replace "linux-i386" with your compilation target platform, e.g. linux-x86_64, etc.) inside the unpacked archive directory. This directory contains the required .gdbinit file for properly running AROS inside gdb.
> cd bin/linux-i386/AROS
Run AROS (here: with 128MB of memory) from gdb:
> gdb—args boot/aros-unix -m 128
or
> gdb—args boot/arosboot -m 128
(gdb) r
Watch the shell output - in case AROS complains about "LoadKeyCode2RawKeyTable: Loading "DEVS:Keymaps/X11/keycode2rawkey.table" failed!" you should also see some instructions on how to create a keymap table. (see link above "more on compiling", too.)
Quit gdb, and try default keymap table:
(gdb) q
The program is running. Quit anyway (and kill it)? (y or n) y
> cd ../../..
> make default-x11keymaptable
Re-run AROS, as described above. Try e.g. RAros (= right windows key) + W to open a shell. If this doesn't work you have to create a keymap table yourself, quit gdb again, and make a new keytable:
> make change-x11keymaptable
A window will open. Watch the window's title bar, and follow the instructions.
When done, re-run AROS. RAros + W should now open a shell.
Next, compile your program with gdb support.
When you start GDB is there a warning which says
warning: File "<whatever>/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to ...
If so start gdb with "-ix .gdbinit"
<pre>
Summary - In short:
* build AROS with debugging support (i.e. ./configure --enable-debug=all)
* build your application with debugging support (i.e. option -g)
* run AROS in the GNU debugger (you may use the GUI frontend "ddd" which simplifies usage a bit)
* start your application
* use the commands "findaddr" and "add-symbol-file" as written in the debugging manual
* if the debugger doesn't find the source code of your application use the "dir" command of the debugger.
</pre>
===How to use gdb===
In AROS open a shell, then (in host shell) use CTRL-Z to go into gdb. Use "b Exec_CreatePool" (one of the functions used early on by startup code in programs) to add a breakpoint, then "cont" and gdb will interrupt somewhere early during startup of "program". Use "bt" to show backtrace and "loadseg" for "??" entries. One of them will be for "program". After that you can use "disassemble program".
One thing you need to make sure is that .gdbinit you have in your build directory is the same as in source tree. It has been modified some time ago, but the build system does not refresh it - you need to copy it manually
To recap, please read our debugging [http://aros.sourceforge.net/documentation/developers/debugging.php manual]:
To detect segfaulting when loading, try...
./configure—enable-debug—with-optimization="-O2"
Because crash or no crash may depend on optimization. For newer compilers maybe this helps...
--with-optimization=-"-O2 -fno-strict-aliasing"
One way to make crashes less random (more easily reproducible) is to activate the munging of free memory in rom/exec/freemem.c which is normally commented out:
<pre>
Index: freemem.c
===================================================================
--- freemem.c (revision 34289)
+++ freemem.c (working copy)
@@ -154,11 +154,12 @@
* created with their TCB placed in the tc_MemEntry list. The workaround
* is to avoid munging when FreeMem() is called with task switching disabled.
*/
+
/* DOH! it doesn't work even this way. What's wrong???
- *
- * if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
- * MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
*/
+
+ if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
+ MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
}
</pre>
Mungwall can be turned on at runtime. Currently this works in all hosted versions. Just specify "mungwall" on kernel command line and it works. It can work on native too. In order to enable it you need to parse kernel command line, and if "mungwall" is present, set EXECF_MungWall bit in IntExecBase.IntFlags.
This needs to be done before the first AllocMem() for obvious reasons. And never reset back this flag! If you change it on a working system, you are doomed.
Hosted ports do the processing in rom/exec/prepareexecbase.c --enable-debug=mungwall option in configure still works but is going obsolete. A kludge in rom/exec/allocmem.c is responsible for this and it needs to be removed when the transition is done.
BTW, on i386-pc port it can be activated by "mungwall" argument on command line, you don't need to rebuild AROS.
New mungwall affects not only AllocMem()/FreeMem(), but also pools. I also tested it with AllocAbs(), seems to work correctly.
Runtime mungwall works on:
* pc-i386
* pc-x86_64
* linux-i386
* linux-x86_64
* darwin-x86
* linux-ppc
Works on all hosted ports, if the port itself is working.
* amiga-m68k
* Not on sam440-ppc and efika-chrp-ppc, even if they would be able to be built at moment. Does not work on (for now, need NVRAM support)
When starting my freshly rebuilt i386-linux-aros which was compiled with full debugging support I get sometimes the error "Program exited with code 0377". Add the following to your .gdbinit:
set follow-fork-mode child
Here are some of the custom AROS gdb functions (defined in ".gdbinit" file) to resolve "in ?? ()" entries in backtrace:
<pre>
#0 0xb7ffd424 in __kernel_vsyscall ()
#1 0xb7e2a657 in sigsuspend () from /lib/libc.so.6
#2 0xb7c63900 in ?? ()
#3 0xb7c640e3 in ?? ()
#4 0xb7c641e0 in ?? ()
</pre>
You can use
loadseg 0xb7c63900
loadframe 2
or
loadbt
and some others. Use "help " for a little help text. If the commands do not work try "loadkick" first.
Use "thistask", "taskready", "taskwait" to get list of AROS tasks. "bttask " shows backtrace of a task which is in ready or in wait queue and "loadseg" to resolve "??" entries in it's backtrace ("loadframe" would not work as it assume current running task).
===Native debugging tools for AROS===
to enable debugging at boot time entering the GRUB menu editing line (E key) and adding "debug=memory" to your boot line, then press Ctrl+X to complete booting.
SYS:Tools/Debug/'''Bifteck'''
Open a shell and enter the line below to run Biftek and grab the debug messages collected in RAM into a text file.
tools/debug/bifteck > ram:debug.txt
and certainly does not open a window. It is a shell tool and only dumps data located from the debug location.
It is therefore important to 'catch' that debug data as soon as possible (before it gets overridden). You should invoke bifteck at the first opportunity before doing anything else. You can use the TO option to store bifteck output to a file or you can pipe it manually to a file.
SYS:Tools/Debug/'''Sashimi''' - displays error messages
One suggestion is to do a bug() debugging. Each time bug() is executed it will be output on sashimi.
You include <aros/debug.h> and place bug("something\n"); in your source code at location though which control passes.
To get the output - open an aros shell
SYS:Tools/Debug/sashimi > RAM:out.txt
'''Ctrl C''' to end the output to the RAM Disk.
# open shell, and type
# ram: (to switch to ram drive)
# System:Tools/Debug/Sashimi > mylogfile.txt
# open AHI prefs using wanderer (or use another opened shell)
# play test sound
# close AHI prefs
# shell still open with Sashimi running: press ctrl-c to break Sashimi and return to prompt.
# in shell: copy mylogfile.txt System: (or to your required location)
SYS:Utilities/'''Snoopy''' - monitors OS function calls, run "Sashimi" to see Snoopy's output
SYS:Tools/'''WiMP''' - the Window (and Screens) Manipulation Program
You can use the -E option of gcc to find out how preprocessor macros are expanded.
===Errors===
crash in strcasecmp usually means that one of its arguments is NULL.
empty space between these two names, prossibly some invisible character
Old Amiga [http://www.amigacoding.com/index.php?title=Guru_codes&redirect=no Guru Codes]
If the crash is in intuition. Sometimes, if it relates to text, a null pointer sets it off.
an uninitialised pointer can have any address (this is a common fault).
Compiling on 64bit, Many old code would not properly typecast when doing pointer-integer conversions and thus at least throw a warning. This can easily be located and fixed.
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
* Fix (change IPTR/SIPTR back to ULONG/LONG) the few places which really rely on ULONG/LONG being exactly 32 bit. That's for things like pixel (ARGB) buffers, structs written/read to disk, colormaps, but probably not much else.
Then again, many current compilers also throw a warning when you try to assign a pointer value to an integer and the integer is possibly too small. This happens under .NET for example when a 64 bit pointer is assigned to something like an ULONG - so exactly the case which you described.
=== AI ===
<---
Model <---> Agent ---> End user
Gemini LMStudio
Qwen Comfyui
etc
Recent, self hosting on laptops, mini pcs or desktops with '''quantization''' 4bit has reduced memory requirements but still require 16Gb+ and no high end gpu for text based
*[https://lmstudio.ai/download LMstudio single gpu],
Google Gemma 4 Model
*[ 12B QAT]
Alibaba Cloud's [https://huggingface.co/ Qwen] team series of large language models LLMs
*[https://huggingface.co/models?other=qwen3 Qwen 3], [],
*[https://huggingface.co/models?other=qwen2 Qwen 2], [https://huggingface.co/Qwen/Qwen2.5-Coder-32B qwen 2.5 Coder],
Small Claude Model
*[https://github.com/sipeed/picoclaw picoclaw]
Bigger LLMs but with settings
*[https://ollama.com/download Ollama single gpu]
*[https://github.com/ggml-org/llama.cpp/releases llama.CPP multi gpus],
*[ VLM multiple gpus],
For the full experience
#Training learning using 1+ high end GPUs at least 16GB VRAM per GPU card or 64Gb+ of unified, 16Core CPU with at least 64Gb of RAM system memory, though training can take weeks
#Inference with custom asics or GPUs
*[ MiniMax H3] for audio and video but gpu 8Gb+
*[https://github.com/jamiepine/voicebox voicebox]
*[https://github.com/ideogram-oss/ideogram4 ideogram4]
*[https://github.com/calesthio/OpenMontage OpenMontage]
=== Linux ===
<syntaxhighlight lang="c">
/* 1. Header for your name,date,purpose of program.
2. Pre-processor directives. This will include the #includes for files you want to add.
3. Includes for function prototypes if necessary.
4. Main()
Create Pointers for Libraries and any Window you want to open.
5. Open necessary libraries.
6. Check if open exit program if fail.
7. Open a window exit program if fail.
8. Add your program
9. Close Window
10 Close Libraries.
11 End Program. */
/* standard os included headers <.h> */
#include <dos/dos.h>
#include <dos/dosasl.h>
#include <dos/dosextens.h>
#include <dos/exall.h>
#include <dos/rdargs.h>
#include <exec/memory.h>
#include <exec/types.h>
#include <utility/utility.h>
#include <intuition/intuition.h>
/* define as unresolved external references (proto/xxx.h) and compiler will link to auto(matically) open library */
#include <proto/arossupport.h>
#include <proto/dos.h>
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/graphics.h>
#include <proto/cybergraphics.h>
#include <proto/datatypes.h>
#include <proto/icon.h>
#include <workbench/workbench.h>
#include <workbench/icon.h>
#include <datatypes/pictureclass.h>
#include <proto/muimaster.h>
#include <libraries/mui.h>
#include proto/bsdsocket.h
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* my own headers ".h" */
#define CTRL_C (SetSignal(0L,0L) & SIGBREAKF_CTRL_C)
#define isDir(fib) ((fib)->fib_DirEntryType >= 0)
#define ARG_TEMPLATE "FILE/A,ALL/S,QUIET/S,W=WIDTH/N,H=HEIGHT/N,M=METHOD,DEFTOOL"
int main(void)
{
return retval;
} /* main */
</syntaxhighlight>
If you used c++, there is not yet c++ support in our shared library system.
The easiest way to create / compile a shared library would be to use the AROS build system but the libraries can be created manually. You have to create a ROMTAG structure and some header files.
A shared library is built with the %build_module macro with a line like this:
%build_module mmake=MetaTarget modname=mylib modtype=library files=SourceFiles
This macro can build different AROS module types, like devices, Zune classes, HIDDs, etc.
<pre>
##begin config
version 1.0
##end config
##begin functionlist
void func1(LONG a, LONG b)
int func2(char *s, ULONG a)
##end functionlist
</pre>
There is more [http://aros.sourceforge.net/documentation/developers/sys-dev/libraries.php here]
Alternatively,
<pre>
#ifndef LIB_H
#define LIB_H
#define __NOLIBBASE__
#include <exec/libraries.h>
#include <exec/semaphores.h>
#include <dos/dos.h>
#ifdef __AROS__
//#include <aros/debug.h>
#define reg(x)
#define __saveds
#endif
#define USESYSBASE struct ExecBase *SysBase = Base->My_SysBase;
struct MyTestBase
{
struct Library My_Test_Lib;
struct ExecBase *My_SysBase;
APTR My_SegList;
int testint;
};
#endif
</pre>
<pre>
/*--------------------------------------------------------------------------*/
/* Resident header written for mytest.library */
/*--------------------------------------------------------------------------*/
#define __NOLIBBASE__
#define VERSION 1
#define REVISION 0
#define LIBHEADNAME mytest
#define LIBHEADNAMESTR "mytest"
#define COMPDATE "04.10.2015"
#define VERS "1.0"
#define LIBBASETYPE struct MyTestBase
#define LIBBASETYPEPTR LIBBASETYPE *
#include <aros/debug.h>
#include <exec/exec.h>
#include <proto/exec.h>
#include <exec/resident.h>
#include <exec/nodes.h>
#include <exec/libraries.h>
#include <aros/symbolsets.h>
#include "lib.h"
const UBYTE lib_name[] = LIBHEADNAMESTR ".library";
const UBYTE lib_id[] = "$VER: " LIBHEADNAMESTR ".library " VERS " (" COMPDATE ") by ALB42\n";
extern const APTR FuncTable[];
AROS_UFP3 (LIBBASETYPEPTR, InitLib,
AROS_UFPA(LIBBASETYPEPTR, Base, D0),
AROS_UFPA(BPTR, seglist, A0),
AROS_UFPA(struct ExecBase *, sysbase, A6)
);
static struct LibInitStruct
{
IPTR LibSize;
const APTR *FuncTable;
const struct DataTable *DataTable;
APTR InitFunc;
}
const LibInitStruct =
{
sizeof(LIBBASETYPE),
FuncTable,
NULL,
(APTR)InitLib
};
const struct Resident romtag =
{
RTC_MATCHWORD, /* match word */
(APTR)&romtag, /* back pointer */
(APTR)(&romtag + 1), /* skip pointer */
RTF_AUTOINIT | RTF_EXTENDED,/* flags */
VERSION, /* version */
NT_LIBRARY, /* type of module */
0, /* init priority */
(STRPTR)lib_name, /* module name */
(STRPTR)lib_id + 6,
(APTR)&LibInitStruct,
REVISION, NULL
};
AROS_UFH3 (LIBBASETYPEPTR, InitLib,
AROS_UFHA(LIBBASETYPEPTR, Base, D0),
AROS_UFHA(BPTR, seglist, A0),
AROS_UFHA(struct ExecBase *, sysbase, A6)
)
{
AROS_USERFUNC_INIT
Base->My_SegList = seglist;
Base->My_SysBase = (APTR)sysbase;
Base->testint = 0;
USESYSBASE
bug("InitLib\n");
if (!set_open_libraries())
{
set_close_libraries();
return NULL;
}
return Base;
AROS_USERFUNC_EXIT
}
AROS_LH1(LIBBASETYPEPTR, LibOpen,
AROS_LHA (ULONG, version, D0),
LIBBASETYPEPTR, Base, 1, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibOpen\n");
(void)version;
Base->My_Test_Lib.lib_OpenCnt++;
return Base;
AROS_LIBFUNC_EXIT
}
__saveds APTR LibExpungeInternal(LIBBASETYPE *Base reg(a6))
{
USESYSBASE
APTR seglist;
bug("LibExpungeInternal\n");
if (Base->My_Test_Lib.lib_OpenCnt)
{
return 0;
}
seglist = Base->My_SegList;
Forbid();
Remove((struct Node*)Base);
Permit();
FreeMem((APTR)Base - Base->My_Test_Lib.lib_NegSize, (LONG)Base->My_Test_Lib.lib_PosSize +
(LONG)Base->My_Test_Lib.lib_NegSize);
set_close_libraries();
return seglist;
}
AROS_LH0(BPTR, LibClose,
LIBBASETYPEPTR, Base, 2, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibClose\n");
if (!(--Base->My_Test_Lib.lib_OpenCnt))
{
return LibExpungeInternal(Base);
}
return 0;
AROS_LIBFUNC_EXIT
}
AROS_LH1(BPTR, LibExpunge,
AROS_LHA(LIBBASETYPEPTR, Base, D0),
struct ExecBase *, sysBase, 3, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
(void)sysBase;
USESYSBASE
bug("LibExpunge\n");
return LibExpungeInternal(Base);
AROS_LIBFUNC_EXIT
}
AROS_LH0(LIBBASETYPEPTR, LibReserved,
LIBBASETYPEPTR, Base, 4, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibReserved\n");
return 0;
//return (APTR)LibReserved();
AROS_LIBFUNC_EXIT
}
// Space for your own functions
// do not forget to update the FuncTable as well
AROS_LH1(int, TestFunction,
AROS_LHA(int, TestValue, D0),
LIBBASETYPEPTR, Base, 5, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("TestFunction\n");
Base->testint = TestValue + Base->testint;
return Base->testint;
AROS_LIBFUNC_EXIT
}
// Functable -> Table of all functions in the Library, in right order - important!
const APTR FuncTable[] =
{
&AROS_SLIB_ENTRY(LibOpen,LIBHEADNAME,1),
&AROS_SLIB_ENTRY(LibClose,LIBHEADNAME,2),
&AROS_SLIB_ENTRY(LibExpunge,LIBHEADNAME,3),
&AROS_SLIB_ENTRY(LibReserved,LIBHEADNAME,4),
&AROS_SLIB_ENTRY(TestFunction,LIBHEADNAME,5),
(void *)-1
};
// AutoInit stuff
void *__PROGRAM_ENTRIES__symbol_set_handler_missing;
void *__LIBS__symbol_set_handler_missing;
// end of AutoInitStuff
</pre>
Makefile
<pre>
VPATH =
CFLAGS = -O2 -g -fomit-frame-pointer -W -Wall -Wno-parentheses
CC = i386-aros-gcc
LD = i386-aros-gcc
LDFLAGS = -nostartfiles -Wl,-Map -Xlinker linkermap
LIBS = -lautoinit -llibinit
STRIP = i386-aros-strip --strip-unneeded --remove-section .comment
OBJS = lib_header.o
all: mytest.library
mytest.library: $(OBJS)
$(LD) $(LDFLAGS) $^ $(LIBS) -o $@
lib_header.o: lib_header.c lib.h
clean:
rm -f *.o *.library *.ppu testlibrary linkermap
</pre>
Porting UNIX library to AROS - dealing with static variables which would make it easy to port such libraries to AROS, keeping the benefits of sharing them on disk, but losing the benefit of actually sharing them in memory.
Our problem arises by the fact we want to share the actual code (the .text section of the library) and constant data, but we need to have per-task .bss and .data sections. If we get rid of our intention to share the .text and .rodata sections, things get quite easy: just load and relocate the library whenever it's open, by whoever it's open. It's like statically linking the library into the executable, except that the final linking is done at runtime.
In the V0 branch, in workbench/hidds/hidd.nouveau was committed pcimock.hidd. This is a pci driver that allows mocking real PCI devices under linux-hosted. The main idea is to be able to run the real hardware driver under linux-hosted with as little changes as possible (some changes will always be needed though unless someone wants to write complete device simulator) so that driver's code paths can be executed and debugged using gdb. This was a very helpful capability when porting nouveau. Now it is externalized from nouveau.hidd and can be used by other people porting drivers. The pcimock.hidd can currently mock 4 different nvidia cards, 1 AGP bridge and also mock irq.hidd.
What's the difference between this driver and the pcilinux.hidd? I used that one to develop many different HW drivers for aros. As far as I understood the intention of pcilinux.hidd it is supposed to get access to real hardware that is running under linux. The pcimock.hidd goal is to mock the hardware. For example my dev box is a PCIE system, but I still would like to run the AGP codes paths in nouveau under linux-hosted to check if they don't seg fault. The other case would be to run codes paths for hardware that the developer does not have (Fermi cards in my case). In the case of pcimock.hidd, the AROS driver's code paths will execute as long as you add proper mocking (for example fill in PCI config area or values for registers in BARs). This is an advantage for ported drivers - the code should already work (since it worked on another system) but there might have been mistakes made during porting which can be detected easily with gdb.
In case you are writing your driver from scratch, pcilinux.hidd hidd will give you more advantage, since you can actually access the real hardware from linux-hosted.
== Misc ==
===APL, MPL, BSD, GPL and LGPL Licences===
The majority of AROS sources in licensed under AROS Public License ([http://aros.sourceforge.net/license.html APL]) which (to a degree) protects us from someone taking AROS sources and not contributing improvements back (for example MorphOS took some AROS source and then contributed changes back)
It is written to allow the use of AROS code in other open source or commercial projects without exception whilst providing a mechanism so that improvements/additions can find their way back to the original source in one form or another.
There are "3rd" party applications used by AROS that do not fall under this license, which are an extra "Contrib" download for convenience.
Anyone can port GPL-ed network and sound drivers as AROSTCP and AHI are GPLed. Direct using (porting) [http://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs GPL]-ed code in other parts of AROS (gfx, sata, usb) is not possible because AROS license is not compatible with GPL. You need to utilize permissive licensed code like BSD or MIT/X11.
BSD and MPL license are the closest to APL.
APL however is not so compatible with LGPL/GPL.
LGPL case - you cannot statically combine APL code with LGPL. You can, however thank to LGPL being "lesser" restrictive, use LGPL dynamically loaded libraries in APL codes.
GPL case - you cannot combine APL code with GPL in any way if there is no explicit clause by GPLed code authors allowing that. If you do combine APL with GPL in "bad" ways described above - you have a problem (you violate GPL). This problem might result in everything in AROS becoming GPL or everything running or AROS becoming GPL (here I'm not sure really). The other scenario is that you are not allowed to legally distribute such code at all. To be honest I have grasped how to violate GPL, but I'm still no exactly sure what happens when you violate it (but I'm sure it's not anything nice)
GPL software can run on top of non-GPL "system components" (see system components exception of GPL), but the other way around (non-GPL using GPL) leads to problems. This means applications like scout, or Quake III are ok (in the majority of cases).
Theres no reason GPL drivers cannot be ported - but they cant be in AROS's ROM (requires linking APL code with GPL), nor can AROS depend on them (e.g. they must use existing apis).
If they are launched (dynamically linked) by a user action that is allowed. It is also allowed to distribute such binaries together for convenience.
GPL is not about statical or dynamic linking but is about executing process and function calls.
These components - SFS, isapnp, Zune texteditor, AHi, network drivers, freetype, openuirl, BHFormat, Edit and (" dynamically loaded libraries") are LGPL, not GPL. Mesa/Nouveau stuff is MIT. Some user tools are GPL though.
'''AROS (system)'''
* system components (libraries/classes/devices/etc) cannot be GPL as they would propagate GPL to complete system as well as GPL is not compatible with MPL from which APL is based
* system components can be LGPL v2 or a permissive license (MIT/BSD)
* system applications can be anything you like (but still I would prefer APL or permissive so the code can be reused if needed)
'''Contrib:'''
* no rules - contrib does not impact AROS system since nothing in AROS system depends on contrib.
About stealing code: The chances of this happening is exactly the same whether we are APL or GPL. If any closed-source option wanted to do it, there is no one that can validate otherwise. MorphOS has used some AROS codes, but contributed changes back.
The rationale behind APL is that while it guarantees that the original developer will get the improvements back (to a certain degree - file based), the person who uses the codes does not have to open his original codes. BSD does not guarantee that the original developer gets improvements. GPL requires the person using the codes to open his codes as well.
The copyright holders needs to stay - we just need information from them that the codes are available under APL (for example a checked-in file like in case of Poseidon). We don't do transfer of copyrights.
; Ultimately what can and cannot be done is up to the author(s) - not the licence.
===AROS source code tree===
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-trunk.txt
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
Found this interesting (non-GPL) licensing 'anomaly' - to keep in mind for distributors.
Programs that lose their license if sold ("non-profit only" licensed):
contrib/aminet/comm/term/TinyTerminal
contrib/aminet/dev/basic/bwBASIC
contrib/aminet/text/edit/xdme
contrib/fish/aroach
contrib/fish/lotto
contrib/fish/shuffle
contrib/fish/touch
+ cdvdfs.
Here is a list of all the GPL/GPLv2/GPLv3 licenses fossology found, what have explicit licenses in their comments.
excluded LGPL, BSD/GPL dual licensed and programs (such as Prefs/Edit and BHFormat)
<pre>
AROS/rom/dbus/include/ AFL_v2.1 ,GPL_v2+ (supposedly AFL < 3 is GPL incompatible)
AROS/workbench/classes/zune/betterstring/include/ GPL_v2+
AROS/workbench/classes/zune/texteditor/include/ GPL_v2+
AROS/workbench/classes/datatypes/gemimage/ GPL_v2+ GPL
AROS/workbench/classes/datatypes/degas/ GPL_v2+
AROS/workbench/libs/openurl/README: GPL
AROS/workbench/network/smbfs/documentation/ GPL_v2
AROS/workbench/network/smbfs/source_code/ GPL_v2+
AROS/workbench/network/stacks/AROSTCP/bsdsocket/kern/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/mmakefile.src conf.h GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/sys/ CMU ,GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/net/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/api/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/conf/conf.h: GPL_v2
AROS/workbench/network/stacks/AROSTCP/netinclude/net/radix.h: CMU ,GPL_v2
AROS/workbench/devs/AHI/AHI/ GPL_v2+
AROS/workbench/devs/AHI/AddAudioModes/ GPL_v2+ AROS/workbench/devs/AHI/AddAudioModes/COPYING: GPL
AROS/workbench/devs/AHI/Docs/texinfo.tex: GPL_v2+
AROS/workbench/devs/AHI/COPYING: GPL
AROS/workbench/devs/AHI/Drivers/EMU10kx/ GPL_v2+
AROS/workbench/devs/AHI/AHI-Handler/ GPL_v2+
AROS/workbench/devs/networks/rtl8029/ GPL GPL_v2+
AROS/workbench/devs/networks/pcnet32/ GPL GPL_v2+
AROS/workbench/devs/networks/ppp/LEGAL: GPL
AROS/workbench/devs/networks/atheros5000/ GPL_v2+
AROS/workbench/devs/networks/rhine/ GPL_v2+
AROS/workbench/devs/networks/nForce/ GPL_v2+ GPL
AROS/workbench/devs/networks/prism2/ GPL GPL_v2+
AROS/workbench/devs/networks/fec/LEGAL: GPL
AROS/workbench/devs/networks/rtl8139/ GPL GPL_v2+
AROS/workbench/devs/networks/etherlink3/ GPL GPL_v2+
AROS/workbench/devs/networks/intelpro100/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8169/ GPL GPL_v2+
AROS/workbench/devs/networks/emac/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8168/ GPL GPL_v2+
AROS/workbench/devs/networks/realtek8180/ GPL_v2+
AROS/workbench/devs/networks/via-rhine/via-rhine.c: GPL_v2+
AROS/workbench/devs/networks/via-rhine/ GPL GPL_v2+
AROS/workbench/devs/networks/e1000/ GPL_v2
AROS/workbench/devs/networks/sis900/ GPL GPL_v2+
</pre>
AHI: it has special provisions (COPYING.DRIVERS). The library is LGPL, preferences software is GPL and drivers can be anything without breaking GPL/LGPL.
Network stack: well, we are long overdue for a new, IPv6 enabled network stack anyway, anyone interested? ;) Seriously though it seems like the glue code is GPL and as all the drivers. However some of the drivers are our own code, so they could be relicensed to LGPL.
Same filter as the AROS trunk list. These should all be libraries or plugins - no programs.
<pre>
contrib/regina/utsname.h: GPL_v2+
contrib/mui/classes/nlist/include/default-align.h: GPL_v2+
contrib/mui/classes/nlist/include/amiga-align.h: GPL_v2+
contrib/mui/classes/BWins/include/MUI/BWin_mcc.h: GPL
contrib/mui/classes/BWins/include/BWin_private_mcc.h: GPL
contrib/mui/classes/BWins/COPYING: GPL_v2
contrib/mui/classes/BWins/MCC_BWins.readme: GPL_v2
contrib/mui/classes/thebar/include/default-align.h: GPL_v2+
contrib/mui/classes/thebar/include/amiga-align.h: GPL_v2+
contrib/gfx/libs/wazp3d/LEGAL: GPL
contrib/gfx/libs/wazp3d/Wazp3D.readme: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.c: GPL
contrib/libs/mpega/ GPL_v2+
</pre>
http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
===Types===
On AROS following rules apply:
<pre>
1. BYTE/UBYTE is 8bit, WORD/UWORD is 16bit, LONG/ULONG is 32bit, QUAD/UQUAD is 64bit, the types are comparable with stdint types (int8_t, int16_t, int32_t, int64_t)
2. IPTR/SIPTR are integer types large enough to fit pointer, that is sizeof(IPTR) = sizeof(APTR) = 4 on 32bit system, and = 8 on 64bit system
3. ti_Data in TagList is large enough to hold a IPTR/APTR type.
4. never store a pointer in integer of type LONG. It may work (if the pointer has upper 32bits clear), but does not have to. Compiler should warn you about that.
5. If you are unsure about point 4, allocate your memory with MEMF_31BIT flag set. But don't expect that AROS internals will do the same.
</pre>
point 4 is actually important.
* UBYTE/BYTE for 8bit
* UWORD/WORD for 16bit
* ULONG/LONG for 32bit
* UQUAD/QUAD for 64bit
<pre>
UBYTE Unsigned 8 bit integer variable (byte).
BYTE Signed 8 bit integer variable (byte).
UWORD Unsigned 16 bit integer variable (word).
WORD Signed 16 bit integer variable (word).
ULONG Unsigned 32 bit integer variable (longword).
LONG Signed 32 bit integer variable (longword).
FLOAT 32 bit IEEE floating point variable.
UQUAD Unsigned 64 bit integer variable.
QUAD Signed 64 bit integer variable.
DOUBLE 64bit IEEE floating point variable.
BOOL Boolean variable, TRUE and FALSE are also defined in exec/types.h.
VOID Void.
APTR A generic pointer for multiple purposes - Arrays.
STRPTR A pointer to a null-terminated string.
IPTR Really important in AROS, the only way to declare a field that can contain both: an integer or a pointer.
</pre>
if you want to write really portable app, you may be interested in standard datatypes defined in C99: int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, intptr_t, uintptr_t. They are all defined in inttypes.h include file.
In exec/types.h the following short-cuts are typedef'd. They are used often in AROS, so you should nearly always include exec/types.h and soon only they will be removed from sys/_types.h include, all types are now defined in include files named aros/types/xxx.h.
(Preparation for C library split; sys/xxx.h include will only be available there when compiling with POSIX C library)
Compiler specific types, like int and long might change their size. In case of AROS, similar to linux, int remains 32 bit whereas long grows to 64 bits in size.
If you use Amiga-like data types, i.e. BYTE/UBYTE, WORD/UWORD, LONG/ULONG and QUAD/UQUAD or the C99 standard types (uint8_t and so on, see stdint.h include) then you should have less issues to solve than by using types without size guarantee.
Of course, all pointers grow to 64 bytes using 64bit cpu. Most of the code can be just recompiled and will work. In rare cases, where e.g. pointers are casted to integers, a special care must be taken. Especially in the cases, where pointer is casted to LONG/ULONG (this code will break on 64 bit AROS) e.g. '#define IPTR ULONG'.
With compiler delint patches which the majority of them are simple casting issues to make the compiler happy. Notice some of the changes involve introducing double casts. In very recent versions of GCC. Yes, the bulk of the double casts are for converting 32 bit addresses (ie from a 32 bit PCI DMA address register) to a 64 bit pointer. First cast is to IPTR (to expand to 64 bits, and prevent sign extension if the address is above 0x7FFFFFFF), and then to APTR.
ULONG != IPTR except on 32bit .. so if you need to store pointers make sure and use IPTR and not ULONG (which some old code does). For this reason things like Taglist elements are 64bit (since the tag data can be a pointer).
If your passing items on the stack you should use the STACKED attribute to make sure they are correctly aligned (on 64bit all items on the stack are 64bit..)
There is more issues like using "== 0L" causes problems.
===Endian===
*BE
*LE
Use the macros from <endian.h> instead making a guess based upon architecture defines
<pre>
#if _BYTE_ORDER == _BIG_ENDIAN
#elif _BYTE_ORDER == _LITTLE_ENDIAN
#else
+
#error <whatever.h> - Byte order for this architecture is unsupported!
</pre>
===SVN and GIT===
If you want to help develop AROS OS itself, you can
* view current GIT/SVN entries [http://aros.sourceforge.net/ Aros Org website] or [https://github.com/aros-development-team/AROS Github], [https://github.com/ezrec older ezrec mirror], [https://github.com/michalsc/AROS/ older mirror], [https://trac.aros.org/trac/timeline TRAC], [],
* awaiting update [http://repo.or.cz/w/AROS.git git repo], [http://www.ohloh.net/p/aros/commits ohloh] or [https://svn.aros.org/svn/aros/trunk/ svn repo] and access [Git version git://repo.or.cz/AROS.git here],
* deprecated [https://www.gitorious.org/aros/aros/commit/a7fda9e ARIX commits] or [https://gitorious.org/aros/aros GIT old]
If you have SVN access (early 2015 introduced a new SVN server, create a new account at trac aros org) and/or have obtained the source [http://aros.sourceforge.net/download.php AROS site] - you can compile the current build tools/environment using:
> make development
and follow this [http://aros.sourceforge.net/documentation/developers/compiling.php#building procedure] or [https://github.com/apiraino/aros_guide Guide]
https://trac.aros.org/trac#Developing
If you plan on contributing back changes, please post information about such changes first on this [http://mail.aros.org/mailman/listinfo/aros-dev/ mailing list] for more experience developers can validate whether they are correct.
Then there are the nightly build machines. They svn update before the build and run configure as one of the next steps. autoconf might be added to the nightly build scripts.
Our build relies on packages downloaded from Internet (SDL for example) - it always worked this way. The minimal requirement (when just building core AROS) is binutils and gcc. If you build contrib as well, you need many more packages to be downloaded.
https://gitorious.org/aros/aros/commits/crosstools-II
git://gitorious.org/aros/aros.git
Branch crosstools-II there is only one commit on top of ABI_V1
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-x86_64
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-x86_64
</pre>
and
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-i386
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-i386
</pre>
build OK.
:''More information: [[Aros/Developer/Maintainer|AROS Maintainer Docs]]''
===SDI Calls===
Integrate the 'SDI'-headers to allow easier porting to all amiga-like platforms.
<pre>
PUTCHARPROTO( PutTheChar, char c, struct SPrintfStream *s )
{
// REAL CODE
}
</pre>
have "SDI_compiler.h" and "SDI_hook.h" included
its more organized like
#include SDI/SDI_hook.h
than
#include SDI_hook.h
option 1 --- i also use when back porting from amiga's..
<pre>
#ifdef __AROS__
#include SDI/SDI_hook.h
#else
#include SDI_hook.h
#endif
</pre>
also
you can add the -i include/sdi/ location if you do not want to add or edit any files.
Defining HOOKPROTO to IPTR name(struct IClass * cl, Object * obj, Msg msg); solved the problem
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order. examine compiler/include/aros/symbolsets.h (AROS_LIBREQ)
compiling mui stuff for aros setting -std=gnu99 is necessary (i have had -std=c99 most of the time).
===Locale with Flexcat===
Most languages have a locale, but not every app is localized, the only thing needed is to translate the "catalog" files. It is a case of locating the correct catalog and saving the translated version.
For every app that lacks of your language catalog and is localized anyway, you should find (in the sources) files related to locale:
* file.cd = catalog descriptor, contains base msg, with internal language (usually english)
* language.ct = catalog translation, contains every translated msg, indexed as in the file.cd.
Compare with other localized apps... Then, "make my_app-catalogs" should create and install your translated catalogs. ex : for, saying, sys:prefs/wanderer:
on root of AROS sources, type:
"make workbench-prefs-wanderer-catalogs"
then (if you changed the .cd file):
"make workbench-prefs-wanderer"
For apps not localized, you have to adapt their code to support it, if it is possible...
noticed the original .cd file has many (//) strings at the end of any voice, so added them also to the .ct file.
That (//) is only for cd files. I'm highly recommending to use FlexCat for updating ct files, e.g. like this:
flexcat app.cd deutsch.ct newctfile deutsch.ct
You'll get error checking and new entries are marked in the resulting ct file.
When editing .ct files, only change those lines containing translation and perhaps version string, nothing else.
The rest is up to the relevant tool, flexcat. In order to update your translation, type in the following in your shell:
flexcat xyz.cd xyz.ct NEWCTFILE xyz_upd.ct COPYMSGNEW
This way you will not only make sure you have correct translation file but flexcat also pre-fills newly added strings with "*** NEW *** text. Even better tool for checking cd/ct/catalog files is catcheck, but this one is sadly only available for AmigaOS/68k...
Some languages have variations, like portugues from portugal and portugues from brasil differs...
This is the way to go. I will have a look at language files, but basically if those two languages differ you have to do two separated set of translation files, yes.
(you could create a brazilian slang language localization too)
* At system level localization for one language is a dot language file.
(ex: locale:languages/klingon.language)
* At app level localization is a dot catalog file
(ex: locale:catalogs/klingon/system/libs/dos.catalog)
* At sources level, the dot ct file, and "$language" dot cd files and some building framework.
(ex: catalogs/my_app.ct catalogs/klingon.cd catalogs/mmakefile.src support.c support.h)
Please, use Flexcat to generate CT files:
FlexCat wanderer.cd NEWCTFILE=deutsch.ct
Then fill the first 2 lines with something useful:
<pre>
## version $VER: wanderer.catalog 1.1 (9.2.2006)
## language deutsch
</pre>
You can even update the CT-File: (This adds the new strings)
FlexCat wanderer.cd deutsch.ct NEWCTFILE=deutsch.ct
To compile a catalog you only need the .cd file and your translation (.ct file):
FlexCat multiview.cd deutsch.ct CATALOG=MultiView.catalog
[http://murks-ide.svn.sourceforge.net/viewvc/murks-ide/trunk/src/Catalogs/flexcat_linux?revision=100 Linux version of FlexCat]
: [http://aros.sourceforge.net/documentation/developers/app-dev/localization.php#localization-for-non-developers More information]
A script which compares the required version (i.e. the version which an application/module etc. tries to open) with the version of the existing CT files. The result is in this table:
https://github.com/aros-translation-team/translations/wiki/Progress
The following cases are highlighted:
n/a i.e. CT misses at all
version in existing CT file is lower than the required version
It might be a bit difficult to participate if you haven't worked with Git before but alternatively you can send your CT files to our Slack channel.
When the ct file has been generated via flexcat (flexcat keyshow.cd NEWCTFILE=spanish.ct) it has the following header:
---------------------------------------------------------------------------------------------------------------
## version $VER: <name>.catalog <ver>.<rev> (04.01.2021)
## language nolanguage
## codeset 0
;
---------------------------------------------------------------------------------------------------------------
Those values <ver>.<rev> are the version and revision of the CT file for the languaje or are the values of the application being localized?
The <ver> part must match with version which the application tries to open. You can find the value either in the column "Required Version" in the table which I've linked above, our you can look in the git repository. For keyshow it would be https://github.com/aros-translation-team/keyshow. You can find in the file "catalog_version.h" the right version number.
The <rev> part starts for new CT files with 0 and should be increased every time the CT file is updated.
Updated several files and created a few more that were missing on the spanish catalog.
The catalogs are in Git repositories at https://github.com/aros-translation-team
a) You tell me your Github user name. I'll invite you. You can work directly with the Git repositories.
b) You create Github forks of the catalog repositories and create pull requests.
c) You send the CT files to mrustler gmx de
===C Utils Misc===
The AROS source uses at several places the __DATE__ macro to fill the date entry of a $VER tag. Problem is that c:version doesn't understand that date format (e.g. "May 21, 2011"). As a result the output of e.g.
> "version c:shell full" contains "(null)". Is extending the version command to understand the format of __DATE__ the right solution for that problem?
AmigaOs compilers should use __AMIGADATE__ macro or similar form, if it isn't implemented it could be emulated in makefile: -D__AMIGADATE__=\"$(shell date "+%d.%m.%Y")\"
BTW. I think DD.MM.YYYY is better format than "Month DD YYY" because "Month DD YYY" is not localized in any way.
"strnicmp" shouldn't work with NULL pointers
The Situation:
compiled a linklib using c++ object files (using the c++ cross compiler).
compiled a C stub that uses the linklib (using the c++ cross compiler).
Try to link them together (using the c++ cross compiler) with C object
files (using the normal target c compiler) that need to use -nostartup
= cant do because using the c++ files pulls in arosc (for stdio etc.) -
so wants to have the autoinit stuff present.
What can I do about this??
If it is possible to manually open it then what do I need to do exactly?
=== ENV ===
The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact. However in some cases (like this one) it is not required.
99% of the time that statement is true (not required) for pretty much every file in ENV: or do people change their default icons - and prefs settings - every boot?
There seem to be a bad habit of late with developers changing things to reflect their own personal preference when the change isn't actually necessary - It would be nice if people could refrain from doing that in the tree without at least discussing it on the dev-list first (and with good reasoning unless they committed said work in the first place..)
We're not keen on the pollution of the "S:" dir: it's meant to be for scripts. What's wrong with "ENV:"?
Only the fact that it takes up RAM. I understand that for PCs with several gigabytes of RAM this is
irrelevant. But let's remember about other machines. The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact.
However in some cases (like this one) it is not required.
How about implementing in the style of HappyENV then? RAM-disk handler that falls through to reading from ENVARC: if there is no such file stored in it already. Removes RAM usage for unchanged files, removes the need to copy ENVARC to ENV in startup-sequence.
Shouldn't be too hard to make from AmberRAM, or even just extend AmberRAM to provide this service.
Is it feasable to build a special version of AmberRAM handling ENV: that will try and copy the requested file from ENVARC: if it isnt found in ENV: ?
Additionaly it could mark closed "files" as untouched - and expunge them from ENV: after a period of time to free up additional RAM:, or when the system is running low on free memory?
Silenty disappearing files may not be a good plan. Would be nice if the following would work:
ASSIGN :ENV SYS:Prefs/Env-Arc ADD
ASSIGN :ENV RAM:ENV ADD
Where new files put in ENV: end up in RAM:ENV, and opening files looks in RAM:ENV first, then SYS:Prefs/Env-Arc
Well - that's essentially what im proposing but without the assigns - or need for a RAM:ENV directory.
Adding it as a feature of AmberRAM sounds like the most memory efficient way (one handler to load in RAM) but that's only if it is possible to make it handle ENV: additionally to RAM:, and if it is even possible to add the proposed functionality (...and how to make it enable it when accessing ENV:).
===(AS)MP support===
If one has to recompile software for SMP multi core, is there any thing special one has to do to get software to run?
Use task.resource if you need to query information about what tasks are running, and clear msgports completely when they are allocated.
Most code should not need Forbid. Use Semaphores, Messages etc. to sync your own code.
Accessing system structures is a different thing. Use the proper API whenever possible.
How single structures will be protected in the future is still a moving target, at least it is not documented. And you should never use undocumented stuff
Ideas on for SMP multi-core
Another suggestion is ... Forbid/Permit function calls are meant to halt multitasking so as no other task could intervene with what ever the calling task is doing, e.g. setting semaphores. Disable/Enable calls are meant to halt interrupts and as a side effect they also halt task switching.
One option is to make it compulsory to protect shared resources with semaphores and forbid the use of simple Forbid() calls as to protect something. Setting semaphore should be done if possible with atomic instructions (check and alter in one instruction). Or make the second concurrent ObtainSemaphore call halt the second calling task and force if possible a task switch which ever gives better results.
Semaphores could store the owning tasks task pointer instead of boolean to make things easier.
As long as the CPU initiates the DMA transfers through the OS, and the OS ensures that the transferred memory is within the region accessible to the user initiating the transfer, everything is fine. The CPU is the conductor, and the CPU by that has the control of which DMA transfer is initiated and which is not.
All you need to do is to write device drivers reasonable. Hint: CachePreDMA and CachePostDMA exist.
All the Os has to do is to verify that the memory regions to be transferred are valid, and prohibit direct access to the DMA control registers from user space. None of these algorithms imply huge costs.
The current OS design doesn't really allow virtual memory in first place, Forbid() is again the problem.
[http://www.tbs-software.com/guide/index.php?guide=autodocs.doc%2Fmemory.doc&node=1 memory.library API] seem to low level. IMHO the programs should not know how the swapping is implemented. I would just go for one new memory flag
MEMF_SWAPPABLE that indicates that a certain memory region or a whole memory pool won't be accessed during Forbid()/Permit() etc. It only solves part of the problem, it only implements virtual memory and not memory protection. For the latter you need to be able make certain memory inaccessible by other programs, some memory read-only for one task and read-write for other tasks, etc. And I think this should be done in the same Address Space in order to avoid you constantly need to swap between different address spaces.
So to summarize, if there are programs using this API we may provide a wrapper layer to get them working but I am not convinced this API should be the reference API with whom to provide VM to AROS programs.
=== Variadic ===
variadic functions (i.e. functions with an arbitrary amount of arguments).
<pre>
#include <stdarg.h>
[...]
char * STDARGS GetKeyWord(int value, char *def, ...)
{
[...]
va_list va;
[...]
va_start(va, def);
[...]
va_end (args);
</pre>
Please keep with using stdarg rather than having va casted to a LONG * type and varargs handled manually. Doing so, prevents tons of casting, where a simple va_arg can be used. So, string = *((char **) args) instead of string=va_arg(va, char *).
<pre>
#include <stdio.h>
#include <stdarg.h>
int printf (const char * format, ...)
{
int retval;
va_list args;
va_start (args, format);
retval = vfprintf (stdout, format, args);
va_end (args);
fflush (stdout);
return retval;
} /* printf */
</pre>
Couldn't find varargs.h or stdarg.h. and have no use for AROS_SLOWSTACKHOOKS or AROS_SLOWSTACKTAGS.
GCC looks for stdarg.h in a different place:
/bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/include/stdarg.h
Here is a path for a "normal" header:
bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/../../../../i386-aros/sys-include/aros/system.h
The use of vararg.h isn't supported by newer gcc versions. If you want your code to run on architectures that pass part of variadic arguments in a number of registers you need to use AROS_SLOWSTACK macros. Otherwise your program will not work on powerpc and x86_64 ports.
Of course the SLOWSTACK stuff is not needed in a function that can use va_list, va_start, va_arg and va_end. It's only needed if you want to write functions like DoMethod or similar.
#include <stdarg.h>
should be enough no matter if you do cross or native compiling. If it does not work, something is wrong and should be corrected.
Stdarg.h is here, Development:lib/gcc/i386-aros/4.2.2/include/
...which is part of the compiler's default include paths. In other words, #include <stdarg.h> works out of the box, indeed. (sorry, I should have just tried it before invoking "search" or "find"...)
furthermore, myprintf() as shown above won't work, because...
printf(format, args);
...is wrong - the second argument does not match printf() prototype, it expects a argument list, but args is of type va_list (obviously) - so one has to use...
vfprintf(stdout, format, args);
...instead, just like in the original printf(), and add fflush(stdout).
additionally, one could use...
int myarg = va_arg(args, int);
...between va_start() and va_end() to access individual arguments, where each call to va_arg() returns an argument casted to the desired type (here: "int") from the list given (here: "args") and advances to the next one.
wrapping up vfprintf() and modifying the format string now is a major speedup! no more backslash-n typing! this has been haunting me for years!
On MOS and AmigaOS, the NewObject variadic function is kept in the static library. It takes most of the parameters on the stack - thanks to that the implementation of NewObject calls the NewObjectA function. Everything works perfect, and the typical MUI macros may be easily used.
This, however, is not the case when you compile for AROS. Here, NewObject is a variadic macro, not a function. Thanks such approach we do not need any custom compiler in case of systems, where the arguments of variadic functions are passed partially through registers and partially through the stack (This is the case of PPC and x86_64, this is also the reason why both OS4 and MOS require specially patched compilers).
Since NewObject is a macro, the gcc's preprocessor expects the list of macros arguments enclosed within parentheses. In MUI macros it is not the case. Imagine the following test code:
<pre>
#define foo(a,b) ((a)+(b))
int loosy_function(int a, int b)
{
return foo(a,b);
}
</pre>
This will compile and work, but the following piece of code:
<pre>
#define foo(a,b) ((a)+(b))
#define END )
int loosy_function(int a, int b)
{
return foo(a,b END;
}
</pre>
will fail with the error: unterminated argument list invoking macro "foo"
There are two ways of fixing your issue. Either create your new objects outside this huge MUI constructions, and in there use just a pointer, or get rid of the "End" macro and exchange it with "TAG_DONE)".
Badly written software is, for example, casting va_list to an APTR or even doing so as if va_list were a plain table of function arguments. Such code needs to be fixed because it has very few chances to work anywhere but on author's machine ;)
The problem is nOt that they assume sizeof(APTR) == 4, its that they often do not use APTR, and use ULONG to store pointers exclusively. If the code used APTR/IPTR as it should - most of the "problems" wouldn't exist.
It would also help if people would start using variadic arguments properly. Many coders do assumptions which shall never be made. Instead, they should consider using stdarg.h file and all the va_* functions :)
===ABI===
In the head of our SVN repository there are now only 3 directories:
<pre>
admin/
branches/
trunk/
</pre>
We have added two extra dirs there: tags and imports
As discussed when we branch ABI V0 and [[Aros/Developer/ABIv1|ABI V1]] it would also be good to introduce tags. Normally this is done in a directory in the repository called tags. Currently we don't have this directory there. (We do have branches/tags that is a hack I have done because one doesn't have write access in the top directory. I think this directory is not clean and should be removed).
The second directory I would introduce is an imports directory for implementing vendor branches as discussed in the svn [http://svnbook.red-bean.com/en/1.5/svn.advanced.vendorbr.html book]. Currently we use code from several different projects and that code is stored inside the AROS tree; we seem to have problems with keeping this code up to date and merge our changes upstream. Maintainers of up stream projects like the MUI classes etc. have complained about this (to put it lightly).
Introducing these vendor branches would make it easier to see what changes we have made and make patches to be sent upstream and make it easier to import newer upstream versions of their code. Although can't "copy" the vendor branch into the main branch because it's already there, so start with a "merge".
Yes, the first step to make the code already in the repository compatible with the vendor branches will be the most difficult. The best way to do it the following way:
* first import the version on which the current AROS code is based into the vendor branch
* then import the new version over it in the vendor branch
* finally merge the difference between these two version in the AROS code present in the repository.
For example, place NList directly under vendor and not in a subdirectory like "contrib/zune/classes".
Actually after we have a stable [http://aros.sourceforge.net/documentation/developers/specifications/drafts/abiv1.php ABIv1 (2012 or later)]. We need to move away as much as possible from the contrib directory to some other repositories. The reasons are ...
* The AROS repository should be for the core AROS code.
* other contrib projects should be tried to be compiled for all Amiga-like OSes.
* The release scheme for AROS and the other programs should not have to be aligned.
* Binary versions should be provided on aros-archives and on aminet and/or OS4Depot to install them. (Some clever programs should maybe be provided to make the life of distribution developers easier).
* avoid parallel forks of programs for AROS and the other amiga OSes.
If there is really a need for a place for hosting AROS projects we may investigate setting up such a server but then including bug tracking, governance, maillist, etc. for each project separately. I personally think there are already enough places like sourceforge, google code, savannah, etc. where people can go for hosting such projects.
==Links==
* http://amigadocs.hokstad.com
* http://amigadocs.hokstad.com/doku.php?id=dev-links
* http://www.liquido2.com/tutorial/index.html
* Amiga(TM) OS4 has a [http://www.ast-workshops.co.uk/os4pg/ workshop] page and hope to produce a [http://amigaworld.net/modules/newbb/viewtopic.php?topic_id=31117&forum=42#549091 book] soon. [http://www.solie.ca/articles/map/map.html Brief Guide].
In the future...?
*AROS 64bit - SMP, Vulkan with OpenGL compability layer
*AROS 32bit - keep for historic reasons
What would you like to see implemented in AROS?
ABIv1 completed, SMP (x86_64), SendMsg()/GetMsg() to support memory protection between target and destination, in that order. Michal Schulz and Jason McMullan have been toying with the question "What are the minimal changes needed to the AmigaOS 3.1 API to support SMP"? The answer so far seems to be "few, but subtle". For example, SysBase->ThisTask is no longer meaningful on SMP, but FindTask(NULL) is. Disable() and Forbid() are shockingly bad on performance, but adding a spinlock semaphore mode to SignalSemaphore will help new code on SMP.
Leveraging a 'common' OS with a lot of machine support (Linux, MacOS, Windows, QNX, etc.) is something that AROS has been doing for quite a long time, and it is the biggest strength of AROS. This AROS experience and programming model, in the same way the Google's Android layers on top of Linux, or MacOS X layers on top of the Darwin/BSD kernel, as a first step
* The graphics + layers subsystem could be implemented as a shim on top of a OpenGL ES implementation (ie on any modern Linux system, or the RaspberryPI's hardware, MacOS X, etc).
- This also allows every window to be on its own 3D surface with backing store, allowing Wanderer (or a Commodity)
rearrange/zoom/animate app windows without having to send a pile or refreshes to them
* Use OpenAL as the sound backend
* AROSTCP would be a thin layer over the native OS's TCP/IP stack
* dos.library, poseidon.library, and input.device would be slim shims over the native APIs
* If we move to loading all libraries' into the application's task space, instead of a single global instance of the library, this will allow SMP and MMU more easily.
- Yes, it will require a lot of work in the libraries to make this transition
- Yes, I do think it will be worth it in the end.
* A 'fat binary' install format (or, maybe LLVM bytecode) that can be 'flattend' to the target architecture on installation.
So, what would this 'AROS of the future' look like?
* AmigaOS 3.x style API, with certain 'fundamental changes' to message passing
* Uses the underlying OS' device drivers, so more AROS developer effort can go to user-visible features and bugfixes
* Allows AROS applications to run side-by-side with the OS's native apps
And why would anyone want to program on such a system?
* AROS applications would run on any system that has the AROS Framework installed
* AROS applications are pixel-for-pixel the same on all platforms.
* Develop with the knowledge that you are guaranteed OpenGL and OpenAL, and the rest of the AROS Framework
an option for mmake to dump its dependency of metatarget in a graphviz[*] input file. This should make it possible to visualize the dependencies and hopefully be inspiration for cleaning up some mess, circular or unneeded dependencies and so on.
AmigaOS gcc 9 [https://franke.ms/amiga/gcc.wiki Old versions] able to create binaries for AmigaOS and [https://eab.abime.net/showthread.php?t=93813 Upgrading gcc versions]
==References==
{{reflist}}
{{status|50%}}
{{BookCat}}
rqz4jfuxztcknzvqed8dngalurnfa3t
4656354
4656341
2026-08-05T08:08:31Z
Jeff1138
301139
4656354
wikitext
text/x-wiki
{{ArosNav}}
==A technical overview of AROS==
Google translation [http://translate.google.com/translate?hl=en&sl=auto&tl=de&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs German], [http://translate.google.com/translate?hl=en&sl=auto&tl=fr&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs French], [http://translate.google.com/translate?hl=en&sl=auto&tl=it&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Italian], [http://translate.google.com/translate?hl=en&sl=auto&tl=es&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Spanish], [http://translate.google.com/translate?hl=en&sl=auto&tl=hi&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Hindi], [http://translate.google.com/translate?hl=en&sl=auto&tl=zh-CN&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Chinese],
[http://translate.google.com/translate?hl=en&sl=auto&tl=ru&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Russian],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pl&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Polish],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pt&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Portuguese]
{{Uncited}}
AROS,<ref>[http://aros.sourceforge.net/download.php References and sources]</ref> like AmigaOS (TM), is a [[w:Message passing|message-passing]], [[w:Preemption (computing)|preemptive]] [[w:Multitasking|multitasking]] [[w:Operating system|OS]].
It uses [[w:Reentrant (subroutine)|re-entrant]] shared libraries to save memory space.
AROS is based around an executive library kernel (Exec) and two other libraries:
* Exec (the "kernel", which is not a kernel in the modern sense),
* Intuition (graphics and GUI, integrated into the system) and
* AmigaDOS (Disk Operating System, the Metacomco's Tripos modified to work with Exec).
The design philosophies of AmigaDOS and Intuition are rather different, the former adopting a C-like API and the latter creating an [http://www.basden.demon.co.uk/amiga/amiga.oo.html object-oriented], message passing aware environment for the programmer. The system base is the only absolute address in AmigaOS (located at 0x00000004) this does differ with AROS as AROS SysBase is automatically provided (no $4) but everything else is dynamically loaded. The OS is well known for delivering high performance due to its close connections with the hardware, while simultaneously having the flexibility to support re-targetable graphics (Cybergraphics) and retargetable audio subsystems (AHI).
: Diagram showing relationships of libraries to system needed
Remember, AROS is a [http://en.wikibooks.org/wiki/Aros/Developer/ABIv1 research] operating system, and while all contributions to the base AROS code are welcome, please contact the dev list first for any core changes. Writing applications for AROS does not have this requirement.
While AROS appears and feels almost feature complete, it is still [[Aros/Developer/IncompleteAPIs|missing a small number of functions]] from the Amiga API - as well as a few implementations of [[Aros/MissingFunctionaility|core functionality]]. There are also a number of user applications that, while not strictly part of the AmigaOS 3.1 environment, need to be written.
[https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1201 This thread provides] information for setup, [http://www.aros.org/documentation/developers/index.php documentation] and whether you are interested in core OS changes and/or writing/porting software apps
*you compile directly under AROS, which can be running on either real hardware, virtual hardware
*in hosted mode under linux/window, cross-compile from that host OS (save your files as ISO-8859-15 encoding instead of UTF-8)
The repository for the [https://github.com/aros-development-team/AROS current development version ABIv1], the [https://github.com/deadw00d/AROS/tree/alt-abiv0 repository for current stable PC version ABIv0 with backported ABIv1 features is located which is used on AROS One and Icaros x86 based distros]
Any [https://github.com/aros-development-team/AROS/issues bugs / issues can be added]
We have a [https://arosdevteam.slack.com/archives/CUFV48U3H slack here], discord on [https://discord.gg/UKp9qdEBuQ Discord@AmigaDev],
==Software Development for AROS==
===Programming languages===
Apart from 'The Developer Environment', which primarily supports C/C++ code, there are other programming languages available for AROS:
'''Scripting'''
:[[Aros/User/DOS|DOS]], included in all
:[[Aros/Developer/Docs/LUA|LUA]], included in all or [http://www.airsoftsoftwair.de/en/prod_hollywood.html Hollywood]
:REXX [[Aros/Developer/Docs/Rexx|Regina (AROS' ARexx)]], included in all
:Python [ Info], included in Icaros
:Ruby [http://www.ruby-lang.org/en Info]/[http://archives.aros-exec.org/index.php?function=browse&cat=development/language download]
'''Basic'''
:[http://amos.pspuae.com/AmosProManual/contents/c1.html '''Amos Pro'''] [http://amos.pspuae.com/index.php?action=forum#1 compatible] [http://www.amigacoding.com/index.php/Main_Page commands] (all incomplete)
::[http://sourceforge.net/projects/xamos/ X-Amos]
::[http://sdlbasic.sourceforge.net/ SDLBasic] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://alvyn.sourceforge.net/ Alvyn] ([http://www.dusabledanslherbe.eu/AROSPage/MISC.14.html download])
::[[Aros/Developer/Basic/Basic4SDL|Basic4SDL]] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://www.ultimateamiga.co.uk/index.php?topic=9425.0 Project Deimos],
:'''Blitz Basic''' [http://aros-exec.org/modules/newbb/viewtopic.php?post_id=46537#forumpost46537 none on AROS]
:: [http://www.amiforce.de/main.php Amiblitz] on JanusUAE amiga(TM) emulator
:'''Amiga Basic'''
:: [ ACEBasic]
'''Misc'''
:[[Aros/Developer/Docs/E|AmigaE Portable E]]
:[https://ae.arosworld.org/index.php?board=11.0 FreePascal FPC Aros-Exec thread], [http://archives.aros-exec.org/index.php?function=browse&cat=development/language Download], FreePascal for AROS has its own [http://fpcaroswiki.alb42.de/ Wikibook],
:[[Aros/Developer/Docs/LLVM|LLVM]],
===Where to get the C/C++ Environment===
If you want to develop for AROS, its generally easier to be running linux hosted AROS development environment especially for C++, cross compiling the code. That's how most developers now are doing it. g++ is used to compile owb web browser as well as some other AROS software. If you were hoping for a rich set of C++ libraries or classes defined for the OS feature set, you might be disappointed.
AROS Native compiling is possible, but you're much more likely to run into the odd bug(s) in the dev environment since it gets little testing and fixing by other developers.
Is there a sftp software or scp over ssh available?
Maybe. At least the security part would be handled by [https://github.com/jens-maus/amissl amissl] [https://archives.arosworld.org/index.php?function=browse&cat=network/misc port]. DOpus5 has recently added sftp support. See here for a [https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1974&highlight=ssh&pid=12073#post_12073 ssh scp client]
[https://arosdevteam.slack.com/join/shared_invite/enQtOTc4Mzg0NDIzNzQ0LWQ2NWZmNmMwNGIwNGEyNTgxNzU3MGFjMTk3ZThmOTQ1MTVjMzhmNTllYWQ0ZTUxMjBjMGE0Y2VjMDJmNTc5MzI#/shared-invite/email Slack Dev Forum]
====Cross compilers from Windows or Linux====
*Windows WSL2 walkthrough can be [https://arosnews.github.io/how-to-cross-compile-aros-hosted-wsl/ found here]
you want to build AROS. No problem.
Here are instructions for 64-bit:
https://github.com/deadw00d/AROS/blob/master/INSTALL.md
Here are instructions for 32-bit:
https://github.com/deadw00d/AROS/blob/alt-abiv0/INSTALL.md
And as always has been the case you can use the contrib archive to 'obtain' the development directory which contains the /native/ AROS gcc compiler and tools. That compiler is used to build AROS itself but can be used outside the AROS build process by providing --sysroot with indicated directory to cross compile for AROS.
=====Older guides for Linux hosted compiler=====
Please install these packages before moving to next step. Below is a reference list for Debian-based distributions. Reference build system was Ubuntu 18.04/20.04 amd64.
subversion git-core gcc g++ make gawk bison flex bzip2 netpbm autoconf automake libx11-dev libxext-dev libc6-dev liblzo2-dev libxxf86vm-dev libpng-dev gcc-multilib libsdl1.2-dev byacc python-mako libxcursor-dev cmake zsh mingw64
Do all of these operations under home directory of your user or another directory where your user has write permissions.
Specifically, in a section "Linux-i386", be sure first to build the cross-compiler (toolchain-alt-abiv0-i386) and only then AROS itself (alt-abiv0-linux-i386).
Clone & build
<pre>
$ mkdir myrepo
$ cd myrepo
$ git clone https://github.com/deadw00d/AROS.git AROS
$ cd AROS
$ git checkout alt-abiv0
$ cd ..
$ cp ./AROS/scripts/rebuild.sh .
$ ./rebuild.sh
</pre>
Now to the build selection below - Linux-i386
Select toolchain-alt-abiv0-i386 - Select alt-abiv0-linux-i386 (DEBUG)
Start AROS by:
<pre>
$ cd alt-abiv0-linux-i386/bin/linux-i386/AROS
$ ./Arch/linux/AROSBootstrap
</pre>
Pc-i386 Select toolchain-alt-abiv0-i386 (if not built yet) - Select alt-abiv0-pc-i386
ISO image available in alt-abiv0-pc-i386/distfiles
Now that we have linux-hosted build, we can resume native (option 2).
Run ./rebuild.sh and selection option 2. Wait until it finished, then:
<pre>
$ cd alt-abiv0-pc-i386
$ make
</pre>
Now
<pre>
$ make bootiso
</pre>
Now, your compiler is located in toolchain-alt-abiv0-i386 directory and named i386-aros-gcc. Includes are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/include and libraries are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development.lib.
This is how then can be passed to the compiler:
/home/xxx/toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot /home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development -L/home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/lib
../toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot bin/linux-i386/AROS/Development local/helloworld/helloworld.c -o local/helloworld/helloworld
Another method was using Debian like distros and download the gimmearos.sh script (on [http://archives.aros-exec.org/index.php?function=browse&cat=development/cross aros-archives]) to setup the developer environment by downloading necessary packages ...
The gimmearos script is a good start in that direction, building the cross compilers and hosted AROS environment, but gimmearos.sh might be out of date or not be completely compatible with any given linux distro.
In order to do that, you have to compile AROS yourself. Download AROS source archive not contrib. Compile AROS by entering the main directory
./configure
make
([http://aros.sourceforge.net/documentation/developers/compiling.php More on compiling AROS]). The result will be a basic AROS system without development tools.
To compile C++ on Linux, type 'make gnu-contrib-crosstools', creating the cross-compilers in ./bin/linux-i386/tools/, named i386-aros-gcc, etc.
'''Note''': Currently, to make the cross compilers usable copy 'collect-aros' from tools/ to tools/i386-aros/bin/. At the moment the cross compilers if used from the Linux command line will only find it when it's there.
If you want to compile native compilers (the Developer Environment), type 'make contrib-gnu-gcc', creating native compilers in AROS' System:Development/bin directory.
When the output needs to be stripped <code>--strip-unneeded --remove-section .comment</code>
The Obj-C backend should build out of the box.
Open contrib/gnu/gcc/mmakefile.src and search for the line which contains "--enable-languages" and add "objc" to the list of languages that follows it.
--enable-languages=c,c++,objc
Better make it—enable-languages=c,c++,objc,obj-c++
ObjC++ is broken as soon as you try to use exceptions, but that might change in future GCC versions and it does not hurt having it there already.
Do you need a cross-compiler or a real compiler? In the first case you can get away with just downloading the proper gcc archive, apply the patch and proceed with the normal gcc build. In the case of a real cross-compiler then when downloading the contrib sources, also need to download the normal sources, place the contrib sources into a directory called contrib, need to install autoconf+automake+perl+python, call ./configure, cd into the subdirectory and type make.
to rebuild GCC with host == build == target == i386-pc-aros. So just get the vanilla sources and apply the patches without bothering about the build system?
[https://vmwaros.blogspot.com/2019/10/a-pre-configured-development-machine.html pre-configured VM environment vmware virtual machine to develop AROS and AROS software]
'''64 bit'''
'''32 bit'''
A good option for multiple OS is [https://axrt.org/index.php?tab=download-aros AxRuntime lets developers compile their Amiga API-based applications as Linux binaries being able to utilize modern development tools available on Linux, like IDEs, debuggers, profilers, etc]
====Native compilers for AROS====
Namely gcc for C or g++ for C++ are supplied with the [[Aros/Developer/Docs#The Developer Environment|Developer Environment]], which is already '''setup''' and part of any current AROS distribution like AROS One or the nightlies
* Current GCC 6.5 (32bit) though moving to 10.5 and 15.1 (64bit)
* Older software components. GNU GCC 4.x GNU BinUtils, GNU Fileutils 4.x, GNU Textutils and others.
On single partition systems and the Boot ISO, the AROS Developer environment is installed under "SYS:Development/". Systems with multiple partitions - such as a Work: partition - tend to install it to there instead, however it can be installed manually to any location. Please remember, if moving, that you will need to correct the Development packages 'install location' env variable to point to the new locations root - look in SYS:S/startup-sequence.
<pre>
Assign Development: SYS:Development
Assign C: Development:bin ADD
</pre>
In the aros build instructions. you need to check out contrib and/or ports into your AROS source directory, as subdirs. then, assuming you are building in an external build dir, as you should, you simply configure and "make contrib" for instance or whatever submodule you might want to build.
===Beginners Tutorials in C C++===
As AROS is [http://eab.abime.net/showthread.php?t=29856 C based] API compatible to AmigaOS 3.x, so most of the information on programming C on the Amiga applies to AROS as well. Please note that there is a lot of AmigaOS 1.3 (1985-1989) and [https://www.markround.com/amigaguide AmigaOS AOS 2.x (1990-1992)] information around but OS3.1 is recommended but limited in amount.
Brief overview of what is required to write AROS Applications
# Using [[Aros/Developer/Docs/Libraries/Intuition|Intuition]] for basic screens/windows
# Using graphics within windows via 8bit [[Aros/Developer/Docs/Libraries/Graphics|graphics]] and so onto 15-16-24bit [[Aros/Developer/Docs/Libraries/CGFX|cybergraphx]]
# Load and save work to [[Aros/Developer/Docs/Libraries/DOS|dos]] disk drives
# Using the [[Aros/Developer/Zune|ZUNE GUI Environment]]
Writing native games require this extra information
# Using [[Aros/Developer/AHIDrivers|AHI audio hardware independent API]]
# Using USB joystick/joypad with the Poseidon USB stack through [[Aros/Developer/Docs/Libraries/LowLevel|LowLevel]] library
Additional features that could be added later
# Adding additional [[Aros/Developer/Docs/Libraries/Locale|Locale]] language translations to your program
# Adding a [[Aros/Developer/Docs/Rexx|AREXX/Regina]] port to your application
# Executing Amiga(TM) [[Aros/User/DOS|DOS]] commands from your application
# Using [[Aros/Developer/Docs/Libraries/Icon|icons]] (.info files) and icon tooltypes (stack, version, and program startup options)
# Local couch or IP based SANA2 networking co-op multi player gaming support
Most AmigaOS programming books are nowadays very much out of date as most are from the late 1980s and do not cover later amigaOS releases like 3.1 for example, Rob Peck's book "Programmer's Guide to the Amiga". The Amiga ROM Kernel manuals aka RKMs like Libraries (3rd edition), Devices (), the AmigaDOS manual (3rd edition) and the Style Guide may have their uses. There are some reference examples from AmigaMail and Devcon notes (available again on an Amiga developers CD 2.1).
For Arexx then "The Amiga Programmer's Guide to ARexx" by Eric Giguere, which was published by Commodore is useful as well as an "Arexx Cookbook".
Curly brackets missing - try SHIFT + ALT + 7 or 0.
* Beginners C Guide [http://www.iu.hio.no/~mark/CTutorial/CTutorial.html C Tutorial],
* [http://thecguru.com/ C for beginners],
* [http://fresh2refresh.com/c/c-basic-program/ C programming basics] for students,
* [https://www.edx.org/courses Free Online course] from American Universities
* Reference Amiga [http://amigadev.elowar.com/ API reference].
* AROS based c source can be found [[Aros/Developer/Docs/Examples|here]] and lots of example code can be found inside [https://github.com/aros-development-team AROS sources] themselves and from the contrib section of the archives from [https://github.com/aros-development-team/contrib Aros site], and study the AROS applications source code, e.g. the test programs from the Tests drawer (folder/directory). Take a look at the code of some smaller AROS programs might be a better and more up to date guide. Some old Os3 [http://www.blackfiveservices.co.uk/amiga-c/ here]
When you upload your builds, please write the architecture (like i386-aros, x86_64-aros, etc.) in the archive name
and it is also advisable to write in the field "Requirements" what ABI (ABIv11, ABIv0 or ABIv1)
===Compiling C/C++ Code===
Native, although we have a IDE Integrated Development Environment (Murks), it does lack a debugger. Whilst others use a combination of a text editor and shell to edit code. Most though use an AROS hosted on Linux to take advantage of the better GCC tools like GDB and various IDEs.
Open shell - its a menu option at the top left of Wanderer (desktop). Or by using the right Win key and w (or F12 and w) within the directory with the source code. Type in
sh
to change the amiga shell into a unix shell. You can then type in ls (unix equivalent to amiga dir). Take a look [http://en.wikibooks.org/wiki/Linux_commands here] for more commands.
For a single file program-name.c or program-name.cpp
gcc -o program-name program-name.c
or
g++ -o program-name program-name.cpp
or
g++ -o test -Wall -g main.cc texturelib.cpp xmodelib.cc -lsdl -lgl
To close the shell, click on the top left-hand corner to close (twice). Once to get back the aros shell and then again to close finally. Use [http://freshmeat.net/projects/cksfv/ cksfv] as a test.
Some source code requires the addition of Amiga API libraries, like dos, which you can flag at the compile time as
gcc -o julia.exe julia.c -ldos
For DOS use -ldos as example and if you are compiling mui codes it will be -lmui or intuition -lintuition. Other missing symbols are due to linker libraries being necessary for linking in functions that aren't in the standard C libraries. For example some source code would need added
-lz or -lm or -lpng or -larosc etc.
use this in unix line command mode to search for 'search-item' in many .c files (*.cpp for c++, etc.)
grep -l 'search-item' *.c
If the program is not executable, try using parameter fno-common
"Delete #?.o"? Or if you are using abcshell then "rm *.o"
:''More information: [[Aros/Developer/Porting software]]''
=== How to make Apps have AROS 64-bit specific support code ===
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
AROS64 already uses 64bit addressing, it just doesn't setup the MMU for more than 4GB physical memory currently.
When porting software to AROS64 it is "mostly" a case of converting ULONG's that are used to store pointers, into IPTR's instead, etc. Another quirk, is making sure items on the stack are the correct size by using the STACKED attribute for them.
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
compiling mui stuff for aros setting -std=gnu99 is necessary, had -std=c99 usually
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order.
crash which suggest memory corruption. From my experience porting from 32-bit to 64-bit these kinds of errors can happen if a pointer is passed somewhere via ULONG variable. Then half of the pointer is cut.
To generate this error, please run AROSBootstrap with -m 1024. This will allocate heap to 64-bit address space which will make these errors immediatelly visible. These types of crashes are hard to debug. Disabled as little code as possible to stop corruption from occurring and then try to read from the code where it can be broken
Crashing in tslf_freevec is another symptom of memory corruption and these memory corruptions will manifest differently on different setups.
==Coding conventions==
As the AROS core source is a shared developer experience, there are rules regarding structure and style. When it comes to your creating your own app and coding, the structure and style should be your own, i.e. you should enjoy what you do and do it so that you can understand what is going on.
===Layout===
<syntaxhighlight lang="c">
static void 1st_function()
{
program
exit(0);
}
int main(void)
{
1st_function();
2nd_function();
3rd_function();
return 0;
}
</syntaxhighlight>
<syntaxhighlight lang="c">
struct Screen * openscreen(void);
struct Window *openwindow(struct Screen *screen, const char *title, LONG x, LONG y, LONG w, LONG h);
VOID 1st_function();
VOID 2nd_function();
int main(int argc, char **argv)
{
program
return 0;
} /* main */
VOID 1st_function()
{
}
VOID 2nd_function()
{
}
</syntaxhighlight>
===General style===
This code is used by many people and therefore you should keep some things in mind when you submit source code:
* Keep things simple
* Keep the source clean
* Always know what you are doing, if not flag it and describe what needs to be done...
* Explain clearly/simply what you are doing
* Remember that you write code once but that it is read many times by many people
===Comments===
AROS uses some of the comments in the source to generate the documentation. Therefore it's necessary to keep a certain format so the tools can find their information. Other comments are ignored but they should explain what you thought when you wrote the code. If you really can't think of an explanation, then don't write the code a second time like this:
<pre>
/* This adds 1 to t */
t ++;
</pre>
What we think of is this:
<pre>
/* Go on with next element */
t ++;
</pre>
===Formatting===
This is only '''IMPORTANT''' if you are going to work on the core AROS code or contrib but not applications which may reside outside like on AROS Archives or other websites.
<syntaxhighlight lang="c">
{
/* a */
struct RastPort * rp;
int a;
/* b */
rp = NULL;
a = 1;
/* c */
if (a == 1)
printf ("Init worked\n");
/* d */
if
(
!(rp = Get_a_pointer_to_the_RastPort
(
some
, long
, arguments
)
)
||
a <= 0
)
{
printf ("Something failed\n");
return FAIL;
}
/* e */
a = printf ("My RastPort is %p, a=%d\n"
, rp
, a
);
return OK;
}
</syntaxhighlight>
Looks ugly, eh ? :-) Ok, here are the rules:
<pre>
If several lines contain similar code, put similar things below each other (see a and b);
Put spaces between operands and operators
Put braces {}, brackets [] and parentheses () below each other (d) if there is much code between.
Brackets and parentheses may be in one line if the code between is small (c)
Indent by 4 Spaces. Two indent levels may be abbreviated by one tab.
</pre>
'''Before committing please normalize the indentation - if you have a mixture of tabs and spaced - please always use spaces, 1 tab = 4 spaces.'''
The reasons for this are:
# While some editors can use an arbitrary sizes for tabs, it's a bit complicated to tell another editor which tab size was used by the one used to write the code.
# Most code in AROS was written this way and your code should look like the rest.
# You can print this code on any printer without special tools to "fix" the tabs.
# Most editors have smart tabs which do exactly this. If your editor doesn't, write a bug report.
If you have a function with many arguments (d, e) you should put the parentheses in lines of their own and each argument in one line (d) or put the first argument behind the opening parentheses (e) and each following argument in a line of its own with the comma in front. The closing parentheses is in a line of its own and aligned with the beginning of the expression (i.e. the a and not the opening parentheses or the printf()).
Use a single blank line to separate logical blocks. Large comments should have a blank line before and after them, small comments should be put before the code they explain with only one blank line before them.
If you see any TABS in AROS core sources then the suggestion is to "detab the file and commit that separately" either before or afterwards from making functionality changes. Make two commits instead of one. This makes it easier for others to see the real changes instead of having to dig through multiple lines of irrelevant diffs.
===Eliminating Global Variables===
i.e. pass variables to functions (local scope) or classes making it easier to track and debug your code.
Any time you find that you need a particular thing in 'a lot of different places', chances are that all those places are conceptually related, and so you can create a class, a namespace, a function, or some other higher-level organizational unit to represent that relationship. This makes the program easier to understand.
Bad Designs
* All variables are global.
* There are no standalone functions, only sub-procedures which act on the global variables.
* Every sub-procedure is at least 500 lines to several thousand
* Every sub-procedure has more than one task to perform
* Copy-paste is preferred to writing methods, AND subtle changes are made in the middle of the code
Good Designs
* structure program into functions (C or basic) - top-down procedural approach
* put in class(es) (freepascal or C++) - the object is fixed and you use methods to access the object
<pre>
class String_List
{
private:
list<string> m_List; // member
public:
void read_strings() { /* read strings into m_List */ }
void print_strings() { /* write contents of m_List to stdout */ }
void sort_strings() { /* sort contents of m_List */ }
void sort_strings_reverse() { /* reverse-sort contents of m_List */ }
void unique_strings() { /* remove duplicate strings */ }
};
int main()
{
String_List myList; // local
myList.read_strings();
myList.sort_strings();
myList.print_strings();
myList.sort_strings_reverse();
myList.print_strings();
myList.unique_strings();
myList.print_strings();
return 0;
}
</pre>
This way it is very easy to replace the list with new list for debugging purposes, or replacing the methods without replacing the list, when you want different results. You only have to replace the content of the local variables.
So create the structure that matches your data (linked lists, trees, arrays, etc.) and what to do with them (sorting, searching, etc.)
<pre>
.h usually contain #define #include typedef enum struct extern screen and window definitions (data structures)
.c should contains functions and algorithms
</pre>
One way to look at it is that menu headings act as the .c file and sub-menu headings as functions.
When you start a project, you place a couple of declarations in the include file. As the project continues, you place more and more declarations in the include file, some of which refer to or contain previous declarations. Before you know it, you have a real mess on your hands. The majority of your source files have knowledge of the data structures and directly reference elements from the structures.
Making changes in an environment where many data structures directly refer to other data structures becomes, at best, a headache. Consider what happens when you change a data structure.
Use good variables names to help clarify code and only comment when you need to explain why a certain programming approach was made.
You're Refactoring Legacy Code, you see a global, you want to get rid of it. How do you do this?
Exactly what to do depends on how the global is used. The first step is to find all uses of the global throughout the code, and get a feel for what the significance of the variable is and how it relates to the rest of the program. Pay particular attention to the "lifetime" of the variable (when it gets initialized, when it is first used, when it is last used, how it gets cleaned up). Then, you will probably make the global a data member of a class (for OO languages), or you will write some get/set functions. Converting to the Singleton Pattern is common, but you may discover that it makes more sense for the data element to be a member of an existing singleton, or maybe even an instance variable.
# Create a basic read method, either as a class or a global function. Replace all reads with the access method, but leave the variable defined as a global.
# Review each of the writes to the method and extract action functions one at a time. Unless two operations are coded identically in the original code, extract each write access separately.
# Change the variable scope from global to local.
# Analyze similar action functions to determine if any can be merged, i.e., there are no functional differences in the results of the function, just differences in the implementation details.
# Review the calls to the read method and see if a more complex functionality should be applied. Follow the approach for writes and unless implementations are identical, create separate access functions.
# Analyze the access functions for duplication.
As returning variables by "passing by value" are forgotten, so "passing by reference" is often used instead. The reference is a pointer to the variable so the value is remembered when returned.
Alternatives
* Hidden Globals
* Singleton Pattern
* Database or TupleSpace
* Context Object
* Dependency Injection
* Stateful Procedures
==AROS/AmigaOS APIs and Docs==
<pre>
Library:
- Private data structure
- Many public access methods
Device:
- Private data structure
- Two (BeginIO/AbortIO) access methods
Resource:
- Public data structure
- *NO* access methods
</pre>
And, being Amiga OS-compatible, there are exceptions to all of these.
===System Libraries===
The [http://aros.sourceforge.net/documentation/developers/app-dev/index.php AROS Guide To Libraries] can be used as a guide to individual commands and Old Dev Docs are used in application programming.
The generated [http://aros.sourceforge.net/documentation/developers/autodocs/ Aros AutoDocs HTML Read] or download [http://aros.sourceforge.net/download.php docs-html.bz2 from here].
Amiga/Aros styles libraries are very different from windows and linux libs. Typical .so/dll libraries are foreign to most Amiga-like OS
*[[Aros/Developer/Docs/Libraries/AROSC|arosc.library]]
*[[Aros/Developer/Docs/Libraries/AmigaGuide|amigaguide.library]]
*[[Aros/Developer/Docs/Libraries/ASL|asl.library]]
*[[Aros/Developer/Docs/Libraries/Bullet|bullet.library]]
*[[Aros/Developer/Docs/Libraries/BSDsocket|bsdsocket.library]]
*[[Aros/Developer/Docs/Libraries/CAMD|camd.library]]
*[[Aros/Developer/Docs/Libraries/Codesets|codesets.library]]
*[[Aros/Developer/Docs/Libraries/CGFX|cybergraphics.library]]
*[[Aros/Developer/Docs/Libraries/CGXVIDEO|cgxvideo.library]]
*[[Aros/Developer/Docs/Libraries/Commodities|commodities.library]]
*[[Aros/Developer/Docs/Libraries/DataTypes|datatypes.library]]
*[[Aros/Developer/Docs/Libraries/DiskFont|diskfont.library]]
*[[Aros/Developer/Docs/Libraries/DOS|dos.library]]
*[[Aros/Developer/Docs/Libraries/Exec|exec.library]]
*[[Aros/Developer/Docs/Libraries/Expansion|expansion.library]]
*[[Aros/Developer/Docs/Libraries/FreeType2|freetype.library]]
*[[Aros/Developer/Docs/Libraries/GadTools|gadtools.library]]
*[[Aros/Developer/Docs/Libraries/Graphics|graphics.library]]
*[[Aros/Developer/Docs/Libraries/Icon|icon.library]]
*[[Aros/Developer/Docs/Libraries/Identify|identify.library]]
*[[Aros/Developer/Docs/Libraries/IFFParse|iffparse.library]]
*[[Aros/Developer/Docs/Libraries/Intuition|intuition.library]]
*[[Aros/Developer/Docs/Libraries/Keymap|keymap.library]]
*[[Aros/Developer/Docs/Libraries/Layers|layers.library]]
*[[Aros/Developer/Docs/Libraries/Locale|locale.library]]
*[[Aros/Developer/Docs/Libraries/LowLevel|lowlevel.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingBas|mathieeesingbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubBas|mathieeedoubbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingTrans|mathieeesingtrans.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubTrans|mathieeedoubtrans.library]]
*[[Aros/Developer/Docs/Libraries/Mathtrans|mathtrans.library]]
*[[Aros/Developer/Docs/Libraries/MUIMaster|muimaster.library]]
*[[Aros/Developer/Docs/Libraries/Partition|partition.library]]
*[[Aros/Developer/Docs/Libraries/PopUpMenu|popupmenu.library]]
*[[Aros/Developer/Docs/Libraries/OOP|oop.library]]
*[[Aros/Developer/Docs/Libraries/Regina|regina.library]]
*[[Aros/Developer/Docs/Libraries/Reqtools|reqtools.library]]
*[[Aros/Developer/Docs/Libraries/RexxSysLib|rexxsyslib.library]]
*[[Aros/Developer/Docs/Libraries/ScreenNotify|screennotify.library]]
*[[Aros/Developer/Docs/Libraries/TTEngine|ttengine.library]]
*[[Aros/Developer/Docs/Libraries/Thread|thread.library]]
*[[Aros/Developer/Docs/Libraries/Utility|utility.library]]
*[[Aros/Developer/Docs/Libraries/Xadmaster|xadmaster.library]]
*[[Aros/Developer/Docs/Libraries/Workbench|workbench.library]]
*[https://github.com/aros-development-team/AROS/commit/c82e86b8480277998014cc327b56c7664023a52f ClassAct Reaction boopsi class]
===AROS Subsystems===
# [[Aros/Developer/Zune|Zune MUI compatible GUI]]
# [[Aros/Developer/AROSAppPackages|AROS Application Packages]]
# AHI Audio Drivers - [[Aros/Developer/AHIDrivers|Usage]]/[[Aros/Developer/AHIDriversDev|Development]]
# AROSTCP Sana2 Network Interface Drivers - [[Aros/Developer/NICDrivers|Usage]]/[[Aros/Developer/NICDriversDev|Development]]
# [[Aros/Developer/AmiSSL|AmiSSL]]
# gfx.hidd/cybergraphics Video Drivers - [[Aros/Developer/GfxDrivers|Usage]]/[[Aros/Developer/GfxDriversDev|Development]]
# IO Device Drivers - [[Aros/Developer/IODeviceDrivers|Usage]]/[[Aros/Developer/IODeviceDriversDev|Development]]
# USB Device Drivers - [[Aros/Developer/USBDrivers|Usage]]/[[Aros/Developer/USBDriversDev|Development]]
# PCI Device Drivers - [[Aros/Developer/PCIDrivers|Usage]]/[[Aros/Developer/PCIDriversDev|Development]]
# [http://www.libsdl.org/ SDL] [https://github.com/search?q=repo%3Aaros-development-team%2Fcontrib%20SDL2&type=code SDL2 commits], [https://github.com/aros-development-team/contrib/commit/c62c3c425c35bac19dadc23be092b0b13a66c76c SDL3 initial commit], []
# [[w:Gallium3D|Gallium 3D]] [http://www.mesa3d.org/ openGL aka Mesa] - [[Aros/Developer/OpenGL|Usage]]/[[Aros/Developer/OpenGLDev|Development]] [http://www.swiftless.com/opengltuts.html Swfitless]
# A small subset of GTK2 through [http://sourceforge.net/projects/gtk-mui/ MUI-GTK]
# Cairo 2D Engine - [[Aros/Developer/Cairo|Usage]]/[[Aros/Developer/Cairo|Development]]
# [[Aros/Developer/Scalos|Scalos desktop API and plugin modules]]
# [[Aros/Developer/VHI|VHI video driver]]
====HIDDs====
*[[Aros/Developer/Docs/HIDD/HIDDClass|hiddclass.hidd]]
*[[Aros/Developer/Docs/HIDD/Graphics|graphics.hidd]]
*[[Aros/Developer/Docs/HIDD/VesaGfx|vesagfx.hidd]]
*[[Aros/Developer/Docs/HIDD/ATI|radeon.hidd]]
*[[Aros/Developer/Docs/HIDD/NVidia|nvidia.hidd]]
*[[Aros/Developer/Docs/HIDD/Nouveau|nouveau.hidd]]
*[[Aros/Developer/Docs/HIDD/Kbd|kbd.hidd]]
*[[Aros/Developer/Docs/HIDD/Mouse|mouse.hidd]]
*[[Aros/Developer/Docs/HIDD/i2c|i2c.hidd]]
*[[Aros/Developer/Docs/HIDD/IRQ|irq.hidd (deprecated)]]
*[[Aros/Developer/Docs/HIDD/PCI|pci.hidd]]
*[[Aros/Developer/Docs/HIDD/PCIPC|pcipc.hidd]]
*[[Aros/Developer/Docs/HIDD/Serial|serial.hidd]]
*[[Aros/Developer/Docs/HIDD/Thunderbolt|thunderbolt.hidd]]
https://github.com/aros-development-team/AROS/commit/4f02ea691799aff3a01f60cfa5f9182c82fc57a8
HIDD are used for device/peripheral low level hardware support drivers. The HIDD system is split up into a collection of classes with a strict inheritance hierarchy. A HIDD class implements a device driver for a single device or in rare cases a group of devices and provides an interface for other programs and devices to access.
In order to maintain portability of interfaces across a wide range of hardware this interface will in general not present the raw interface to the underlying hardware. Instead it will present a generic interface that describes many different hardware implementations. This allows for the best reuse of both interfaces and code.
HIDD API is heavyweight though. You need to open a HIDD library, open oop.library, instantiate an object (even if there's no object); and object calls are more costly compared to plain library calls.
Basically your task is to implement a subclass of hidd.ata.bus for your hardware. just implementing the XXXATA__Hidd_ATABus__xxxxxx methods for the Amiga chipset - and appropriate versions of the interface_xxx.c file(s). pretty much everything in probe.c could be ignored - just write a replacement scan for relevant amiga devices and store whatever info you need in the bus data? only the "SUPPORT_LEGACY" blocks might be related.
You do not need to depend on PCI API. PCI is just a way to discover the hardware on PCs, etc.
<hidd/pci.h> includes (at some depth) <interface/HW.h>, which defines IID_HW. This comes from the 'generic' HIDD class in:
rom/hidds/hidd/hiddclass.conf
did not split up HIDD and HW because they are always used in pair. It's the same as hidd/pci.h bringing definition for: PCI, PCIDriver and PCIDevice. PCI is actually PCIHW, just the name was not changed for backwards compatibility reasons. HW is a 'hub' where HIDD instances plug in.
ATA HIDD aoHidd_ATABus_Use32Bit value is completely ignored unless ata.device first detects correct command line parameter.
Yes. Unfortunately I was unable to find any comment in code or svn history with explanations. Looked at Linux source, there 32-bit PIO is also controller driver's property. Some of them enable it, some don't.
Actually, switching the default to ON should be safe. ata.device is fail-safe at this because during IDENTIFY command it validates upper 16 bits, and if they appear to be zeroes in all 128 longwords, then 32-bit mode is switched off. But, nevertheless, I know how tricky hardware can be, so I decided not to change original behavior. If you think it's wrong in some cases, then it's possible to add one more attribute like aHidd_ATABus_Default32Bit. If set to YES, then this means that 32-bit PIO is safe to use by default.
====Devices====
*[[Aros/Developer/Docs/Devices/ATA|ata.device]]
*[[Aros/Developer/Docs/Devices/Console|console.device]]
*[[Aros/Developer/Docs/Devices/Narrator|narrator.device]]
*[[Aros/Developer/Docs/Devices/Printer|printer.device]]
*[[Aros/Developer/Docs/Devices/Trackdisk|trackdisk.device]]
*[[Aros/Developer/Docs/Devices/AmberRAM|amberram.device]]
*[[Aros/Developer/Docs/Devices/Timer|timer.device]]
*[[Aros/Developer/Docs/Devices/|.device]]
The Amiga used [[Aros/Developer/Docs/Devices|Devices]] to communicate with [http://aros-exec.org/modules/newbb/viewtopic.php?start=0&topic_id=3475&viewmode=flat&order=ASC additional hardware]. AROS has replaced these hardware devices with hidd equivalents but some are still retained for backwards compatibility.
Local libraries/devices/handlers,etc. are supposed to override the ones in ROM if their version is higher than the one in ROM.
Here is the list of commands exec default:
{| class="wikitable"
| CMD_CLEAR
| Purge the buffer of the device
|----
| CMD_READ
| Playback Control
|----
| CMD_STOP
| Stopped the activity of the device
|----
| CMD_FLUSH
| Empty the queue of commands
|----
| CMD_RESET
| Reset a device
|----
| CMD_WRITE
| Playback Control
|----
| CMD_INVALID
| Create an error
|----
| CMD_UPDATE
| Gets updated device
|----
| CMD_START
| Will restart the device
|----
|}
While most other "stuff you communicate with" in AmigaOS are devices <ref>AMIGA ROM Kernel Reference Manual: Devices, 3rd Edition. Commodore-Amiga, Inc. Addison-Wesley, 1991. {{ISBN|0-201-56775-X}}</ref> that share a [http://gega.homelinux.net/AmigaDevDocs/ common base interface]. [[Aros/Developer/Docs/Devices1.3|OS 1.3 Device Drivers]].
====Handlers====
:[[Aros/Developer/Docs/Handlers/Pipe|pipe.handler]]
:[[Aros/Developer/Docs/Handlers/Port|port.handler]]
:[[Aros/Developer/Docs/Handlers/SFS|sfs.handler]]
:[[Aros/Developer/Docs/Handlers/FAT|fat.handler]]
:[[Aros/Developer/Docs/Handlers/PFS|pfs.handler]]
:[[Aros/Developer/Docs/Handlers/NTFS|fuse.handler]]
:[[Aros/Developer/Docs/Handlers/FFS|ffs.handler]]
filesystem handlers have their own separate system consisting of completely differently structured messages that dos.library use to pass requests (for things like reading, writing, getting directory contents etc.) to them. AROS originally went with implementing filesystem handlers as devices, which might arguably be more consistent with the rest of the AmigaOS API but which is quite incompatible with AmigaOS itself. However, it made it far harder to port filesystems and the gains were comparatively small, and so there's been a long standing goal of fixing this incompatibility. It has now, June 2011, been reintroduced to all AROS flavors.
are argstr and argsize valid for the handler startup environment?
DOS/RunHandler() calls DOS/CreateNewProcTags(), and then CallEntry() (in rom/dos/exit.c) to start the handler, so yes, argstr and argsize are *present* in the call signature of the handler.
Granted, argstr will be NULL and argsize 0, but those values *are* passed to the handler function using:
<pre>
AROS_UFC3(ULONG, entry,
AROS_UFCA(STRPTR, argptr, A0),
AROS_UFCA(ULONG, argsize, D0),
AROS_UFCA(struct ExecBase *, SysBase, A6));
</pre>
Creating your own [without the whole build tree http://pagesperso-orange.fr/franck.charlet/temp/radeon.zip] and then
<pre>
make stub
make
make install
</pre>
SFS has two Root blocks, one at the start and one at the end of the disk. The Root blocks both contain the same information. They hold various information about the disk structure and have the locations of some important blocks used by the filesystem.
The Root ObjectContainer contains the Root directory Object. The name of this Object is the name of the volume. It is identical to a normal directory Object.
The Bitmap is used to keep track of free space. Each bit in a bitmap represents a single block. A set bit indicates a free block and a cleared bit a used block.
AdminSpaceContainers are used to keep track of space which has been reserved for storing administration blocks. Only the Bitmap, the Root blocks and the actual data stored in files aren't stored in administration space. Administration space is allocated in chunks of 32 blocks at a time. A single AdminSpaceContainer can hold information about a large number of such areas each of which has its own little bitmap of 32 bits.
Extents are stored in a B-Tree. The Root block holds a pointer to the root of the Extent B-Tree. Extents keep track of space in use by a specific file. Each fragment a file consists of has its own Extent. Extents are in a double linked list. The list can be used to locate the next or previous fragment of a file.
Below is the standard block header. This header is found before EVERY type of block used in the filesystem, except data blocks. The id field is used to check if the block is of the correct type when it is being referred to using a BLCK pointer. The checksum field is the SUM of all LONGs in a block plus one, and then negated. When applying a checksum the checksum field itself should be set to zero. The checking a checksum the checksum is okay if the result of the checksum equals zero. The ownblock BLCK pointer points to the block itself. This field is an extra safety check to ensure we are using a valid block.
Field Type Description
id ULONG The id field is used to identify the type of block we are dealing with. It is used to make sure that when referencing a block we got a block of the correct type. The id consist of 4 bytes and each blocktype has its own unique foure letter code.
checksum ULONG This field contains the sum of all longs in this block, plus one and then negated. The checksum can be used to check if the block hasn't been corrupted in any way.
ownblock BLCK Points to itself, or in other words, this field contains the block number of this block. This is yet another way to check whether or not a block is valid.
<pre>
struct fsBlockHeader {
ULONG id;
ULONG checksum;
BLCK ownblock;
};
</pre>
The algorithm to calculate the checksum of a block:
<pre>
ULONG calcchecksum(struct fsBlockHeader *block, LONG blocksize} {
ULONG *data=(ULONG *)block;
ULONG checksum=1;
block->checksum=0;
while(blocksize>0) {
checksum+=*data++;
blocksize-=4;
}
return(-checksum);
}
</pre>
A Root block contains very important information about the structure of a SFS disk. It has information on the location and size of the disk, the blocksize used, locations of various important blocks, version information and some filesystem specific settings.
A SFS disk has two Root blocks; one located at the start of the partition and one at the end. On startup the filesystem will check both Roots to see if it is a valid SFS disk. If either one is missing SFS can still continue (although at the moment it won't).
A Root block could be missing on purpose. For example, if you extend the partition at the end (adding a few MB's) then SFS can detect this with the information stored in the Root block located at the beginning (since only the end-offset has changed). Same goes for the other way around, as long as you don't change start and end point at the same time.
When a Root block is missing because the partition has been made a bit larger, then SFS will in the future be able to resize itself without re-formatting the disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
version UWORD The version of the filesystem block structure. You can check this field to identify what version of the filesystem your dealing with it and to see if you can handle this structure correctly. Don't try to interpret the disk's structure when this field contains an unknown version number!
sequencenumber UWORD Used to identify which Root block was written last in case the sequencenumber on both Root blocks don't match.
datecreated ULONG Creation date of this volume. This is the date when the disk was last formatted and will never be changed.
bits UBYTE Various settings, see below.
<pre>
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
reserved1 ULONG[2] Reserved, leave zero.
firstbyteh ULONG High 32-bits of a 64-bit number. This is the first byte of our partition relative to the start of the disk.
firstbyte ULONG Low 32-bits of a 64-bit number.
lastbyteh ULONG High 32-bits of a 64-bit number. This is the last byte (exclusive) of our partition relative to the start of the disk.
lastbyte ULONG Low 32-bits of a 64-bit number.
totalblocks ULONG The total number of blocks this partition consists of.
blocksize ULONG The size of a block of this partition.
reserved2 ULONG[2] Reserved, leave zero.
reserved3 ULONG[8] Reserved, leave zero.
bitmapbase BLCK Block number of the start of the Bitmap.
adminspacecontainer BLCK Block number of the first AdminSpaceContainer.
rootobjectcontainer BLCK Block number of the ObjectContainer which contains the root of the disk (this is where the volume name is stored).
extentbnoderoot BLCK Block number of the root of the Extent B-Tree.
reserved4 ULONG[4] Reserved, leave zero.
</pre>
<pre>
struct fsRootBlock {
struct fsBlockHeader bheader;
UWORD version;
UWORD sequencenumber;
ULONG datecreated;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
ULONG reserved1[2];
ULONG firstbyteh;
ULONG firstbyte;
ULONG lastbyteh;
ULONG lastbyte;
BLCK totalblocks;
ULONG blocksize;
ULONG reserved2[2];
ULONG reserved3[8];
BLCK bitmapbase;
BLCK adminspacecontainer;
BLCK rootobjectcontainer;
BLCK extentbnoderoot;
ULONG reserved4[4];
};
</pre>
AdminSpaceContainers are used to store the location and bitmap of each administration space. The AdminSpaceContainers are located in a double linked list and they contain an array of fsAdminSpace structures. There is one fsAdminSpace structure for every administration space on disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
next BLCK The next AdminSpaceContainer, or zero if it is the last in the chain.
previous BLCK The previous AdminSpaceContainer, or zero if it is the first AdminSpaceContainer.
bits UBYTE The number of bits in each in the bits ULONG in the fsAdminSpace structure.
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
adminspace struct fsAdminSpace An array of fsAdminSpace structures. The size of the array is determined by the current blocksize.
<pre>
struct fsAdminSpaceContainer {
struct fsBlockHeader bheader;
BLCK next;
BLCK previous;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
struct fsAdminSpace adminspace[0];
};
</pre>
Field Type Description
space BLCK The first block of an administration space.
bits ULONG A small bitmap which is used to determine which blocks in an administration space are already in use. The number of bits in this bitmap is determined by the bits field in the AdminSpaceContainer.
<pre>
struct fsAdminSpace {
BLCK space;
ULONG bits;
};
</pre>
The fsBitmap structure is used for Bitmap blocks. A bitmap block is used to keep track of which space is in use and which isn't for a particular area of a disk. All bitmap blocks together keep track of the free space for an entire disk. The location of the first bitmap block is known and all other bitmap blocks are stored in order after the first one.
Field Type Description
bheader struct fsBlockHeader Standard block header.
bitmap ULONG An array of ULONG's. These hold the actual information on which blocks are in use and which aren't.
<pre>
struct fsBitmap {
struct fsBlockHeader bheader;
ULONG bitmap[0];
};
</pre>
Each bit in a bitmap block (except for the block header) represents a single block. If the bit is set than the block is free, and if the bit is clear then it is full. The first ULONG in the bitmap area of the first bitmap block represents blocks 0 through 31 on the disk. Bit 31 of this ULONG is block 0, 30 is block 1, and so on. Bit 0 of the first ULONG represents block 31.
Below is a table to clarify how bitmaps work even further. The first column is the bitmap block number, the second column is the number of the ULONG in the bitmap array. The third column is the bit number in this ULONG, and the last column is the block which this specific bit, in this specific bitmap block represents.
We'll assume here that a bitmap block has room for 120 ULONG's (meaning there is room for storing 32 * 120 bits).
<pre>
Bitmap block ULONG number Bit number Block represented
1 (first) 0 31 0
1 0 30 1
... ... ... ...
1 0 1 30
1 0 0 31
1 1 31 32
... ... ... ...
1 2 31 64
1 2 30 65
... ... ... ...
1 119 0 3839
2 0 31 3840
2 0 30 3841
... ... ... ...
</pre>
The last bitmap block doesn't need to be completely used. The unused bits (which belong to blocks which do not exist) all have to be clear, to indicate that these blocks are in use.
The fsObjectContainer structure is used to hold a variable number of fsObjects structures (Objects) which have the same parent directory. Each ObjectContainer must contain at least one Object. If there is space in the ObjectContainer not used by the variable number of Objects then that space is zero filled. Objects always start at 2-byte boundaries, which means sometimes a padding byte is inserted between two Objects.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the parent Object, or 0 if this object has no parent (which is only the case for the Root directory).
next BLCK The next ObjectContainer belonging to this directory, or zero if it is the last in the chain.
previous BLCK The previous ObjectContainer belonging to this directory, or zero if it is the first ObjectContainer in this directory.
object struct fsObject A variable number of fsObject structures. The number of structures depends on the individual sizes of each fsObject structure and the blocksize. These structures are located directly after each other with at most 1 byte of padding between them to get the structures aligned on a 2 byte boundary.
<pre>
struct fsObjectContainer {
struct fsBlockHeader bheader;
NODE parent;
BLCK next;
BLCK previous;
struct fsObject object[0];
};
</pre>
fsHashTable is the structure of a HashTable block. It functions much like the hash table found in FFS user directory blocks, except that it is stored in a separate block. This block contains a number of hash-chains (about 120 for a 512 byte block). Each hash-chain is a chain of Nodes. Each Node has a pointer to an Object and a pointer to the next entry in the hash-chain. Using such a hash-chain you can locate an object quickly by only knowing its name.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the directory Object this HashTable block belongs to.
hashentry NODE An array of Nodes. Each Node represents the start of a hash-chain (singly linked). A hash-value is calculated using the name of a file or directory, and this value determines in which chain the Object is linked. If there are no entries in a hash-chain then the hashentry value is zero.
<pre>
struct fsHashTable {
struct fsBlockHeader bheader;
NODE parent;
NODE hashentry[0];
};
</pre>
To calculate the hash-value using a name of an Object as input use these routines:
<pre>
UWORD calchash(UBYTE *name) {
UWORD hash=0;
/* Calculates a hash value over the passed in string.
The end of the string can be either a NUL byte or a
slash. The hash function is the same as the one
used in FastFileSystem set to international mode. */
while(name[hash]!=0 && name[hash]!='/') {
hash++;
}
while(*name!=0 && *name!='/') {
hash=hash*13+upperchar(*name++);
}
return((UWORD)(hash % (UWORD)((blocksize-sizeof(struct fsHashTable))>>2)));
}
UBYTE upperchar(UBYTE c) {
if((c>=224 && c<=254 && c!=247) || (c>='a' && c<='z')) {
c-=32;
}
return(c);
}
</pre>
The BNodeContainer is used to store B-Trees. Currently only one B-Tree is in use by this filesystem and it is used to store the location of file data. The fsBNodeContainer structure contains two other structures. The fsBlockHeader structure and the BTreeContainer structure.
Field Type Description
bheader struct fsBlockHeader Standard block header.
btc struct BTreeContainer Contains information about the B-Tree and its nodes contained in this block.
<pre>
struct fsBNodeContainer {
struct fsBlockHeader bheader;
struct BTreeContainer btc;
};
</pre>
First try and locate the Root block. It should start with "ROOT". SFS has two of these, one at the start of the partition and one at the end. One of the fields contains the block size, which will be the size of all important SFS blocks.
The root block has the root object container, which contains information about files and directories in the root directory. The object
containers basically hold one or more smaller structures that represent files and directories. Scanning them all should give you a list of
files and directories.
The root block also has the root of the Extent B-Tree. This is a standard B-Tree structure (not a binary tree) that is used commonly in
all kinds of system, you can read about how they work on Wikipedia if needed. The B-Tree holds the information about *where* all the data is
located for your files.
To recover your files, I'd do this:
* Find one of the root blocks, if not present, then figure out the block size your disk was using, and scan every block in turn to see if it
looks like an ObjectContainer (check the fsBlockHeader's ID, check if the ownblock number is equal to the block you are currently scanning,
and check its checksum). So if you currently have block 12, and you see a block with the correct id, and ownblock = 12 and its checksum is good,
then that's probably a valid ObjectContainer.
* With all the ObjectContainers found, you can extract filenames and directory names from these, but also the number of their first data
block (in the field data) and the file size. For small files (less than blocksize) this data block will be enough to recover the data.
For larger files, you might be lucky and all the remaining blocks are found after the first one (if the file was defragmented). You can't be
sure of that though so...
* For larger files, you need to find all the BNodeContainers. You could scan these in the same way you found all the ObjectContainers (look for
blocks with the correct id, ownblock number and checksum).
* With all the BNodeContainers found, you can try looking up the first data block of a file in the B-Tree structure. This is a bit complicated
-- the B-Tree consists of non-leaf nodes (blocks that only contain pointers to other B-Tree blocks), the isLeaf flag indicates this. Or it
can be a B-Tree leaf block. The leaf blocks contain extra information per entry (see https://hjohn.home.xs4all.nl/SFS/extents.htm)
<pre>
struct fsExtentBNode {
ULONG key;
ULONG next;
ULONG prev;
UWORD blocks;
};
</pre>
The key should be a block of a file (the first of a range), that is 1 to 65535 block long (depending the "blocks" field). If the file is split
up into more parts, then "next" will contain block number of the next range of blocks. You need to look this up again in the B-Tree
structure to find out how large it is.
You can for the most part ignore the other structures (bitmap, admin containers). The fsObjects and B-tree containers is what you'll need to
recover the data.
====Resources====
<pre>
rom/storage/mmakefile.src
rom/storage/storage.conf
rom/storage/storage_device.c
rom/storage/storage_ids.c
rom/storage/storage_init.c
rom/storage/storage_intern.h
rom/storage/storage_mount.c
rom/storage/storage_unit.c
</pre>
<pre>
rom/storage/includes/device.h
rom/storage/includes/unit.h
rom/storage/includes/volume.h
rom/storage/storage_intern.h
</pre>
<pre>
</pre>
*[[Aros/Developer/Docs/Resources/ACPI|acpi.resource]]
*[[Aros/Developer/Docs/Resources/Battclock|battclock.resource]]
*[[Aros/Developer/Docs/Resources/Bootloader|bootloader.resource]]
*[[Aros/Developer/Docs/Resources/Cia|cia.resource]]
*[[Aros/Developer/Docs/Resources/Filesystem|FileSystem.resource]]
*[[Aros/Developer/Docs/Resources/Hostlib|hostlib.resource]]
*[[Aros/Developer/Docs/Resources/Kernel|kernel.resource]]
*[[Aros/Developer/Docs/Resources/Misc|misc.resource]]
*[[Aros/Developer/Docs/Resources/Processor|processor.resource]]
==Debugging Code==
Please use the [http://sourceforge.net/tracker/?group_id=43586&atid=439463 AROS Bug Tracker] if any issues are found.
GRUB Command line list
<pre>
sysdebug
usbdebug - allows to see Poseidon's log in debug output
</pre>
How do I get debugging out of InitResident ? If running i386 hosted on linux sysdebug=initresident on command line.
This way you can enable any of listed flags. sysdebug=all stands for "everything"
Have an executable (crosscompiled C++ code) which has 6 MB size on disk, but after loading it in memory, 250 MB RAM is taken. Any software that would split AROS executable into ELF part which would show actual size values?
readelf -S executable
it will show you all sections in elf file, including sizes and requested alignment.
objdump -h filename
That's will give you a quick overview of the sections and sizes. Ignore all the .debug.* sections.
Would hazard a guess that you have a large .bss section. That's pretty common in C++.
Next step:
nm—size-sort filename | grep ' [bB] '
The last few will be your biggest consumers. Would suggest -C to demangle the symbols... ;)
Suggest profiling the program (just use some printf's in the main loop for time spent in each part), it usually is quite easy to spot slow parts in games or apps.
If someone has '#define IPTR ULONG' somewhere. To see where that define is, redefine IPTR in the source code that fails, just above the line that fails, and the preprocessor will tell you where it was defined first.
===How to setup gdb with AROS/hosted===
Download AROS sources (AROS-xxxxxxxx-source.tar.bz2, where xxxxxxxx is the current date) and AROS contrib sources (AROS-xxxxxxxx-contrib-source) from
Untar-bzip2 and cd to the unpacked archive directory.
> tar -xvjf AROS-xxxxxxxx-source.tar.bz2
> cd AROS-xxxxxxxx-source
Check the link to "contrib" (contrib-source) inside directory, e.g. correct like this:
> rm contrib
> ln -s ../AROS-xxxxxxxx-contrib-source.tar.bz2 contrib
Make sure you have the correct locale setting, otherwise compilation will fail at some point. See [http://aros.sourceforge.net/documentation/developers/compiling.php#setting-the-locale-to-iso8859 here] (or link below) for more on that. You might have to enter this:
> export LANG="en_US.ISO-8859-1"
Now configure for a debug build - see "./configure --help" for more - here are two examples:
> ./configure—enable-debug=stack,modules,symbols
> ./configure—enable-debug=all
You may "make" now, or choose a separate directory for your build (e.g. for easy removal), for example if compiling for i386 architecture you could create a directory like this:
> mkdir linux-i386
> cd linux-i386
> ../AROS/configure—enable-debug=stack,symbols,modules
When done configuring you're ready to go:
> make
Building AROS takes some time - minutes on fast machines (e.g. 2.5 GHz quadcore), up to hours on slower machines.
The result will be AROS Linux hosted with gdb debugging enabled.
See aros.org documentation for more on compiling AROS, including more [http://aros.sourceforge.net/documentation/developers/compiling.php --enable-debug] options.
When finished, enter bin/linux-i386/AROS directory (replace "linux-i386" with your compilation target platform, e.g. linux-x86_64, etc.) inside the unpacked archive directory. This directory contains the required .gdbinit file for properly running AROS inside gdb.
> cd bin/linux-i386/AROS
Run AROS (here: with 128MB of memory) from gdb:
> gdb—args boot/aros-unix -m 128
or
> gdb—args boot/arosboot -m 128
(gdb) r
Watch the shell output - in case AROS complains about "LoadKeyCode2RawKeyTable: Loading "DEVS:Keymaps/X11/keycode2rawkey.table" failed!" you should also see some instructions on how to create a keymap table. (see link above "more on compiling", too.)
Quit gdb, and try default keymap table:
(gdb) q
The program is running. Quit anyway (and kill it)? (y or n) y
> cd ../../..
> make default-x11keymaptable
Re-run AROS, as described above. Try e.g. RAros (= right windows key) + W to open a shell. If this doesn't work you have to create a keymap table yourself, quit gdb again, and make a new keytable:
> make change-x11keymaptable
A window will open. Watch the window's title bar, and follow the instructions.
When done, re-run AROS. RAros + W should now open a shell.
Next, compile your program with gdb support.
When you start GDB is there a warning which says
warning: File "<whatever>/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to ...
If so start gdb with "-ix .gdbinit"
<pre>
Summary - In short:
* build AROS with debugging support (i.e. ./configure --enable-debug=all)
* build your application with debugging support (i.e. option -g)
* run AROS in the GNU debugger (you may use the GUI frontend "ddd" which simplifies usage a bit)
* start your application
* use the commands "findaddr" and "add-symbol-file" as written in the debugging manual
* if the debugger doesn't find the source code of your application use the "dir" command of the debugger.
</pre>
===How to use gdb===
In AROS open a shell, then (in host shell) use CTRL-Z to go into gdb. Use "b Exec_CreatePool" (one of the functions used early on by startup code in programs) to add a breakpoint, then "cont" and gdb will interrupt somewhere early during startup of "program". Use "bt" to show backtrace and "loadseg" for "??" entries. One of them will be for "program". After that you can use "disassemble program".
One thing you need to make sure is that .gdbinit you have in your build directory is the same as in source tree. It has been modified some time ago, but the build system does not refresh it - you need to copy it manually
To recap, please read our debugging [http://aros.sourceforge.net/documentation/developers/debugging.php manual]:
To detect segfaulting when loading, try...
./configure—enable-debug—with-optimization="-O2"
Because crash or no crash may depend on optimization. For newer compilers maybe this helps...
--with-optimization=-"-O2 -fno-strict-aliasing"
One way to make crashes less random (more easily reproducible) is to activate the munging of free memory in rom/exec/freemem.c which is normally commented out:
<pre>
Index: freemem.c
===================================================================
--- freemem.c (revision 34289)
+++ freemem.c (working copy)
@@ -154,11 +154,12 @@
* created with their TCB placed in the tc_MemEntry list. The workaround
* is to avoid munging when FreeMem() is called with task switching disabled.
*/
+
/* DOH! it doesn't work even this way. What's wrong???
- *
- * if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
- * MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
*/
+
+ if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
+ MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
}
</pre>
Mungwall can be turned on at runtime. Currently this works in all hosted versions. Just specify "mungwall" on kernel command line and it works. It can work on native too. In order to enable it you need to parse kernel command line, and if "mungwall" is present, set EXECF_MungWall bit in IntExecBase.IntFlags.
This needs to be done before the first AllocMem() for obvious reasons. And never reset back this flag! If you change it on a working system, you are doomed.
Hosted ports do the processing in rom/exec/prepareexecbase.c --enable-debug=mungwall option in configure still works but is going obsolete. A kludge in rom/exec/allocmem.c is responsible for this and it needs to be removed when the transition is done.
BTW, on i386-pc port it can be activated by "mungwall" argument on command line, you don't need to rebuild AROS.
New mungwall affects not only AllocMem()/FreeMem(), but also pools. I also tested it with AllocAbs(), seems to work correctly.
Runtime mungwall works on:
* pc-i386
* pc-x86_64
* linux-i386
* linux-x86_64
* darwin-x86
* linux-ppc
Works on all hosted ports, if the port itself is working.
* amiga-m68k
* Not on sam440-ppc and efika-chrp-ppc, even if they would be able to be built at moment. Does not work on (for now, need NVRAM support)
When starting my freshly rebuilt i386-linux-aros which was compiled with full debugging support I get sometimes the error "Program exited with code 0377". Add the following to your .gdbinit:
set follow-fork-mode child
Here are some of the custom AROS gdb functions (defined in ".gdbinit" file) to resolve "in ?? ()" entries in backtrace:
<pre>
#0 0xb7ffd424 in __kernel_vsyscall ()
#1 0xb7e2a657 in sigsuspend () from /lib/libc.so.6
#2 0xb7c63900 in ?? ()
#3 0xb7c640e3 in ?? ()
#4 0xb7c641e0 in ?? ()
</pre>
You can use
loadseg 0xb7c63900
loadframe 2
or
loadbt
and some others. Use "help " for a little help text. If the commands do not work try "loadkick" first.
Use "thistask", "taskready", "taskwait" to get list of AROS tasks. "bttask " shows backtrace of a task which is in ready or in wait queue and "loadseg" to resolve "??" entries in it's backtrace ("loadframe" would not work as it assume current running task).
===Native debugging tools for AROS===
to enable debugging at boot time entering the GRUB menu editing line (E key) and adding "debug=memory" to your boot line, then press Ctrl+X to complete booting.
SYS:Tools/Debug/'''Bifteck'''
Open a shell and enter the line below to run Biftek and grab the debug messages collected in RAM into a text file.
tools/debug/bifteck > ram:debug.txt
and certainly does not open a window. It is a shell tool and only dumps data located from the debug location.
It is therefore important to 'catch' that debug data as soon as possible (before it gets overridden). You should invoke bifteck at the first opportunity before doing anything else. You can use the TO option to store bifteck output to a file or you can pipe it manually to a file.
SYS:Tools/Debug/'''Sashimi''' - displays error messages
One suggestion is to do a bug() debugging. Each time bug() is executed it will be output on sashimi.
You include <aros/debug.h> and place bug("something\n"); in your source code at location though which control passes.
To get the output - open an aros shell
SYS:Tools/Debug/sashimi > RAM:out.txt
'''Ctrl C''' to end the output to the RAM Disk.
# open shell, and type
# ram: (to switch to ram drive)
# System:Tools/Debug/Sashimi > mylogfile.txt
# open AHI prefs using wanderer (or use another opened shell)
# play test sound
# close AHI prefs
# shell still open with Sashimi running: press ctrl-c to break Sashimi and return to prompt.
# in shell: copy mylogfile.txt System: (or to your required location)
SYS:Utilities/'''Snoopy''' - monitors OS function calls, run "Sashimi" to see Snoopy's output
SYS:Tools/'''WiMP''' - the Window (and Screens) Manipulation Program
You can use the -E option of gcc to find out how preprocessor macros are expanded.
===Errors===
crash in strcasecmp usually means that one of its arguments is NULL.
empty space between these two names, prossibly some invisible character
Old Amiga [http://www.amigacoding.com/index.php?title=Guru_codes&redirect=no Guru Codes]
If the crash is in intuition. Sometimes, if it relates to text, a null pointer sets it off.
an uninitialised pointer can have any address (this is a common fault).
Compiling on 64bit, Many old code would not properly typecast when doing pointer-integer conversions and thus at least throw a warning. This can easily be located and fixed.
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
* Fix (change IPTR/SIPTR back to ULONG/LONG) the few places which really rely on ULONG/LONG being exactly 32 bit. That's for things like pixel (ARGB) buffers, structs written/read to disk, colormaps, but probably not much else.
Then again, many current compilers also throw a warning when you try to assign a pointer value to an integer and the integer is possibly too small. This happens under .NET for example when a 64 bit pointer is assigned to something like an ULONG - so exactly the case which you described.
=== AI ===
<---
Model <---> Agent ---> End user
Gemini LMStudio
Qwen Comfyui
etc
Recent, self hosting on laptops, mini pcs or desktops with '''quantization''' 4bit has reduced memory requirements but still require 16Gb+ and no high end gpu for text based
*[https://lmstudio.ai/download LMstudio single gpu],
Google Gemma 4 Model
*[ 12B QAT]
Alibaba Cloud's [https://huggingface.co/ Qwen] team series of large language models LLMs
*[https://huggingface.co/models?other=qwen3 Qwen 3], [],
*[https://huggingface.co/models?other=qwen2 Qwen 2], [https://huggingface.co/Qwen/Qwen2.5-Coder-32B qwen 2.5 Coder],
Small Claude Model
*[https://github.com/sipeed/picoclaw picoclaw]
Bigger LLMs but with settings
*[https://ollama.com/download Ollama single gpu]
*[https://github.com/ggml-org/llama.cpp/releases llama.CPP multi gpus],
*[ VLM multiple gpus],
For the full experience
#Training learning using 1+ high end GPUs at least 16GB VRAM per GPU card or 64Gb+ of unified, 16Core CPU with at least 64Gb of RAM system memory, though training can take weeks
#Inference with custom asics or GPUs
*[ MiniMax H3] for audio and video but gpu 8Gb+
*[https://github.com/jamiepine/voicebox voicebox]
*[https://github.com/ideogram-oss/ideogram4 ideogram4]
*[https://github.com/calesthio/OpenMontage OpenMontage]
<pre>
Text to Audio --\
Text to Video --/ Reference Video --> Video and Audio output
</pre>
=== Linux ===
<syntaxhighlight lang="c">
/* 1. Header for your name,date,purpose of program.
2. Pre-processor directives. This will include the #includes for files you want to add.
3. Includes for function prototypes if necessary.
4. Main()
Create Pointers for Libraries and any Window you want to open.
5. Open necessary libraries.
6. Check if open exit program if fail.
7. Open a window exit program if fail.
8. Add your program
9. Close Window
10 Close Libraries.
11 End Program. */
/* standard os included headers <.h> */
#include <dos/dos.h>
#include <dos/dosasl.h>
#include <dos/dosextens.h>
#include <dos/exall.h>
#include <dos/rdargs.h>
#include <exec/memory.h>
#include <exec/types.h>
#include <utility/utility.h>
#include <intuition/intuition.h>
/* define as unresolved external references (proto/xxx.h) and compiler will link to auto(matically) open library */
#include <proto/arossupport.h>
#include <proto/dos.h>
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/graphics.h>
#include <proto/cybergraphics.h>
#include <proto/datatypes.h>
#include <proto/icon.h>
#include <workbench/workbench.h>
#include <workbench/icon.h>
#include <datatypes/pictureclass.h>
#include <proto/muimaster.h>
#include <libraries/mui.h>
#include proto/bsdsocket.h
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* my own headers ".h" */
#define CTRL_C (SetSignal(0L,0L) & SIGBREAKF_CTRL_C)
#define isDir(fib) ((fib)->fib_DirEntryType >= 0)
#define ARG_TEMPLATE "FILE/A,ALL/S,QUIET/S,W=WIDTH/N,H=HEIGHT/N,M=METHOD,DEFTOOL"
int main(void)
{
return retval;
} /* main */
</syntaxhighlight>
If you used c++, there is not yet c++ support in our shared library system.
The easiest way to create / compile a shared library would be to use the AROS build system but the libraries can be created manually. You have to create a ROMTAG structure and some header files.
A shared library is built with the %build_module macro with a line like this:
%build_module mmake=MetaTarget modname=mylib modtype=library files=SourceFiles
This macro can build different AROS module types, like devices, Zune classes, HIDDs, etc.
<pre>
##begin config
version 1.0
##end config
##begin functionlist
void func1(LONG a, LONG b)
int func2(char *s, ULONG a)
##end functionlist
</pre>
There is more [http://aros.sourceforge.net/documentation/developers/sys-dev/libraries.php here]
Alternatively,
<pre>
#ifndef LIB_H
#define LIB_H
#define __NOLIBBASE__
#include <exec/libraries.h>
#include <exec/semaphores.h>
#include <dos/dos.h>
#ifdef __AROS__
//#include <aros/debug.h>
#define reg(x)
#define __saveds
#endif
#define USESYSBASE struct ExecBase *SysBase = Base->My_SysBase;
struct MyTestBase
{
struct Library My_Test_Lib;
struct ExecBase *My_SysBase;
APTR My_SegList;
int testint;
};
#endif
</pre>
<pre>
/*--------------------------------------------------------------------------*/
/* Resident header written for mytest.library */
/*--------------------------------------------------------------------------*/
#define __NOLIBBASE__
#define VERSION 1
#define REVISION 0
#define LIBHEADNAME mytest
#define LIBHEADNAMESTR "mytest"
#define COMPDATE "04.10.2015"
#define VERS "1.0"
#define LIBBASETYPE struct MyTestBase
#define LIBBASETYPEPTR LIBBASETYPE *
#include <aros/debug.h>
#include <exec/exec.h>
#include <proto/exec.h>
#include <exec/resident.h>
#include <exec/nodes.h>
#include <exec/libraries.h>
#include <aros/symbolsets.h>
#include "lib.h"
const UBYTE lib_name[] = LIBHEADNAMESTR ".library";
const UBYTE lib_id[] = "$VER: " LIBHEADNAMESTR ".library " VERS " (" COMPDATE ") by ALB42\n";
extern const APTR FuncTable[];
AROS_UFP3 (LIBBASETYPEPTR, InitLib,
AROS_UFPA(LIBBASETYPEPTR, Base, D0),
AROS_UFPA(BPTR, seglist, A0),
AROS_UFPA(struct ExecBase *, sysbase, A6)
);
static struct LibInitStruct
{
IPTR LibSize;
const APTR *FuncTable;
const struct DataTable *DataTable;
APTR InitFunc;
}
const LibInitStruct =
{
sizeof(LIBBASETYPE),
FuncTable,
NULL,
(APTR)InitLib
};
const struct Resident romtag =
{
RTC_MATCHWORD, /* match word */
(APTR)&romtag, /* back pointer */
(APTR)(&romtag + 1), /* skip pointer */
RTF_AUTOINIT | RTF_EXTENDED,/* flags */
VERSION, /* version */
NT_LIBRARY, /* type of module */
0, /* init priority */
(STRPTR)lib_name, /* module name */
(STRPTR)lib_id + 6,
(APTR)&LibInitStruct,
REVISION, NULL
};
AROS_UFH3 (LIBBASETYPEPTR, InitLib,
AROS_UFHA(LIBBASETYPEPTR, Base, D0),
AROS_UFHA(BPTR, seglist, A0),
AROS_UFHA(struct ExecBase *, sysbase, A6)
)
{
AROS_USERFUNC_INIT
Base->My_SegList = seglist;
Base->My_SysBase = (APTR)sysbase;
Base->testint = 0;
USESYSBASE
bug("InitLib\n");
if (!set_open_libraries())
{
set_close_libraries();
return NULL;
}
return Base;
AROS_USERFUNC_EXIT
}
AROS_LH1(LIBBASETYPEPTR, LibOpen,
AROS_LHA (ULONG, version, D0),
LIBBASETYPEPTR, Base, 1, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibOpen\n");
(void)version;
Base->My_Test_Lib.lib_OpenCnt++;
return Base;
AROS_LIBFUNC_EXIT
}
__saveds APTR LibExpungeInternal(LIBBASETYPE *Base reg(a6))
{
USESYSBASE
APTR seglist;
bug("LibExpungeInternal\n");
if (Base->My_Test_Lib.lib_OpenCnt)
{
return 0;
}
seglist = Base->My_SegList;
Forbid();
Remove((struct Node*)Base);
Permit();
FreeMem((APTR)Base - Base->My_Test_Lib.lib_NegSize, (LONG)Base->My_Test_Lib.lib_PosSize +
(LONG)Base->My_Test_Lib.lib_NegSize);
set_close_libraries();
return seglist;
}
AROS_LH0(BPTR, LibClose,
LIBBASETYPEPTR, Base, 2, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibClose\n");
if (!(--Base->My_Test_Lib.lib_OpenCnt))
{
return LibExpungeInternal(Base);
}
return 0;
AROS_LIBFUNC_EXIT
}
AROS_LH1(BPTR, LibExpunge,
AROS_LHA(LIBBASETYPEPTR, Base, D0),
struct ExecBase *, sysBase, 3, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
(void)sysBase;
USESYSBASE
bug("LibExpunge\n");
return LibExpungeInternal(Base);
AROS_LIBFUNC_EXIT
}
AROS_LH0(LIBBASETYPEPTR, LibReserved,
LIBBASETYPEPTR, Base, 4, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibReserved\n");
return 0;
//return (APTR)LibReserved();
AROS_LIBFUNC_EXIT
}
// Space for your own functions
// do not forget to update the FuncTable as well
AROS_LH1(int, TestFunction,
AROS_LHA(int, TestValue, D0),
LIBBASETYPEPTR, Base, 5, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("TestFunction\n");
Base->testint = TestValue + Base->testint;
return Base->testint;
AROS_LIBFUNC_EXIT
}
// Functable -> Table of all functions in the Library, in right order - important!
const APTR FuncTable[] =
{
&AROS_SLIB_ENTRY(LibOpen,LIBHEADNAME,1),
&AROS_SLIB_ENTRY(LibClose,LIBHEADNAME,2),
&AROS_SLIB_ENTRY(LibExpunge,LIBHEADNAME,3),
&AROS_SLIB_ENTRY(LibReserved,LIBHEADNAME,4),
&AROS_SLIB_ENTRY(TestFunction,LIBHEADNAME,5),
(void *)-1
};
// AutoInit stuff
void *__PROGRAM_ENTRIES__symbol_set_handler_missing;
void *__LIBS__symbol_set_handler_missing;
// end of AutoInitStuff
</pre>
Makefile
<pre>
VPATH =
CFLAGS = -O2 -g -fomit-frame-pointer -W -Wall -Wno-parentheses
CC = i386-aros-gcc
LD = i386-aros-gcc
LDFLAGS = -nostartfiles -Wl,-Map -Xlinker linkermap
LIBS = -lautoinit -llibinit
STRIP = i386-aros-strip --strip-unneeded --remove-section .comment
OBJS = lib_header.o
all: mytest.library
mytest.library: $(OBJS)
$(LD) $(LDFLAGS) $^ $(LIBS) -o $@
lib_header.o: lib_header.c lib.h
clean:
rm -f *.o *.library *.ppu testlibrary linkermap
</pre>
Porting UNIX library to AROS - dealing with static variables which would make it easy to port such libraries to AROS, keeping the benefits of sharing them on disk, but losing the benefit of actually sharing them in memory.
Our problem arises by the fact we want to share the actual code (the .text section of the library) and constant data, but we need to have per-task .bss and .data sections. If we get rid of our intention to share the .text and .rodata sections, things get quite easy: just load and relocate the library whenever it's open, by whoever it's open. It's like statically linking the library into the executable, except that the final linking is done at runtime.
In the V0 branch, in workbench/hidds/hidd.nouveau was committed pcimock.hidd. This is a pci driver that allows mocking real PCI devices under linux-hosted. The main idea is to be able to run the real hardware driver under linux-hosted with as little changes as possible (some changes will always be needed though unless someone wants to write complete device simulator) so that driver's code paths can be executed and debugged using gdb. This was a very helpful capability when porting nouveau. Now it is externalized from nouveau.hidd and can be used by other people porting drivers. The pcimock.hidd can currently mock 4 different nvidia cards, 1 AGP bridge and also mock irq.hidd.
What's the difference between this driver and the pcilinux.hidd? I used that one to develop many different HW drivers for aros. As far as I understood the intention of pcilinux.hidd it is supposed to get access to real hardware that is running under linux. The pcimock.hidd goal is to mock the hardware. For example my dev box is a PCIE system, but I still would like to run the AGP codes paths in nouveau under linux-hosted to check if they don't seg fault. The other case would be to run codes paths for hardware that the developer does not have (Fermi cards in my case). In the case of pcimock.hidd, the AROS driver's code paths will execute as long as you add proper mocking (for example fill in PCI config area or values for registers in BARs). This is an advantage for ported drivers - the code should already work (since it worked on another system) but there might have been mistakes made during porting which can be detected easily with gdb.
In case you are writing your driver from scratch, pcilinux.hidd hidd will give you more advantage, since you can actually access the real hardware from linux-hosted.
== Misc ==
===APL, MPL, BSD, GPL and LGPL Licences===
The majority of AROS sources in licensed under AROS Public License ([http://aros.sourceforge.net/license.html APL]) which (to a degree) protects us from someone taking AROS sources and not contributing improvements back (for example MorphOS took some AROS source and then contributed changes back)
It is written to allow the use of AROS code in other open source or commercial projects without exception whilst providing a mechanism so that improvements/additions can find their way back to the original source in one form or another.
There are "3rd" party applications used by AROS that do not fall under this license, which are an extra "Contrib" download for convenience.
Anyone can port GPL-ed network and sound drivers as AROSTCP and AHI are GPLed. Direct using (porting) [http://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs GPL]-ed code in other parts of AROS (gfx, sata, usb) is not possible because AROS license is not compatible with GPL. You need to utilize permissive licensed code like BSD or MIT/X11.
BSD and MPL license are the closest to APL.
APL however is not so compatible with LGPL/GPL.
LGPL case - you cannot statically combine APL code with LGPL. You can, however thank to LGPL being "lesser" restrictive, use LGPL dynamically loaded libraries in APL codes.
GPL case - you cannot combine APL code with GPL in any way if there is no explicit clause by GPLed code authors allowing that. If you do combine APL with GPL in "bad" ways described above - you have a problem (you violate GPL). This problem might result in everything in AROS becoming GPL or everything running or AROS becoming GPL (here I'm not sure really). The other scenario is that you are not allowed to legally distribute such code at all. To be honest I have grasped how to violate GPL, but I'm still no exactly sure what happens when you violate it (but I'm sure it's not anything nice)
GPL software can run on top of non-GPL "system components" (see system components exception of GPL), but the other way around (non-GPL using GPL) leads to problems. This means applications like scout, or Quake III are ok (in the majority of cases).
Theres no reason GPL drivers cannot be ported - but they cant be in AROS's ROM (requires linking APL code with GPL), nor can AROS depend on them (e.g. they must use existing apis).
If they are launched (dynamically linked) by a user action that is allowed. It is also allowed to distribute such binaries together for convenience.
GPL is not about statical or dynamic linking but is about executing process and function calls.
These components - SFS, isapnp, Zune texteditor, AHi, network drivers, freetype, openuirl, BHFormat, Edit and (" dynamically loaded libraries") are LGPL, not GPL. Mesa/Nouveau stuff is MIT. Some user tools are GPL though.
'''AROS (system)'''
* system components (libraries/classes/devices/etc) cannot be GPL as they would propagate GPL to complete system as well as GPL is not compatible with MPL from which APL is based
* system components can be LGPL v2 or a permissive license (MIT/BSD)
* system applications can be anything you like (but still I would prefer APL or permissive so the code can be reused if needed)
'''Contrib:'''
* no rules - contrib does not impact AROS system since nothing in AROS system depends on contrib.
About stealing code: The chances of this happening is exactly the same whether we are APL or GPL. If any closed-source option wanted to do it, there is no one that can validate otherwise. MorphOS has used some AROS codes, but contributed changes back.
The rationale behind APL is that while it guarantees that the original developer will get the improvements back (to a certain degree - file based), the person who uses the codes does not have to open his original codes. BSD does not guarantee that the original developer gets improvements. GPL requires the person using the codes to open his codes as well.
The copyright holders needs to stay - we just need information from them that the codes are available under APL (for example a checked-in file like in case of Poseidon). We don't do transfer of copyrights.
; Ultimately what can and cannot be done is up to the author(s) - not the licence.
===AROS source code tree===
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-trunk.txt
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
Found this interesting (non-GPL) licensing 'anomaly' - to keep in mind for distributors.
Programs that lose their license if sold ("non-profit only" licensed):
contrib/aminet/comm/term/TinyTerminal
contrib/aminet/dev/basic/bwBASIC
contrib/aminet/text/edit/xdme
contrib/fish/aroach
contrib/fish/lotto
contrib/fish/shuffle
contrib/fish/touch
+ cdvdfs.
Here is a list of all the GPL/GPLv2/GPLv3 licenses fossology found, what have explicit licenses in their comments.
excluded LGPL, BSD/GPL dual licensed and programs (such as Prefs/Edit and BHFormat)
<pre>
AROS/rom/dbus/include/ AFL_v2.1 ,GPL_v2+ (supposedly AFL < 3 is GPL incompatible)
AROS/workbench/classes/zune/betterstring/include/ GPL_v2+
AROS/workbench/classes/zune/texteditor/include/ GPL_v2+
AROS/workbench/classes/datatypes/gemimage/ GPL_v2+ GPL
AROS/workbench/classes/datatypes/degas/ GPL_v2+
AROS/workbench/libs/openurl/README: GPL
AROS/workbench/network/smbfs/documentation/ GPL_v2
AROS/workbench/network/smbfs/source_code/ GPL_v2+
AROS/workbench/network/stacks/AROSTCP/bsdsocket/kern/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/mmakefile.src conf.h GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/sys/ CMU ,GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/net/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/api/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/conf/conf.h: GPL_v2
AROS/workbench/network/stacks/AROSTCP/netinclude/net/radix.h: CMU ,GPL_v2
AROS/workbench/devs/AHI/AHI/ GPL_v2+
AROS/workbench/devs/AHI/AddAudioModes/ GPL_v2+ AROS/workbench/devs/AHI/AddAudioModes/COPYING: GPL
AROS/workbench/devs/AHI/Docs/texinfo.tex: GPL_v2+
AROS/workbench/devs/AHI/COPYING: GPL
AROS/workbench/devs/AHI/Drivers/EMU10kx/ GPL_v2+
AROS/workbench/devs/AHI/AHI-Handler/ GPL_v2+
AROS/workbench/devs/networks/rtl8029/ GPL GPL_v2+
AROS/workbench/devs/networks/pcnet32/ GPL GPL_v2+
AROS/workbench/devs/networks/ppp/LEGAL: GPL
AROS/workbench/devs/networks/atheros5000/ GPL_v2+
AROS/workbench/devs/networks/rhine/ GPL_v2+
AROS/workbench/devs/networks/nForce/ GPL_v2+ GPL
AROS/workbench/devs/networks/prism2/ GPL GPL_v2+
AROS/workbench/devs/networks/fec/LEGAL: GPL
AROS/workbench/devs/networks/rtl8139/ GPL GPL_v2+
AROS/workbench/devs/networks/etherlink3/ GPL GPL_v2+
AROS/workbench/devs/networks/intelpro100/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8169/ GPL GPL_v2+
AROS/workbench/devs/networks/emac/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8168/ GPL GPL_v2+
AROS/workbench/devs/networks/realtek8180/ GPL_v2+
AROS/workbench/devs/networks/via-rhine/via-rhine.c: GPL_v2+
AROS/workbench/devs/networks/via-rhine/ GPL GPL_v2+
AROS/workbench/devs/networks/e1000/ GPL_v2
AROS/workbench/devs/networks/sis900/ GPL GPL_v2+
</pre>
AHI: it has special provisions (COPYING.DRIVERS). The library is LGPL, preferences software is GPL and drivers can be anything without breaking GPL/LGPL.
Network stack: well, we are long overdue for a new, IPv6 enabled network stack anyway, anyone interested? ;) Seriously though it seems like the glue code is GPL and as all the drivers. However some of the drivers are our own code, so they could be relicensed to LGPL.
Same filter as the AROS trunk list. These should all be libraries or plugins - no programs.
<pre>
contrib/regina/utsname.h: GPL_v2+
contrib/mui/classes/nlist/include/default-align.h: GPL_v2+
contrib/mui/classes/nlist/include/amiga-align.h: GPL_v2+
contrib/mui/classes/BWins/include/MUI/BWin_mcc.h: GPL
contrib/mui/classes/BWins/include/BWin_private_mcc.h: GPL
contrib/mui/classes/BWins/COPYING: GPL_v2
contrib/mui/classes/BWins/MCC_BWins.readme: GPL_v2
contrib/mui/classes/thebar/include/default-align.h: GPL_v2+
contrib/mui/classes/thebar/include/amiga-align.h: GPL_v2+
contrib/gfx/libs/wazp3d/LEGAL: GPL
contrib/gfx/libs/wazp3d/Wazp3D.readme: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.c: GPL
contrib/libs/mpega/ GPL_v2+
</pre>
http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
===Types===
On AROS following rules apply:
<pre>
1. BYTE/UBYTE is 8bit, WORD/UWORD is 16bit, LONG/ULONG is 32bit, QUAD/UQUAD is 64bit, the types are comparable with stdint types (int8_t, int16_t, int32_t, int64_t)
2. IPTR/SIPTR are integer types large enough to fit pointer, that is sizeof(IPTR) = sizeof(APTR) = 4 on 32bit system, and = 8 on 64bit system
3. ti_Data in TagList is large enough to hold a IPTR/APTR type.
4. never store a pointer in integer of type LONG. It may work (if the pointer has upper 32bits clear), but does not have to. Compiler should warn you about that.
5. If you are unsure about point 4, allocate your memory with MEMF_31BIT flag set. But don't expect that AROS internals will do the same.
</pre>
point 4 is actually important.
* UBYTE/BYTE for 8bit
* UWORD/WORD for 16bit
* ULONG/LONG for 32bit
* UQUAD/QUAD for 64bit
<pre>
UBYTE Unsigned 8 bit integer variable (byte).
BYTE Signed 8 bit integer variable (byte).
UWORD Unsigned 16 bit integer variable (word).
WORD Signed 16 bit integer variable (word).
ULONG Unsigned 32 bit integer variable (longword).
LONG Signed 32 bit integer variable (longword).
FLOAT 32 bit IEEE floating point variable.
UQUAD Unsigned 64 bit integer variable.
QUAD Signed 64 bit integer variable.
DOUBLE 64bit IEEE floating point variable.
BOOL Boolean variable, TRUE and FALSE are also defined in exec/types.h.
VOID Void.
APTR A generic pointer for multiple purposes - Arrays.
STRPTR A pointer to a null-terminated string.
IPTR Really important in AROS, the only way to declare a field that can contain both: an integer or a pointer.
</pre>
if you want to write really portable app, you may be interested in standard datatypes defined in C99: int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, intptr_t, uintptr_t. They are all defined in inttypes.h include file.
In exec/types.h the following short-cuts are typedef'd. They are used often in AROS, so you should nearly always include exec/types.h and soon only they will be removed from sys/_types.h include, all types are now defined in include files named aros/types/xxx.h.
(Preparation for C library split; sys/xxx.h include will only be available there when compiling with POSIX C library)
Compiler specific types, like int and long might change their size. In case of AROS, similar to linux, int remains 32 bit whereas long grows to 64 bits in size.
If you use Amiga-like data types, i.e. BYTE/UBYTE, WORD/UWORD, LONG/ULONG and QUAD/UQUAD or the C99 standard types (uint8_t and so on, see stdint.h include) then you should have less issues to solve than by using types without size guarantee.
Of course, all pointers grow to 64 bytes using 64bit cpu. Most of the code can be just recompiled and will work. In rare cases, where e.g. pointers are casted to integers, a special care must be taken. Especially in the cases, where pointer is casted to LONG/ULONG (this code will break on 64 bit AROS) e.g. '#define IPTR ULONG'.
With compiler delint patches which the majority of them are simple casting issues to make the compiler happy. Notice some of the changes involve introducing double casts. In very recent versions of GCC. Yes, the bulk of the double casts are for converting 32 bit addresses (ie from a 32 bit PCI DMA address register) to a 64 bit pointer. First cast is to IPTR (to expand to 64 bits, and prevent sign extension if the address is above 0x7FFFFFFF), and then to APTR.
ULONG != IPTR except on 32bit .. so if you need to store pointers make sure and use IPTR and not ULONG (which some old code does). For this reason things like Taglist elements are 64bit (since the tag data can be a pointer).
If your passing items on the stack you should use the STACKED attribute to make sure they are correctly aligned (on 64bit all items on the stack are 64bit..)
There is more issues like using "== 0L" causes problems.
===Endian===
*BE
*LE
Use the macros from <endian.h> instead making a guess based upon architecture defines
<pre>
#if _BYTE_ORDER == _BIG_ENDIAN
#elif _BYTE_ORDER == _LITTLE_ENDIAN
#else
+
#error <whatever.h> - Byte order for this architecture is unsupported!
</pre>
===SVN and GIT===
If you want to help develop AROS OS itself, you can
* view current GIT/SVN entries [http://aros.sourceforge.net/ Aros Org website] or [https://github.com/aros-development-team/AROS Github], [https://github.com/ezrec older ezrec mirror], [https://github.com/michalsc/AROS/ older mirror], [https://trac.aros.org/trac/timeline TRAC], [],
* awaiting update [http://repo.or.cz/w/AROS.git git repo], [http://www.ohloh.net/p/aros/commits ohloh] or [https://svn.aros.org/svn/aros/trunk/ svn repo] and access [Git version git://repo.or.cz/AROS.git here],
* deprecated [https://www.gitorious.org/aros/aros/commit/a7fda9e ARIX commits] or [https://gitorious.org/aros/aros GIT old]
If you have SVN access (early 2015 introduced a new SVN server, create a new account at trac aros org) and/or have obtained the source [http://aros.sourceforge.net/download.php AROS site] - you can compile the current build tools/environment using:
> make development
and follow this [http://aros.sourceforge.net/documentation/developers/compiling.php#building procedure] or [https://github.com/apiraino/aros_guide Guide]
https://trac.aros.org/trac#Developing
If you plan on contributing back changes, please post information about such changes first on this [http://mail.aros.org/mailman/listinfo/aros-dev/ mailing list] for more experience developers can validate whether they are correct.
Then there are the nightly build machines. They svn update before the build and run configure as one of the next steps. autoconf might be added to the nightly build scripts.
Our build relies on packages downloaded from Internet (SDL for example) - it always worked this way. The minimal requirement (when just building core AROS) is binutils and gcc. If you build contrib as well, you need many more packages to be downloaded.
https://gitorious.org/aros/aros/commits/crosstools-II
git://gitorious.org/aros/aros.git
Branch crosstools-II there is only one commit on top of ABI_V1
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-x86_64
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-x86_64
</pre>
and
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-i386
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-i386
</pre>
build OK.
:''More information: [[Aros/Developer/Maintainer|AROS Maintainer Docs]]''
===SDI Calls===
Integrate the 'SDI'-headers to allow easier porting to all amiga-like platforms.
<pre>
PUTCHARPROTO( PutTheChar, char c, struct SPrintfStream *s )
{
// REAL CODE
}
</pre>
have "SDI_compiler.h" and "SDI_hook.h" included
its more organized like
#include SDI/SDI_hook.h
than
#include SDI_hook.h
option 1 --- i also use when back porting from amiga's..
<pre>
#ifdef __AROS__
#include SDI/SDI_hook.h
#else
#include SDI_hook.h
#endif
</pre>
also
you can add the -i include/sdi/ location if you do not want to add or edit any files.
Defining HOOKPROTO to IPTR name(struct IClass * cl, Object * obj, Msg msg); solved the problem
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order. examine compiler/include/aros/symbolsets.h (AROS_LIBREQ)
compiling mui stuff for aros setting -std=gnu99 is necessary (i have had -std=c99 most of the time).
===Locale with Flexcat===
Most languages have a locale, but not every app is localized, the only thing needed is to translate the "catalog" files. It is a case of locating the correct catalog and saving the translated version.
For every app that lacks of your language catalog and is localized anyway, you should find (in the sources) files related to locale:
* file.cd = catalog descriptor, contains base msg, with internal language (usually english)
* language.ct = catalog translation, contains every translated msg, indexed as in the file.cd.
Compare with other localized apps... Then, "make my_app-catalogs" should create and install your translated catalogs. ex : for, saying, sys:prefs/wanderer:
on root of AROS sources, type:
"make workbench-prefs-wanderer-catalogs"
then (if you changed the .cd file):
"make workbench-prefs-wanderer"
For apps not localized, you have to adapt their code to support it, if it is possible...
noticed the original .cd file has many (//) strings at the end of any voice, so added them also to the .ct file.
That (//) is only for cd files. I'm highly recommending to use FlexCat for updating ct files, e.g. like this:
flexcat app.cd deutsch.ct newctfile deutsch.ct
You'll get error checking and new entries are marked in the resulting ct file.
When editing .ct files, only change those lines containing translation and perhaps version string, nothing else.
The rest is up to the relevant tool, flexcat. In order to update your translation, type in the following in your shell:
flexcat xyz.cd xyz.ct NEWCTFILE xyz_upd.ct COPYMSGNEW
This way you will not only make sure you have correct translation file but flexcat also pre-fills newly added strings with "*** NEW *** text. Even better tool for checking cd/ct/catalog files is catcheck, but this one is sadly only available for AmigaOS/68k...
Some languages have variations, like portugues from portugal and portugues from brasil differs...
This is the way to go. I will have a look at language files, but basically if those two languages differ you have to do two separated set of translation files, yes.
(you could create a brazilian slang language localization too)
* At system level localization for one language is a dot language file.
(ex: locale:languages/klingon.language)
* At app level localization is a dot catalog file
(ex: locale:catalogs/klingon/system/libs/dos.catalog)
* At sources level, the dot ct file, and "$language" dot cd files and some building framework.
(ex: catalogs/my_app.ct catalogs/klingon.cd catalogs/mmakefile.src support.c support.h)
Please, use Flexcat to generate CT files:
FlexCat wanderer.cd NEWCTFILE=deutsch.ct
Then fill the first 2 lines with something useful:
<pre>
## version $VER: wanderer.catalog 1.1 (9.2.2006)
## language deutsch
</pre>
You can even update the CT-File: (This adds the new strings)
FlexCat wanderer.cd deutsch.ct NEWCTFILE=deutsch.ct
To compile a catalog you only need the .cd file and your translation (.ct file):
FlexCat multiview.cd deutsch.ct CATALOG=MultiView.catalog
[http://murks-ide.svn.sourceforge.net/viewvc/murks-ide/trunk/src/Catalogs/flexcat_linux?revision=100 Linux version of FlexCat]
: [http://aros.sourceforge.net/documentation/developers/app-dev/localization.php#localization-for-non-developers More information]
A script which compares the required version (i.e. the version which an application/module etc. tries to open) with the version of the existing CT files. The result is in this table:
https://github.com/aros-translation-team/translations/wiki/Progress
The following cases are highlighted:
n/a i.e. CT misses at all
version in existing CT file is lower than the required version
It might be a bit difficult to participate if you haven't worked with Git before but alternatively you can send your CT files to our Slack channel.
When the ct file has been generated via flexcat (flexcat keyshow.cd NEWCTFILE=spanish.ct) it has the following header:
---------------------------------------------------------------------------------------------------------------
## version $VER: <name>.catalog <ver>.<rev> (04.01.2021)
## language nolanguage
## codeset 0
;
---------------------------------------------------------------------------------------------------------------
Those values <ver>.<rev> are the version and revision of the CT file for the languaje or are the values of the application being localized?
The <ver> part must match with version which the application tries to open. You can find the value either in the column "Required Version" in the table which I've linked above, our you can look in the git repository. For keyshow it would be https://github.com/aros-translation-team/keyshow. You can find in the file "catalog_version.h" the right version number.
The <rev> part starts for new CT files with 0 and should be increased every time the CT file is updated.
Updated several files and created a few more that were missing on the spanish catalog.
The catalogs are in Git repositories at https://github.com/aros-translation-team
a) You tell me your Github user name. I'll invite you. You can work directly with the Git repositories.
b) You create Github forks of the catalog repositories and create pull requests.
c) You send the CT files to mrustler gmx de
===C Utils Misc===
The AROS source uses at several places the __DATE__ macro to fill the date entry of a $VER tag. Problem is that c:version doesn't understand that date format (e.g. "May 21, 2011"). As a result the output of e.g.
> "version c:shell full" contains "(null)". Is extending the version command to understand the format of __DATE__ the right solution for that problem?
AmigaOs compilers should use __AMIGADATE__ macro or similar form, if it isn't implemented it could be emulated in makefile: -D__AMIGADATE__=\"$(shell date "+%d.%m.%Y")\"
BTW. I think DD.MM.YYYY is better format than "Month DD YYY" because "Month DD YYY" is not localized in any way.
"strnicmp" shouldn't work with NULL pointers
The Situation:
compiled a linklib using c++ object files (using the c++ cross compiler).
compiled a C stub that uses the linklib (using the c++ cross compiler).
Try to link them together (using the c++ cross compiler) with C object
files (using the normal target c compiler) that need to use -nostartup
= cant do because using the c++ files pulls in arosc (for stdio etc.) -
so wants to have the autoinit stuff present.
What can I do about this??
If it is possible to manually open it then what do I need to do exactly?
=== ENV ===
The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact. However in some cases (like this one) it is not required.
99% of the time that statement is true (not required) for pretty much every file in ENV: or do people change their default icons - and prefs settings - every boot?
There seem to be a bad habit of late with developers changing things to reflect their own personal preference when the change isn't actually necessary - It would be nice if people could refrain from doing that in the tree without at least discussing it on the dev-list first (and with good reasoning unless they committed said work in the first place..)
We're not keen on the pollution of the "S:" dir: it's meant to be for scripts. What's wrong with "ENV:"?
Only the fact that it takes up RAM. I understand that for PCs with several gigabytes of RAM this is
irrelevant. But let's remember about other machines. The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact.
However in some cases (like this one) it is not required.
How about implementing in the style of HappyENV then? RAM-disk handler that falls through to reading from ENVARC: if there is no such file stored in it already. Removes RAM usage for unchanged files, removes the need to copy ENVARC to ENV in startup-sequence.
Shouldn't be too hard to make from AmberRAM, or even just extend AmberRAM to provide this service.
Is it feasable to build a special version of AmberRAM handling ENV: that will try and copy the requested file from ENVARC: if it isnt found in ENV: ?
Additionaly it could mark closed "files" as untouched - and expunge them from ENV: after a period of time to free up additional RAM:, or when the system is running low on free memory?
Silenty disappearing files may not be a good plan. Would be nice if the following would work:
ASSIGN :ENV SYS:Prefs/Env-Arc ADD
ASSIGN :ENV RAM:ENV ADD
Where new files put in ENV: end up in RAM:ENV, and opening files looks in RAM:ENV first, then SYS:Prefs/Env-Arc
Well - that's essentially what im proposing but without the assigns - or need for a RAM:ENV directory.
Adding it as a feature of AmberRAM sounds like the most memory efficient way (one handler to load in RAM) but that's only if it is possible to make it handle ENV: additionally to RAM:, and if it is even possible to add the proposed functionality (...and how to make it enable it when accessing ENV:).
===(AS)MP support===
If one has to recompile software for SMP multi core, is there any thing special one has to do to get software to run?
Use task.resource if you need to query information about what tasks are running, and clear msgports completely when they are allocated.
Most code should not need Forbid. Use Semaphores, Messages etc. to sync your own code.
Accessing system structures is a different thing. Use the proper API whenever possible.
How single structures will be protected in the future is still a moving target, at least it is not documented. And you should never use undocumented stuff
Ideas on for SMP multi-core
Another suggestion is ... Forbid/Permit function calls are meant to halt multitasking so as no other task could intervene with what ever the calling task is doing, e.g. setting semaphores. Disable/Enable calls are meant to halt interrupts and as a side effect they also halt task switching.
One option is to make it compulsory to protect shared resources with semaphores and forbid the use of simple Forbid() calls as to protect something. Setting semaphore should be done if possible with atomic instructions (check and alter in one instruction). Or make the second concurrent ObtainSemaphore call halt the second calling task and force if possible a task switch which ever gives better results.
Semaphores could store the owning tasks task pointer instead of boolean to make things easier.
As long as the CPU initiates the DMA transfers through the OS, and the OS ensures that the transferred memory is within the region accessible to the user initiating the transfer, everything is fine. The CPU is the conductor, and the CPU by that has the control of which DMA transfer is initiated and which is not.
All you need to do is to write device drivers reasonable. Hint: CachePreDMA and CachePostDMA exist.
All the Os has to do is to verify that the memory regions to be transferred are valid, and prohibit direct access to the DMA control registers from user space. None of these algorithms imply huge costs.
The current OS design doesn't really allow virtual memory in first place, Forbid() is again the problem.
[http://www.tbs-software.com/guide/index.php?guide=autodocs.doc%2Fmemory.doc&node=1 memory.library API] seem to low level. IMHO the programs should not know how the swapping is implemented. I would just go for one new memory flag
MEMF_SWAPPABLE that indicates that a certain memory region or a whole memory pool won't be accessed during Forbid()/Permit() etc. It only solves part of the problem, it only implements virtual memory and not memory protection. For the latter you need to be able make certain memory inaccessible by other programs, some memory read-only for one task and read-write for other tasks, etc. And I think this should be done in the same Address Space in order to avoid you constantly need to swap between different address spaces.
So to summarize, if there are programs using this API we may provide a wrapper layer to get them working but I am not convinced this API should be the reference API with whom to provide VM to AROS programs.
=== Variadic ===
variadic functions (i.e. functions with an arbitrary amount of arguments).
<pre>
#include <stdarg.h>
[...]
char * STDARGS GetKeyWord(int value, char *def, ...)
{
[...]
va_list va;
[...]
va_start(va, def);
[...]
va_end (args);
</pre>
Please keep with using stdarg rather than having va casted to a LONG * type and varargs handled manually. Doing so, prevents tons of casting, where a simple va_arg can be used. So, string = *((char **) args) instead of string=va_arg(va, char *).
<pre>
#include <stdio.h>
#include <stdarg.h>
int printf (const char * format, ...)
{
int retval;
va_list args;
va_start (args, format);
retval = vfprintf (stdout, format, args);
va_end (args);
fflush (stdout);
return retval;
} /* printf */
</pre>
Couldn't find varargs.h or stdarg.h. and have no use for AROS_SLOWSTACKHOOKS or AROS_SLOWSTACKTAGS.
GCC looks for stdarg.h in a different place:
/bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/include/stdarg.h
Here is a path for a "normal" header:
bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/../../../../i386-aros/sys-include/aros/system.h
The use of vararg.h isn't supported by newer gcc versions. If you want your code to run on architectures that pass part of variadic arguments in a number of registers you need to use AROS_SLOWSTACK macros. Otherwise your program will not work on powerpc and x86_64 ports.
Of course the SLOWSTACK stuff is not needed in a function that can use va_list, va_start, va_arg and va_end. It's only needed if you want to write functions like DoMethod or similar.
#include <stdarg.h>
should be enough no matter if you do cross or native compiling. If it does not work, something is wrong and should be corrected.
Stdarg.h is here, Development:lib/gcc/i386-aros/4.2.2/include/
...which is part of the compiler's default include paths. In other words, #include <stdarg.h> works out of the box, indeed. (sorry, I should have just tried it before invoking "search" or "find"...)
furthermore, myprintf() as shown above won't work, because...
printf(format, args);
...is wrong - the second argument does not match printf() prototype, it expects a argument list, but args is of type va_list (obviously) - so one has to use...
vfprintf(stdout, format, args);
...instead, just like in the original printf(), and add fflush(stdout).
additionally, one could use...
int myarg = va_arg(args, int);
...between va_start() and va_end() to access individual arguments, where each call to va_arg() returns an argument casted to the desired type (here: "int") from the list given (here: "args") and advances to the next one.
wrapping up vfprintf() and modifying the format string now is a major speedup! no more backslash-n typing! this has been haunting me for years!
On MOS and AmigaOS, the NewObject variadic function is kept in the static library. It takes most of the parameters on the stack - thanks to that the implementation of NewObject calls the NewObjectA function. Everything works perfect, and the typical MUI macros may be easily used.
This, however, is not the case when you compile for AROS. Here, NewObject is a variadic macro, not a function. Thanks such approach we do not need any custom compiler in case of systems, where the arguments of variadic functions are passed partially through registers and partially through the stack (This is the case of PPC and x86_64, this is also the reason why both OS4 and MOS require specially patched compilers).
Since NewObject is a macro, the gcc's preprocessor expects the list of macros arguments enclosed within parentheses. In MUI macros it is not the case. Imagine the following test code:
<pre>
#define foo(a,b) ((a)+(b))
int loosy_function(int a, int b)
{
return foo(a,b);
}
</pre>
This will compile and work, but the following piece of code:
<pre>
#define foo(a,b) ((a)+(b))
#define END )
int loosy_function(int a, int b)
{
return foo(a,b END;
}
</pre>
will fail with the error: unterminated argument list invoking macro "foo"
There are two ways of fixing your issue. Either create your new objects outside this huge MUI constructions, and in there use just a pointer, or get rid of the "End" macro and exchange it with "TAG_DONE)".
Badly written software is, for example, casting va_list to an APTR or even doing so as if va_list were a plain table of function arguments. Such code needs to be fixed because it has very few chances to work anywhere but on author's machine ;)
The problem is nOt that they assume sizeof(APTR) == 4, its that they often do not use APTR, and use ULONG to store pointers exclusively. If the code used APTR/IPTR as it should - most of the "problems" wouldn't exist.
It would also help if people would start using variadic arguments properly. Many coders do assumptions which shall never be made. Instead, they should consider using stdarg.h file and all the va_* functions :)
===ABI===
In the head of our SVN repository there are now only 3 directories:
<pre>
admin/
branches/
trunk/
</pre>
We have added two extra dirs there: tags and imports
As discussed when we branch ABI V0 and [[Aros/Developer/ABIv1|ABI V1]] it would also be good to introduce tags. Normally this is done in a directory in the repository called tags. Currently we don't have this directory there. (We do have branches/tags that is a hack I have done because one doesn't have write access in the top directory. I think this directory is not clean and should be removed).
The second directory I would introduce is an imports directory for implementing vendor branches as discussed in the svn [http://svnbook.red-bean.com/en/1.5/svn.advanced.vendorbr.html book]. Currently we use code from several different projects and that code is stored inside the AROS tree; we seem to have problems with keeping this code up to date and merge our changes upstream. Maintainers of up stream projects like the MUI classes etc. have complained about this (to put it lightly).
Introducing these vendor branches would make it easier to see what changes we have made and make patches to be sent upstream and make it easier to import newer upstream versions of their code. Although can't "copy" the vendor branch into the main branch because it's already there, so start with a "merge".
Yes, the first step to make the code already in the repository compatible with the vendor branches will be the most difficult. The best way to do it the following way:
* first import the version on which the current AROS code is based into the vendor branch
* then import the new version over it in the vendor branch
* finally merge the difference between these two version in the AROS code present in the repository.
For example, place NList directly under vendor and not in a subdirectory like "contrib/zune/classes".
Actually after we have a stable [http://aros.sourceforge.net/documentation/developers/specifications/drafts/abiv1.php ABIv1 (2012 or later)]. We need to move away as much as possible from the contrib directory to some other repositories. The reasons are ...
* The AROS repository should be for the core AROS code.
* other contrib projects should be tried to be compiled for all Amiga-like OSes.
* The release scheme for AROS and the other programs should not have to be aligned.
* Binary versions should be provided on aros-archives and on aminet and/or OS4Depot to install them. (Some clever programs should maybe be provided to make the life of distribution developers easier).
* avoid parallel forks of programs for AROS and the other amiga OSes.
If there is really a need for a place for hosting AROS projects we may investigate setting up such a server but then including bug tracking, governance, maillist, etc. for each project separately. I personally think there are already enough places like sourceforge, google code, savannah, etc. where people can go for hosting such projects.
==Links==
* http://amigadocs.hokstad.com
* http://amigadocs.hokstad.com/doku.php?id=dev-links
* http://www.liquido2.com/tutorial/index.html
* Amiga(TM) OS4 has a [http://www.ast-workshops.co.uk/os4pg/ workshop] page and hope to produce a [http://amigaworld.net/modules/newbb/viewtopic.php?topic_id=31117&forum=42#549091 book] soon. [http://www.solie.ca/articles/map/map.html Brief Guide].
In the future...?
*AROS 64bit - SMP, Vulkan with OpenGL compability layer
*AROS 32bit - keep for historic reasons
What would you like to see implemented in AROS?
ABIv1 completed, SMP (x86_64), SendMsg()/GetMsg() to support memory protection between target and destination, in that order. Michal Schulz and Jason McMullan have been toying with the question "What are the minimal changes needed to the AmigaOS 3.1 API to support SMP"? The answer so far seems to be "few, but subtle". For example, SysBase->ThisTask is no longer meaningful on SMP, but FindTask(NULL) is. Disable() and Forbid() are shockingly bad on performance, but adding a spinlock semaphore mode to SignalSemaphore will help new code on SMP.
Leveraging a 'common' OS with a lot of machine support (Linux, MacOS, Windows, QNX, etc.) is something that AROS has been doing for quite a long time, and it is the biggest strength of AROS. This AROS experience and programming model, in the same way the Google's Android layers on top of Linux, or MacOS X layers on top of the Darwin/BSD kernel, as a first step
* The graphics + layers subsystem could be implemented as a shim on top of a OpenGL ES implementation (ie on any modern Linux system, or the RaspberryPI's hardware, MacOS X, etc).
- This also allows every window to be on its own 3D surface with backing store, allowing Wanderer (or a Commodity)
rearrange/zoom/animate app windows without having to send a pile or refreshes to them
* Use OpenAL as the sound backend
* AROSTCP would be a thin layer over the native OS's TCP/IP stack
* dos.library, poseidon.library, and input.device would be slim shims over the native APIs
* If we move to loading all libraries' into the application's task space, instead of a single global instance of the library, this will allow SMP and MMU more easily.
- Yes, it will require a lot of work in the libraries to make this transition
- Yes, I do think it will be worth it in the end.
* A 'fat binary' install format (or, maybe LLVM bytecode) that can be 'flattend' to the target architecture on installation.
So, what would this 'AROS of the future' look like?
* AmigaOS 3.x style API, with certain 'fundamental changes' to message passing
* Uses the underlying OS' device drivers, so more AROS developer effort can go to user-visible features and bugfixes
* Allows AROS applications to run side-by-side with the OS's native apps
And why would anyone want to program on such a system?
* AROS applications would run on any system that has the AROS Framework installed
* AROS applications are pixel-for-pixel the same on all platforms.
* Develop with the knowledge that you are guaranteed OpenGL and OpenAL, and the rest of the AROS Framework
an option for mmake to dump its dependency of metatarget in a graphviz[*] input file. This should make it possible to visualize the dependencies and hopefully be inspiration for cleaning up some mess, circular or unneeded dependencies and so on.
AmigaOS gcc 9 [https://franke.ms/amiga/gcc.wiki Old versions] able to create binaries for AmigaOS and [https://eab.abime.net/showthread.php?t=93813 Upgrading gcc versions]
==References==
{{reflist}}
{{status|50%}}
{{BookCat}}
gfu23jjmf0kchtkimom5doozfni5oc3
4656358
4656354
2026-08-05T08:13:24Z
Jeff1138
301139
4656358
wikitext
text/x-wiki
{{ArosNav}}
==A technical overview of AROS==
Google translation [http://translate.google.com/translate?hl=en&sl=auto&tl=de&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs German], [http://translate.google.com/translate?hl=en&sl=auto&tl=fr&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs French], [http://translate.google.com/translate?hl=en&sl=auto&tl=it&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Italian], [http://translate.google.com/translate?hl=en&sl=auto&tl=es&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Spanish], [http://translate.google.com/translate?hl=en&sl=auto&tl=hi&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Hindi], [http://translate.google.com/translate?hl=en&sl=auto&tl=zh-CN&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Chinese],
[http://translate.google.com/translate?hl=en&sl=auto&tl=ru&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Russian],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pl&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Polish],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pt&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Portuguese]
{{Uncited}}
AROS,<ref>[http://aros.sourceforge.net/download.php References and sources]</ref> like AmigaOS (TM), is a [[w:Message passing|message-passing]], [[w:Preemption (computing)|preemptive]] [[w:Multitasking|multitasking]] [[w:Operating system|OS]].
It uses [[w:Reentrant (subroutine)|re-entrant]] shared libraries to save memory space.
AROS is based around an executive library kernel (Exec) and two other libraries:
* Exec (the "kernel", which is not a kernel in the modern sense),
* Intuition (graphics and GUI, integrated into the system) and
* AmigaDOS (Disk Operating System, the Metacomco's Tripos modified to work with Exec).
The design philosophies of AmigaDOS and Intuition are rather different, the former adopting a C-like API and the latter creating an [http://www.basden.demon.co.uk/amiga/amiga.oo.html object-oriented], message passing aware environment for the programmer. The system base is the only absolute address in AmigaOS (located at 0x00000004) this does differ with AROS as AROS SysBase is automatically provided (no $4) but everything else is dynamically loaded. The OS is well known for delivering high performance due to its close connections with the hardware, while simultaneously having the flexibility to support re-targetable graphics (Cybergraphics) and retargetable audio subsystems (AHI).
: Diagram showing relationships of libraries to system needed
Remember, AROS is a [http://en.wikibooks.org/wiki/Aros/Developer/ABIv1 research] operating system, and while all contributions to the base AROS code are welcome, please contact the dev list first for any core changes. Writing applications for AROS does not have this requirement.
While AROS appears and feels almost feature complete, it is still [[Aros/Developer/IncompleteAPIs|missing a small number of functions]] from the Amiga API - as well as a few implementations of [[Aros/MissingFunctionaility|core functionality]]. There are also a number of user applications that, while not strictly part of the AmigaOS 3.1 environment, need to be written.
[https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1201 This thread provides] information for setup, [http://www.aros.org/documentation/developers/index.php documentation] and whether you are interested in core OS changes and/or writing/porting software apps
*you compile directly under AROS, which can be running on either real hardware, virtual hardware
*in hosted mode under linux/window, cross-compile from that host OS (save your files as ISO-8859-15 encoding instead of UTF-8)
The repository for the [https://github.com/aros-development-team/AROS current development version ABIv1], the [https://github.com/deadw00d/AROS/tree/alt-abiv0 repository for current stable PC version ABIv0 with backported ABIv1 features is located which is used on AROS One and Icaros x86 based distros]
Any [https://github.com/aros-development-team/AROS/issues bugs / issues can be added]
We have a [https://arosdevteam.slack.com/archives/CUFV48U3H slack here], discord on [https://discord.gg/UKp9qdEBuQ Discord@AmigaDev],
==Software Development for AROS==
===Programming languages===
Apart from 'The Developer Environment', which primarily supports C/C++ code, there are other programming languages available for AROS:
'''Scripting'''
:[[Aros/User/DOS|DOS]], included in all
:[[Aros/Developer/Docs/LUA|LUA]], included in all or [http://www.airsoftsoftwair.de/en/prod_hollywood.html Hollywood]
:REXX [[Aros/Developer/Docs/Rexx|Regina (AROS' ARexx)]], included in all
:Python [ Info], included in Icaros
:Ruby [http://www.ruby-lang.org/en Info]/[http://archives.aros-exec.org/index.php?function=browse&cat=development/language download]
'''Basic'''
:[http://amos.pspuae.com/AmosProManual/contents/c1.html '''Amos Pro'''] [http://amos.pspuae.com/index.php?action=forum#1 compatible] [http://www.amigacoding.com/index.php/Main_Page commands] (all incomplete)
::[http://sourceforge.net/projects/xamos/ X-Amos]
::[http://sdlbasic.sourceforge.net/ SDLBasic] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://alvyn.sourceforge.net/ Alvyn] ([http://www.dusabledanslherbe.eu/AROSPage/MISC.14.html download])
::[[Aros/Developer/Basic/Basic4SDL|Basic4SDL]] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://www.ultimateamiga.co.uk/index.php?topic=9425.0 Project Deimos],
:'''Blitz Basic''' [http://aros-exec.org/modules/newbb/viewtopic.php?post_id=46537#forumpost46537 none on AROS]
:: [http://www.amiforce.de/main.php Amiblitz] on JanusUAE amiga(TM) emulator
:'''Amiga Basic'''
:: [ ACEBasic]
'''Misc'''
:[[Aros/Developer/Docs/E|AmigaE Portable E]]
:[https://ae.arosworld.org/index.php?board=11.0 FreePascal FPC Aros-Exec thread], [http://archives.aros-exec.org/index.php?function=browse&cat=development/language Download], FreePascal for AROS has its own [http://fpcaroswiki.alb42.de/ Wikibook],
:[[Aros/Developer/Docs/LLVM|LLVM]],
===Where to get the C/C++ Environment===
If you want to develop for AROS, its generally easier to be running linux hosted AROS development environment especially for C++, cross compiling the code. That's how most developers now are doing it. g++ is used to compile owb web browser as well as some other AROS software. If you were hoping for a rich set of C++ libraries or classes defined for the OS feature set, you might be disappointed.
AROS Native compiling is possible, but you're much more likely to run into the odd bug(s) in the dev environment since it gets little testing and fixing by other developers.
Is there a sftp software or scp over ssh available?
Maybe. At least the security part would be handled by [https://github.com/jens-maus/amissl amissl] [https://archives.arosworld.org/index.php?function=browse&cat=network/misc port]. DOpus5 has recently added sftp support. See here for a [https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1974&highlight=ssh&pid=12073#post_12073 ssh scp client]
[https://arosdevteam.slack.com/join/shared_invite/enQtOTc4Mzg0NDIzNzQ0LWQ2NWZmNmMwNGIwNGEyNTgxNzU3MGFjMTk3ZThmOTQ1MTVjMzhmNTllYWQ0ZTUxMjBjMGE0Y2VjMDJmNTc5MzI#/shared-invite/email Slack Dev Forum]
====Cross compilers from Windows or Linux====
*Windows WSL2 walkthrough can be [https://arosnews.github.io/how-to-cross-compile-aros-hosted-wsl/ found here]
you want to build AROS. No problem.
Here are instructions for 64-bit:
https://github.com/deadw00d/AROS/blob/master/INSTALL.md
Here are instructions for 32-bit:
https://github.com/deadw00d/AROS/blob/alt-abiv0/INSTALL.md
And as always has been the case you can use the contrib archive to 'obtain' the development directory which contains the /native/ AROS gcc compiler and tools. That compiler is used to build AROS itself but can be used outside the AROS build process by providing --sysroot with indicated directory to cross compile for AROS.
=====Older guides for Linux hosted compiler=====
Please install these packages before moving to next step. Below is a reference list for Debian-based distributions. Reference build system was Ubuntu 18.04/20.04 amd64.
subversion git-core gcc g++ make gawk bison flex bzip2 netpbm autoconf automake libx11-dev libxext-dev libc6-dev liblzo2-dev libxxf86vm-dev libpng-dev gcc-multilib libsdl1.2-dev byacc python-mako libxcursor-dev cmake zsh mingw64
Do all of these operations under home directory of your user or another directory where your user has write permissions.
Specifically, in a section "Linux-i386", be sure first to build the cross-compiler (toolchain-alt-abiv0-i386) and only then AROS itself (alt-abiv0-linux-i386).
Clone & build
<pre>
$ mkdir myrepo
$ cd myrepo
$ git clone https://github.com/deadw00d/AROS.git AROS
$ cd AROS
$ git checkout alt-abiv0
$ cd ..
$ cp ./AROS/scripts/rebuild.sh .
$ ./rebuild.sh
</pre>
Now to the build selection below - Linux-i386
Select toolchain-alt-abiv0-i386 - Select alt-abiv0-linux-i386 (DEBUG)
Start AROS by:
<pre>
$ cd alt-abiv0-linux-i386/bin/linux-i386/AROS
$ ./Arch/linux/AROSBootstrap
</pre>
Pc-i386 Select toolchain-alt-abiv0-i386 (if not built yet) - Select alt-abiv0-pc-i386
ISO image available in alt-abiv0-pc-i386/distfiles
Now that we have linux-hosted build, we can resume native (option 2).
Run ./rebuild.sh and selection option 2. Wait until it finished, then:
<pre>
$ cd alt-abiv0-pc-i386
$ make
</pre>
Now
<pre>
$ make bootiso
</pre>
Now, your compiler is located in toolchain-alt-abiv0-i386 directory and named i386-aros-gcc. Includes are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/include and libraries are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development.lib.
This is how then can be passed to the compiler:
/home/xxx/toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot /home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development -L/home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/lib
../toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot bin/linux-i386/AROS/Development local/helloworld/helloworld.c -o local/helloworld/helloworld
Another method was using Debian like distros and download the gimmearos.sh script (on [http://archives.aros-exec.org/index.php?function=browse&cat=development/cross aros-archives]) to setup the developer environment by downloading necessary packages ...
The gimmearos script is a good start in that direction, building the cross compilers and hosted AROS environment, but gimmearos.sh might be out of date or not be completely compatible with any given linux distro.
In order to do that, you have to compile AROS yourself. Download AROS source archive not contrib. Compile AROS by entering the main directory
./configure
make
([http://aros.sourceforge.net/documentation/developers/compiling.php More on compiling AROS]). The result will be a basic AROS system without development tools.
To compile C++ on Linux, type 'make gnu-contrib-crosstools', creating the cross-compilers in ./bin/linux-i386/tools/, named i386-aros-gcc, etc.
'''Note''': Currently, to make the cross compilers usable copy 'collect-aros' from tools/ to tools/i386-aros/bin/. At the moment the cross compilers if used from the Linux command line will only find it when it's there.
If you want to compile native compilers (the Developer Environment), type 'make contrib-gnu-gcc', creating native compilers in AROS' System:Development/bin directory.
When the output needs to be stripped <code>--strip-unneeded --remove-section .comment</code>
The Obj-C backend should build out of the box.
Open contrib/gnu/gcc/mmakefile.src and search for the line which contains "--enable-languages" and add "objc" to the list of languages that follows it.
--enable-languages=c,c++,objc
Better make it—enable-languages=c,c++,objc,obj-c++
ObjC++ is broken as soon as you try to use exceptions, but that might change in future GCC versions and it does not hurt having it there already.
Do you need a cross-compiler or a real compiler? In the first case you can get away with just downloading the proper gcc archive, apply the patch and proceed with the normal gcc build. In the case of a real cross-compiler then when downloading the contrib sources, also need to download the normal sources, place the contrib sources into a directory called contrib, need to install autoconf+automake+perl+python, call ./configure, cd into the subdirectory and type make.
to rebuild GCC with host == build == target == i386-pc-aros. So just get the vanilla sources and apply the patches without bothering about the build system?
[https://vmwaros.blogspot.com/2019/10/a-pre-configured-development-machine.html pre-configured VM environment vmware virtual machine to develop AROS and AROS software]
'''64 bit'''
'''32 bit'''
A good option for multiple OS is [https://axrt.org/index.php?tab=download-aros AxRuntime lets developers compile their Amiga API-based applications as Linux binaries being able to utilize modern development tools available on Linux, like IDEs, debuggers, profilers, etc]
====Native compilers for AROS====
Namely gcc for C or g++ for C++ are supplied with the [[Aros/Developer/Docs#The Developer Environment|Developer Environment]], which is already '''setup''' and part of any current AROS distribution like AROS One or the nightlies
* Current GCC 6.5 (32bit) though moving to 10.5 and 15.1 (64bit)
* Older software components. GNU GCC 4.x GNU BinUtils, GNU Fileutils 4.x, GNU Textutils and others.
On single partition systems and the Boot ISO, the AROS Developer environment is installed under "SYS:Development/". Systems with multiple partitions - such as a Work: partition - tend to install it to there instead, however it can be installed manually to any location. Please remember, if moving, that you will need to correct the Development packages 'install location' env variable to point to the new locations root - look in SYS:S/startup-sequence.
<pre>
Assign Development: SYS:Development
Assign C: Development:bin ADD
</pre>
In the aros build instructions. you need to check out contrib and/or ports into your AROS source directory, as subdirs. then, assuming you are building in an external build dir, as you should, you simply configure and "make contrib" for instance or whatever submodule you might want to build.
===Beginners Tutorials in C C++===
As AROS is [http://eab.abime.net/showthread.php?t=29856 C based] API compatible to AmigaOS 3.x, so most of the information on programming C on the Amiga applies to AROS as well. Please note that there is a lot of AmigaOS 1.3 (1985-1989) and [https://www.markround.com/amigaguide AmigaOS AOS 2.x (1990-1992)] information around but OS3.1 is recommended but limited in amount.
Brief overview of what is required to write AROS Applications
# Using [[Aros/Developer/Docs/Libraries/Intuition|Intuition]] for basic screens/windows
# Using graphics within windows via 8bit [[Aros/Developer/Docs/Libraries/Graphics|graphics]] and so onto 15-16-24bit [[Aros/Developer/Docs/Libraries/CGFX|cybergraphx]]
# Load and save work to [[Aros/Developer/Docs/Libraries/DOS|dos]] disk drives
# Using the [[Aros/Developer/Zune|ZUNE GUI Environment]]
Writing native games require this extra information
# Using [[Aros/Developer/AHIDrivers|AHI audio hardware independent API]]
# Using USB joystick/joypad with the Poseidon USB stack through [[Aros/Developer/Docs/Libraries/LowLevel|LowLevel]] library
Additional features that could be added later
# Adding additional [[Aros/Developer/Docs/Libraries/Locale|Locale]] language translations to your program
# Adding a [[Aros/Developer/Docs/Rexx|AREXX/Regina]] port to your application
# Executing Amiga(TM) [[Aros/User/DOS|DOS]] commands from your application
# Using [[Aros/Developer/Docs/Libraries/Icon|icons]] (.info files) and icon tooltypes (stack, version, and program startup options)
# Local couch or IP based SANA2 networking co-op multi player gaming support
Most AmigaOS programming books are nowadays very much out of date as most are from the late 1980s and do not cover later amigaOS releases like 3.1 for example, Rob Peck's book "Programmer's Guide to the Amiga". The Amiga ROM Kernel manuals aka RKMs like Libraries (3rd edition), Devices (), the AmigaDOS manual (3rd edition) and the Style Guide may have their uses. There are some reference examples from AmigaMail and Devcon notes (available again on an Amiga developers CD 2.1).
For Arexx then "The Amiga Programmer's Guide to ARexx" by Eric Giguere, which was published by Commodore is useful as well as an "Arexx Cookbook".
Curly brackets missing - try SHIFT + ALT + 7 or 0.
* Beginners C Guide [http://www.iu.hio.no/~mark/CTutorial/CTutorial.html C Tutorial],
* [http://thecguru.com/ C for beginners],
* [http://fresh2refresh.com/c/c-basic-program/ C programming basics] for students,
* [https://www.edx.org/courses Free Online course] from American Universities
* Reference Amiga [http://amigadev.elowar.com/ API reference].
* AROS based c source can be found [[Aros/Developer/Docs/Examples|here]] and lots of example code can be found inside [https://github.com/aros-development-team AROS sources] themselves and from the contrib section of the archives from [https://github.com/aros-development-team/contrib Aros site], and study the AROS applications source code, e.g. the test programs from the Tests drawer (folder/directory). Take a look at the code of some smaller AROS programs might be a better and more up to date guide. Some old Os3 [http://www.blackfiveservices.co.uk/amiga-c/ here]
When you upload your builds, please write the architecture (like i386-aros, x86_64-aros, etc.) in the archive name
and it is also advisable to write in the field "Requirements" what ABI (ABIv11, ABIv0 or ABIv1)
===Compiling C/C++ Code===
Native, although we have a IDE Integrated Development Environment (Murks), it does lack a debugger. Whilst others use a combination of a text editor and shell to edit code. Most though use an AROS hosted on Linux to take advantage of the better GCC tools like GDB and various IDEs.
Open shell - its a menu option at the top left of Wanderer (desktop). Or by using the right Win key and w (or F12 and w) within the directory with the source code. Type in
sh
to change the amiga shell into a unix shell. You can then type in ls (unix equivalent to amiga dir). Take a look [http://en.wikibooks.org/wiki/Linux_commands here] for more commands.
For a single file program-name.c or program-name.cpp
gcc -o program-name program-name.c
or
g++ -o program-name program-name.cpp
or
g++ -o test -Wall -g main.cc texturelib.cpp xmodelib.cc -lsdl -lgl
To close the shell, click on the top left-hand corner to close (twice). Once to get back the aros shell and then again to close finally. Use [http://freshmeat.net/projects/cksfv/ cksfv] as a test.
Some source code requires the addition of Amiga API libraries, like dos, which you can flag at the compile time as
gcc -o julia.exe julia.c -ldos
For DOS use -ldos as example and if you are compiling mui codes it will be -lmui or intuition -lintuition. Other missing symbols are due to linker libraries being necessary for linking in functions that aren't in the standard C libraries. For example some source code would need added
-lz or -lm or -lpng or -larosc etc.
use this in unix line command mode to search for 'search-item' in many .c files (*.cpp for c++, etc.)
grep -l 'search-item' *.c
If the program is not executable, try using parameter fno-common
"Delete #?.o"? Or if you are using abcshell then "rm *.o"
:''More information: [[Aros/Developer/Porting software]]''
=== How to make Apps have AROS 64-bit specific support code ===
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
AROS64 already uses 64bit addressing, it just doesn't setup the MMU for more than 4GB physical memory currently.
When porting software to AROS64 it is "mostly" a case of converting ULONG's that are used to store pointers, into IPTR's instead, etc. Another quirk, is making sure items on the stack are the correct size by using the STACKED attribute for them.
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
compiling mui stuff for aros setting -std=gnu99 is necessary, had -std=c99 usually
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order.
crash which suggest memory corruption. From my experience porting from 32-bit to 64-bit these kinds of errors can happen if a pointer is passed somewhere via ULONG variable. Then half of the pointer is cut.
To generate this error, please run AROSBootstrap with -m 1024. This will allocate heap to 64-bit address space which will make these errors immediatelly visible. These types of crashes are hard to debug. Disabled as little code as possible to stop corruption from occurring and then try to read from the code where it can be broken
Crashing in tslf_freevec is another symptom of memory corruption and these memory corruptions will manifest differently on different setups.
==Coding conventions==
As the AROS core source is a shared developer experience, there are rules regarding structure and style. When it comes to your creating your own app and coding, the structure and style should be your own, i.e. you should enjoy what you do and do it so that you can understand what is going on.
===Layout===
<syntaxhighlight lang="c">
static void 1st_function()
{
program
exit(0);
}
int main(void)
{
1st_function();
2nd_function();
3rd_function();
return 0;
}
</syntaxhighlight>
<syntaxhighlight lang="c">
struct Screen * openscreen(void);
struct Window *openwindow(struct Screen *screen, const char *title, LONG x, LONG y, LONG w, LONG h);
VOID 1st_function();
VOID 2nd_function();
int main(int argc, char **argv)
{
program
return 0;
} /* main */
VOID 1st_function()
{
}
VOID 2nd_function()
{
}
</syntaxhighlight>
===General style===
This code is used by many people and therefore you should keep some things in mind when you submit source code:
* Keep things simple
* Keep the source clean
* Always know what you are doing, if not flag it and describe what needs to be done...
* Explain clearly/simply what you are doing
* Remember that you write code once but that it is read many times by many people
===Comments===
AROS uses some of the comments in the source to generate the documentation. Therefore it's necessary to keep a certain format so the tools can find their information. Other comments are ignored but they should explain what you thought when you wrote the code. If you really can't think of an explanation, then don't write the code a second time like this:
<pre>
/* This adds 1 to t */
t ++;
</pre>
What we think of is this:
<pre>
/* Go on with next element */
t ++;
</pre>
===Formatting===
This is only '''IMPORTANT''' if you are going to work on the core AROS code or contrib but not applications which may reside outside like on AROS Archives or other websites.
<syntaxhighlight lang="c">
{
/* a */
struct RastPort * rp;
int a;
/* b */
rp = NULL;
a = 1;
/* c */
if (a == 1)
printf ("Init worked\n");
/* d */
if
(
!(rp = Get_a_pointer_to_the_RastPort
(
some
, long
, arguments
)
)
||
a <= 0
)
{
printf ("Something failed\n");
return FAIL;
}
/* e */
a = printf ("My RastPort is %p, a=%d\n"
, rp
, a
);
return OK;
}
</syntaxhighlight>
Looks ugly, eh ? :-) Ok, here are the rules:
<pre>
If several lines contain similar code, put similar things below each other (see a and b);
Put spaces between operands and operators
Put braces {}, brackets [] and parentheses () below each other (d) if there is much code between.
Brackets and parentheses may be in one line if the code between is small (c)
Indent by 4 Spaces. Two indent levels may be abbreviated by one tab.
</pre>
'''Before committing please normalize the indentation - if you have a mixture of tabs and spaced - please always use spaces, 1 tab = 4 spaces.'''
The reasons for this are:
# While some editors can use an arbitrary sizes for tabs, it's a bit complicated to tell another editor which tab size was used by the one used to write the code.
# Most code in AROS was written this way and your code should look like the rest.
# You can print this code on any printer without special tools to "fix" the tabs.
# Most editors have smart tabs which do exactly this. If your editor doesn't, write a bug report.
If you have a function with many arguments (d, e) you should put the parentheses in lines of their own and each argument in one line (d) or put the first argument behind the opening parentheses (e) and each following argument in a line of its own with the comma in front. The closing parentheses is in a line of its own and aligned with the beginning of the expression (i.e. the a and not the opening parentheses or the printf()).
Use a single blank line to separate logical blocks. Large comments should have a blank line before and after them, small comments should be put before the code they explain with only one blank line before them.
If you see any TABS in AROS core sources then the suggestion is to "detab the file and commit that separately" either before or afterwards from making functionality changes. Make two commits instead of one. This makes it easier for others to see the real changes instead of having to dig through multiple lines of irrelevant diffs.
===Eliminating Global Variables===
i.e. pass variables to functions (local scope) or classes making it easier to track and debug your code.
Any time you find that you need a particular thing in 'a lot of different places', chances are that all those places are conceptually related, and so you can create a class, a namespace, a function, or some other higher-level organizational unit to represent that relationship. This makes the program easier to understand.
Bad Designs
* All variables are global.
* There are no standalone functions, only sub-procedures which act on the global variables.
* Every sub-procedure is at least 500 lines to several thousand
* Every sub-procedure has more than one task to perform
* Copy-paste is preferred to writing methods, AND subtle changes are made in the middle of the code
Good Designs
* structure program into functions (C or basic) - top-down procedural approach
* put in class(es) (freepascal or C++) - the object is fixed and you use methods to access the object
<pre>
class String_List
{
private:
list<string> m_List; // member
public:
void read_strings() { /* read strings into m_List */ }
void print_strings() { /* write contents of m_List to stdout */ }
void sort_strings() { /* sort contents of m_List */ }
void sort_strings_reverse() { /* reverse-sort contents of m_List */ }
void unique_strings() { /* remove duplicate strings */ }
};
int main()
{
String_List myList; // local
myList.read_strings();
myList.sort_strings();
myList.print_strings();
myList.sort_strings_reverse();
myList.print_strings();
myList.unique_strings();
myList.print_strings();
return 0;
}
</pre>
This way it is very easy to replace the list with new list for debugging purposes, or replacing the methods without replacing the list, when you want different results. You only have to replace the content of the local variables.
So create the structure that matches your data (linked lists, trees, arrays, etc.) and what to do with them (sorting, searching, etc.)
<pre>
.h usually contain #define #include typedef enum struct extern screen and window definitions (data structures)
.c should contains functions and algorithms
</pre>
One way to look at it is that menu headings act as the .c file and sub-menu headings as functions.
When you start a project, you place a couple of declarations in the include file. As the project continues, you place more and more declarations in the include file, some of which refer to or contain previous declarations. Before you know it, you have a real mess on your hands. The majority of your source files have knowledge of the data structures and directly reference elements from the structures.
Making changes in an environment where many data structures directly refer to other data structures becomes, at best, a headache. Consider what happens when you change a data structure.
Use good variables names to help clarify code and only comment when you need to explain why a certain programming approach was made.
You're Refactoring Legacy Code, you see a global, you want to get rid of it. How do you do this?
Exactly what to do depends on how the global is used. The first step is to find all uses of the global throughout the code, and get a feel for what the significance of the variable is and how it relates to the rest of the program. Pay particular attention to the "lifetime" of the variable (when it gets initialized, when it is first used, when it is last used, how it gets cleaned up). Then, you will probably make the global a data member of a class (for OO languages), or you will write some get/set functions. Converting to the Singleton Pattern is common, but you may discover that it makes more sense for the data element to be a member of an existing singleton, or maybe even an instance variable.
# Create a basic read method, either as a class or a global function. Replace all reads with the access method, but leave the variable defined as a global.
# Review each of the writes to the method and extract action functions one at a time. Unless two operations are coded identically in the original code, extract each write access separately.
# Change the variable scope from global to local.
# Analyze similar action functions to determine if any can be merged, i.e., there are no functional differences in the results of the function, just differences in the implementation details.
# Review the calls to the read method and see if a more complex functionality should be applied. Follow the approach for writes and unless implementations are identical, create separate access functions.
# Analyze the access functions for duplication.
As returning variables by "passing by value" are forgotten, so "passing by reference" is often used instead. The reference is a pointer to the variable so the value is remembered when returned.
Alternatives
* Hidden Globals
* Singleton Pattern
* Database or TupleSpace
* Context Object
* Dependency Injection
* Stateful Procedures
==AROS/AmigaOS APIs and Docs==
<pre>
Library:
- Private data structure
- Many public access methods
Device:
- Private data structure
- Two (BeginIO/AbortIO) access methods
Resource:
- Public data structure
- *NO* access methods
</pre>
And, being Amiga OS-compatible, there are exceptions to all of these.
===System Libraries===
The [http://aros.sourceforge.net/documentation/developers/app-dev/index.php AROS Guide To Libraries] can be used as a guide to individual commands and Old Dev Docs are used in application programming.
The generated [http://aros.sourceforge.net/documentation/developers/autodocs/ Aros AutoDocs HTML Read] or download [http://aros.sourceforge.net/download.php docs-html.bz2 from here].
Amiga/Aros styles libraries are very different from windows and linux libs. Typical .so/dll libraries are foreign to most Amiga-like OS
*[[Aros/Developer/Docs/Libraries/AROSC|arosc.library]]
*[[Aros/Developer/Docs/Libraries/AmigaGuide|amigaguide.library]]
*[[Aros/Developer/Docs/Libraries/ASL|asl.library]]
*[[Aros/Developer/Docs/Libraries/Bullet|bullet.library]]
*[[Aros/Developer/Docs/Libraries/BSDsocket|bsdsocket.library]]
*[[Aros/Developer/Docs/Libraries/CAMD|camd.library]]
*[[Aros/Developer/Docs/Libraries/Codesets|codesets.library]]
*[[Aros/Developer/Docs/Libraries/CGFX|cybergraphics.library]]
*[[Aros/Developer/Docs/Libraries/CGXVIDEO|cgxvideo.library]]
*[[Aros/Developer/Docs/Libraries/Commodities|commodities.library]]
*[[Aros/Developer/Docs/Libraries/DataTypes|datatypes.library]]
*[[Aros/Developer/Docs/Libraries/DiskFont|diskfont.library]]
*[[Aros/Developer/Docs/Libraries/DOS|dos.library]]
*[[Aros/Developer/Docs/Libraries/Exec|exec.library]]
*[[Aros/Developer/Docs/Libraries/Expansion|expansion.library]]
*[[Aros/Developer/Docs/Libraries/FreeType2|freetype.library]]
*[[Aros/Developer/Docs/Libraries/GadTools|gadtools.library]]
*[[Aros/Developer/Docs/Libraries/Graphics|graphics.library]]
*[[Aros/Developer/Docs/Libraries/Icon|icon.library]]
*[[Aros/Developer/Docs/Libraries/Identify|identify.library]]
*[[Aros/Developer/Docs/Libraries/IFFParse|iffparse.library]]
*[[Aros/Developer/Docs/Libraries/Intuition|intuition.library]]
*[[Aros/Developer/Docs/Libraries/Keymap|keymap.library]]
*[[Aros/Developer/Docs/Libraries/Layers|layers.library]]
*[[Aros/Developer/Docs/Libraries/Locale|locale.library]]
*[[Aros/Developer/Docs/Libraries/LowLevel|lowlevel.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingBas|mathieeesingbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubBas|mathieeedoubbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingTrans|mathieeesingtrans.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubTrans|mathieeedoubtrans.library]]
*[[Aros/Developer/Docs/Libraries/Mathtrans|mathtrans.library]]
*[[Aros/Developer/Docs/Libraries/MUIMaster|muimaster.library]]
*[[Aros/Developer/Docs/Libraries/Partition|partition.library]]
*[[Aros/Developer/Docs/Libraries/PopUpMenu|popupmenu.library]]
*[[Aros/Developer/Docs/Libraries/OOP|oop.library]]
*[[Aros/Developer/Docs/Libraries/Regina|regina.library]]
*[[Aros/Developer/Docs/Libraries/Reqtools|reqtools.library]]
*[[Aros/Developer/Docs/Libraries/RexxSysLib|rexxsyslib.library]]
*[[Aros/Developer/Docs/Libraries/ScreenNotify|screennotify.library]]
*[[Aros/Developer/Docs/Libraries/TTEngine|ttengine.library]]
*[[Aros/Developer/Docs/Libraries/Thread|thread.library]]
*[[Aros/Developer/Docs/Libraries/Utility|utility.library]]
*[[Aros/Developer/Docs/Libraries/Xadmaster|xadmaster.library]]
*[[Aros/Developer/Docs/Libraries/Workbench|workbench.library]]
*[https://github.com/aros-development-team/AROS/commit/c82e86b8480277998014cc327b56c7664023a52f ClassAct Reaction boopsi class]
===AROS Subsystems===
# [[Aros/Developer/Zune|Zune MUI compatible GUI]]
# [[Aros/Developer/AROSAppPackages|AROS Application Packages]]
# AHI Audio Drivers - [[Aros/Developer/AHIDrivers|Usage]]/[[Aros/Developer/AHIDriversDev|Development]]
# AROSTCP Sana2 Network Interface Drivers - [[Aros/Developer/NICDrivers|Usage]]/[[Aros/Developer/NICDriversDev|Development]]
# [[Aros/Developer/AmiSSL|AmiSSL]]
# gfx.hidd/cybergraphics Video Drivers - [[Aros/Developer/GfxDrivers|Usage]]/[[Aros/Developer/GfxDriversDev|Development]]
# IO Device Drivers - [[Aros/Developer/IODeviceDrivers|Usage]]/[[Aros/Developer/IODeviceDriversDev|Development]]
# USB Device Drivers - [[Aros/Developer/USBDrivers|Usage]]/[[Aros/Developer/USBDriversDev|Development]]
# PCI Device Drivers - [[Aros/Developer/PCIDrivers|Usage]]/[[Aros/Developer/PCIDriversDev|Development]]
# [http://www.libsdl.org/ SDL] [https://github.com/search?q=repo%3Aaros-development-team%2Fcontrib%20SDL2&type=code SDL2 commits], [https://github.com/aros-development-team/contrib/commit/c62c3c425c35bac19dadc23be092b0b13a66c76c SDL3 initial commit], []
# [[w:Gallium3D|Gallium 3D]] [http://www.mesa3d.org/ openGL aka Mesa] - [[Aros/Developer/OpenGL|Usage]]/[[Aros/Developer/OpenGLDev|Development]] [http://www.swiftless.com/opengltuts.html Swfitless]
# A small subset of GTK2 through [http://sourceforge.net/projects/gtk-mui/ MUI-GTK]
# Cairo 2D Engine - [[Aros/Developer/Cairo|Usage]]/[[Aros/Developer/Cairo|Development]]
# [[Aros/Developer/Scalos|Scalos desktop API and plugin modules]]
# [[Aros/Developer/VHI|VHI video driver]]
====HIDDs====
*[[Aros/Developer/Docs/HIDD/HIDDClass|hiddclass.hidd]]
*[[Aros/Developer/Docs/HIDD/Graphics|graphics.hidd]]
*[[Aros/Developer/Docs/HIDD/VesaGfx|vesagfx.hidd]]
*[[Aros/Developer/Docs/HIDD/ATI|radeon.hidd]]
*[[Aros/Developer/Docs/HIDD/NVidia|nvidia.hidd]]
*[[Aros/Developer/Docs/HIDD/Nouveau|nouveau.hidd]]
*[[Aros/Developer/Docs/HIDD/Kbd|kbd.hidd]]
*[[Aros/Developer/Docs/HIDD/Mouse|mouse.hidd]]
*[[Aros/Developer/Docs/HIDD/i2c|i2c.hidd]]
*[[Aros/Developer/Docs/HIDD/IRQ|irq.hidd (deprecated)]]
*[[Aros/Developer/Docs/HIDD/PCI|pci.hidd]]
*[[Aros/Developer/Docs/HIDD/PCIPC|pcipc.hidd]]
*[[Aros/Developer/Docs/HIDD/Serial|serial.hidd]]
*[[Aros/Developer/Docs/HIDD/Thunderbolt|thunderbolt.hidd]]
https://github.com/aros-development-team/AROS/commit/4f02ea691799aff3a01f60cfa5f9182c82fc57a8
HIDD are used for device/peripheral low level hardware support drivers. The HIDD system is split up into a collection of classes with a strict inheritance hierarchy. A HIDD class implements a device driver for a single device or in rare cases a group of devices and provides an interface for other programs and devices to access.
In order to maintain portability of interfaces across a wide range of hardware this interface will in general not present the raw interface to the underlying hardware. Instead it will present a generic interface that describes many different hardware implementations. This allows for the best reuse of both interfaces and code.
HIDD API is heavyweight though. You need to open a HIDD library, open oop.library, instantiate an object (even if there's no object); and object calls are more costly compared to plain library calls.
Basically your task is to implement a subclass of hidd.ata.bus for your hardware. just implementing the XXXATA__Hidd_ATABus__xxxxxx methods for the Amiga chipset - and appropriate versions of the interface_xxx.c file(s). pretty much everything in probe.c could be ignored - just write a replacement scan for relevant amiga devices and store whatever info you need in the bus data? only the "SUPPORT_LEGACY" blocks might be related.
You do not need to depend on PCI API. PCI is just a way to discover the hardware on PCs, etc.
<hidd/pci.h> includes (at some depth) <interface/HW.h>, which defines IID_HW. This comes from the 'generic' HIDD class in:
rom/hidds/hidd/hiddclass.conf
did not split up HIDD and HW because they are always used in pair. It's the same as hidd/pci.h bringing definition for: PCI, PCIDriver and PCIDevice. PCI is actually PCIHW, just the name was not changed for backwards compatibility reasons. HW is a 'hub' where HIDD instances plug in.
ATA HIDD aoHidd_ATABus_Use32Bit value is completely ignored unless ata.device first detects correct command line parameter.
Yes. Unfortunately I was unable to find any comment in code or svn history with explanations. Looked at Linux source, there 32-bit PIO is also controller driver's property. Some of them enable it, some don't.
Actually, switching the default to ON should be safe. ata.device is fail-safe at this because during IDENTIFY command it validates upper 16 bits, and if they appear to be zeroes in all 128 longwords, then 32-bit mode is switched off. But, nevertheless, I know how tricky hardware can be, so I decided not to change original behavior. If you think it's wrong in some cases, then it's possible to add one more attribute like aHidd_ATABus_Default32Bit. If set to YES, then this means that 32-bit PIO is safe to use by default.
====Devices====
*[[Aros/Developer/Docs/Devices/ATA|ata.device]]
*[[Aros/Developer/Docs/Devices/Console|console.device]]
*[[Aros/Developer/Docs/Devices/Narrator|narrator.device]]
*[[Aros/Developer/Docs/Devices/Printer|printer.device]]
*[[Aros/Developer/Docs/Devices/Trackdisk|trackdisk.device]]
*[[Aros/Developer/Docs/Devices/AmberRAM|amberram.device]]
*[[Aros/Developer/Docs/Devices/Timer|timer.device]]
*[[Aros/Developer/Docs/Devices/|.device]]
The Amiga used [[Aros/Developer/Docs/Devices|Devices]] to communicate with [http://aros-exec.org/modules/newbb/viewtopic.php?start=0&topic_id=3475&viewmode=flat&order=ASC additional hardware]. AROS has replaced these hardware devices with hidd equivalents but some are still retained for backwards compatibility.
Local libraries/devices/handlers,etc. are supposed to override the ones in ROM if their version is higher than the one in ROM.
Here is the list of commands exec default:
{| class="wikitable"
| CMD_CLEAR
| Purge the buffer of the device
|----
| CMD_READ
| Playback Control
|----
| CMD_STOP
| Stopped the activity of the device
|----
| CMD_FLUSH
| Empty the queue of commands
|----
| CMD_RESET
| Reset a device
|----
| CMD_WRITE
| Playback Control
|----
| CMD_INVALID
| Create an error
|----
| CMD_UPDATE
| Gets updated device
|----
| CMD_START
| Will restart the device
|----
|}
While most other "stuff you communicate with" in AmigaOS are devices <ref>AMIGA ROM Kernel Reference Manual: Devices, 3rd Edition. Commodore-Amiga, Inc. Addison-Wesley, 1991. {{ISBN|0-201-56775-X}}</ref> that share a [http://gega.homelinux.net/AmigaDevDocs/ common base interface]. [[Aros/Developer/Docs/Devices1.3|OS 1.3 Device Drivers]].
====Handlers====
:[[Aros/Developer/Docs/Handlers/Pipe|pipe.handler]]
:[[Aros/Developer/Docs/Handlers/Port|port.handler]]
:[[Aros/Developer/Docs/Handlers/SFS|sfs.handler]]
:[[Aros/Developer/Docs/Handlers/FAT|fat.handler]]
:[[Aros/Developer/Docs/Handlers/PFS|pfs.handler]]
:[[Aros/Developer/Docs/Handlers/NTFS|fuse.handler]]
:[[Aros/Developer/Docs/Handlers/FFS|ffs.handler]]
filesystem handlers have their own separate system consisting of completely differently structured messages that dos.library use to pass requests (for things like reading, writing, getting directory contents etc.) to them. AROS originally went with implementing filesystem handlers as devices, which might arguably be more consistent with the rest of the AmigaOS API but which is quite incompatible with AmigaOS itself. However, it made it far harder to port filesystems and the gains were comparatively small, and so there's been a long standing goal of fixing this incompatibility. It has now, June 2011, been reintroduced to all AROS flavors.
are argstr and argsize valid for the handler startup environment?
DOS/RunHandler() calls DOS/CreateNewProcTags(), and then CallEntry() (in rom/dos/exit.c) to start the handler, so yes, argstr and argsize are *present* in the call signature of the handler.
Granted, argstr will be NULL and argsize 0, but those values *are* passed to the handler function using:
<pre>
AROS_UFC3(ULONG, entry,
AROS_UFCA(STRPTR, argptr, A0),
AROS_UFCA(ULONG, argsize, D0),
AROS_UFCA(struct ExecBase *, SysBase, A6));
</pre>
Creating your own [without the whole build tree http://pagesperso-orange.fr/franck.charlet/temp/radeon.zip] and then
<pre>
make stub
make
make install
</pre>
SFS has two Root blocks, one at the start and one at the end of the disk. The Root blocks both contain the same information. They hold various information about the disk structure and have the locations of some important blocks used by the filesystem.
The Root ObjectContainer contains the Root directory Object. The name of this Object is the name of the volume. It is identical to a normal directory Object.
The Bitmap is used to keep track of free space. Each bit in a bitmap represents a single block. A set bit indicates a free block and a cleared bit a used block.
AdminSpaceContainers are used to keep track of space which has been reserved for storing administration blocks. Only the Bitmap, the Root blocks and the actual data stored in files aren't stored in administration space. Administration space is allocated in chunks of 32 blocks at a time. A single AdminSpaceContainer can hold information about a large number of such areas each of which has its own little bitmap of 32 bits.
Extents are stored in a B-Tree. The Root block holds a pointer to the root of the Extent B-Tree. Extents keep track of space in use by a specific file. Each fragment a file consists of has its own Extent. Extents are in a double linked list. The list can be used to locate the next or previous fragment of a file.
Below is the standard block header. This header is found before EVERY type of block used in the filesystem, except data blocks. The id field is used to check if the block is of the correct type when it is being referred to using a BLCK pointer. The checksum field is the SUM of all LONGs in a block plus one, and then negated. When applying a checksum the checksum field itself should be set to zero. The checking a checksum the checksum is okay if the result of the checksum equals zero. The ownblock BLCK pointer points to the block itself. This field is an extra safety check to ensure we are using a valid block.
Field Type Description
id ULONG The id field is used to identify the type of block we are dealing with. It is used to make sure that when referencing a block we got a block of the correct type. The id consist of 4 bytes and each blocktype has its own unique foure letter code.
checksum ULONG This field contains the sum of all longs in this block, plus one and then negated. The checksum can be used to check if the block hasn't been corrupted in any way.
ownblock BLCK Points to itself, or in other words, this field contains the block number of this block. This is yet another way to check whether or not a block is valid.
<pre>
struct fsBlockHeader {
ULONG id;
ULONG checksum;
BLCK ownblock;
};
</pre>
The algorithm to calculate the checksum of a block:
<pre>
ULONG calcchecksum(struct fsBlockHeader *block, LONG blocksize} {
ULONG *data=(ULONG *)block;
ULONG checksum=1;
block->checksum=0;
while(blocksize>0) {
checksum+=*data++;
blocksize-=4;
}
return(-checksum);
}
</pre>
A Root block contains very important information about the structure of a SFS disk. It has information on the location and size of the disk, the blocksize used, locations of various important blocks, version information and some filesystem specific settings.
A SFS disk has two Root blocks; one located at the start of the partition and one at the end. On startup the filesystem will check both Roots to see if it is a valid SFS disk. If either one is missing SFS can still continue (although at the moment it won't).
A Root block could be missing on purpose. For example, if you extend the partition at the end (adding a few MB's) then SFS can detect this with the information stored in the Root block located at the beginning (since only the end-offset has changed). Same goes for the other way around, as long as you don't change start and end point at the same time.
When a Root block is missing because the partition has been made a bit larger, then SFS will in the future be able to resize itself without re-formatting the disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
version UWORD The version of the filesystem block structure. You can check this field to identify what version of the filesystem your dealing with it and to see if you can handle this structure correctly. Don't try to interpret the disk's structure when this field contains an unknown version number!
sequencenumber UWORD Used to identify which Root block was written last in case the sequencenumber on both Root blocks don't match.
datecreated ULONG Creation date of this volume. This is the date when the disk was last formatted and will never be changed.
bits UBYTE Various settings, see below.
<pre>
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
reserved1 ULONG[2] Reserved, leave zero.
firstbyteh ULONG High 32-bits of a 64-bit number. This is the first byte of our partition relative to the start of the disk.
firstbyte ULONG Low 32-bits of a 64-bit number.
lastbyteh ULONG High 32-bits of a 64-bit number. This is the last byte (exclusive) of our partition relative to the start of the disk.
lastbyte ULONG Low 32-bits of a 64-bit number.
totalblocks ULONG The total number of blocks this partition consists of.
blocksize ULONG The size of a block of this partition.
reserved2 ULONG[2] Reserved, leave zero.
reserved3 ULONG[8] Reserved, leave zero.
bitmapbase BLCK Block number of the start of the Bitmap.
adminspacecontainer BLCK Block number of the first AdminSpaceContainer.
rootobjectcontainer BLCK Block number of the ObjectContainer which contains the root of the disk (this is where the volume name is stored).
extentbnoderoot BLCK Block number of the root of the Extent B-Tree.
reserved4 ULONG[4] Reserved, leave zero.
</pre>
<pre>
struct fsRootBlock {
struct fsBlockHeader bheader;
UWORD version;
UWORD sequencenumber;
ULONG datecreated;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
ULONG reserved1[2];
ULONG firstbyteh;
ULONG firstbyte;
ULONG lastbyteh;
ULONG lastbyte;
BLCK totalblocks;
ULONG blocksize;
ULONG reserved2[2];
ULONG reserved3[8];
BLCK bitmapbase;
BLCK adminspacecontainer;
BLCK rootobjectcontainer;
BLCK extentbnoderoot;
ULONG reserved4[4];
};
</pre>
AdminSpaceContainers are used to store the location and bitmap of each administration space. The AdminSpaceContainers are located in a double linked list and they contain an array of fsAdminSpace structures. There is one fsAdminSpace structure for every administration space on disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
next BLCK The next AdminSpaceContainer, or zero if it is the last in the chain.
previous BLCK The previous AdminSpaceContainer, or zero if it is the first AdminSpaceContainer.
bits UBYTE The number of bits in each in the bits ULONG in the fsAdminSpace structure.
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
adminspace struct fsAdminSpace An array of fsAdminSpace structures. The size of the array is determined by the current blocksize.
<pre>
struct fsAdminSpaceContainer {
struct fsBlockHeader bheader;
BLCK next;
BLCK previous;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
struct fsAdminSpace adminspace[0];
};
</pre>
Field Type Description
space BLCK The first block of an administration space.
bits ULONG A small bitmap which is used to determine which blocks in an administration space are already in use. The number of bits in this bitmap is determined by the bits field in the AdminSpaceContainer.
<pre>
struct fsAdminSpace {
BLCK space;
ULONG bits;
};
</pre>
The fsBitmap structure is used for Bitmap blocks. A bitmap block is used to keep track of which space is in use and which isn't for a particular area of a disk. All bitmap blocks together keep track of the free space for an entire disk. The location of the first bitmap block is known and all other bitmap blocks are stored in order after the first one.
Field Type Description
bheader struct fsBlockHeader Standard block header.
bitmap ULONG An array of ULONG's. These hold the actual information on which blocks are in use and which aren't.
<pre>
struct fsBitmap {
struct fsBlockHeader bheader;
ULONG bitmap[0];
};
</pre>
Each bit in a bitmap block (except for the block header) represents a single block. If the bit is set than the block is free, and if the bit is clear then it is full. The first ULONG in the bitmap area of the first bitmap block represents blocks 0 through 31 on the disk. Bit 31 of this ULONG is block 0, 30 is block 1, and so on. Bit 0 of the first ULONG represents block 31.
Below is a table to clarify how bitmaps work even further. The first column is the bitmap block number, the second column is the number of the ULONG in the bitmap array. The third column is the bit number in this ULONG, and the last column is the block which this specific bit, in this specific bitmap block represents.
We'll assume here that a bitmap block has room for 120 ULONG's (meaning there is room for storing 32 * 120 bits).
<pre>
Bitmap block ULONG number Bit number Block represented
1 (first) 0 31 0
1 0 30 1
... ... ... ...
1 0 1 30
1 0 0 31
1 1 31 32
... ... ... ...
1 2 31 64
1 2 30 65
... ... ... ...
1 119 0 3839
2 0 31 3840
2 0 30 3841
... ... ... ...
</pre>
The last bitmap block doesn't need to be completely used. The unused bits (which belong to blocks which do not exist) all have to be clear, to indicate that these blocks are in use.
The fsObjectContainer structure is used to hold a variable number of fsObjects structures (Objects) which have the same parent directory. Each ObjectContainer must contain at least one Object. If there is space in the ObjectContainer not used by the variable number of Objects then that space is zero filled. Objects always start at 2-byte boundaries, which means sometimes a padding byte is inserted between two Objects.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the parent Object, or 0 if this object has no parent (which is only the case for the Root directory).
next BLCK The next ObjectContainer belonging to this directory, or zero if it is the last in the chain.
previous BLCK The previous ObjectContainer belonging to this directory, or zero if it is the first ObjectContainer in this directory.
object struct fsObject A variable number of fsObject structures. The number of structures depends on the individual sizes of each fsObject structure and the blocksize. These structures are located directly after each other with at most 1 byte of padding between them to get the structures aligned on a 2 byte boundary.
<pre>
struct fsObjectContainer {
struct fsBlockHeader bheader;
NODE parent;
BLCK next;
BLCK previous;
struct fsObject object[0];
};
</pre>
fsHashTable is the structure of a HashTable block. It functions much like the hash table found in FFS user directory blocks, except that it is stored in a separate block. This block contains a number of hash-chains (about 120 for a 512 byte block). Each hash-chain is a chain of Nodes. Each Node has a pointer to an Object and a pointer to the next entry in the hash-chain. Using such a hash-chain you can locate an object quickly by only knowing its name.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the directory Object this HashTable block belongs to.
hashentry NODE An array of Nodes. Each Node represents the start of a hash-chain (singly linked). A hash-value is calculated using the name of a file or directory, and this value determines in which chain the Object is linked. If there are no entries in a hash-chain then the hashentry value is zero.
<pre>
struct fsHashTable {
struct fsBlockHeader bheader;
NODE parent;
NODE hashentry[0];
};
</pre>
To calculate the hash-value using a name of an Object as input use these routines:
<pre>
UWORD calchash(UBYTE *name) {
UWORD hash=0;
/* Calculates a hash value over the passed in string.
The end of the string can be either a NUL byte or a
slash. The hash function is the same as the one
used in FastFileSystem set to international mode. */
while(name[hash]!=0 && name[hash]!='/') {
hash++;
}
while(*name!=0 && *name!='/') {
hash=hash*13+upperchar(*name++);
}
return((UWORD)(hash % (UWORD)((blocksize-sizeof(struct fsHashTable))>>2)));
}
UBYTE upperchar(UBYTE c) {
if((c>=224 && c<=254 && c!=247) || (c>='a' && c<='z')) {
c-=32;
}
return(c);
}
</pre>
The BNodeContainer is used to store B-Trees. Currently only one B-Tree is in use by this filesystem and it is used to store the location of file data. The fsBNodeContainer structure contains two other structures. The fsBlockHeader structure and the BTreeContainer structure.
Field Type Description
bheader struct fsBlockHeader Standard block header.
btc struct BTreeContainer Contains information about the B-Tree and its nodes contained in this block.
<pre>
struct fsBNodeContainer {
struct fsBlockHeader bheader;
struct BTreeContainer btc;
};
</pre>
First try and locate the Root block. It should start with "ROOT". SFS has two of these, one at the start of the partition and one at the end. One of the fields contains the block size, which will be the size of all important SFS blocks.
The root block has the root object container, which contains information about files and directories in the root directory. The object
containers basically hold one or more smaller structures that represent files and directories. Scanning them all should give you a list of
files and directories.
The root block also has the root of the Extent B-Tree. This is a standard B-Tree structure (not a binary tree) that is used commonly in
all kinds of system, you can read about how they work on Wikipedia if needed. The B-Tree holds the information about *where* all the data is
located for your files.
To recover your files, I'd do this:
* Find one of the root blocks, if not present, then figure out the block size your disk was using, and scan every block in turn to see if it
looks like an ObjectContainer (check the fsBlockHeader's ID, check if the ownblock number is equal to the block you are currently scanning,
and check its checksum). So if you currently have block 12, and you see a block with the correct id, and ownblock = 12 and its checksum is good,
then that's probably a valid ObjectContainer.
* With all the ObjectContainers found, you can extract filenames and directory names from these, but also the number of their first data
block (in the field data) and the file size. For small files (less than blocksize) this data block will be enough to recover the data.
For larger files, you might be lucky and all the remaining blocks are found after the first one (if the file was defragmented). You can't be
sure of that though so...
* For larger files, you need to find all the BNodeContainers. You could scan these in the same way you found all the ObjectContainers (look for
blocks with the correct id, ownblock number and checksum).
* With all the BNodeContainers found, you can try looking up the first data block of a file in the B-Tree structure. This is a bit complicated
-- the B-Tree consists of non-leaf nodes (blocks that only contain pointers to other B-Tree blocks), the isLeaf flag indicates this. Or it
can be a B-Tree leaf block. The leaf blocks contain extra information per entry (see https://hjohn.home.xs4all.nl/SFS/extents.htm)
<pre>
struct fsExtentBNode {
ULONG key;
ULONG next;
ULONG prev;
UWORD blocks;
};
</pre>
The key should be a block of a file (the first of a range), that is 1 to 65535 block long (depending the "blocks" field). If the file is split
up into more parts, then "next" will contain block number of the next range of blocks. You need to look this up again in the B-Tree
structure to find out how large it is.
You can for the most part ignore the other structures (bitmap, admin containers). The fsObjects and B-tree containers is what you'll need to
recover the data.
====Resources====
<pre>
rom/storage/mmakefile.src
rom/storage/storage.conf
rom/storage/storage_device.c
rom/storage/storage_ids.c
rom/storage/storage_init.c
rom/storage/storage_intern.h
rom/storage/storage_mount.c
rom/storage/storage_unit.c
</pre>
<pre>
rom/storage/includes/device.h
rom/storage/includes/unit.h
rom/storage/includes/volume.h
rom/storage/storage_intern.h
</pre>
<pre>
</pre>
*[[Aros/Developer/Docs/Resources/ACPI|acpi.resource]]
*[[Aros/Developer/Docs/Resources/Battclock|battclock.resource]]
*[[Aros/Developer/Docs/Resources/Bootloader|bootloader.resource]]
*[[Aros/Developer/Docs/Resources/Cia|cia.resource]]
*[[Aros/Developer/Docs/Resources/Filesystem|FileSystem.resource]]
*[[Aros/Developer/Docs/Resources/Hostlib|hostlib.resource]]
*[[Aros/Developer/Docs/Resources/Kernel|kernel.resource]]
*[[Aros/Developer/Docs/Resources/Misc|misc.resource]]
*[[Aros/Developer/Docs/Resources/Processor|processor.resource]]
==Debugging Code==
Please use the [http://sourceforge.net/tracker/?group_id=43586&atid=439463 AROS Bug Tracker] if any issues are found.
GRUB Command line list
<pre>
sysdebug
usbdebug - allows to see Poseidon's log in debug output
</pre>
How do I get debugging out of InitResident ? If running i386 hosted on linux sysdebug=initresident on command line.
This way you can enable any of listed flags. sysdebug=all stands for "everything"
Have an executable (crosscompiled C++ code) which has 6 MB size on disk, but after loading it in memory, 250 MB RAM is taken. Any software that would split AROS executable into ELF part which would show actual size values?
readelf -S executable
it will show you all sections in elf file, including sizes and requested alignment.
objdump -h filename
That's will give you a quick overview of the sections and sizes. Ignore all the .debug.* sections.
Would hazard a guess that you have a large .bss section. That's pretty common in C++.
Next step:
nm—size-sort filename | grep ' [bB] '
The last few will be your biggest consumers. Would suggest -C to demangle the symbols... ;)
Suggest profiling the program (just use some printf's in the main loop for time spent in each part), it usually is quite easy to spot slow parts in games or apps.
If someone has '#define IPTR ULONG' somewhere. To see where that define is, redefine IPTR in the source code that fails, just above the line that fails, and the preprocessor will tell you where it was defined first.
===How to setup gdb with AROS/hosted===
Download AROS sources (AROS-xxxxxxxx-source.tar.bz2, where xxxxxxxx is the current date) and AROS contrib sources (AROS-xxxxxxxx-contrib-source) from
Untar-bzip2 and cd to the unpacked archive directory.
> tar -xvjf AROS-xxxxxxxx-source.tar.bz2
> cd AROS-xxxxxxxx-source
Check the link to "contrib" (contrib-source) inside directory, e.g. correct like this:
> rm contrib
> ln -s ../AROS-xxxxxxxx-contrib-source.tar.bz2 contrib
Make sure you have the correct locale setting, otherwise compilation will fail at some point. See [http://aros.sourceforge.net/documentation/developers/compiling.php#setting-the-locale-to-iso8859 here] (or link below) for more on that. You might have to enter this:
> export LANG="en_US.ISO-8859-1"
Now configure for a debug build - see "./configure --help" for more - here are two examples:
> ./configure—enable-debug=stack,modules,symbols
> ./configure—enable-debug=all
You may "make" now, or choose a separate directory for your build (e.g. for easy removal), for example if compiling for i386 architecture you could create a directory like this:
> mkdir linux-i386
> cd linux-i386
> ../AROS/configure—enable-debug=stack,symbols,modules
When done configuring you're ready to go:
> make
Building AROS takes some time - minutes on fast machines (e.g. 2.5 GHz quadcore), up to hours on slower machines.
The result will be AROS Linux hosted with gdb debugging enabled.
See aros.org documentation for more on compiling AROS, including more [http://aros.sourceforge.net/documentation/developers/compiling.php --enable-debug] options.
When finished, enter bin/linux-i386/AROS directory (replace "linux-i386" with your compilation target platform, e.g. linux-x86_64, etc.) inside the unpacked archive directory. This directory contains the required .gdbinit file for properly running AROS inside gdb.
> cd bin/linux-i386/AROS
Run AROS (here: with 128MB of memory) from gdb:
> gdb—args boot/aros-unix -m 128
or
> gdb—args boot/arosboot -m 128
(gdb) r
Watch the shell output - in case AROS complains about "LoadKeyCode2RawKeyTable: Loading "DEVS:Keymaps/X11/keycode2rawkey.table" failed!" you should also see some instructions on how to create a keymap table. (see link above "more on compiling", too.)
Quit gdb, and try default keymap table:
(gdb) q
The program is running. Quit anyway (and kill it)? (y or n) y
> cd ../../..
> make default-x11keymaptable
Re-run AROS, as described above. Try e.g. RAros (= right windows key) + W to open a shell. If this doesn't work you have to create a keymap table yourself, quit gdb again, and make a new keytable:
> make change-x11keymaptable
A window will open. Watch the window's title bar, and follow the instructions.
When done, re-run AROS. RAros + W should now open a shell.
Next, compile your program with gdb support.
When you start GDB is there a warning which says
warning: File "<whatever>/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to ...
If so start gdb with "-ix .gdbinit"
<pre>
Summary - In short:
* build AROS with debugging support (i.e. ./configure --enable-debug=all)
* build your application with debugging support (i.e. option -g)
* run AROS in the GNU debugger (you may use the GUI frontend "ddd" which simplifies usage a bit)
* start your application
* use the commands "findaddr" and "add-symbol-file" as written in the debugging manual
* if the debugger doesn't find the source code of your application use the "dir" command of the debugger.
</pre>
===How to use gdb===
In AROS open a shell, then (in host shell) use CTRL-Z to go into gdb. Use "b Exec_CreatePool" (one of the functions used early on by startup code in programs) to add a breakpoint, then "cont" and gdb will interrupt somewhere early during startup of "program". Use "bt" to show backtrace and "loadseg" for "??" entries. One of them will be for "program". After that you can use "disassemble program".
One thing you need to make sure is that .gdbinit you have in your build directory is the same as in source tree. It has been modified some time ago, but the build system does not refresh it - you need to copy it manually
To recap, please read our debugging [http://aros.sourceforge.net/documentation/developers/debugging.php manual]:
To detect segfaulting when loading, try...
./configure—enable-debug—with-optimization="-O2"
Because crash or no crash may depend on optimization. For newer compilers maybe this helps...
--with-optimization=-"-O2 -fno-strict-aliasing"
One way to make crashes less random (more easily reproducible) is to activate the munging of free memory in rom/exec/freemem.c which is normally commented out:
<pre>
Index: freemem.c
===================================================================
--- freemem.c (revision 34289)
+++ freemem.c (working copy)
@@ -154,11 +154,12 @@
* created with their TCB placed in the tc_MemEntry list. The workaround
* is to avoid munging when FreeMem() is called with task switching disabled.
*/
+
/* DOH! it doesn't work even this way. What's wrong???
- *
- * if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
- * MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
*/
+
+ if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
+ MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
}
</pre>
Mungwall can be turned on at runtime. Currently this works in all hosted versions. Just specify "mungwall" on kernel command line and it works. It can work on native too. In order to enable it you need to parse kernel command line, and if "mungwall" is present, set EXECF_MungWall bit in IntExecBase.IntFlags.
This needs to be done before the first AllocMem() for obvious reasons. And never reset back this flag! If you change it on a working system, you are doomed.
Hosted ports do the processing in rom/exec/prepareexecbase.c --enable-debug=mungwall option in configure still works but is going obsolete. A kludge in rom/exec/allocmem.c is responsible for this and it needs to be removed when the transition is done.
BTW, on i386-pc port it can be activated by "mungwall" argument on command line, you don't need to rebuild AROS.
New mungwall affects not only AllocMem()/FreeMem(), but also pools. I also tested it with AllocAbs(), seems to work correctly.
Runtime mungwall works on:
* pc-i386
* pc-x86_64
* linux-i386
* linux-x86_64
* darwin-x86
* linux-ppc
Works on all hosted ports, if the port itself is working.
* amiga-m68k
* Not on sam440-ppc and efika-chrp-ppc, even if they would be able to be built at moment. Does not work on (for now, need NVRAM support)
When starting my freshly rebuilt i386-linux-aros which was compiled with full debugging support I get sometimes the error "Program exited with code 0377". Add the following to your .gdbinit:
set follow-fork-mode child
Here are some of the custom AROS gdb functions (defined in ".gdbinit" file) to resolve "in ?? ()" entries in backtrace:
<pre>
#0 0xb7ffd424 in __kernel_vsyscall ()
#1 0xb7e2a657 in sigsuspend () from /lib/libc.so.6
#2 0xb7c63900 in ?? ()
#3 0xb7c640e3 in ?? ()
#4 0xb7c641e0 in ?? ()
</pre>
You can use
loadseg 0xb7c63900
loadframe 2
or
loadbt
and some others. Use "help " for a little help text. If the commands do not work try "loadkick" first.
Use "thistask", "taskready", "taskwait" to get list of AROS tasks. "bttask " shows backtrace of a task which is in ready or in wait queue and "loadseg" to resolve "??" entries in it's backtrace ("loadframe" would not work as it assume current running task).
===Native debugging tools for AROS===
to enable debugging at boot time entering the GRUB menu editing line (E key) and adding "debug=memory" to your boot line, then press Ctrl+X to complete booting.
SYS:Tools/Debug/'''Bifteck'''
Open a shell and enter the line below to run Biftek and grab the debug messages collected in RAM into a text file.
tools/debug/bifteck > ram:debug.txt
and certainly does not open a window. It is a shell tool and only dumps data located from the debug location.
It is therefore important to 'catch' that debug data as soon as possible (before it gets overridden). You should invoke bifteck at the first opportunity before doing anything else. You can use the TO option to store bifteck output to a file or you can pipe it manually to a file.
SYS:Tools/Debug/'''Sashimi''' - displays error messages
One suggestion is to do a bug() debugging. Each time bug() is executed it will be output on sashimi.
You include <aros/debug.h> and place bug("something\n"); in your source code at location though which control passes.
To get the output - open an aros shell
SYS:Tools/Debug/sashimi > RAM:out.txt
'''Ctrl C''' to end the output to the RAM Disk.
# open shell, and type
# ram: (to switch to ram drive)
# System:Tools/Debug/Sashimi > mylogfile.txt
# open AHI prefs using wanderer (or use another opened shell)
# play test sound
# close AHI prefs
# shell still open with Sashimi running: press ctrl-c to break Sashimi and return to prompt.
# in shell: copy mylogfile.txt System: (or to your required location)
SYS:Utilities/'''Snoopy''' - monitors OS function calls, run "Sashimi" to see Snoopy's output
SYS:Tools/'''WiMP''' - the Window (and Screens) Manipulation Program
You can use the -E option of gcc to find out how preprocessor macros are expanded.
===Errors===
crash in strcasecmp usually means that one of its arguments is NULL.
empty space between these two names, prossibly some invisible character
Old Amiga [http://www.amigacoding.com/index.php?title=Guru_codes&redirect=no Guru Codes]
If the crash is in intuition. Sometimes, if it relates to text, a null pointer sets it off.
an uninitialised pointer can have any address (this is a common fault).
Compiling on 64bit, Many old code would not properly typecast when doing pointer-integer conversions and thus at least throw a warning. This can easily be located and fixed.
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
* Fix (change IPTR/SIPTR back to ULONG/LONG) the few places which really rely on ULONG/LONG being exactly 32 bit. That's for things like pixel (ARGB) buffers, structs written/read to disk, colormaps, but probably not much else.
Then again, many current compilers also throw a warning when you try to assign a pointer value to an integer and the integer is possibly too small. This happens under .NET for example when a 64 bit pointer is assigned to something like an ULONG - so exactly the case which you described.
=== AI ===
<---
Model <---> Agent ---> End user
Gemini LMStudio
Qwen Comfyui
etc
Recent, self hosting on laptops, mini pcs or desktops with '''quantization''' 4bit has reduced memory requirements but still require 16Gb+ and no high end gpu for text based
*[https://lmstudio.ai/download LMstudio single gpu],
Google Gemma 4 Model
*[ 12B QAT]
Alibaba Cloud's [https://huggingface.co/ Qwen] team series of large language models LLMs
*[https://huggingface.co/models?other=qwen3 Qwen 3], [],
*[https://huggingface.co/models?other=qwen2 Qwen 2], [https://huggingface.co/Qwen/Qwen2.5-Coder-32B qwen 2.5 Coder],
*[ Kimi K3],
Small Claude Model
*[https://github.com/sipeed/picoclaw picoclaw]
Bigger LLMs but with settings
*[https://ollama.com/download Ollama single gpu]
*[https://github.com/ggml-org/llama.cpp/releases llama.CPP multi gpus],
*[ VLM multiple gpus],
For the full experience
#Training learning using 1+ high end GPUs at least 16GB VRAM per GPU card or 64Gb+ of unified, 16Core CPU with at least 64Gb of RAM system memory, though training can take weeks
#Inference with custom asics or GPUs
*[ MiniMax H3] for audio and video but gpu 8Gb+
*[https://github.com/jamiepine/voicebox voicebox]
*[https://github.com/ideogram-oss/ideogram4 ideogram4]
*[https://github.com/calesthio/OpenMontage OpenMontage]
<pre>
Text to Audio --\
Text to Video --/ Reference Video --> Video and Audio output
</pre>
=== Linux ===
<syntaxhighlight lang="c">
/* 1. Header for your name,date,purpose of program.
2. Pre-processor directives. This will include the #includes for files you want to add.
3. Includes for function prototypes if necessary.
4. Main()
Create Pointers for Libraries and any Window you want to open.
5. Open necessary libraries.
6. Check if open exit program if fail.
7. Open a window exit program if fail.
8. Add your program
9. Close Window
10 Close Libraries.
11 End Program. */
/* standard os included headers <.h> */
#include <dos/dos.h>
#include <dos/dosasl.h>
#include <dos/dosextens.h>
#include <dos/exall.h>
#include <dos/rdargs.h>
#include <exec/memory.h>
#include <exec/types.h>
#include <utility/utility.h>
#include <intuition/intuition.h>
/* define as unresolved external references (proto/xxx.h) and compiler will link to auto(matically) open library */
#include <proto/arossupport.h>
#include <proto/dos.h>
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/graphics.h>
#include <proto/cybergraphics.h>
#include <proto/datatypes.h>
#include <proto/icon.h>
#include <workbench/workbench.h>
#include <workbench/icon.h>
#include <datatypes/pictureclass.h>
#include <proto/muimaster.h>
#include <libraries/mui.h>
#include proto/bsdsocket.h
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* my own headers ".h" */
#define CTRL_C (SetSignal(0L,0L) & SIGBREAKF_CTRL_C)
#define isDir(fib) ((fib)->fib_DirEntryType >= 0)
#define ARG_TEMPLATE "FILE/A,ALL/S,QUIET/S,W=WIDTH/N,H=HEIGHT/N,M=METHOD,DEFTOOL"
int main(void)
{
return retval;
} /* main */
</syntaxhighlight>
If you used c++, there is not yet c++ support in our shared library system.
The easiest way to create / compile a shared library would be to use the AROS build system but the libraries can be created manually. You have to create a ROMTAG structure and some header files.
A shared library is built with the %build_module macro with a line like this:
%build_module mmake=MetaTarget modname=mylib modtype=library files=SourceFiles
This macro can build different AROS module types, like devices, Zune classes, HIDDs, etc.
<pre>
##begin config
version 1.0
##end config
##begin functionlist
void func1(LONG a, LONG b)
int func2(char *s, ULONG a)
##end functionlist
</pre>
There is more [http://aros.sourceforge.net/documentation/developers/sys-dev/libraries.php here]
Alternatively,
<pre>
#ifndef LIB_H
#define LIB_H
#define __NOLIBBASE__
#include <exec/libraries.h>
#include <exec/semaphores.h>
#include <dos/dos.h>
#ifdef __AROS__
//#include <aros/debug.h>
#define reg(x)
#define __saveds
#endif
#define USESYSBASE struct ExecBase *SysBase = Base->My_SysBase;
struct MyTestBase
{
struct Library My_Test_Lib;
struct ExecBase *My_SysBase;
APTR My_SegList;
int testint;
};
#endif
</pre>
<pre>
/*--------------------------------------------------------------------------*/
/* Resident header written for mytest.library */
/*--------------------------------------------------------------------------*/
#define __NOLIBBASE__
#define VERSION 1
#define REVISION 0
#define LIBHEADNAME mytest
#define LIBHEADNAMESTR "mytest"
#define COMPDATE "04.10.2015"
#define VERS "1.0"
#define LIBBASETYPE struct MyTestBase
#define LIBBASETYPEPTR LIBBASETYPE *
#include <aros/debug.h>
#include <exec/exec.h>
#include <proto/exec.h>
#include <exec/resident.h>
#include <exec/nodes.h>
#include <exec/libraries.h>
#include <aros/symbolsets.h>
#include "lib.h"
const UBYTE lib_name[] = LIBHEADNAMESTR ".library";
const UBYTE lib_id[] = "$VER: " LIBHEADNAMESTR ".library " VERS " (" COMPDATE ") by ALB42\n";
extern const APTR FuncTable[];
AROS_UFP3 (LIBBASETYPEPTR, InitLib,
AROS_UFPA(LIBBASETYPEPTR, Base, D0),
AROS_UFPA(BPTR, seglist, A0),
AROS_UFPA(struct ExecBase *, sysbase, A6)
);
static struct LibInitStruct
{
IPTR LibSize;
const APTR *FuncTable;
const struct DataTable *DataTable;
APTR InitFunc;
}
const LibInitStruct =
{
sizeof(LIBBASETYPE),
FuncTable,
NULL,
(APTR)InitLib
};
const struct Resident romtag =
{
RTC_MATCHWORD, /* match word */
(APTR)&romtag, /* back pointer */
(APTR)(&romtag + 1), /* skip pointer */
RTF_AUTOINIT | RTF_EXTENDED,/* flags */
VERSION, /* version */
NT_LIBRARY, /* type of module */
0, /* init priority */
(STRPTR)lib_name, /* module name */
(STRPTR)lib_id + 6,
(APTR)&LibInitStruct,
REVISION, NULL
};
AROS_UFH3 (LIBBASETYPEPTR, InitLib,
AROS_UFHA(LIBBASETYPEPTR, Base, D0),
AROS_UFHA(BPTR, seglist, A0),
AROS_UFHA(struct ExecBase *, sysbase, A6)
)
{
AROS_USERFUNC_INIT
Base->My_SegList = seglist;
Base->My_SysBase = (APTR)sysbase;
Base->testint = 0;
USESYSBASE
bug("InitLib\n");
if (!set_open_libraries())
{
set_close_libraries();
return NULL;
}
return Base;
AROS_USERFUNC_EXIT
}
AROS_LH1(LIBBASETYPEPTR, LibOpen,
AROS_LHA (ULONG, version, D0),
LIBBASETYPEPTR, Base, 1, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibOpen\n");
(void)version;
Base->My_Test_Lib.lib_OpenCnt++;
return Base;
AROS_LIBFUNC_EXIT
}
__saveds APTR LibExpungeInternal(LIBBASETYPE *Base reg(a6))
{
USESYSBASE
APTR seglist;
bug("LibExpungeInternal\n");
if (Base->My_Test_Lib.lib_OpenCnt)
{
return 0;
}
seglist = Base->My_SegList;
Forbid();
Remove((struct Node*)Base);
Permit();
FreeMem((APTR)Base - Base->My_Test_Lib.lib_NegSize, (LONG)Base->My_Test_Lib.lib_PosSize +
(LONG)Base->My_Test_Lib.lib_NegSize);
set_close_libraries();
return seglist;
}
AROS_LH0(BPTR, LibClose,
LIBBASETYPEPTR, Base, 2, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibClose\n");
if (!(--Base->My_Test_Lib.lib_OpenCnt))
{
return LibExpungeInternal(Base);
}
return 0;
AROS_LIBFUNC_EXIT
}
AROS_LH1(BPTR, LibExpunge,
AROS_LHA(LIBBASETYPEPTR, Base, D0),
struct ExecBase *, sysBase, 3, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
(void)sysBase;
USESYSBASE
bug("LibExpunge\n");
return LibExpungeInternal(Base);
AROS_LIBFUNC_EXIT
}
AROS_LH0(LIBBASETYPEPTR, LibReserved,
LIBBASETYPEPTR, Base, 4, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibReserved\n");
return 0;
//return (APTR)LibReserved();
AROS_LIBFUNC_EXIT
}
// Space for your own functions
// do not forget to update the FuncTable as well
AROS_LH1(int, TestFunction,
AROS_LHA(int, TestValue, D0),
LIBBASETYPEPTR, Base, 5, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("TestFunction\n");
Base->testint = TestValue + Base->testint;
return Base->testint;
AROS_LIBFUNC_EXIT
}
// Functable -> Table of all functions in the Library, in right order - important!
const APTR FuncTable[] =
{
&AROS_SLIB_ENTRY(LibOpen,LIBHEADNAME,1),
&AROS_SLIB_ENTRY(LibClose,LIBHEADNAME,2),
&AROS_SLIB_ENTRY(LibExpunge,LIBHEADNAME,3),
&AROS_SLIB_ENTRY(LibReserved,LIBHEADNAME,4),
&AROS_SLIB_ENTRY(TestFunction,LIBHEADNAME,5),
(void *)-1
};
// AutoInit stuff
void *__PROGRAM_ENTRIES__symbol_set_handler_missing;
void *__LIBS__symbol_set_handler_missing;
// end of AutoInitStuff
</pre>
Makefile
<pre>
VPATH =
CFLAGS = -O2 -g -fomit-frame-pointer -W -Wall -Wno-parentheses
CC = i386-aros-gcc
LD = i386-aros-gcc
LDFLAGS = -nostartfiles -Wl,-Map -Xlinker linkermap
LIBS = -lautoinit -llibinit
STRIP = i386-aros-strip --strip-unneeded --remove-section .comment
OBJS = lib_header.o
all: mytest.library
mytest.library: $(OBJS)
$(LD) $(LDFLAGS) $^ $(LIBS) -o $@
lib_header.o: lib_header.c lib.h
clean:
rm -f *.o *.library *.ppu testlibrary linkermap
</pre>
Porting UNIX library to AROS - dealing with static variables which would make it easy to port such libraries to AROS, keeping the benefits of sharing them on disk, but losing the benefit of actually sharing them in memory.
Our problem arises by the fact we want to share the actual code (the .text section of the library) and constant data, but we need to have per-task .bss and .data sections. If we get rid of our intention to share the .text and .rodata sections, things get quite easy: just load and relocate the library whenever it's open, by whoever it's open. It's like statically linking the library into the executable, except that the final linking is done at runtime.
In the V0 branch, in workbench/hidds/hidd.nouveau was committed pcimock.hidd. This is a pci driver that allows mocking real PCI devices under linux-hosted. The main idea is to be able to run the real hardware driver under linux-hosted with as little changes as possible (some changes will always be needed though unless someone wants to write complete device simulator) so that driver's code paths can be executed and debugged using gdb. This was a very helpful capability when porting nouveau. Now it is externalized from nouveau.hidd and can be used by other people porting drivers. The pcimock.hidd can currently mock 4 different nvidia cards, 1 AGP bridge and also mock irq.hidd.
What's the difference between this driver and the pcilinux.hidd? I used that one to develop many different HW drivers for aros. As far as I understood the intention of pcilinux.hidd it is supposed to get access to real hardware that is running under linux. The pcimock.hidd goal is to mock the hardware. For example my dev box is a PCIE system, but I still would like to run the AGP codes paths in nouveau under linux-hosted to check if they don't seg fault. The other case would be to run codes paths for hardware that the developer does not have (Fermi cards in my case). In the case of pcimock.hidd, the AROS driver's code paths will execute as long as you add proper mocking (for example fill in PCI config area or values for registers in BARs). This is an advantage for ported drivers - the code should already work (since it worked on another system) but there might have been mistakes made during porting which can be detected easily with gdb.
In case you are writing your driver from scratch, pcilinux.hidd hidd will give you more advantage, since you can actually access the real hardware from linux-hosted.
== Misc ==
===APL, MPL, BSD, GPL and LGPL Licences===
The majority of AROS sources in licensed under AROS Public License ([http://aros.sourceforge.net/license.html APL]) which (to a degree) protects us from someone taking AROS sources and not contributing improvements back (for example MorphOS took some AROS source and then contributed changes back)
It is written to allow the use of AROS code in other open source or commercial projects without exception whilst providing a mechanism so that improvements/additions can find their way back to the original source in one form or another.
There are "3rd" party applications used by AROS that do not fall under this license, which are an extra "Contrib" download for convenience.
Anyone can port GPL-ed network and sound drivers as AROSTCP and AHI are GPLed. Direct using (porting) [http://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs GPL]-ed code in other parts of AROS (gfx, sata, usb) is not possible because AROS license is not compatible with GPL. You need to utilize permissive licensed code like BSD or MIT/X11.
BSD and MPL license are the closest to APL.
APL however is not so compatible with LGPL/GPL.
LGPL case - you cannot statically combine APL code with LGPL. You can, however thank to LGPL being "lesser" restrictive, use LGPL dynamically loaded libraries in APL codes.
GPL case - you cannot combine APL code with GPL in any way if there is no explicit clause by GPLed code authors allowing that. If you do combine APL with GPL in "bad" ways described above - you have a problem (you violate GPL). This problem might result in everything in AROS becoming GPL or everything running or AROS becoming GPL (here I'm not sure really). The other scenario is that you are not allowed to legally distribute such code at all. To be honest I have grasped how to violate GPL, but I'm still no exactly sure what happens when you violate it (but I'm sure it's not anything nice)
GPL software can run on top of non-GPL "system components" (see system components exception of GPL), but the other way around (non-GPL using GPL) leads to problems. This means applications like scout, or Quake III are ok (in the majority of cases).
Theres no reason GPL drivers cannot be ported - but they cant be in AROS's ROM (requires linking APL code with GPL), nor can AROS depend on them (e.g. they must use existing apis).
If they are launched (dynamically linked) by a user action that is allowed. It is also allowed to distribute such binaries together for convenience.
GPL is not about statical or dynamic linking but is about executing process and function calls.
These components - SFS, isapnp, Zune texteditor, AHi, network drivers, freetype, openuirl, BHFormat, Edit and (" dynamically loaded libraries") are LGPL, not GPL. Mesa/Nouveau stuff is MIT. Some user tools are GPL though.
'''AROS (system)'''
* system components (libraries/classes/devices/etc) cannot be GPL as they would propagate GPL to complete system as well as GPL is not compatible with MPL from which APL is based
* system components can be LGPL v2 or a permissive license (MIT/BSD)
* system applications can be anything you like (but still I would prefer APL or permissive so the code can be reused if needed)
'''Contrib:'''
* no rules - contrib does not impact AROS system since nothing in AROS system depends on contrib.
About stealing code: The chances of this happening is exactly the same whether we are APL or GPL. If any closed-source option wanted to do it, there is no one that can validate otherwise. MorphOS has used some AROS codes, but contributed changes back.
The rationale behind APL is that while it guarantees that the original developer will get the improvements back (to a certain degree - file based), the person who uses the codes does not have to open his original codes. BSD does not guarantee that the original developer gets improvements. GPL requires the person using the codes to open his codes as well.
The copyright holders needs to stay - we just need information from them that the codes are available under APL (for example a checked-in file like in case of Poseidon). We don't do transfer of copyrights.
; Ultimately what can and cannot be done is up to the author(s) - not the licence.
===AROS source code tree===
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-trunk.txt
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
Found this interesting (non-GPL) licensing 'anomaly' - to keep in mind for distributors.
Programs that lose their license if sold ("non-profit only" licensed):
contrib/aminet/comm/term/TinyTerminal
contrib/aminet/dev/basic/bwBASIC
contrib/aminet/text/edit/xdme
contrib/fish/aroach
contrib/fish/lotto
contrib/fish/shuffle
contrib/fish/touch
+ cdvdfs.
Here is a list of all the GPL/GPLv2/GPLv3 licenses fossology found, what have explicit licenses in their comments.
excluded LGPL, BSD/GPL dual licensed and programs (such as Prefs/Edit and BHFormat)
<pre>
AROS/rom/dbus/include/ AFL_v2.1 ,GPL_v2+ (supposedly AFL < 3 is GPL incompatible)
AROS/workbench/classes/zune/betterstring/include/ GPL_v2+
AROS/workbench/classes/zune/texteditor/include/ GPL_v2+
AROS/workbench/classes/datatypes/gemimage/ GPL_v2+ GPL
AROS/workbench/classes/datatypes/degas/ GPL_v2+
AROS/workbench/libs/openurl/README: GPL
AROS/workbench/network/smbfs/documentation/ GPL_v2
AROS/workbench/network/smbfs/source_code/ GPL_v2+
AROS/workbench/network/stacks/AROSTCP/bsdsocket/kern/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/mmakefile.src conf.h GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/sys/ CMU ,GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/net/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/api/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/conf/conf.h: GPL_v2
AROS/workbench/network/stacks/AROSTCP/netinclude/net/radix.h: CMU ,GPL_v2
AROS/workbench/devs/AHI/AHI/ GPL_v2+
AROS/workbench/devs/AHI/AddAudioModes/ GPL_v2+ AROS/workbench/devs/AHI/AddAudioModes/COPYING: GPL
AROS/workbench/devs/AHI/Docs/texinfo.tex: GPL_v2+
AROS/workbench/devs/AHI/COPYING: GPL
AROS/workbench/devs/AHI/Drivers/EMU10kx/ GPL_v2+
AROS/workbench/devs/AHI/AHI-Handler/ GPL_v2+
AROS/workbench/devs/networks/rtl8029/ GPL GPL_v2+
AROS/workbench/devs/networks/pcnet32/ GPL GPL_v2+
AROS/workbench/devs/networks/ppp/LEGAL: GPL
AROS/workbench/devs/networks/atheros5000/ GPL_v2+
AROS/workbench/devs/networks/rhine/ GPL_v2+
AROS/workbench/devs/networks/nForce/ GPL_v2+ GPL
AROS/workbench/devs/networks/prism2/ GPL GPL_v2+
AROS/workbench/devs/networks/fec/LEGAL: GPL
AROS/workbench/devs/networks/rtl8139/ GPL GPL_v2+
AROS/workbench/devs/networks/etherlink3/ GPL GPL_v2+
AROS/workbench/devs/networks/intelpro100/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8169/ GPL GPL_v2+
AROS/workbench/devs/networks/emac/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8168/ GPL GPL_v2+
AROS/workbench/devs/networks/realtek8180/ GPL_v2+
AROS/workbench/devs/networks/via-rhine/via-rhine.c: GPL_v2+
AROS/workbench/devs/networks/via-rhine/ GPL GPL_v2+
AROS/workbench/devs/networks/e1000/ GPL_v2
AROS/workbench/devs/networks/sis900/ GPL GPL_v2+
</pre>
AHI: it has special provisions (COPYING.DRIVERS). The library is LGPL, preferences software is GPL and drivers can be anything without breaking GPL/LGPL.
Network stack: well, we are long overdue for a new, IPv6 enabled network stack anyway, anyone interested? ;) Seriously though it seems like the glue code is GPL and as all the drivers. However some of the drivers are our own code, so they could be relicensed to LGPL.
Same filter as the AROS trunk list. These should all be libraries or plugins - no programs.
<pre>
contrib/regina/utsname.h: GPL_v2+
contrib/mui/classes/nlist/include/default-align.h: GPL_v2+
contrib/mui/classes/nlist/include/amiga-align.h: GPL_v2+
contrib/mui/classes/BWins/include/MUI/BWin_mcc.h: GPL
contrib/mui/classes/BWins/include/BWin_private_mcc.h: GPL
contrib/mui/classes/BWins/COPYING: GPL_v2
contrib/mui/classes/BWins/MCC_BWins.readme: GPL_v2
contrib/mui/classes/thebar/include/default-align.h: GPL_v2+
contrib/mui/classes/thebar/include/amiga-align.h: GPL_v2+
contrib/gfx/libs/wazp3d/LEGAL: GPL
contrib/gfx/libs/wazp3d/Wazp3D.readme: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.c: GPL
contrib/libs/mpega/ GPL_v2+
</pre>
http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
===Types===
On AROS following rules apply:
<pre>
1. BYTE/UBYTE is 8bit, WORD/UWORD is 16bit, LONG/ULONG is 32bit, QUAD/UQUAD is 64bit, the types are comparable with stdint types (int8_t, int16_t, int32_t, int64_t)
2. IPTR/SIPTR are integer types large enough to fit pointer, that is sizeof(IPTR) = sizeof(APTR) = 4 on 32bit system, and = 8 on 64bit system
3. ti_Data in TagList is large enough to hold a IPTR/APTR type.
4. never store a pointer in integer of type LONG. It may work (if the pointer has upper 32bits clear), but does not have to. Compiler should warn you about that.
5. If you are unsure about point 4, allocate your memory with MEMF_31BIT flag set. But don't expect that AROS internals will do the same.
</pre>
point 4 is actually important.
* UBYTE/BYTE for 8bit
* UWORD/WORD for 16bit
* ULONG/LONG for 32bit
* UQUAD/QUAD for 64bit
<pre>
UBYTE Unsigned 8 bit integer variable (byte).
BYTE Signed 8 bit integer variable (byte).
UWORD Unsigned 16 bit integer variable (word).
WORD Signed 16 bit integer variable (word).
ULONG Unsigned 32 bit integer variable (longword).
LONG Signed 32 bit integer variable (longword).
FLOAT 32 bit IEEE floating point variable.
UQUAD Unsigned 64 bit integer variable.
QUAD Signed 64 bit integer variable.
DOUBLE 64bit IEEE floating point variable.
BOOL Boolean variable, TRUE and FALSE are also defined in exec/types.h.
VOID Void.
APTR A generic pointer for multiple purposes - Arrays.
STRPTR A pointer to a null-terminated string.
IPTR Really important in AROS, the only way to declare a field that can contain both: an integer or a pointer.
</pre>
if you want to write really portable app, you may be interested in standard datatypes defined in C99: int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, intptr_t, uintptr_t. They are all defined in inttypes.h include file.
In exec/types.h the following short-cuts are typedef'd. They are used often in AROS, so you should nearly always include exec/types.h and soon only they will be removed from sys/_types.h include, all types are now defined in include files named aros/types/xxx.h.
(Preparation for C library split; sys/xxx.h include will only be available there when compiling with POSIX C library)
Compiler specific types, like int and long might change their size. In case of AROS, similar to linux, int remains 32 bit whereas long grows to 64 bits in size.
If you use Amiga-like data types, i.e. BYTE/UBYTE, WORD/UWORD, LONG/ULONG and QUAD/UQUAD or the C99 standard types (uint8_t and so on, see stdint.h include) then you should have less issues to solve than by using types without size guarantee.
Of course, all pointers grow to 64 bytes using 64bit cpu. Most of the code can be just recompiled and will work. In rare cases, where e.g. pointers are casted to integers, a special care must be taken. Especially in the cases, where pointer is casted to LONG/ULONG (this code will break on 64 bit AROS) e.g. '#define IPTR ULONG'.
With compiler delint patches which the majority of them are simple casting issues to make the compiler happy. Notice some of the changes involve introducing double casts. In very recent versions of GCC. Yes, the bulk of the double casts are for converting 32 bit addresses (ie from a 32 bit PCI DMA address register) to a 64 bit pointer. First cast is to IPTR (to expand to 64 bits, and prevent sign extension if the address is above 0x7FFFFFFF), and then to APTR.
ULONG != IPTR except on 32bit .. so if you need to store pointers make sure and use IPTR and not ULONG (which some old code does). For this reason things like Taglist elements are 64bit (since the tag data can be a pointer).
If your passing items on the stack you should use the STACKED attribute to make sure they are correctly aligned (on 64bit all items on the stack are 64bit..)
There is more issues like using "== 0L" causes problems.
===Endian===
*BE
*LE
Use the macros from <endian.h> instead making a guess based upon architecture defines
<pre>
#if _BYTE_ORDER == _BIG_ENDIAN
#elif _BYTE_ORDER == _LITTLE_ENDIAN
#else
+
#error <whatever.h> - Byte order for this architecture is unsupported!
</pre>
===SVN and GIT===
If you want to help develop AROS OS itself, you can
* view current GIT/SVN entries [http://aros.sourceforge.net/ Aros Org website] or [https://github.com/aros-development-team/AROS Github], [https://github.com/ezrec older ezrec mirror], [https://github.com/michalsc/AROS/ older mirror], [https://trac.aros.org/trac/timeline TRAC], [],
* awaiting update [http://repo.or.cz/w/AROS.git git repo], [http://www.ohloh.net/p/aros/commits ohloh] or [https://svn.aros.org/svn/aros/trunk/ svn repo] and access [Git version git://repo.or.cz/AROS.git here],
* deprecated [https://www.gitorious.org/aros/aros/commit/a7fda9e ARIX commits] or [https://gitorious.org/aros/aros GIT old]
If you have SVN access (early 2015 introduced a new SVN server, create a new account at trac aros org) and/or have obtained the source [http://aros.sourceforge.net/download.php AROS site] - you can compile the current build tools/environment using:
> make development
and follow this [http://aros.sourceforge.net/documentation/developers/compiling.php#building procedure] or [https://github.com/apiraino/aros_guide Guide]
https://trac.aros.org/trac#Developing
If you plan on contributing back changes, please post information about such changes first on this [http://mail.aros.org/mailman/listinfo/aros-dev/ mailing list] for more experience developers can validate whether they are correct.
Then there are the nightly build machines. They svn update before the build and run configure as one of the next steps. autoconf might be added to the nightly build scripts.
Our build relies on packages downloaded from Internet (SDL for example) - it always worked this way. The minimal requirement (when just building core AROS) is binutils and gcc. If you build contrib as well, you need many more packages to be downloaded.
https://gitorious.org/aros/aros/commits/crosstools-II
git://gitorious.org/aros/aros.git
Branch crosstools-II there is only one commit on top of ABI_V1
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-x86_64
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-x86_64
</pre>
and
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-i386
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-i386
</pre>
build OK.
:''More information: [[Aros/Developer/Maintainer|AROS Maintainer Docs]]''
===SDI Calls===
Integrate the 'SDI'-headers to allow easier porting to all amiga-like platforms.
<pre>
PUTCHARPROTO( PutTheChar, char c, struct SPrintfStream *s )
{
// REAL CODE
}
</pre>
have "SDI_compiler.h" and "SDI_hook.h" included
its more organized like
#include SDI/SDI_hook.h
than
#include SDI_hook.h
option 1 --- i also use when back porting from amiga's..
<pre>
#ifdef __AROS__
#include SDI/SDI_hook.h
#else
#include SDI_hook.h
#endif
</pre>
also
you can add the -i include/sdi/ location if you do not want to add or edit any files.
Defining HOOKPROTO to IPTR name(struct IClass * cl, Object * obj, Msg msg); solved the problem
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order. examine compiler/include/aros/symbolsets.h (AROS_LIBREQ)
compiling mui stuff for aros setting -std=gnu99 is necessary (i have had -std=c99 most of the time).
===Locale with Flexcat===
Most languages have a locale, but not every app is localized, the only thing needed is to translate the "catalog" files. It is a case of locating the correct catalog and saving the translated version.
For every app that lacks of your language catalog and is localized anyway, you should find (in the sources) files related to locale:
* file.cd = catalog descriptor, contains base msg, with internal language (usually english)
* language.ct = catalog translation, contains every translated msg, indexed as in the file.cd.
Compare with other localized apps... Then, "make my_app-catalogs" should create and install your translated catalogs. ex : for, saying, sys:prefs/wanderer:
on root of AROS sources, type:
"make workbench-prefs-wanderer-catalogs"
then (if you changed the .cd file):
"make workbench-prefs-wanderer"
For apps not localized, you have to adapt their code to support it, if it is possible...
noticed the original .cd file has many (//) strings at the end of any voice, so added them also to the .ct file.
That (//) is only for cd files. I'm highly recommending to use FlexCat for updating ct files, e.g. like this:
flexcat app.cd deutsch.ct newctfile deutsch.ct
You'll get error checking and new entries are marked in the resulting ct file.
When editing .ct files, only change those lines containing translation and perhaps version string, nothing else.
The rest is up to the relevant tool, flexcat. In order to update your translation, type in the following in your shell:
flexcat xyz.cd xyz.ct NEWCTFILE xyz_upd.ct COPYMSGNEW
This way you will not only make sure you have correct translation file but flexcat also pre-fills newly added strings with "*** NEW *** text. Even better tool for checking cd/ct/catalog files is catcheck, but this one is sadly only available for AmigaOS/68k...
Some languages have variations, like portugues from portugal and portugues from brasil differs...
This is the way to go. I will have a look at language files, but basically if those two languages differ you have to do two separated set of translation files, yes.
(you could create a brazilian slang language localization too)
* At system level localization for one language is a dot language file.
(ex: locale:languages/klingon.language)
* At app level localization is a dot catalog file
(ex: locale:catalogs/klingon/system/libs/dos.catalog)
* At sources level, the dot ct file, and "$language" dot cd files and some building framework.
(ex: catalogs/my_app.ct catalogs/klingon.cd catalogs/mmakefile.src support.c support.h)
Please, use Flexcat to generate CT files:
FlexCat wanderer.cd NEWCTFILE=deutsch.ct
Then fill the first 2 lines with something useful:
<pre>
## version $VER: wanderer.catalog 1.1 (9.2.2006)
## language deutsch
</pre>
You can even update the CT-File: (This adds the new strings)
FlexCat wanderer.cd deutsch.ct NEWCTFILE=deutsch.ct
To compile a catalog you only need the .cd file and your translation (.ct file):
FlexCat multiview.cd deutsch.ct CATALOG=MultiView.catalog
[http://murks-ide.svn.sourceforge.net/viewvc/murks-ide/trunk/src/Catalogs/flexcat_linux?revision=100 Linux version of FlexCat]
: [http://aros.sourceforge.net/documentation/developers/app-dev/localization.php#localization-for-non-developers More information]
A script which compares the required version (i.e. the version which an application/module etc. tries to open) with the version of the existing CT files. The result is in this table:
https://github.com/aros-translation-team/translations/wiki/Progress
The following cases are highlighted:
n/a i.e. CT misses at all
version in existing CT file is lower than the required version
It might be a bit difficult to participate if you haven't worked with Git before but alternatively you can send your CT files to our Slack channel.
When the ct file has been generated via flexcat (flexcat keyshow.cd NEWCTFILE=spanish.ct) it has the following header:
---------------------------------------------------------------------------------------------------------------
## version $VER: <name>.catalog <ver>.<rev> (04.01.2021)
## language nolanguage
## codeset 0
;
---------------------------------------------------------------------------------------------------------------
Those values <ver>.<rev> are the version and revision of the CT file for the languaje or are the values of the application being localized?
The <ver> part must match with version which the application tries to open. You can find the value either in the column "Required Version" in the table which I've linked above, our you can look in the git repository. For keyshow it would be https://github.com/aros-translation-team/keyshow. You can find in the file "catalog_version.h" the right version number.
The <rev> part starts for new CT files with 0 and should be increased every time the CT file is updated.
Updated several files and created a few more that were missing on the spanish catalog.
The catalogs are in Git repositories at https://github.com/aros-translation-team
a) You tell me your Github user name. I'll invite you. You can work directly with the Git repositories.
b) You create Github forks of the catalog repositories and create pull requests.
c) You send the CT files to mrustler gmx de
===C Utils Misc===
The AROS source uses at several places the __DATE__ macro to fill the date entry of a $VER tag. Problem is that c:version doesn't understand that date format (e.g. "May 21, 2011"). As a result the output of e.g.
> "version c:shell full" contains "(null)". Is extending the version command to understand the format of __DATE__ the right solution for that problem?
AmigaOs compilers should use __AMIGADATE__ macro or similar form, if it isn't implemented it could be emulated in makefile: -D__AMIGADATE__=\"$(shell date "+%d.%m.%Y")\"
BTW. I think DD.MM.YYYY is better format than "Month DD YYY" because "Month DD YYY" is not localized in any way.
"strnicmp" shouldn't work with NULL pointers
The Situation:
compiled a linklib using c++ object files (using the c++ cross compiler).
compiled a C stub that uses the linklib (using the c++ cross compiler).
Try to link them together (using the c++ cross compiler) with C object
files (using the normal target c compiler) that need to use -nostartup
= cant do because using the c++ files pulls in arosc (for stdio etc.) -
so wants to have the autoinit stuff present.
What can I do about this??
If it is possible to manually open it then what do I need to do exactly?
=== ENV ===
The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact. However in some cases (like this one) it is not required.
99% of the time that statement is true (not required) for pretty much every file in ENV: or do people change their default icons - and prefs settings - every boot?
There seem to be a bad habit of late with developers changing things to reflect their own personal preference when the change isn't actually necessary - It would be nice if people could refrain from doing that in the tree without at least discussing it on the dev-list first (and with good reasoning unless they committed said work in the first place..)
We're not keen on the pollution of the "S:" dir: it's meant to be for scripts. What's wrong with "ENV:"?
Only the fact that it takes up RAM. I understand that for PCs with several gigabytes of RAM this is
irrelevant. But let's remember about other machines. The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact.
However in some cases (like this one) it is not required.
How about implementing in the style of HappyENV then? RAM-disk handler that falls through to reading from ENVARC: if there is no such file stored in it already. Removes RAM usage for unchanged files, removes the need to copy ENVARC to ENV in startup-sequence.
Shouldn't be too hard to make from AmberRAM, or even just extend AmberRAM to provide this service.
Is it feasable to build a special version of AmberRAM handling ENV: that will try and copy the requested file from ENVARC: if it isnt found in ENV: ?
Additionaly it could mark closed "files" as untouched - and expunge them from ENV: after a period of time to free up additional RAM:, or when the system is running low on free memory?
Silenty disappearing files may not be a good plan. Would be nice if the following would work:
ASSIGN :ENV SYS:Prefs/Env-Arc ADD
ASSIGN :ENV RAM:ENV ADD
Where new files put in ENV: end up in RAM:ENV, and opening files looks in RAM:ENV first, then SYS:Prefs/Env-Arc
Well - that's essentially what im proposing but without the assigns - or need for a RAM:ENV directory.
Adding it as a feature of AmberRAM sounds like the most memory efficient way (one handler to load in RAM) but that's only if it is possible to make it handle ENV: additionally to RAM:, and if it is even possible to add the proposed functionality (...and how to make it enable it when accessing ENV:).
===(AS)MP support===
If one has to recompile software for SMP multi core, is there any thing special one has to do to get software to run?
Use task.resource if you need to query information about what tasks are running, and clear msgports completely when they are allocated.
Most code should not need Forbid. Use Semaphores, Messages etc. to sync your own code.
Accessing system structures is a different thing. Use the proper API whenever possible.
How single structures will be protected in the future is still a moving target, at least it is not documented. And you should never use undocumented stuff
Ideas on for SMP multi-core
Another suggestion is ... Forbid/Permit function calls are meant to halt multitasking so as no other task could intervene with what ever the calling task is doing, e.g. setting semaphores. Disable/Enable calls are meant to halt interrupts and as a side effect they also halt task switching.
One option is to make it compulsory to protect shared resources with semaphores and forbid the use of simple Forbid() calls as to protect something. Setting semaphore should be done if possible with atomic instructions (check and alter in one instruction). Or make the second concurrent ObtainSemaphore call halt the second calling task and force if possible a task switch which ever gives better results.
Semaphores could store the owning tasks task pointer instead of boolean to make things easier.
As long as the CPU initiates the DMA transfers through the OS, and the OS ensures that the transferred memory is within the region accessible to the user initiating the transfer, everything is fine. The CPU is the conductor, and the CPU by that has the control of which DMA transfer is initiated and which is not.
All you need to do is to write device drivers reasonable. Hint: CachePreDMA and CachePostDMA exist.
All the Os has to do is to verify that the memory regions to be transferred are valid, and prohibit direct access to the DMA control registers from user space. None of these algorithms imply huge costs.
The current OS design doesn't really allow virtual memory in first place, Forbid() is again the problem.
[http://www.tbs-software.com/guide/index.php?guide=autodocs.doc%2Fmemory.doc&node=1 memory.library API] seem to low level. IMHO the programs should not know how the swapping is implemented. I would just go for one new memory flag
MEMF_SWAPPABLE that indicates that a certain memory region or a whole memory pool won't be accessed during Forbid()/Permit() etc. It only solves part of the problem, it only implements virtual memory and not memory protection. For the latter you need to be able make certain memory inaccessible by other programs, some memory read-only for one task and read-write for other tasks, etc. And I think this should be done in the same Address Space in order to avoid you constantly need to swap between different address spaces.
So to summarize, if there are programs using this API we may provide a wrapper layer to get them working but I am not convinced this API should be the reference API with whom to provide VM to AROS programs.
=== Variadic ===
variadic functions (i.e. functions with an arbitrary amount of arguments).
<pre>
#include <stdarg.h>
[...]
char * STDARGS GetKeyWord(int value, char *def, ...)
{
[...]
va_list va;
[...]
va_start(va, def);
[...]
va_end (args);
</pre>
Please keep with using stdarg rather than having va casted to a LONG * type and varargs handled manually. Doing so, prevents tons of casting, where a simple va_arg can be used. So, string = *((char **) args) instead of string=va_arg(va, char *).
<pre>
#include <stdio.h>
#include <stdarg.h>
int printf (const char * format, ...)
{
int retval;
va_list args;
va_start (args, format);
retval = vfprintf (stdout, format, args);
va_end (args);
fflush (stdout);
return retval;
} /* printf */
</pre>
Couldn't find varargs.h or stdarg.h. and have no use for AROS_SLOWSTACKHOOKS or AROS_SLOWSTACKTAGS.
GCC looks for stdarg.h in a different place:
/bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/include/stdarg.h
Here is a path for a "normal" header:
bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/../../../../i386-aros/sys-include/aros/system.h
The use of vararg.h isn't supported by newer gcc versions. If you want your code to run on architectures that pass part of variadic arguments in a number of registers you need to use AROS_SLOWSTACK macros. Otherwise your program will not work on powerpc and x86_64 ports.
Of course the SLOWSTACK stuff is not needed in a function that can use va_list, va_start, va_arg and va_end. It's only needed if you want to write functions like DoMethod or similar.
#include <stdarg.h>
should be enough no matter if you do cross or native compiling. If it does not work, something is wrong and should be corrected.
Stdarg.h is here, Development:lib/gcc/i386-aros/4.2.2/include/
...which is part of the compiler's default include paths. In other words, #include <stdarg.h> works out of the box, indeed. (sorry, I should have just tried it before invoking "search" or "find"...)
furthermore, myprintf() as shown above won't work, because...
printf(format, args);
...is wrong - the second argument does not match printf() prototype, it expects a argument list, but args is of type va_list (obviously) - so one has to use...
vfprintf(stdout, format, args);
...instead, just like in the original printf(), and add fflush(stdout).
additionally, one could use...
int myarg = va_arg(args, int);
...between va_start() and va_end() to access individual arguments, where each call to va_arg() returns an argument casted to the desired type (here: "int") from the list given (here: "args") and advances to the next one.
wrapping up vfprintf() and modifying the format string now is a major speedup! no more backslash-n typing! this has been haunting me for years!
On MOS and AmigaOS, the NewObject variadic function is kept in the static library. It takes most of the parameters on the stack - thanks to that the implementation of NewObject calls the NewObjectA function. Everything works perfect, and the typical MUI macros may be easily used.
This, however, is not the case when you compile for AROS. Here, NewObject is a variadic macro, not a function. Thanks such approach we do not need any custom compiler in case of systems, where the arguments of variadic functions are passed partially through registers and partially through the stack (This is the case of PPC and x86_64, this is also the reason why both OS4 and MOS require specially patched compilers).
Since NewObject is a macro, the gcc's preprocessor expects the list of macros arguments enclosed within parentheses. In MUI macros it is not the case. Imagine the following test code:
<pre>
#define foo(a,b) ((a)+(b))
int loosy_function(int a, int b)
{
return foo(a,b);
}
</pre>
This will compile and work, but the following piece of code:
<pre>
#define foo(a,b) ((a)+(b))
#define END )
int loosy_function(int a, int b)
{
return foo(a,b END;
}
</pre>
will fail with the error: unterminated argument list invoking macro "foo"
There are two ways of fixing your issue. Either create your new objects outside this huge MUI constructions, and in there use just a pointer, or get rid of the "End" macro and exchange it with "TAG_DONE)".
Badly written software is, for example, casting va_list to an APTR or even doing so as if va_list were a plain table of function arguments. Such code needs to be fixed because it has very few chances to work anywhere but on author's machine ;)
The problem is nOt that they assume sizeof(APTR) == 4, its that they often do not use APTR, and use ULONG to store pointers exclusively. If the code used APTR/IPTR as it should - most of the "problems" wouldn't exist.
It would also help if people would start using variadic arguments properly. Many coders do assumptions which shall never be made. Instead, they should consider using stdarg.h file and all the va_* functions :)
===ABI===
In the head of our SVN repository there are now only 3 directories:
<pre>
admin/
branches/
trunk/
</pre>
We have added two extra dirs there: tags and imports
As discussed when we branch ABI V0 and [[Aros/Developer/ABIv1|ABI V1]] it would also be good to introduce tags. Normally this is done in a directory in the repository called tags. Currently we don't have this directory there. (We do have branches/tags that is a hack I have done because one doesn't have write access in the top directory. I think this directory is not clean and should be removed).
The second directory I would introduce is an imports directory for implementing vendor branches as discussed in the svn [http://svnbook.red-bean.com/en/1.5/svn.advanced.vendorbr.html book]. Currently we use code from several different projects and that code is stored inside the AROS tree; we seem to have problems with keeping this code up to date and merge our changes upstream. Maintainers of up stream projects like the MUI classes etc. have complained about this (to put it lightly).
Introducing these vendor branches would make it easier to see what changes we have made and make patches to be sent upstream and make it easier to import newer upstream versions of their code. Although can't "copy" the vendor branch into the main branch because it's already there, so start with a "merge".
Yes, the first step to make the code already in the repository compatible with the vendor branches will be the most difficult. The best way to do it the following way:
* first import the version on which the current AROS code is based into the vendor branch
* then import the new version over it in the vendor branch
* finally merge the difference between these two version in the AROS code present in the repository.
For example, place NList directly under vendor and not in a subdirectory like "contrib/zune/classes".
Actually after we have a stable [http://aros.sourceforge.net/documentation/developers/specifications/drafts/abiv1.php ABIv1 (2012 or later)]. We need to move away as much as possible from the contrib directory to some other repositories. The reasons are ...
* The AROS repository should be for the core AROS code.
* other contrib projects should be tried to be compiled for all Amiga-like OSes.
* The release scheme for AROS and the other programs should not have to be aligned.
* Binary versions should be provided on aros-archives and on aminet and/or OS4Depot to install them. (Some clever programs should maybe be provided to make the life of distribution developers easier).
* avoid parallel forks of programs for AROS and the other amiga OSes.
If there is really a need for a place for hosting AROS projects we may investigate setting up such a server but then including bug tracking, governance, maillist, etc. for each project separately. I personally think there are already enough places like sourceforge, google code, savannah, etc. where people can go for hosting such projects.
==Links==
* http://amigadocs.hokstad.com
* http://amigadocs.hokstad.com/doku.php?id=dev-links
* http://www.liquido2.com/tutorial/index.html
* Amiga(TM) OS4 has a [http://www.ast-workshops.co.uk/os4pg/ workshop] page and hope to produce a [http://amigaworld.net/modules/newbb/viewtopic.php?topic_id=31117&forum=42#549091 book] soon. [http://www.solie.ca/articles/map/map.html Brief Guide].
In the future...?
*AROS 64bit - SMP, Vulkan with OpenGL compability layer
*AROS 32bit - keep for historic reasons
What would you like to see implemented in AROS?
ABIv1 completed, SMP (x86_64), SendMsg()/GetMsg() to support memory protection between target and destination, in that order. Michal Schulz and Jason McMullan have been toying with the question "What are the minimal changes needed to the AmigaOS 3.1 API to support SMP"? The answer so far seems to be "few, but subtle". For example, SysBase->ThisTask is no longer meaningful on SMP, but FindTask(NULL) is. Disable() and Forbid() are shockingly bad on performance, but adding a spinlock semaphore mode to SignalSemaphore will help new code on SMP.
Leveraging a 'common' OS with a lot of machine support (Linux, MacOS, Windows, QNX, etc.) is something that AROS has been doing for quite a long time, and it is the biggest strength of AROS. This AROS experience and programming model, in the same way the Google's Android layers on top of Linux, or MacOS X layers on top of the Darwin/BSD kernel, as a first step
* The graphics + layers subsystem could be implemented as a shim on top of a OpenGL ES implementation (ie on any modern Linux system, or the RaspberryPI's hardware, MacOS X, etc).
- This also allows every window to be on its own 3D surface with backing store, allowing Wanderer (or a Commodity)
rearrange/zoom/animate app windows without having to send a pile or refreshes to them
* Use OpenAL as the sound backend
* AROSTCP would be a thin layer over the native OS's TCP/IP stack
* dos.library, poseidon.library, and input.device would be slim shims over the native APIs
* If we move to loading all libraries' into the application's task space, instead of a single global instance of the library, this will allow SMP and MMU more easily.
- Yes, it will require a lot of work in the libraries to make this transition
- Yes, I do think it will be worth it in the end.
* A 'fat binary' install format (or, maybe LLVM bytecode) that can be 'flattend' to the target architecture on installation.
So, what would this 'AROS of the future' look like?
* AmigaOS 3.x style API, with certain 'fundamental changes' to message passing
* Uses the underlying OS' device drivers, so more AROS developer effort can go to user-visible features and bugfixes
* Allows AROS applications to run side-by-side with the OS's native apps
And why would anyone want to program on such a system?
* AROS applications would run on any system that has the AROS Framework installed
* AROS applications are pixel-for-pixel the same on all platforms.
* Develop with the knowledge that you are guaranteed OpenGL and OpenAL, and the rest of the AROS Framework
an option for mmake to dump its dependency of metatarget in a graphviz[*] input file. This should make it possible to visualize the dependencies and hopefully be inspiration for cleaning up some mess, circular or unneeded dependencies and so on.
AmigaOS gcc 9 [https://franke.ms/amiga/gcc.wiki Old versions] able to create binaries for AmigaOS and [https://eab.abime.net/showthread.php?t=93813 Upgrading gcc versions]
==References==
{{reflist}}
{{status|50%}}
{{BookCat}}
tflru0o7jvfz4z6kt62nlir36tbzeii
4656379
4656358
2026-08-05T08:40:34Z
Jeff1138
301139
4656379
wikitext
text/x-wiki
{{ArosNav}}
==A technical overview of AROS==
Google translation [http://translate.google.com/translate?hl=en&sl=auto&tl=de&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs German], [http://translate.google.com/translate?hl=en&sl=auto&tl=fr&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs French], [http://translate.google.com/translate?hl=en&sl=auto&tl=it&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Italian], [http://translate.google.com/translate?hl=en&sl=auto&tl=es&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Spanish], [http://translate.google.com/translate?hl=en&sl=auto&tl=hi&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Hindi], [http://translate.google.com/translate?hl=en&sl=auto&tl=zh-CN&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Chinese],
[http://translate.google.com/translate?hl=en&sl=auto&tl=ru&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Russian],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pl&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Polish],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pt&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Portuguese]
{{Uncited}}
AROS,<ref>[http://aros.sourceforge.net/download.php References and sources]</ref> like AmigaOS (TM), is a [[w:Message passing|message-passing]], [[w:Preemption (computing)|preemptive]] [[w:Multitasking|multitasking]] [[w:Operating system|OS]].
It uses [[w:Reentrant (subroutine)|re-entrant]] shared libraries to save memory space.
AROS is based around an executive library kernel (Exec) and two other libraries:
* Exec (the "kernel", which is not a kernel in the modern sense),
* Intuition (graphics and GUI, integrated into the system) and
* AmigaDOS (Disk Operating System, the Metacomco's Tripos modified to work with Exec).
The design philosophies of AmigaDOS and Intuition are rather different, the former adopting a C-like API and the latter creating an [http://www.basden.demon.co.uk/amiga/amiga.oo.html object-oriented], message passing aware environment for the programmer. The system base is the only absolute address in AmigaOS (located at 0x00000004) this does differ with AROS as AROS SysBase is automatically provided (no $4) but everything else is dynamically loaded. The OS is well known for delivering high performance due to its close connections with the hardware, while simultaneously having the flexibility to support re-targetable graphics (Cybergraphics) and retargetable audio subsystems (AHI).
: Diagram showing relationships of libraries to system needed
Remember, AROS is a [http://en.wikibooks.org/wiki/Aros/Developer/ABIv1 research] operating system, and while all contributions to the base AROS code are welcome, please contact the dev list first for any core changes. Writing applications for AROS does not have this requirement.
While AROS appears and feels almost feature complete, it is still [[Aros/Developer/IncompleteAPIs|missing a small number of functions]] from the Amiga API - as well as a few implementations of [[Aros/MissingFunctionaility|core functionality]]. There are also a number of user applications that, while not strictly part of the AmigaOS 3.1 environment, need to be written.
[https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1201 This thread provides] information for setup, [http://www.aros.org/documentation/developers/index.php documentation] and whether you are interested in core OS changes and/or writing/porting software apps
*you compile directly under AROS, which can be running on either real hardware, virtual hardware
*in hosted mode under linux/window, cross-compile from that host OS (save your files as ISO-8859-15 encoding instead of UTF-8)
The repository for the [https://github.com/aros-development-team/AROS current development version ABIv1], the [https://github.com/deadw00d/AROS/tree/alt-abiv0 repository for current stable PC version ABIv0 with backported ABIv1 features is located which is used on AROS One and Icaros x86 based distros]
Any [https://github.com/aros-development-team/AROS/issues bugs / issues can be added]
We have a [https://arosdevteam.slack.com/archives/CUFV48U3H slack here], discord on [https://discord.gg/UKp9qdEBuQ Discord@AmigaDev],
==Software Development for AROS==
===Programming languages===
Apart from 'The Developer Environment', which primarily supports C/C++ code, there are other programming languages available for AROS:
'''Scripting'''
:[[Aros/User/DOS|DOS]], included in all
:[[Aros/Developer/Docs/LUA|LUA]], included in all or [http://www.airsoftsoftwair.de/en/prod_hollywood.html Hollywood]
:REXX [[Aros/Developer/Docs/Rexx|Regina (AROS' ARexx)]], included in all
:Python [ Info], included in Icaros
:Ruby [http://www.ruby-lang.org/en Info]/[http://archives.aros-exec.org/index.php?function=browse&cat=development/language download]
'''Basic'''
:[http://amos.pspuae.com/AmosProManual/contents/c1.html '''Amos Pro'''] [http://amos.pspuae.com/index.php?action=forum#1 compatible] [http://www.amigacoding.com/index.php/Main_Page commands] (all incomplete)
::[http://sourceforge.net/projects/xamos/ X-Amos]
::[http://sdlbasic.sourceforge.net/ SDLBasic] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://alvyn.sourceforge.net/ Alvyn] ([http://www.dusabledanslherbe.eu/AROSPage/MISC.14.html download])
::[[Aros/Developer/Basic/Basic4SDL|Basic4SDL]] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://www.ultimateamiga.co.uk/index.php?topic=9425.0 Project Deimos],
:'''Blitz Basic''' [http://aros-exec.org/modules/newbb/viewtopic.php?post_id=46537#forumpost46537 none on AROS]
:: [http://www.amiforce.de/main.php Amiblitz] on JanusUAE amiga(TM) emulator
:'''Amiga Basic'''
:: [ ACEBasic]
'''Misc'''
:[[Aros/Developer/Docs/E|AmigaE Portable E]]
:[https://ae.arosworld.org/index.php?board=11.0 FreePascal FPC Aros-Exec thread], [http://archives.aros-exec.org/index.php?function=browse&cat=development/language Download], FreePascal for AROS has its own [http://fpcaroswiki.alb42.de/ Wikibook],
:[[Aros/Developer/Docs/LLVM|LLVM]],
===Where to get the C/C++ Environment===
If you want to develop for AROS, its generally easier to be running linux hosted AROS development environment especially for C++, cross compiling the code. That's how most developers now are doing it. g++ is used to compile owb web browser as well as some other AROS software. If you were hoping for a rich set of C++ libraries or classes defined for the OS feature set, you might be disappointed.
AROS Native compiling is possible, but you're much more likely to run into the odd bug(s) in the dev environment since it gets little testing and fixing by other developers.
Is there a sftp software or scp over ssh available?
Maybe. At least the security part would be handled by [https://github.com/jens-maus/amissl amissl] [https://archives.arosworld.org/index.php?function=browse&cat=network/misc port]. DOpus5 has recently added sftp support. See here for a [https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1974&highlight=ssh&pid=12073#post_12073 ssh scp client]
[https://arosdevteam.slack.com/join/shared_invite/enQtOTc4Mzg0NDIzNzQ0LWQ2NWZmNmMwNGIwNGEyNTgxNzU3MGFjMTk3ZThmOTQ1MTVjMzhmNTllYWQ0ZTUxMjBjMGE0Y2VjMDJmNTc5MzI#/shared-invite/email Slack Dev Forum]
====Cross compilers from Windows or Linux====
*Windows WSL2 walkthrough can be [https://arosnews.github.io/how-to-cross-compile-aros-hosted-wsl/ found here]
you want to build AROS. No problem.
Here are instructions for 64-bit:
https://github.com/deadw00d/AROS/blob/master/INSTALL.md
Here are instructions for 32-bit:
https://github.com/deadw00d/AROS/blob/alt-abiv0/INSTALL.md
And as always has been the case you can use the contrib archive to 'obtain' the development directory which contains the /native/ AROS gcc compiler and tools. That compiler is used to build AROS itself but can be used outside the AROS build process by providing --sysroot with indicated directory to cross compile for AROS.
=====Older guides for Linux hosted compiler=====
Please install these packages before moving to next step. Below is a reference list for Debian-based distributions. Reference build system was Ubuntu 18.04/20.04 amd64.
subversion git-core gcc g++ make gawk bison flex bzip2 netpbm autoconf automake libx11-dev libxext-dev libc6-dev liblzo2-dev libxxf86vm-dev libpng-dev gcc-multilib libsdl1.2-dev byacc python-mako libxcursor-dev cmake zsh mingw64
Do all of these operations under home directory of your user or another directory where your user has write permissions.
Specifically, in a section "Linux-i386", be sure first to build the cross-compiler (toolchain-alt-abiv0-i386) and only then AROS itself (alt-abiv0-linux-i386).
Clone & build
<pre>
$ mkdir myrepo
$ cd myrepo
$ git clone https://github.com/deadw00d/AROS.git AROS
$ cd AROS
$ git checkout alt-abiv0
$ cd ..
$ cp ./AROS/scripts/rebuild.sh .
$ ./rebuild.sh
</pre>
Now to the build selection below - Linux-i386
Select toolchain-alt-abiv0-i386 - Select alt-abiv0-linux-i386 (DEBUG)
Start AROS by:
<pre>
$ cd alt-abiv0-linux-i386/bin/linux-i386/AROS
$ ./Arch/linux/AROSBootstrap
</pre>
Pc-i386 Select toolchain-alt-abiv0-i386 (if not built yet) - Select alt-abiv0-pc-i386
ISO image available in alt-abiv0-pc-i386/distfiles
Now that we have linux-hosted build, we can resume native (option 2).
Run ./rebuild.sh and selection option 2. Wait until it finished, then:
<pre>
$ cd alt-abiv0-pc-i386
$ make
</pre>
Now
<pre>
$ make bootiso
</pre>
Now, your compiler is located in toolchain-alt-abiv0-i386 directory and named i386-aros-gcc. Includes are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/include and libraries are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development.lib.
This is how then can be passed to the compiler:
/home/xxx/toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot /home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development -L/home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/lib
../toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot bin/linux-i386/AROS/Development local/helloworld/helloworld.c -o local/helloworld/helloworld
Another method was using Debian like distros and download the gimmearos.sh script (on [http://archives.aros-exec.org/index.php?function=browse&cat=development/cross aros-archives]) to setup the developer environment by downloading necessary packages ...
The gimmearos script is a good start in that direction, building the cross compilers and hosted AROS environment, but gimmearos.sh might be out of date or not be completely compatible with any given linux distro.
In order to do that, you have to compile AROS yourself. Download AROS source archive not contrib. Compile AROS by entering the main directory
./configure
make
([http://aros.sourceforge.net/documentation/developers/compiling.php More on compiling AROS]). The result will be a basic AROS system without development tools.
To compile C++ on Linux, type 'make gnu-contrib-crosstools', creating the cross-compilers in ./bin/linux-i386/tools/, named i386-aros-gcc, etc.
'''Note''': Currently, to make the cross compilers usable copy 'collect-aros' from tools/ to tools/i386-aros/bin/. At the moment the cross compilers if used from the Linux command line will only find it when it's there.
If you want to compile native compilers (the Developer Environment), type 'make contrib-gnu-gcc', creating native compilers in AROS' System:Development/bin directory.
When the output needs to be stripped <code>--strip-unneeded --remove-section .comment</code>
The Obj-C backend should build out of the box.
Open contrib/gnu/gcc/mmakefile.src and search for the line which contains "--enable-languages" and add "objc" to the list of languages that follows it.
--enable-languages=c,c++,objc
Better make it—enable-languages=c,c++,objc,obj-c++
ObjC++ is broken as soon as you try to use exceptions, but that might change in future GCC versions and it does not hurt having it there already.
Do you need a cross-compiler or a real compiler? In the first case you can get away with just downloading the proper gcc archive, apply the patch and proceed with the normal gcc build. In the case of a real cross-compiler then when downloading the contrib sources, also need to download the normal sources, place the contrib sources into a directory called contrib, need to install autoconf+automake+perl+python, call ./configure, cd into the subdirectory and type make.
to rebuild GCC with host == build == target == i386-pc-aros. So just get the vanilla sources and apply the patches without bothering about the build system?
[https://vmwaros.blogspot.com/2019/10/a-pre-configured-development-machine.html pre-configured VM environment vmware virtual machine to develop AROS and AROS software]
'''64 bit'''
'''32 bit'''
A good option for multiple OS is [https://axrt.org/index.php?tab=download-aros AxRuntime lets developers compile their Amiga API-based applications as Linux binaries being able to utilize modern development tools available on Linux, like IDEs, debuggers, profilers, etc]
====Native compilers for AROS====
Namely gcc for C or g++ for C++ are supplied with the [[Aros/Developer/Docs#The Developer Environment|Developer Environment]], which is already '''setup''' and part of any current AROS distribution like AROS One or the nightlies
* Current GCC 6.5 (32bit) though moving to 10.5 and 15.1 (64bit)
* Older software components. GNU GCC 4.x GNU BinUtils, GNU Fileutils 4.x, GNU Textutils and others.
On single partition systems and the Boot ISO, the AROS Developer environment is installed under "SYS:Development/". Systems with multiple partitions - such as a Work: partition - tend to install it to there instead, however it can be installed manually to any location. Please remember, if moving, that you will need to correct the Development packages 'install location' env variable to point to the new locations root - look in SYS:S/startup-sequence.
<pre>
Assign Development: SYS:Development
Assign C: Development:bin ADD
</pre>
In the aros build instructions. you need to check out contrib and/or ports into your AROS source directory, as subdirs. then, assuming you are building in an external build dir, as you should, you simply configure and "make contrib" for instance or whatever submodule you might want to build.
===Beginners Tutorials in C C++===
As AROS is [http://eab.abime.net/showthread.php?t=29856 C based] API compatible to AmigaOS 3.x, so most of the information on programming C on the Amiga applies to AROS as well. Please note that there is a lot of AmigaOS 1.3 (1985-1989) and [https://www.markround.com/amigaguide AmigaOS AOS 2.x (1990-1992)] information around but OS3.1 is recommended but limited in amount.
Brief overview of what is required to write AROS Applications
# Using [[Aros/Developer/Docs/Libraries/Intuition|Intuition]] for basic screens/windows
# Using graphics within windows via 8bit [[Aros/Developer/Docs/Libraries/Graphics|graphics]] and so onto 15-16-24bit [[Aros/Developer/Docs/Libraries/CGFX|cybergraphx]]
# Load and save work to [[Aros/Developer/Docs/Libraries/DOS|dos]] disk drives
# Using the [[Aros/Developer/Zune|ZUNE GUI Environment]]
Writing native games require this extra information
# Using [[Aros/Developer/AHIDrivers|AHI audio hardware independent API]]
# Using USB joystick/joypad with the Poseidon USB stack through [[Aros/Developer/Docs/Libraries/LowLevel|LowLevel]] library
Additional features that could be added later
# Adding additional [[Aros/Developer/Docs/Libraries/Locale|Locale]] language translations to your program
# Adding a [[Aros/Developer/Docs/Rexx|AREXX/Regina]] port to your application
# Executing Amiga(TM) [[Aros/User/DOS|DOS]] commands from your application
# Using [[Aros/Developer/Docs/Libraries/Icon|icons]] (.info files) and icon tooltypes (stack, version, and program startup options)
# Local couch or IP based SANA2 networking co-op multi player gaming support
Most AmigaOS programming books are nowadays very much out of date as most are from the late 1980s and do not cover later amigaOS releases like 3.1 for example, Rob Peck's book "Programmer's Guide to the Amiga". The Amiga ROM Kernel manuals aka RKMs like Libraries (3rd edition), Devices (), the AmigaDOS manual (3rd edition) and the Style Guide may have their uses. There are some reference examples from AmigaMail and Devcon notes (available again on an Amiga developers CD 2.1).
For Arexx then "The Amiga Programmer's Guide to ARexx" by Eric Giguere, which was published by Commodore is useful as well as an "Arexx Cookbook".
Curly brackets missing - try SHIFT + ALT + 7 or 0.
* Beginners C Guide [http://www.iu.hio.no/~mark/CTutorial/CTutorial.html C Tutorial],
* [http://thecguru.com/ C for beginners],
* [http://fresh2refresh.com/c/c-basic-program/ C programming basics] for students,
* [https://www.edx.org/courses Free Online course] from American Universities
* Reference Amiga [http://amigadev.elowar.com/ API reference].
* AROS based c source can be found [[Aros/Developer/Docs/Examples|here]] and lots of example code can be found inside [https://github.com/aros-development-team AROS sources] themselves and from the contrib section of the archives from [https://github.com/aros-development-team/contrib Aros site], and study the AROS applications source code, e.g. the test programs from the Tests drawer (folder/directory). Take a look at the code of some smaller AROS programs might be a better and more up to date guide. Some old Os3 [http://www.blackfiveservices.co.uk/amiga-c/ here]
When you upload your builds, please write the architecture (like i386-aros, x86_64-aros, etc.) in the archive name
and it is also advisable to write in the field "Requirements" what ABI (ABIv11, ABIv0 or ABIv1)
===Compiling C/C++ Code===
Native, although we have a IDE Integrated Development Environment (Murks), it does lack a debugger. Whilst others use a combination of a text editor and shell to edit code. Most though use an AROS hosted on Linux to take advantage of the better GCC tools like GDB and various IDEs.
Open shell - its a menu option at the top left of Wanderer (desktop). Or by using the right Win key and w (or F12 and w) within the directory with the source code. Type in
sh
to change the amiga shell into a unix shell. You can then type in ls (unix equivalent to amiga dir). Take a look [http://en.wikibooks.org/wiki/Linux_commands here] for more commands.
For a single file program-name.c or program-name.cpp
gcc -o program-name program-name.c
or
g++ -o program-name program-name.cpp
or
g++ -o test -Wall -g main.cc texturelib.cpp xmodelib.cc -lsdl -lgl
To close the shell, click on the top left-hand corner to close (twice). Once to get back the aros shell and then again to close finally. Use [http://freshmeat.net/projects/cksfv/ cksfv] as a test.
Some source code requires the addition of Amiga API libraries, like dos, which you can flag at the compile time as
gcc -o julia.exe julia.c -ldos
For DOS use -ldos as example and if you are compiling mui codes it will be -lmui or intuition -lintuition. Other missing symbols are due to linker libraries being necessary for linking in functions that aren't in the standard C libraries. For example some source code would need added
-lz or -lm or -lpng or -larosc etc.
use this in unix line command mode to search for 'search-item' in many .c files (*.cpp for c++, etc.)
grep -l 'search-item' *.c
If the program is not executable, try using parameter fno-common
"Delete #?.o"? Or if you are using abcshell then "rm *.o"
:''More information: [[Aros/Developer/Porting software]]''
=== How to make Apps have AROS 64-bit specific support code ===
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
AROS64 already uses 64bit addressing, it just doesn't setup the MMU for more than 4GB physical memory currently.
When porting software to AROS64 it is "mostly" a case of converting ULONG's that are used to store pointers, into IPTR's instead, etc. Another quirk, is making sure items on the stack are the correct size by using the STACKED attribute for them.
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
compiling mui stuff for aros setting -std=gnu99 is necessary, had -std=c99 usually
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order.
crash which suggest memory corruption. From my experience porting from 32-bit to 64-bit these kinds of errors can happen if a pointer is passed somewhere via ULONG variable. Then half of the pointer is cut.
To generate this error, please run AROSBootstrap with -m 1024. This will allocate heap to 64-bit address space which will make these errors immediatelly visible. These types of crashes are hard to debug. Disabled as little code as possible to stop corruption from occurring and then try to read from the code where it can be broken
Crashing in tslf_freevec is another symptom of memory corruption and these memory corruptions will manifest differently on different setups.
==Coding conventions==
As the AROS core source is a shared developer experience, there are rules regarding structure and style. When it comes to your creating your own app and coding, the structure and style should be your own, i.e. you should enjoy what you do and do it so that you can understand what is going on.
===Layout===
<syntaxhighlight lang="c">
static void 1st_function()
{
program
exit(0);
}
int main(void)
{
1st_function();
2nd_function();
3rd_function();
return 0;
}
</syntaxhighlight>
<syntaxhighlight lang="c">
struct Screen * openscreen(void);
struct Window *openwindow(struct Screen *screen, const char *title, LONG x, LONG y, LONG w, LONG h);
VOID 1st_function();
VOID 2nd_function();
int main(int argc, char **argv)
{
program
return 0;
} /* main */
VOID 1st_function()
{
}
VOID 2nd_function()
{
}
</syntaxhighlight>
===General style===
This code is used by many people and therefore you should keep some things in mind when you submit source code:
* Keep things simple
* Keep the source clean
* Always know what you are doing, if not flag it and describe what needs to be done...
* Explain clearly/simply what you are doing
* Remember that you write code once but that it is read many times by many people
===Comments===
AROS uses some of the comments in the source to generate the documentation. Therefore it's necessary to keep a certain format so the tools can find their information. Other comments are ignored but they should explain what you thought when you wrote the code. If you really can't think of an explanation, then don't write the code a second time like this:
<pre>
/* This adds 1 to t */
t ++;
</pre>
What we think of is this:
<pre>
/* Go on with next element */
t ++;
</pre>
===Formatting===
This is only '''IMPORTANT''' if you are going to work on the core AROS code or contrib but not applications which may reside outside like on AROS Archives or other websites.
<syntaxhighlight lang="c">
{
/* a */
struct RastPort * rp;
int a;
/* b */
rp = NULL;
a = 1;
/* c */
if (a == 1)
printf ("Init worked\n");
/* d */
if
(
!(rp = Get_a_pointer_to_the_RastPort
(
some
, long
, arguments
)
)
||
a <= 0
)
{
printf ("Something failed\n");
return FAIL;
}
/* e */
a = printf ("My RastPort is %p, a=%d\n"
, rp
, a
);
return OK;
}
</syntaxhighlight>
Looks ugly, eh ? :-) Ok, here are the rules:
<pre>
If several lines contain similar code, put similar things below each other (see a and b);
Put spaces between operands and operators
Put braces {}, brackets [] and parentheses () below each other (d) if there is much code between.
Brackets and parentheses may be in one line if the code between is small (c)
Indent by 4 Spaces. Two indent levels may be abbreviated by one tab.
</pre>
'''Before committing please normalize the indentation - if you have a mixture of tabs and spaced - please always use spaces, 1 tab = 4 spaces.'''
The reasons for this are:
# While some editors can use an arbitrary sizes for tabs, it's a bit complicated to tell another editor which tab size was used by the one used to write the code.
# Most code in AROS was written this way and your code should look like the rest.
# You can print this code on any printer without special tools to "fix" the tabs.
# Most editors have smart tabs which do exactly this. If your editor doesn't, write a bug report.
If you have a function with many arguments (d, e) you should put the parentheses in lines of their own and each argument in one line (d) or put the first argument behind the opening parentheses (e) and each following argument in a line of its own with the comma in front. The closing parentheses is in a line of its own and aligned with the beginning of the expression (i.e. the a and not the opening parentheses or the printf()).
Use a single blank line to separate logical blocks. Large comments should have a blank line before and after them, small comments should be put before the code they explain with only one blank line before them.
If you see any TABS in AROS core sources then the suggestion is to "detab the file and commit that separately" either before or afterwards from making functionality changes. Make two commits instead of one. This makes it easier for others to see the real changes instead of having to dig through multiple lines of irrelevant diffs.
===Eliminating Global Variables===
i.e. pass variables to functions (local scope) or classes making it easier to track and debug your code.
Any time you find that you need a particular thing in 'a lot of different places', chances are that all those places are conceptually related, and so you can create a class, a namespace, a function, or some other higher-level organizational unit to represent that relationship. This makes the program easier to understand.
Bad Designs
* All variables are global.
* There are no standalone functions, only sub-procedures which act on the global variables.
* Every sub-procedure is at least 500 lines to several thousand
* Every sub-procedure has more than one task to perform
* Copy-paste is preferred to writing methods, AND subtle changes are made in the middle of the code
Good Designs
* structure program into functions (C or basic) - top-down procedural approach
* put in class(es) (freepascal or C++) - the object is fixed and you use methods to access the object
<pre>
class String_List
{
private:
list<string> m_List; // member
public:
void read_strings() { /* read strings into m_List */ }
void print_strings() { /* write contents of m_List to stdout */ }
void sort_strings() { /* sort contents of m_List */ }
void sort_strings_reverse() { /* reverse-sort contents of m_List */ }
void unique_strings() { /* remove duplicate strings */ }
};
int main()
{
String_List myList; // local
myList.read_strings();
myList.sort_strings();
myList.print_strings();
myList.sort_strings_reverse();
myList.print_strings();
myList.unique_strings();
myList.print_strings();
return 0;
}
</pre>
This way it is very easy to replace the list with new list for debugging purposes, or replacing the methods without replacing the list, when you want different results. You only have to replace the content of the local variables.
So create the structure that matches your data (linked lists, trees, arrays, etc.) and what to do with them (sorting, searching, etc.)
<pre>
.h usually contain #define #include typedef enum struct extern screen and window definitions (data structures)
.c should contains functions and algorithms
</pre>
One way to look at it is that menu headings act as the .c file and sub-menu headings as functions.
When you start a project, you place a couple of declarations in the include file. As the project continues, you place more and more declarations in the include file, some of which refer to or contain previous declarations. Before you know it, you have a real mess on your hands. The majority of your source files have knowledge of the data structures and directly reference elements from the structures.
Making changes in an environment where many data structures directly refer to other data structures becomes, at best, a headache. Consider what happens when you change a data structure.
Use good variables names to help clarify code and only comment when you need to explain why a certain programming approach was made.
You're Refactoring Legacy Code, you see a global, you want to get rid of it. How do you do this?
Exactly what to do depends on how the global is used. The first step is to find all uses of the global throughout the code, and get a feel for what the significance of the variable is and how it relates to the rest of the program. Pay particular attention to the "lifetime" of the variable (when it gets initialized, when it is first used, when it is last used, how it gets cleaned up). Then, you will probably make the global a data member of a class (for OO languages), or you will write some get/set functions. Converting to the Singleton Pattern is common, but you may discover that it makes more sense for the data element to be a member of an existing singleton, or maybe even an instance variable.
# Create a basic read method, either as a class or a global function. Replace all reads with the access method, but leave the variable defined as a global.
# Review each of the writes to the method and extract action functions one at a time. Unless two operations are coded identically in the original code, extract each write access separately.
# Change the variable scope from global to local.
# Analyze similar action functions to determine if any can be merged, i.e., there are no functional differences in the results of the function, just differences in the implementation details.
# Review the calls to the read method and see if a more complex functionality should be applied. Follow the approach for writes and unless implementations are identical, create separate access functions.
# Analyze the access functions for duplication.
As returning variables by "passing by value" are forgotten, so "passing by reference" is often used instead. The reference is a pointer to the variable so the value is remembered when returned.
Alternatives
* Hidden Globals
* Singleton Pattern
* Database or TupleSpace
* Context Object
* Dependency Injection
* Stateful Procedures
==AROS/AmigaOS APIs and Docs==
<pre>
Library:
- Private data structure
- Many public access methods
Device:
- Private data structure
- Two (BeginIO/AbortIO) access methods
Resource:
- Public data structure
- *NO* access methods
</pre>
And, being Amiga OS-compatible, there are exceptions to all of these.
===System Libraries===
The [http://aros.sourceforge.net/documentation/developers/app-dev/index.php AROS Guide To Libraries] can be used as a guide to individual commands and Old Dev Docs are used in application programming.
The generated [http://aros.sourceforge.net/documentation/developers/autodocs/ Aros AutoDocs HTML Read] or download [http://aros.sourceforge.net/download.php docs-html.bz2 from here].
Amiga/Aros styles libraries are very different from windows and linux libs. Typical .so/dll libraries are foreign to most Amiga-like OS
*[[Aros/Developer/Docs/Libraries/AROSC|arosc.library]]
*[[Aros/Developer/Docs/Libraries/AmigaGuide|amigaguide.library]]
*[[Aros/Developer/Docs/Libraries/ASL|asl.library]]
*[[Aros/Developer/Docs/Libraries/Bullet|bullet.library]]
*[[Aros/Developer/Docs/Libraries/BSDsocket|bsdsocket.library]]
*[[Aros/Developer/Docs/Libraries/CAMD|camd.library]]
*[[Aros/Developer/Docs/Libraries/Codesets|codesets.library]]
*[[Aros/Developer/Docs/Libraries/CGFX|cybergraphics.library]]
*[[Aros/Developer/Docs/Libraries/CGXVIDEO|cgxvideo.library]]
*[[Aros/Developer/Docs/Libraries/Commodities|commodities.library]]
*[[Aros/Developer/Docs/Libraries/DataTypes|datatypes.library]]
*[[Aros/Developer/Docs/Libraries/DiskFont|diskfont.library]]
*[[Aros/Developer/Docs/Libraries/DOS|dos.library]]
*[[Aros/Developer/Docs/Libraries/Exec|exec.library]]
*[[Aros/Developer/Docs/Libraries/Expansion|expansion.library]]
*[[Aros/Developer/Docs/Libraries/FreeType2|freetype.library]]
*[[Aros/Developer/Docs/Libraries/GadTools|gadtools.library]]
*[[Aros/Developer/Docs/Libraries/Graphics|graphics.library]]
*[[Aros/Developer/Docs/Libraries/Icon|icon.library]]
*[[Aros/Developer/Docs/Libraries/Identify|identify.library]]
*[[Aros/Developer/Docs/Libraries/IFFParse|iffparse.library]]
*[[Aros/Developer/Docs/Libraries/Intuition|intuition.library]]
*[[Aros/Developer/Docs/Libraries/Keymap|keymap.library]]
*[[Aros/Developer/Docs/Libraries/Layers|layers.library]]
*[[Aros/Developer/Docs/Libraries/Locale|locale.library]]
*[[Aros/Developer/Docs/Libraries/LowLevel|lowlevel.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingBas|mathieeesingbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubBas|mathieeedoubbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingTrans|mathieeesingtrans.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubTrans|mathieeedoubtrans.library]]
*[[Aros/Developer/Docs/Libraries/Mathtrans|mathtrans.library]]
*[[Aros/Developer/Docs/Libraries/MUIMaster|muimaster.library]]
*[[Aros/Developer/Docs/Libraries/Partition|partition.library]]
*[[Aros/Developer/Docs/Libraries/PopUpMenu|popupmenu.library]]
*[[Aros/Developer/Docs/Libraries/OOP|oop.library]]
*[[Aros/Developer/Docs/Libraries/Regina|regina.library]]
*[[Aros/Developer/Docs/Libraries/Reqtools|reqtools.library]]
*[[Aros/Developer/Docs/Libraries/RexxSysLib|rexxsyslib.library]]
*[[Aros/Developer/Docs/Libraries/ScreenNotify|screennotify.library]]
*[[Aros/Developer/Docs/Libraries/TTEngine|ttengine.library]]
*[[Aros/Developer/Docs/Libraries/Thread|thread.library]]
*[[Aros/Developer/Docs/Libraries/Utility|utility.library]]
*[[Aros/Developer/Docs/Libraries/Xadmaster|xadmaster.library]]
*[[Aros/Developer/Docs/Libraries/Workbench|workbench.library]]
*[https://github.com/aros-development-team/AROS/commit/c82e86b8480277998014cc327b56c7664023a52f ClassAct Reaction boopsi class]
===AROS Subsystems===
# [[Aros/Developer/Zune|Zune MUI compatible GUI]]
# [[Aros/Developer/AROSAppPackages|AROS Application Packages]]
# AHI Audio Drivers - [[Aros/Developer/AHIDrivers|Usage]]/[[Aros/Developer/AHIDriversDev|Development]]
# AROSTCP Sana2 Network Interface Drivers - [[Aros/Developer/NICDrivers|Usage]]/[[Aros/Developer/NICDriversDev|Development]]
# [[Aros/Developer/AmiSSL|AmiSSL]]
# gfx.hidd/cybergraphics Video Drivers - [[Aros/Developer/GfxDrivers|Usage]]/[[Aros/Developer/GfxDriversDev|Development]]
# IO Device Drivers - [[Aros/Developer/IODeviceDrivers|Usage]]/[[Aros/Developer/IODeviceDriversDev|Development]]
# USB Device Drivers - [[Aros/Developer/USBDrivers|Usage]]/[[Aros/Developer/USBDriversDev|Development]]
# PCI Device Drivers - [[Aros/Developer/PCIDrivers|Usage]]/[[Aros/Developer/PCIDriversDev|Development]]
# [http://www.libsdl.org/ SDL] [https://github.com/search?q=repo%3Aaros-development-team%2Fcontrib%20SDL2&type=code SDL2 commits], [https://github.com/aros-development-team/contrib/commit/c62c3c425c35bac19dadc23be092b0b13a66c76c SDL3 initial commit], []
# [[w:Gallium3D|Gallium 3D]] [http://www.mesa3d.org/ openGL aka Mesa] - [[Aros/Developer/OpenGL|Usage]]/[[Aros/Developer/OpenGLDev|Development]] [http://www.swiftless.com/opengltuts.html Swfitless]
# A small subset of GTK2 through [http://sourceforge.net/projects/gtk-mui/ MUI-GTK]
# Cairo 2D Engine - [[Aros/Developer/Cairo|Usage]]/[[Aros/Developer/Cairo|Development]]
# [[Aros/Developer/Scalos|Scalos desktop API and plugin modules]]
# [[Aros/Developer/VHI|VHI video driver]]
====HIDDs====
*[[Aros/Developer/Docs/HIDD/HIDDClass|hiddclass.hidd]]
*[[Aros/Developer/Docs/HIDD/Graphics|graphics.hidd]]
*[[Aros/Developer/Docs/HIDD/VesaGfx|vesagfx.hidd]]
*[[Aros/Developer/Docs/HIDD/ATI|radeon.hidd]]
*[[Aros/Developer/Docs/HIDD/NVidia|nvidia.hidd]]
*[[Aros/Developer/Docs/HIDD/Nouveau|nouveau.hidd]]
*[[Aros/Developer/Docs/HIDD/Kbd|kbd.hidd]]
*[[Aros/Developer/Docs/HIDD/Mouse|mouse.hidd]]
*[[Aros/Developer/Docs/HIDD/i2c|i2c.hidd]]
*[[Aros/Developer/Docs/HIDD/IRQ|irq.hidd (deprecated)]]
*[[Aros/Developer/Docs/HIDD/PCI|pci.hidd]]
*[[Aros/Developer/Docs/HIDD/PCIPC|pcipc.hidd]]
*[[Aros/Developer/Docs/HIDD/Serial|serial.hidd]]
*[[Aros/Developer/Docs/HIDD/Thunderbolt|thunderbolt.hidd]]
https://github.com/aros-development-team/AROS/commit/4f02ea691799aff3a01f60cfa5f9182c82fc57a8
HIDD are used for device/peripheral low level hardware support drivers. The HIDD system is split up into a collection of classes with a strict inheritance hierarchy. A HIDD class implements a device driver for a single device or in rare cases a group of devices and provides an interface for other programs and devices to access.
In order to maintain portability of interfaces across a wide range of hardware this interface will in general not present the raw interface to the underlying hardware. Instead it will present a generic interface that describes many different hardware implementations. This allows for the best reuse of both interfaces and code.
HIDD API is heavyweight though. You need to open a HIDD library, open oop.library, instantiate an object (even if there's no object); and object calls are more costly compared to plain library calls.
Basically your task is to implement a subclass of hidd.ata.bus for your hardware. just implementing the XXXATA__Hidd_ATABus__xxxxxx methods for the Amiga chipset - and appropriate versions of the interface_xxx.c file(s). pretty much everything in probe.c could be ignored - just write a replacement scan for relevant amiga devices and store whatever info you need in the bus data? only the "SUPPORT_LEGACY" blocks might be related.
You do not need to depend on PCI API. PCI is just a way to discover the hardware on PCs, etc.
<hidd/pci.h> includes (at some depth) <interface/HW.h>, which defines IID_HW. This comes from the 'generic' HIDD class in:
rom/hidds/hidd/hiddclass.conf
did not split up HIDD and HW because they are always used in pair. It's the same as hidd/pci.h bringing definition for: PCI, PCIDriver and PCIDevice. PCI is actually PCIHW, just the name was not changed for backwards compatibility reasons. HW is a 'hub' where HIDD instances plug in.
ATA HIDD aoHidd_ATABus_Use32Bit value is completely ignored unless ata.device first detects correct command line parameter.
Yes. Unfortunately I was unable to find any comment in code or svn history with explanations. Looked at Linux source, there 32-bit PIO is also controller driver's property. Some of them enable it, some don't.
Actually, switching the default to ON should be safe. ata.device is fail-safe at this because during IDENTIFY command it validates upper 16 bits, and if they appear to be zeroes in all 128 longwords, then 32-bit mode is switched off. But, nevertheless, I know how tricky hardware can be, so I decided not to change original behavior. If you think it's wrong in some cases, then it's possible to add one more attribute like aHidd_ATABus_Default32Bit. If set to YES, then this means that 32-bit PIO is safe to use by default.
====Devices====
*[[Aros/Developer/Docs/Devices/ATA|ata.device]]
*[[Aros/Developer/Docs/Devices/Console|console.device]]
*[[Aros/Developer/Docs/Devices/Narrator|narrator.device]]
*[[Aros/Developer/Docs/Devices/Printer|printer.device]]
*[[Aros/Developer/Docs/Devices/Trackdisk|trackdisk.device]]
*[[Aros/Developer/Docs/Devices/AmberRAM|amberram.device]]
*[[Aros/Developer/Docs/Devices/Timer|timer.device]]
*[[Aros/Developer/Docs/Devices/|.device]]
The Amiga used [[Aros/Developer/Docs/Devices|Devices]] to communicate with [http://aros-exec.org/modules/newbb/viewtopic.php?start=0&topic_id=3475&viewmode=flat&order=ASC additional hardware]. AROS has replaced these hardware devices with hidd equivalents but some are still retained for backwards compatibility.
Local libraries/devices/handlers,etc. are supposed to override the ones in ROM if their version is higher than the one in ROM.
Here is the list of commands exec default:
{| class="wikitable"
| CMD_CLEAR
| Purge the buffer of the device
|----
| CMD_READ
| Playback Control
|----
| CMD_STOP
| Stopped the activity of the device
|----
| CMD_FLUSH
| Empty the queue of commands
|----
| CMD_RESET
| Reset a device
|----
| CMD_WRITE
| Playback Control
|----
| CMD_INVALID
| Create an error
|----
| CMD_UPDATE
| Gets updated device
|----
| CMD_START
| Will restart the device
|----
|}
While most other "stuff you communicate with" in AmigaOS are devices <ref>AMIGA ROM Kernel Reference Manual: Devices, 3rd Edition. Commodore-Amiga, Inc. Addison-Wesley, 1991. {{ISBN|0-201-56775-X}}</ref> that share a [http://gega.homelinux.net/AmigaDevDocs/ common base interface]. [[Aros/Developer/Docs/Devices1.3|OS 1.3 Device Drivers]].
====Handlers====
:[[Aros/Developer/Docs/Handlers/Pipe|pipe.handler]]
:[[Aros/Developer/Docs/Handlers/Port|port.handler]]
:[[Aros/Developer/Docs/Handlers/SFS|sfs.handler]]
:[[Aros/Developer/Docs/Handlers/FAT|fat.handler]]
:[[Aros/Developer/Docs/Handlers/PFS|pfs.handler]]
:[[Aros/Developer/Docs/Handlers/NTFS|fuse.handler]]
:[[Aros/Developer/Docs/Handlers/FFS|ffs.handler]]
filesystem handlers have their own separate system consisting of completely differently structured messages that dos.library use to pass requests (for things like reading, writing, getting directory contents etc.) to them. AROS originally went with implementing filesystem handlers as devices, which might arguably be more consistent with the rest of the AmigaOS API but which is quite incompatible with AmigaOS itself. However, it made it far harder to port filesystems and the gains were comparatively small, and so there's been a long standing goal of fixing this incompatibility. It has now, June 2011, been reintroduced to all AROS flavors.
are argstr and argsize valid for the handler startup environment?
DOS/RunHandler() calls DOS/CreateNewProcTags(), and then CallEntry() (in rom/dos/exit.c) to start the handler, so yes, argstr and argsize are *present* in the call signature of the handler.
Granted, argstr will be NULL and argsize 0, but those values *are* passed to the handler function using:
<pre>
AROS_UFC3(ULONG, entry,
AROS_UFCA(STRPTR, argptr, A0),
AROS_UFCA(ULONG, argsize, D0),
AROS_UFCA(struct ExecBase *, SysBase, A6));
</pre>
Creating your own [without the whole build tree http://pagesperso-orange.fr/franck.charlet/temp/radeon.zip] and then
<pre>
make stub
make
make install
</pre>
SFS has two Root blocks, one at the start and one at the end of the disk. The Root blocks both contain the same information. They hold various information about the disk structure and have the locations of some important blocks used by the filesystem.
The Root ObjectContainer contains the Root directory Object. The name of this Object is the name of the volume. It is identical to a normal directory Object.
The Bitmap is used to keep track of free space. Each bit in a bitmap represents a single block. A set bit indicates a free block and a cleared bit a used block.
AdminSpaceContainers are used to keep track of space which has been reserved for storing administration blocks. Only the Bitmap, the Root blocks and the actual data stored in files aren't stored in administration space. Administration space is allocated in chunks of 32 blocks at a time. A single AdminSpaceContainer can hold information about a large number of such areas each of which has its own little bitmap of 32 bits.
Extents are stored in a B-Tree. The Root block holds a pointer to the root of the Extent B-Tree. Extents keep track of space in use by a specific file. Each fragment a file consists of has its own Extent. Extents are in a double linked list. The list can be used to locate the next or previous fragment of a file.
Below is the standard block header. This header is found before EVERY type of block used in the filesystem, except data blocks. The id field is used to check if the block is of the correct type when it is being referred to using a BLCK pointer. The checksum field is the SUM of all LONGs in a block plus one, and then negated. When applying a checksum the checksum field itself should be set to zero. The checking a checksum the checksum is okay if the result of the checksum equals zero. The ownblock BLCK pointer points to the block itself. This field is an extra safety check to ensure we are using a valid block.
Field Type Description
id ULONG The id field is used to identify the type of block we are dealing with. It is used to make sure that when referencing a block we got a block of the correct type. The id consist of 4 bytes and each blocktype has its own unique foure letter code.
checksum ULONG This field contains the sum of all longs in this block, plus one and then negated. The checksum can be used to check if the block hasn't been corrupted in any way.
ownblock BLCK Points to itself, or in other words, this field contains the block number of this block. This is yet another way to check whether or not a block is valid.
<pre>
struct fsBlockHeader {
ULONG id;
ULONG checksum;
BLCK ownblock;
};
</pre>
The algorithm to calculate the checksum of a block:
<pre>
ULONG calcchecksum(struct fsBlockHeader *block, LONG blocksize} {
ULONG *data=(ULONG *)block;
ULONG checksum=1;
block->checksum=0;
while(blocksize>0) {
checksum+=*data++;
blocksize-=4;
}
return(-checksum);
}
</pre>
A Root block contains very important information about the structure of a SFS disk. It has information on the location and size of the disk, the blocksize used, locations of various important blocks, version information and some filesystem specific settings.
A SFS disk has two Root blocks; one located at the start of the partition and one at the end. On startup the filesystem will check both Roots to see if it is a valid SFS disk. If either one is missing SFS can still continue (although at the moment it won't).
A Root block could be missing on purpose. For example, if you extend the partition at the end (adding a few MB's) then SFS can detect this with the information stored in the Root block located at the beginning (since only the end-offset has changed). Same goes for the other way around, as long as you don't change start and end point at the same time.
When a Root block is missing because the partition has been made a bit larger, then SFS will in the future be able to resize itself without re-formatting the disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
version UWORD The version of the filesystem block structure. You can check this field to identify what version of the filesystem your dealing with it and to see if you can handle this structure correctly. Don't try to interpret the disk's structure when this field contains an unknown version number!
sequencenumber UWORD Used to identify which Root block was written last in case the sequencenumber on both Root blocks don't match.
datecreated ULONG Creation date of this volume. This is the date when the disk was last formatted and will never be changed.
bits UBYTE Various settings, see below.
<pre>
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
reserved1 ULONG[2] Reserved, leave zero.
firstbyteh ULONG High 32-bits of a 64-bit number. This is the first byte of our partition relative to the start of the disk.
firstbyte ULONG Low 32-bits of a 64-bit number.
lastbyteh ULONG High 32-bits of a 64-bit number. This is the last byte (exclusive) of our partition relative to the start of the disk.
lastbyte ULONG Low 32-bits of a 64-bit number.
totalblocks ULONG The total number of blocks this partition consists of.
blocksize ULONG The size of a block of this partition.
reserved2 ULONG[2] Reserved, leave zero.
reserved3 ULONG[8] Reserved, leave zero.
bitmapbase BLCK Block number of the start of the Bitmap.
adminspacecontainer BLCK Block number of the first AdminSpaceContainer.
rootobjectcontainer BLCK Block number of the ObjectContainer which contains the root of the disk (this is where the volume name is stored).
extentbnoderoot BLCK Block number of the root of the Extent B-Tree.
reserved4 ULONG[4] Reserved, leave zero.
</pre>
<pre>
struct fsRootBlock {
struct fsBlockHeader bheader;
UWORD version;
UWORD sequencenumber;
ULONG datecreated;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
ULONG reserved1[2];
ULONG firstbyteh;
ULONG firstbyte;
ULONG lastbyteh;
ULONG lastbyte;
BLCK totalblocks;
ULONG blocksize;
ULONG reserved2[2];
ULONG reserved3[8];
BLCK bitmapbase;
BLCK adminspacecontainer;
BLCK rootobjectcontainer;
BLCK extentbnoderoot;
ULONG reserved4[4];
};
</pre>
AdminSpaceContainers are used to store the location and bitmap of each administration space. The AdminSpaceContainers are located in a double linked list and they contain an array of fsAdminSpace structures. There is one fsAdminSpace structure for every administration space on disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
next BLCK The next AdminSpaceContainer, or zero if it is the last in the chain.
previous BLCK The previous AdminSpaceContainer, or zero if it is the first AdminSpaceContainer.
bits UBYTE The number of bits in each in the bits ULONG in the fsAdminSpace structure.
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
adminspace struct fsAdminSpace An array of fsAdminSpace structures. The size of the array is determined by the current blocksize.
<pre>
struct fsAdminSpaceContainer {
struct fsBlockHeader bheader;
BLCK next;
BLCK previous;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
struct fsAdminSpace adminspace[0];
};
</pre>
Field Type Description
space BLCK The first block of an administration space.
bits ULONG A small bitmap which is used to determine which blocks in an administration space are already in use. The number of bits in this bitmap is determined by the bits field in the AdminSpaceContainer.
<pre>
struct fsAdminSpace {
BLCK space;
ULONG bits;
};
</pre>
The fsBitmap structure is used for Bitmap blocks. A bitmap block is used to keep track of which space is in use and which isn't for a particular area of a disk. All bitmap blocks together keep track of the free space for an entire disk. The location of the first bitmap block is known and all other bitmap blocks are stored in order after the first one.
Field Type Description
bheader struct fsBlockHeader Standard block header.
bitmap ULONG An array of ULONG's. These hold the actual information on which blocks are in use and which aren't.
<pre>
struct fsBitmap {
struct fsBlockHeader bheader;
ULONG bitmap[0];
};
</pre>
Each bit in a bitmap block (except for the block header) represents a single block. If the bit is set than the block is free, and if the bit is clear then it is full. The first ULONG in the bitmap area of the first bitmap block represents blocks 0 through 31 on the disk. Bit 31 of this ULONG is block 0, 30 is block 1, and so on. Bit 0 of the first ULONG represents block 31.
Below is a table to clarify how bitmaps work even further. The first column is the bitmap block number, the second column is the number of the ULONG in the bitmap array. The third column is the bit number in this ULONG, and the last column is the block which this specific bit, in this specific bitmap block represents.
We'll assume here that a bitmap block has room for 120 ULONG's (meaning there is room for storing 32 * 120 bits).
<pre>
Bitmap block ULONG number Bit number Block represented
1 (first) 0 31 0
1 0 30 1
... ... ... ...
1 0 1 30
1 0 0 31
1 1 31 32
... ... ... ...
1 2 31 64
1 2 30 65
... ... ... ...
1 119 0 3839
2 0 31 3840
2 0 30 3841
... ... ... ...
</pre>
The last bitmap block doesn't need to be completely used. The unused bits (which belong to blocks which do not exist) all have to be clear, to indicate that these blocks are in use.
The fsObjectContainer structure is used to hold a variable number of fsObjects structures (Objects) which have the same parent directory. Each ObjectContainer must contain at least one Object. If there is space in the ObjectContainer not used by the variable number of Objects then that space is zero filled. Objects always start at 2-byte boundaries, which means sometimes a padding byte is inserted between two Objects.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the parent Object, or 0 if this object has no parent (which is only the case for the Root directory).
next BLCK The next ObjectContainer belonging to this directory, or zero if it is the last in the chain.
previous BLCK The previous ObjectContainer belonging to this directory, or zero if it is the first ObjectContainer in this directory.
object struct fsObject A variable number of fsObject structures. The number of structures depends on the individual sizes of each fsObject structure and the blocksize. These structures are located directly after each other with at most 1 byte of padding between them to get the structures aligned on a 2 byte boundary.
<pre>
struct fsObjectContainer {
struct fsBlockHeader bheader;
NODE parent;
BLCK next;
BLCK previous;
struct fsObject object[0];
};
</pre>
fsHashTable is the structure of a HashTable block. It functions much like the hash table found in FFS user directory blocks, except that it is stored in a separate block. This block contains a number of hash-chains (about 120 for a 512 byte block). Each hash-chain is a chain of Nodes. Each Node has a pointer to an Object and a pointer to the next entry in the hash-chain. Using such a hash-chain you can locate an object quickly by only knowing its name.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the directory Object this HashTable block belongs to.
hashentry NODE An array of Nodes. Each Node represents the start of a hash-chain (singly linked). A hash-value is calculated using the name of a file or directory, and this value determines in which chain the Object is linked. If there are no entries in a hash-chain then the hashentry value is zero.
<pre>
struct fsHashTable {
struct fsBlockHeader bheader;
NODE parent;
NODE hashentry[0];
};
</pre>
To calculate the hash-value using a name of an Object as input use these routines:
<pre>
UWORD calchash(UBYTE *name) {
UWORD hash=0;
/* Calculates a hash value over the passed in string.
The end of the string can be either a NUL byte or a
slash. The hash function is the same as the one
used in FastFileSystem set to international mode. */
while(name[hash]!=0 && name[hash]!='/') {
hash++;
}
while(*name!=0 && *name!='/') {
hash=hash*13+upperchar(*name++);
}
return((UWORD)(hash % (UWORD)((blocksize-sizeof(struct fsHashTable))>>2)));
}
UBYTE upperchar(UBYTE c) {
if((c>=224 && c<=254 && c!=247) || (c>='a' && c<='z')) {
c-=32;
}
return(c);
}
</pre>
The BNodeContainer is used to store B-Trees. Currently only one B-Tree is in use by this filesystem and it is used to store the location of file data. The fsBNodeContainer structure contains two other structures. The fsBlockHeader structure and the BTreeContainer structure.
Field Type Description
bheader struct fsBlockHeader Standard block header.
btc struct BTreeContainer Contains information about the B-Tree and its nodes contained in this block.
<pre>
struct fsBNodeContainer {
struct fsBlockHeader bheader;
struct BTreeContainer btc;
};
</pre>
First try and locate the Root block. It should start with "ROOT". SFS has two of these, one at the start of the partition and one at the end. One of the fields contains the block size, which will be the size of all important SFS blocks.
The root block has the root object container, which contains information about files and directories in the root directory. The object
containers basically hold one or more smaller structures that represent files and directories. Scanning them all should give you a list of
files and directories.
The root block also has the root of the Extent B-Tree. This is a standard B-Tree structure (not a binary tree) that is used commonly in
all kinds of system, you can read about how they work on Wikipedia if needed. The B-Tree holds the information about *where* all the data is
located for your files.
To recover your files, I'd do this:
* Find one of the root blocks, if not present, then figure out the block size your disk was using, and scan every block in turn to see if it
looks like an ObjectContainer (check the fsBlockHeader's ID, check if the ownblock number is equal to the block you are currently scanning,
and check its checksum). So if you currently have block 12, and you see a block with the correct id, and ownblock = 12 and its checksum is good,
then that's probably a valid ObjectContainer.
* With all the ObjectContainers found, you can extract filenames and directory names from these, but also the number of their first data
block (in the field data) and the file size. For small files (less than blocksize) this data block will be enough to recover the data.
For larger files, you might be lucky and all the remaining blocks are found after the first one (if the file was defragmented). You can't be
sure of that though so...
* For larger files, you need to find all the BNodeContainers. You could scan these in the same way you found all the ObjectContainers (look for
blocks with the correct id, ownblock number and checksum).
* With all the BNodeContainers found, you can try looking up the first data block of a file in the B-Tree structure. This is a bit complicated
-- the B-Tree consists of non-leaf nodes (blocks that only contain pointers to other B-Tree blocks), the isLeaf flag indicates this. Or it
can be a B-Tree leaf block. The leaf blocks contain extra information per entry (see https://hjohn.home.xs4all.nl/SFS/extents.htm)
<pre>
struct fsExtentBNode {
ULONG key;
ULONG next;
ULONG prev;
UWORD blocks;
};
</pre>
The key should be a block of a file (the first of a range), that is 1 to 65535 block long (depending the "blocks" field). If the file is split
up into more parts, then "next" will contain block number of the next range of blocks. You need to look this up again in the B-Tree
structure to find out how large it is.
You can for the most part ignore the other structures (bitmap, admin containers). The fsObjects and B-tree containers is what you'll need to
recover the data.
====Resources====
<pre>
rom/storage/mmakefile.src
rom/storage/storage.conf
rom/storage/storage_device.c
rom/storage/storage_ids.c
rom/storage/storage_init.c
rom/storage/storage_intern.h
rom/storage/storage_mount.c
rom/storage/storage_unit.c
</pre>
<pre>
rom/storage/includes/device.h
rom/storage/includes/unit.h
rom/storage/includes/volume.h
rom/storage/storage_intern.h
</pre>
<pre>
</pre>
*[[Aros/Developer/Docs/Resources/ACPI|acpi.resource]]
*[[Aros/Developer/Docs/Resources/Battclock|battclock.resource]]
*[[Aros/Developer/Docs/Resources/Bootloader|bootloader.resource]]
*[[Aros/Developer/Docs/Resources/Cia|cia.resource]]
*[[Aros/Developer/Docs/Resources/Filesystem|FileSystem.resource]]
*[[Aros/Developer/Docs/Resources/Hostlib|hostlib.resource]]
*[[Aros/Developer/Docs/Resources/Kernel|kernel.resource]]
*[[Aros/Developer/Docs/Resources/Misc|misc.resource]]
*[[Aros/Developer/Docs/Resources/Processor|processor.resource]]
==Debugging Code==
Please use the [http://sourceforge.net/tracker/?group_id=43586&atid=439463 AROS Bug Tracker] if any issues are found.
GRUB Command line list
<pre>
sysdebug
usbdebug - allows to see Poseidon's log in debug output
</pre>
How do I get debugging out of InitResident ? If running i386 hosted on linux sysdebug=initresident on command line.
This way you can enable any of listed flags. sysdebug=all stands for "everything"
Have an executable (crosscompiled C++ code) which has 6 MB size on disk, but after loading it in memory, 250 MB RAM is taken. Any software that would split AROS executable into ELF part which would show actual size values?
readelf -S executable
it will show you all sections in elf file, including sizes and requested alignment.
objdump -h filename
That's will give you a quick overview of the sections and sizes. Ignore all the .debug.* sections.
Would hazard a guess that you have a large .bss section. That's pretty common in C++.
Next step:
nm—size-sort filename | grep ' [bB] '
The last few will be your biggest consumers. Would suggest -C to demangle the symbols... ;)
Suggest profiling the program (just use some printf's in the main loop for time spent in each part), it usually is quite easy to spot slow parts in games or apps.
If someone has '#define IPTR ULONG' somewhere. To see where that define is, redefine IPTR in the source code that fails, just above the line that fails, and the preprocessor will tell you where it was defined first.
===How to setup gdb with AROS/hosted===
Download AROS sources (AROS-xxxxxxxx-source.tar.bz2, where xxxxxxxx is the current date) and AROS contrib sources (AROS-xxxxxxxx-contrib-source) from
Untar-bzip2 and cd to the unpacked archive directory.
> tar -xvjf AROS-xxxxxxxx-source.tar.bz2
> cd AROS-xxxxxxxx-source
Check the link to "contrib" (contrib-source) inside directory, e.g. correct like this:
> rm contrib
> ln -s ../AROS-xxxxxxxx-contrib-source.tar.bz2 contrib
Make sure you have the correct locale setting, otherwise compilation will fail at some point. See [http://aros.sourceforge.net/documentation/developers/compiling.php#setting-the-locale-to-iso8859 here] (or link below) for more on that. You might have to enter this:
> export LANG="en_US.ISO-8859-1"
Now configure for a debug build - see "./configure --help" for more - here are two examples:
> ./configure—enable-debug=stack,modules,symbols
> ./configure—enable-debug=all
You may "make" now, or choose a separate directory for your build (e.g. for easy removal), for example if compiling for i386 architecture you could create a directory like this:
> mkdir linux-i386
> cd linux-i386
> ../AROS/configure—enable-debug=stack,symbols,modules
When done configuring you're ready to go:
> make
Building AROS takes some time - minutes on fast machines (e.g. 2.5 GHz quadcore), up to hours on slower machines.
The result will be AROS Linux hosted with gdb debugging enabled.
See aros.org documentation for more on compiling AROS, including more [http://aros.sourceforge.net/documentation/developers/compiling.php --enable-debug] options.
When finished, enter bin/linux-i386/AROS directory (replace "linux-i386" with your compilation target platform, e.g. linux-x86_64, etc.) inside the unpacked archive directory. This directory contains the required .gdbinit file for properly running AROS inside gdb.
> cd bin/linux-i386/AROS
Run AROS (here: with 128MB of memory) from gdb:
> gdb—args boot/aros-unix -m 128
or
> gdb—args boot/arosboot -m 128
(gdb) r
Watch the shell output - in case AROS complains about "LoadKeyCode2RawKeyTable: Loading "DEVS:Keymaps/X11/keycode2rawkey.table" failed!" you should also see some instructions on how to create a keymap table. (see link above "more on compiling", too.)
Quit gdb, and try default keymap table:
(gdb) q
The program is running. Quit anyway (and kill it)? (y or n) y
> cd ../../..
> make default-x11keymaptable
Re-run AROS, as described above. Try e.g. RAros (= right windows key) + W to open a shell. If this doesn't work you have to create a keymap table yourself, quit gdb again, and make a new keytable:
> make change-x11keymaptable
A window will open. Watch the window's title bar, and follow the instructions.
When done, re-run AROS. RAros + W should now open a shell.
Next, compile your program with gdb support.
When you start GDB is there a warning which says
warning: File "<whatever>/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to ...
If so start gdb with "-ix .gdbinit"
<pre>
Summary - In short:
* build AROS with debugging support (i.e. ./configure --enable-debug=all)
* build your application with debugging support (i.e. option -g)
* run AROS in the GNU debugger (you may use the GUI frontend "ddd" which simplifies usage a bit)
* start your application
* use the commands "findaddr" and "add-symbol-file" as written in the debugging manual
* if the debugger doesn't find the source code of your application use the "dir" command of the debugger.
</pre>
===How to use gdb===
In AROS open a shell, then (in host shell) use CTRL-Z to go into gdb. Use "b Exec_CreatePool" (one of the functions used early on by startup code in programs) to add a breakpoint, then "cont" and gdb will interrupt somewhere early during startup of "program". Use "bt" to show backtrace and "loadseg" for "??" entries. One of them will be for "program". After that you can use "disassemble program".
One thing you need to make sure is that .gdbinit you have in your build directory is the same as in source tree. It has been modified some time ago, but the build system does not refresh it - you need to copy it manually
To recap, please read our debugging [http://aros.sourceforge.net/documentation/developers/debugging.php manual]:
To detect segfaulting when loading, try...
./configure—enable-debug—with-optimization="-O2"
Because crash or no crash may depend on optimization. For newer compilers maybe this helps...
--with-optimization=-"-O2 -fno-strict-aliasing"
One way to make crashes less random (more easily reproducible) is to activate the munging of free memory in rom/exec/freemem.c which is normally commented out:
<pre>
Index: freemem.c
===================================================================
--- freemem.c (revision 34289)
+++ freemem.c (working copy)
@@ -154,11 +154,12 @@
* created with their TCB placed in the tc_MemEntry list. The workaround
* is to avoid munging when FreeMem() is called with task switching disabled.
*/
+
/* DOH! it doesn't work even this way. What's wrong???
- *
- * if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
- * MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
*/
+
+ if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
+ MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
}
</pre>
Mungwall can be turned on at runtime. Currently this works in all hosted versions. Just specify "mungwall" on kernel command line and it works. It can work on native too. In order to enable it you need to parse kernel command line, and if "mungwall" is present, set EXECF_MungWall bit in IntExecBase.IntFlags.
This needs to be done before the first AllocMem() for obvious reasons. And never reset back this flag! If you change it on a working system, you are doomed.
Hosted ports do the processing in rom/exec/prepareexecbase.c --enable-debug=mungwall option in configure still works but is going obsolete. A kludge in rom/exec/allocmem.c is responsible for this and it needs to be removed when the transition is done.
BTW, on i386-pc port it can be activated by "mungwall" argument on command line, you don't need to rebuild AROS.
New mungwall affects not only AllocMem()/FreeMem(), but also pools. I also tested it with AllocAbs(), seems to work correctly.
Runtime mungwall works on:
* pc-i386
* pc-x86_64
* linux-i386
* linux-x86_64
* darwin-x86
* linux-ppc
Works on all hosted ports, if the port itself is working.
* amiga-m68k
* Not on sam440-ppc and efika-chrp-ppc, even if they would be able to be built at moment. Does not work on (for now, need NVRAM support)
When starting my freshly rebuilt i386-linux-aros which was compiled with full debugging support I get sometimes the error "Program exited with code 0377". Add the following to your .gdbinit:
set follow-fork-mode child
Here are some of the custom AROS gdb functions (defined in ".gdbinit" file) to resolve "in ?? ()" entries in backtrace:
<pre>
#0 0xb7ffd424 in __kernel_vsyscall ()
#1 0xb7e2a657 in sigsuspend () from /lib/libc.so.6
#2 0xb7c63900 in ?? ()
#3 0xb7c640e3 in ?? ()
#4 0xb7c641e0 in ?? ()
</pre>
You can use
loadseg 0xb7c63900
loadframe 2
or
loadbt
and some others. Use "help " for a little help text. If the commands do not work try "loadkick" first.
Use "thistask", "taskready", "taskwait" to get list of AROS tasks. "bttask " shows backtrace of a task which is in ready or in wait queue and "loadseg" to resolve "??" entries in it's backtrace ("loadframe" would not work as it assume current running task).
===Native debugging tools for AROS===
to enable debugging at boot time entering the GRUB menu editing line (E key) and adding "debug=memory" to your boot line, then press Ctrl+X to complete booting.
SYS:Tools/Debug/'''Bifteck'''
Open a shell and enter the line below to run Biftek and grab the debug messages collected in RAM into a text file.
tools/debug/bifteck > ram:debug.txt
and certainly does not open a window. It is a shell tool and only dumps data located from the debug location.
It is therefore important to 'catch' that debug data as soon as possible (before it gets overridden). You should invoke bifteck at the first opportunity before doing anything else. You can use the TO option to store bifteck output to a file or you can pipe it manually to a file.
SYS:Tools/Debug/'''Sashimi''' - displays error messages
One suggestion is to do a bug() debugging. Each time bug() is executed it will be output on sashimi.
You include <aros/debug.h> and place bug("something\n"); in your source code at location though which control passes.
To get the output - open an aros shell
SYS:Tools/Debug/sashimi > RAM:out.txt
'''Ctrl C''' to end the output to the RAM Disk.
# open shell, and type
# ram: (to switch to ram drive)
# System:Tools/Debug/Sashimi > mylogfile.txt
# open AHI prefs using wanderer (or use another opened shell)
# play test sound
# close AHI prefs
# shell still open with Sashimi running: press ctrl-c to break Sashimi and return to prompt.
# in shell: copy mylogfile.txt System: (or to your required location)
SYS:Utilities/'''Snoopy''' - monitors OS function calls, run "Sashimi" to see Snoopy's output
SYS:Tools/'''WiMP''' - the Window (and Screens) Manipulation Program
You can use the -E option of gcc to find out how preprocessor macros are expanded.
===Errors===
crash in strcasecmp usually means that one of its arguments is NULL.
empty space between these two names, prossibly some invisible character
Old Amiga [http://www.amigacoding.com/index.php?title=Guru_codes&redirect=no Guru Codes]
If the crash is in intuition. Sometimes, if it relates to text, a null pointer sets it off.
an uninitialised pointer can have any address (this is a common fault).
Compiling on 64bit, Many old code would not properly typecast when doing pointer-integer conversions and thus at least throw a warning. This can easily be located and fixed.
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
* Fix (change IPTR/SIPTR back to ULONG/LONG) the few places which really rely on ULONG/LONG being exactly 32 bit. That's for things like pixel (ARGB) buffers, structs written/read to disk, colormaps, but probably not much else.
Then again, many current compilers also throw a warning when you try to assign a pointer value to an integer and the integer is possibly too small. This happens under .NET for example when a 64 bit pointer is assigned to something like an ULONG - so exactly the case which you described.
=== AI ===
<---
Model <---> Agent ---> End user
Gemini LMStudio
Qwen Comfyui
etc
Recent, self hosting locally on laptops, mini pcs or desktops with '''quantization''' 4bit has reduced memory requirements but still require 16Gb+ and no high end gpu for text based
*[https://lmstudio.ai/download LMstudio single gpu],
Google Gemma 4 Model
*[ 12B QAT]
Alibaba Cloud's [https://huggingface.co/ Qwen] team series of large language models LLMs
*[https://huggingface.co/models?other=qwen3 Qwen 3], [],
*[https://huggingface.co/models?other=qwen2 Qwen 2], [https://huggingface.co/Qwen/Qwen2.5-Coder-32B qwen 2.5 Coder],
*[ Kimi K3],
Small Claude Model
*[https://github.com/sipeed/picoclaw picoclaw]
Bigger LLMs but with settings
*[https://ollama.com/download Ollama single gpu]
*[https://github.com/ggml-org/llama.cpp/releases llama.CPP multi gpus],
*[ VLM multiple gpus],
For the full experience
#Training learning using 1+ high end GPUs at least 16GB VRAM per GPU card or 64Gb+ of unified, 16Core CPU with at least 64Gb of RAM system memory, though training can take weeks
#Inference with custom asics or GPUs
*[ MiniMax H3] for audio and video but gpu 8Gb+
*[https://github.com/jamiepine/voicebox voicebox]
*[https://github.com/ideogram-oss/ideogram4 ideogram4]
*[https://github.com/calesthio/OpenMontage OpenMontage]
<pre>
Text to Audio --\
Text to Video --/ Reference Video --> Video and Audio output
</pre>
=== Linux ===
<syntaxhighlight lang="c">
/* 1. Header for your name,date,purpose of program.
2. Pre-processor directives. This will include the #includes for files you want to add.
3. Includes for function prototypes if necessary.
4. Main()
Create Pointers for Libraries and any Window you want to open.
5. Open necessary libraries.
6. Check if open exit program if fail.
7. Open a window exit program if fail.
8. Add your program
9. Close Window
10 Close Libraries.
11 End Program. */
/* standard os included headers <.h> */
#include <dos/dos.h>
#include <dos/dosasl.h>
#include <dos/dosextens.h>
#include <dos/exall.h>
#include <dos/rdargs.h>
#include <exec/memory.h>
#include <exec/types.h>
#include <utility/utility.h>
#include <intuition/intuition.h>
/* define as unresolved external references (proto/xxx.h) and compiler will link to auto(matically) open library */
#include <proto/arossupport.h>
#include <proto/dos.h>
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/graphics.h>
#include <proto/cybergraphics.h>
#include <proto/datatypes.h>
#include <proto/icon.h>
#include <workbench/workbench.h>
#include <workbench/icon.h>
#include <datatypes/pictureclass.h>
#include <proto/muimaster.h>
#include <libraries/mui.h>
#include proto/bsdsocket.h
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* my own headers ".h" */
#define CTRL_C (SetSignal(0L,0L) & SIGBREAKF_CTRL_C)
#define isDir(fib) ((fib)->fib_DirEntryType >= 0)
#define ARG_TEMPLATE "FILE/A,ALL/S,QUIET/S,W=WIDTH/N,H=HEIGHT/N,M=METHOD,DEFTOOL"
int main(void)
{
return retval;
} /* main */
</syntaxhighlight>
If you used c++, there is not yet c++ support in our shared library system.
The easiest way to create / compile a shared library would be to use the AROS build system but the libraries can be created manually. You have to create a ROMTAG structure and some header files.
A shared library is built with the %build_module macro with a line like this:
%build_module mmake=MetaTarget modname=mylib modtype=library files=SourceFiles
This macro can build different AROS module types, like devices, Zune classes, HIDDs, etc.
<pre>
##begin config
version 1.0
##end config
##begin functionlist
void func1(LONG a, LONG b)
int func2(char *s, ULONG a)
##end functionlist
</pre>
There is more [http://aros.sourceforge.net/documentation/developers/sys-dev/libraries.php here]
Alternatively,
<pre>
#ifndef LIB_H
#define LIB_H
#define __NOLIBBASE__
#include <exec/libraries.h>
#include <exec/semaphores.h>
#include <dos/dos.h>
#ifdef __AROS__
//#include <aros/debug.h>
#define reg(x)
#define __saveds
#endif
#define USESYSBASE struct ExecBase *SysBase = Base->My_SysBase;
struct MyTestBase
{
struct Library My_Test_Lib;
struct ExecBase *My_SysBase;
APTR My_SegList;
int testint;
};
#endif
</pre>
<pre>
/*--------------------------------------------------------------------------*/
/* Resident header written for mytest.library */
/*--------------------------------------------------------------------------*/
#define __NOLIBBASE__
#define VERSION 1
#define REVISION 0
#define LIBHEADNAME mytest
#define LIBHEADNAMESTR "mytest"
#define COMPDATE "04.10.2015"
#define VERS "1.0"
#define LIBBASETYPE struct MyTestBase
#define LIBBASETYPEPTR LIBBASETYPE *
#include <aros/debug.h>
#include <exec/exec.h>
#include <proto/exec.h>
#include <exec/resident.h>
#include <exec/nodes.h>
#include <exec/libraries.h>
#include <aros/symbolsets.h>
#include "lib.h"
const UBYTE lib_name[] = LIBHEADNAMESTR ".library";
const UBYTE lib_id[] = "$VER: " LIBHEADNAMESTR ".library " VERS " (" COMPDATE ") by ALB42\n";
extern const APTR FuncTable[];
AROS_UFP3 (LIBBASETYPEPTR, InitLib,
AROS_UFPA(LIBBASETYPEPTR, Base, D0),
AROS_UFPA(BPTR, seglist, A0),
AROS_UFPA(struct ExecBase *, sysbase, A6)
);
static struct LibInitStruct
{
IPTR LibSize;
const APTR *FuncTable;
const struct DataTable *DataTable;
APTR InitFunc;
}
const LibInitStruct =
{
sizeof(LIBBASETYPE),
FuncTable,
NULL,
(APTR)InitLib
};
const struct Resident romtag =
{
RTC_MATCHWORD, /* match word */
(APTR)&romtag, /* back pointer */
(APTR)(&romtag + 1), /* skip pointer */
RTF_AUTOINIT | RTF_EXTENDED,/* flags */
VERSION, /* version */
NT_LIBRARY, /* type of module */
0, /* init priority */
(STRPTR)lib_name, /* module name */
(STRPTR)lib_id + 6,
(APTR)&LibInitStruct,
REVISION, NULL
};
AROS_UFH3 (LIBBASETYPEPTR, InitLib,
AROS_UFHA(LIBBASETYPEPTR, Base, D0),
AROS_UFHA(BPTR, seglist, A0),
AROS_UFHA(struct ExecBase *, sysbase, A6)
)
{
AROS_USERFUNC_INIT
Base->My_SegList = seglist;
Base->My_SysBase = (APTR)sysbase;
Base->testint = 0;
USESYSBASE
bug("InitLib\n");
if (!set_open_libraries())
{
set_close_libraries();
return NULL;
}
return Base;
AROS_USERFUNC_EXIT
}
AROS_LH1(LIBBASETYPEPTR, LibOpen,
AROS_LHA (ULONG, version, D0),
LIBBASETYPEPTR, Base, 1, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibOpen\n");
(void)version;
Base->My_Test_Lib.lib_OpenCnt++;
return Base;
AROS_LIBFUNC_EXIT
}
__saveds APTR LibExpungeInternal(LIBBASETYPE *Base reg(a6))
{
USESYSBASE
APTR seglist;
bug("LibExpungeInternal\n");
if (Base->My_Test_Lib.lib_OpenCnt)
{
return 0;
}
seglist = Base->My_SegList;
Forbid();
Remove((struct Node*)Base);
Permit();
FreeMem((APTR)Base - Base->My_Test_Lib.lib_NegSize, (LONG)Base->My_Test_Lib.lib_PosSize +
(LONG)Base->My_Test_Lib.lib_NegSize);
set_close_libraries();
return seglist;
}
AROS_LH0(BPTR, LibClose,
LIBBASETYPEPTR, Base, 2, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibClose\n");
if (!(--Base->My_Test_Lib.lib_OpenCnt))
{
return LibExpungeInternal(Base);
}
return 0;
AROS_LIBFUNC_EXIT
}
AROS_LH1(BPTR, LibExpunge,
AROS_LHA(LIBBASETYPEPTR, Base, D0),
struct ExecBase *, sysBase, 3, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
(void)sysBase;
USESYSBASE
bug("LibExpunge\n");
return LibExpungeInternal(Base);
AROS_LIBFUNC_EXIT
}
AROS_LH0(LIBBASETYPEPTR, LibReserved,
LIBBASETYPEPTR, Base, 4, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibReserved\n");
return 0;
//return (APTR)LibReserved();
AROS_LIBFUNC_EXIT
}
// Space for your own functions
// do not forget to update the FuncTable as well
AROS_LH1(int, TestFunction,
AROS_LHA(int, TestValue, D0),
LIBBASETYPEPTR, Base, 5, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("TestFunction\n");
Base->testint = TestValue + Base->testint;
return Base->testint;
AROS_LIBFUNC_EXIT
}
// Functable -> Table of all functions in the Library, in right order - important!
const APTR FuncTable[] =
{
&AROS_SLIB_ENTRY(LibOpen,LIBHEADNAME,1),
&AROS_SLIB_ENTRY(LibClose,LIBHEADNAME,2),
&AROS_SLIB_ENTRY(LibExpunge,LIBHEADNAME,3),
&AROS_SLIB_ENTRY(LibReserved,LIBHEADNAME,4),
&AROS_SLIB_ENTRY(TestFunction,LIBHEADNAME,5),
(void *)-1
};
// AutoInit stuff
void *__PROGRAM_ENTRIES__symbol_set_handler_missing;
void *__LIBS__symbol_set_handler_missing;
// end of AutoInitStuff
</pre>
Makefile
<pre>
VPATH =
CFLAGS = -O2 -g -fomit-frame-pointer -W -Wall -Wno-parentheses
CC = i386-aros-gcc
LD = i386-aros-gcc
LDFLAGS = -nostartfiles -Wl,-Map -Xlinker linkermap
LIBS = -lautoinit -llibinit
STRIP = i386-aros-strip --strip-unneeded --remove-section .comment
OBJS = lib_header.o
all: mytest.library
mytest.library: $(OBJS)
$(LD) $(LDFLAGS) $^ $(LIBS) -o $@
lib_header.o: lib_header.c lib.h
clean:
rm -f *.o *.library *.ppu testlibrary linkermap
</pre>
Porting UNIX library to AROS - dealing with static variables which would make it easy to port such libraries to AROS, keeping the benefits of sharing them on disk, but losing the benefit of actually sharing them in memory.
Our problem arises by the fact we want to share the actual code (the .text section of the library) and constant data, but we need to have per-task .bss and .data sections. If we get rid of our intention to share the .text and .rodata sections, things get quite easy: just load and relocate the library whenever it's open, by whoever it's open. It's like statically linking the library into the executable, except that the final linking is done at runtime.
In the V0 branch, in workbench/hidds/hidd.nouveau was committed pcimock.hidd. This is a pci driver that allows mocking real PCI devices under linux-hosted. The main idea is to be able to run the real hardware driver under linux-hosted with as little changes as possible (some changes will always be needed though unless someone wants to write complete device simulator) so that driver's code paths can be executed and debugged using gdb. This was a very helpful capability when porting nouveau. Now it is externalized from nouveau.hidd and can be used by other people porting drivers. The pcimock.hidd can currently mock 4 different nvidia cards, 1 AGP bridge and also mock irq.hidd.
What's the difference between this driver and the pcilinux.hidd? I used that one to develop many different HW drivers for aros. As far as I understood the intention of pcilinux.hidd it is supposed to get access to real hardware that is running under linux. The pcimock.hidd goal is to mock the hardware. For example my dev box is a PCIE system, but I still would like to run the AGP codes paths in nouveau under linux-hosted to check if they don't seg fault. The other case would be to run codes paths for hardware that the developer does not have (Fermi cards in my case). In the case of pcimock.hidd, the AROS driver's code paths will execute as long as you add proper mocking (for example fill in PCI config area or values for registers in BARs). This is an advantage for ported drivers - the code should already work (since it worked on another system) but there might have been mistakes made during porting which can be detected easily with gdb.
In case you are writing your driver from scratch, pcilinux.hidd hidd will give you more advantage, since you can actually access the real hardware from linux-hosted.
== Misc ==
===APL, MPL, BSD, GPL and LGPL Licences===
The majority of AROS sources in licensed under AROS Public License ([http://aros.sourceforge.net/license.html APL]) which (to a degree) protects us from someone taking AROS sources and not contributing improvements back (for example MorphOS took some AROS source and then contributed changes back)
It is written to allow the use of AROS code in other open source or commercial projects without exception whilst providing a mechanism so that improvements/additions can find their way back to the original source in one form or another.
There are "3rd" party applications used by AROS that do not fall under this license, which are an extra "Contrib" download for convenience.
Anyone can port GPL-ed network and sound drivers as AROSTCP and AHI are GPLed. Direct using (porting) [http://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs GPL]-ed code in other parts of AROS (gfx, sata, usb) is not possible because AROS license is not compatible with GPL. You need to utilize permissive licensed code like BSD or MIT/X11.
BSD and MPL license are the closest to APL.
APL however is not so compatible with LGPL/GPL.
LGPL case - you cannot statically combine APL code with LGPL. You can, however thank to LGPL being "lesser" restrictive, use LGPL dynamically loaded libraries in APL codes.
GPL case - you cannot combine APL code with GPL in any way if there is no explicit clause by GPLed code authors allowing that. If you do combine APL with GPL in "bad" ways described above - you have a problem (you violate GPL). This problem might result in everything in AROS becoming GPL or everything running or AROS becoming GPL (here I'm not sure really). The other scenario is that you are not allowed to legally distribute such code at all. To be honest I have grasped how to violate GPL, but I'm still no exactly sure what happens when you violate it (but I'm sure it's not anything nice)
GPL software can run on top of non-GPL "system components" (see system components exception of GPL), but the other way around (non-GPL using GPL) leads to problems. This means applications like scout, or Quake III are ok (in the majority of cases).
Theres no reason GPL drivers cannot be ported - but they cant be in AROS's ROM (requires linking APL code with GPL), nor can AROS depend on them (e.g. they must use existing apis).
If they are launched (dynamically linked) by a user action that is allowed. It is also allowed to distribute such binaries together for convenience.
GPL is not about statical or dynamic linking but is about executing process and function calls.
These components - SFS, isapnp, Zune texteditor, AHi, network drivers, freetype, openuirl, BHFormat, Edit and (" dynamically loaded libraries") are LGPL, not GPL. Mesa/Nouveau stuff is MIT. Some user tools are GPL though.
'''AROS (system)'''
* system components (libraries/classes/devices/etc) cannot be GPL as they would propagate GPL to complete system as well as GPL is not compatible with MPL from which APL is based
* system components can be LGPL v2 or a permissive license (MIT/BSD)
* system applications can be anything you like (but still I would prefer APL or permissive so the code can be reused if needed)
'''Contrib:'''
* no rules - contrib does not impact AROS system since nothing in AROS system depends on contrib.
About stealing code: The chances of this happening is exactly the same whether we are APL or GPL. If any closed-source option wanted to do it, there is no one that can validate otherwise. MorphOS has used some AROS codes, but contributed changes back.
The rationale behind APL is that while it guarantees that the original developer will get the improvements back (to a certain degree - file based), the person who uses the codes does not have to open his original codes. BSD does not guarantee that the original developer gets improvements. GPL requires the person using the codes to open his codes as well.
The copyright holders needs to stay - we just need information from them that the codes are available under APL (for example a checked-in file like in case of Poseidon). We don't do transfer of copyrights.
; Ultimately what can and cannot be done is up to the author(s) - not the licence.
===AROS source code tree===
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-trunk.txt
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
Found this interesting (non-GPL) licensing 'anomaly' - to keep in mind for distributors.
Programs that lose their license if sold ("non-profit only" licensed):
contrib/aminet/comm/term/TinyTerminal
contrib/aminet/dev/basic/bwBASIC
contrib/aminet/text/edit/xdme
contrib/fish/aroach
contrib/fish/lotto
contrib/fish/shuffle
contrib/fish/touch
+ cdvdfs.
Here is a list of all the GPL/GPLv2/GPLv3 licenses fossology found, what have explicit licenses in their comments.
excluded LGPL, BSD/GPL dual licensed and programs (such as Prefs/Edit and BHFormat)
<pre>
AROS/rom/dbus/include/ AFL_v2.1 ,GPL_v2+ (supposedly AFL < 3 is GPL incompatible)
AROS/workbench/classes/zune/betterstring/include/ GPL_v2+
AROS/workbench/classes/zune/texteditor/include/ GPL_v2+
AROS/workbench/classes/datatypes/gemimage/ GPL_v2+ GPL
AROS/workbench/classes/datatypes/degas/ GPL_v2+
AROS/workbench/libs/openurl/README: GPL
AROS/workbench/network/smbfs/documentation/ GPL_v2
AROS/workbench/network/smbfs/source_code/ GPL_v2+
AROS/workbench/network/stacks/AROSTCP/bsdsocket/kern/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/mmakefile.src conf.h GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/sys/ CMU ,GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/net/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/api/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/conf/conf.h: GPL_v2
AROS/workbench/network/stacks/AROSTCP/netinclude/net/radix.h: CMU ,GPL_v2
AROS/workbench/devs/AHI/AHI/ GPL_v2+
AROS/workbench/devs/AHI/AddAudioModes/ GPL_v2+ AROS/workbench/devs/AHI/AddAudioModes/COPYING: GPL
AROS/workbench/devs/AHI/Docs/texinfo.tex: GPL_v2+
AROS/workbench/devs/AHI/COPYING: GPL
AROS/workbench/devs/AHI/Drivers/EMU10kx/ GPL_v2+
AROS/workbench/devs/AHI/AHI-Handler/ GPL_v2+
AROS/workbench/devs/networks/rtl8029/ GPL GPL_v2+
AROS/workbench/devs/networks/pcnet32/ GPL GPL_v2+
AROS/workbench/devs/networks/ppp/LEGAL: GPL
AROS/workbench/devs/networks/atheros5000/ GPL_v2+
AROS/workbench/devs/networks/rhine/ GPL_v2+
AROS/workbench/devs/networks/nForce/ GPL_v2+ GPL
AROS/workbench/devs/networks/prism2/ GPL GPL_v2+
AROS/workbench/devs/networks/fec/LEGAL: GPL
AROS/workbench/devs/networks/rtl8139/ GPL GPL_v2+
AROS/workbench/devs/networks/etherlink3/ GPL GPL_v2+
AROS/workbench/devs/networks/intelpro100/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8169/ GPL GPL_v2+
AROS/workbench/devs/networks/emac/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8168/ GPL GPL_v2+
AROS/workbench/devs/networks/realtek8180/ GPL_v2+
AROS/workbench/devs/networks/via-rhine/via-rhine.c: GPL_v2+
AROS/workbench/devs/networks/via-rhine/ GPL GPL_v2+
AROS/workbench/devs/networks/e1000/ GPL_v2
AROS/workbench/devs/networks/sis900/ GPL GPL_v2+
</pre>
AHI: it has special provisions (COPYING.DRIVERS). The library is LGPL, preferences software is GPL and drivers can be anything without breaking GPL/LGPL.
Network stack: well, we are long overdue for a new, IPv6 enabled network stack anyway, anyone interested? ;) Seriously though it seems like the glue code is GPL and as all the drivers. However some of the drivers are our own code, so they could be relicensed to LGPL.
Same filter as the AROS trunk list. These should all be libraries or plugins - no programs.
<pre>
contrib/regina/utsname.h: GPL_v2+
contrib/mui/classes/nlist/include/default-align.h: GPL_v2+
contrib/mui/classes/nlist/include/amiga-align.h: GPL_v2+
contrib/mui/classes/BWins/include/MUI/BWin_mcc.h: GPL
contrib/mui/classes/BWins/include/BWin_private_mcc.h: GPL
contrib/mui/classes/BWins/COPYING: GPL_v2
contrib/mui/classes/BWins/MCC_BWins.readme: GPL_v2
contrib/mui/classes/thebar/include/default-align.h: GPL_v2+
contrib/mui/classes/thebar/include/amiga-align.h: GPL_v2+
contrib/gfx/libs/wazp3d/LEGAL: GPL
contrib/gfx/libs/wazp3d/Wazp3D.readme: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.c: GPL
contrib/libs/mpega/ GPL_v2+
</pre>
http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
===Types===
On AROS following rules apply:
<pre>
1. BYTE/UBYTE is 8bit, WORD/UWORD is 16bit, LONG/ULONG is 32bit, QUAD/UQUAD is 64bit, the types are comparable with stdint types (int8_t, int16_t, int32_t, int64_t)
2. IPTR/SIPTR are integer types large enough to fit pointer, that is sizeof(IPTR) = sizeof(APTR) = 4 on 32bit system, and = 8 on 64bit system
3. ti_Data in TagList is large enough to hold a IPTR/APTR type.
4. never store a pointer in integer of type LONG. It may work (if the pointer has upper 32bits clear), but does not have to. Compiler should warn you about that.
5. If you are unsure about point 4, allocate your memory with MEMF_31BIT flag set. But don't expect that AROS internals will do the same.
</pre>
point 4 is actually important.
* UBYTE/BYTE for 8bit
* UWORD/WORD for 16bit
* ULONG/LONG for 32bit
* UQUAD/QUAD for 64bit
<pre>
UBYTE Unsigned 8 bit integer variable (byte).
BYTE Signed 8 bit integer variable (byte).
UWORD Unsigned 16 bit integer variable (word).
WORD Signed 16 bit integer variable (word).
ULONG Unsigned 32 bit integer variable (longword).
LONG Signed 32 bit integer variable (longword).
FLOAT 32 bit IEEE floating point variable.
UQUAD Unsigned 64 bit integer variable.
QUAD Signed 64 bit integer variable.
DOUBLE 64bit IEEE floating point variable.
BOOL Boolean variable, TRUE and FALSE are also defined in exec/types.h.
VOID Void.
APTR A generic pointer for multiple purposes - Arrays.
STRPTR A pointer to a null-terminated string.
IPTR Really important in AROS, the only way to declare a field that can contain both: an integer or a pointer.
</pre>
if you want to write really portable app, you may be interested in standard datatypes defined in C99: int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, intptr_t, uintptr_t. They are all defined in inttypes.h include file.
In exec/types.h the following short-cuts are typedef'd. They are used often in AROS, so you should nearly always include exec/types.h and soon only they will be removed from sys/_types.h include, all types are now defined in include files named aros/types/xxx.h.
(Preparation for C library split; sys/xxx.h include will only be available there when compiling with POSIX C library)
Compiler specific types, like int and long might change their size. In case of AROS, similar to linux, int remains 32 bit whereas long grows to 64 bits in size.
If you use Amiga-like data types, i.e. BYTE/UBYTE, WORD/UWORD, LONG/ULONG and QUAD/UQUAD or the C99 standard types (uint8_t and so on, see stdint.h include) then you should have less issues to solve than by using types without size guarantee.
Of course, all pointers grow to 64 bytes using 64bit cpu. Most of the code can be just recompiled and will work. In rare cases, where e.g. pointers are casted to integers, a special care must be taken. Especially in the cases, where pointer is casted to LONG/ULONG (this code will break on 64 bit AROS) e.g. '#define IPTR ULONG'.
With compiler delint patches which the majority of them are simple casting issues to make the compiler happy. Notice some of the changes involve introducing double casts. In very recent versions of GCC. Yes, the bulk of the double casts are for converting 32 bit addresses (ie from a 32 bit PCI DMA address register) to a 64 bit pointer. First cast is to IPTR (to expand to 64 bits, and prevent sign extension if the address is above 0x7FFFFFFF), and then to APTR.
ULONG != IPTR except on 32bit .. so if you need to store pointers make sure and use IPTR and not ULONG (which some old code does). For this reason things like Taglist elements are 64bit (since the tag data can be a pointer).
If your passing items on the stack you should use the STACKED attribute to make sure they are correctly aligned (on 64bit all items on the stack are 64bit..)
There is more issues like using "== 0L" causes problems.
===Endian===
*BE
*LE
Use the macros from <endian.h> instead making a guess based upon architecture defines
<pre>
#if _BYTE_ORDER == _BIG_ENDIAN
#elif _BYTE_ORDER == _LITTLE_ENDIAN
#else
+
#error <whatever.h> - Byte order for this architecture is unsupported!
</pre>
===SVN and GIT===
If you want to help develop AROS OS itself, you can
* view current GIT/SVN entries [http://aros.sourceforge.net/ Aros Org website] or [https://github.com/aros-development-team/AROS Github], [https://github.com/ezrec older ezrec mirror], [https://github.com/michalsc/AROS/ older mirror], [https://trac.aros.org/trac/timeline TRAC], [],
* awaiting update [http://repo.or.cz/w/AROS.git git repo], [http://www.ohloh.net/p/aros/commits ohloh] or [https://svn.aros.org/svn/aros/trunk/ svn repo] and access [Git version git://repo.or.cz/AROS.git here],
* deprecated [https://www.gitorious.org/aros/aros/commit/a7fda9e ARIX commits] or [https://gitorious.org/aros/aros GIT old]
If you have SVN access (early 2015 introduced a new SVN server, create a new account at trac aros org) and/or have obtained the source [http://aros.sourceforge.net/download.php AROS site] - you can compile the current build tools/environment using:
> make development
and follow this [http://aros.sourceforge.net/documentation/developers/compiling.php#building procedure] or [https://github.com/apiraino/aros_guide Guide]
https://trac.aros.org/trac#Developing
If you plan on contributing back changes, please post information about such changes first on this [http://mail.aros.org/mailman/listinfo/aros-dev/ mailing list] for more experience developers can validate whether they are correct.
Then there are the nightly build machines. They svn update before the build and run configure as one of the next steps. autoconf might be added to the nightly build scripts.
Our build relies on packages downloaded from Internet (SDL for example) - it always worked this way. The minimal requirement (when just building core AROS) is binutils and gcc. If you build contrib as well, you need many more packages to be downloaded.
https://gitorious.org/aros/aros/commits/crosstools-II
git://gitorious.org/aros/aros.git
Branch crosstools-II there is only one commit on top of ABI_V1
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-x86_64
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-x86_64
</pre>
and
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-i386
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-i386
</pre>
build OK.
:''More information: [[Aros/Developer/Maintainer|AROS Maintainer Docs]]''
===SDI Calls===
Integrate the 'SDI'-headers to allow easier porting to all amiga-like platforms.
<pre>
PUTCHARPROTO( PutTheChar, char c, struct SPrintfStream *s )
{
// REAL CODE
}
</pre>
have "SDI_compiler.h" and "SDI_hook.h" included
its more organized like
#include SDI/SDI_hook.h
than
#include SDI_hook.h
option 1 --- i also use when back porting from amiga's..
<pre>
#ifdef __AROS__
#include SDI/SDI_hook.h
#else
#include SDI_hook.h
#endif
</pre>
also
you can add the -i include/sdi/ location if you do not want to add or edit any files.
Defining HOOKPROTO to IPTR name(struct IClass * cl, Object * obj, Msg msg); solved the problem
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order. examine compiler/include/aros/symbolsets.h (AROS_LIBREQ)
compiling mui stuff for aros setting -std=gnu99 is necessary (i have had -std=c99 most of the time).
===Locale with Flexcat===
Most languages have a locale, but not every app is localized, the only thing needed is to translate the "catalog" files. It is a case of locating the correct catalog and saving the translated version.
For every app that lacks of your language catalog and is localized anyway, you should find (in the sources) files related to locale:
* file.cd = catalog descriptor, contains base msg, with internal language (usually english)
* language.ct = catalog translation, contains every translated msg, indexed as in the file.cd.
Compare with other localized apps... Then, "make my_app-catalogs" should create and install your translated catalogs. ex : for, saying, sys:prefs/wanderer:
on root of AROS sources, type:
"make workbench-prefs-wanderer-catalogs"
then (if you changed the .cd file):
"make workbench-prefs-wanderer"
For apps not localized, you have to adapt their code to support it, if it is possible...
noticed the original .cd file has many (//) strings at the end of any voice, so added them also to the .ct file.
That (//) is only for cd files. I'm highly recommending to use FlexCat for updating ct files, e.g. like this:
flexcat app.cd deutsch.ct newctfile deutsch.ct
You'll get error checking and new entries are marked in the resulting ct file.
When editing .ct files, only change those lines containing translation and perhaps version string, nothing else.
The rest is up to the relevant tool, flexcat. In order to update your translation, type in the following in your shell:
flexcat xyz.cd xyz.ct NEWCTFILE xyz_upd.ct COPYMSGNEW
This way you will not only make sure you have correct translation file but flexcat also pre-fills newly added strings with "*** NEW *** text. Even better tool for checking cd/ct/catalog files is catcheck, but this one is sadly only available for AmigaOS/68k...
Some languages have variations, like portugues from portugal and portugues from brasil differs...
This is the way to go. I will have a look at language files, but basically if those two languages differ you have to do two separated set of translation files, yes.
(you could create a brazilian slang language localization too)
* At system level localization for one language is a dot language file.
(ex: locale:languages/klingon.language)
* At app level localization is a dot catalog file
(ex: locale:catalogs/klingon/system/libs/dos.catalog)
* At sources level, the dot ct file, and "$language" dot cd files and some building framework.
(ex: catalogs/my_app.ct catalogs/klingon.cd catalogs/mmakefile.src support.c support.h)
Please, use Flexcat to generate CT files:
FlexCat wanderer.cd NEWCTFILE=deutsch.ct
Then fill the first 2 lines with something useful:
<pre>
## version $VER: wanderer.catalog 1.1 (9.2.2006)
## language deutsch
</pre>
You can even update the CT-File: (This adds the new strings)
FlexCat wanderer.cd deutsch.ct NEWCTFILE=deutsch.ct
To compile a catalog you only need the .cd file and your translation (.ct file):
FlexCat multiview.cd deutsch.ct CATALOG=MultiView.catalog
[http://murks-ide.svn.sourceforge.net/viewvc/murks-ide/trunk/src/Catalogs/flexcat_linux?revision=100 Linux version of FlexCat]
: [http://aros.sourceforge.net/documentation/developers/app-dev/localization.php#localization-for-non-developers More information]
A script which compares the required version (i.e. the version which an application/module etc. tries to open) with the version of the existing CT files. The result is in this table:
https://github.com/aros-translation-team/translations/wiki/Progress
The following cases are highlighted:
n/a i.e. CT misses at all
version in existing CT file is lower than the required version
It might be a bit difficult to participate if you haven't worked with Git before but alternatively you can send your CT files to our Slack channel.
When the ct file has been generated via flexcat (flexcat keyshow.cd NEWCTFILE=spanish.ct) it has the following header:
---------------------------------------------------------------------------------------------------------------
## version $VER: <name>.catalog <ver>.<rev> (04.01.2021)
## language nolanguage
## codeset 0
;
---------------------------------------------------------------------------------------------------------------
Those values <ver>.<rev> are the version and revision of the CT file for the languaje or are the values of the application being localized?
The <ver> part must match with version which the application tries to open. You can find the value either in the column "Required Version" in the table which I've linked above, our you can look in the git repository. For keyshow it would be https://github.com/aros-translation-team/keyshow. You can find in the file "catalog_version.h" the right version number.
The <rev> part starts for new CT files with 0 and should be increased every time the CT file is updated.
Updated several files and created a few more that were missing on the spanish catalog.
The catalogs are in Git repositories at https://github.com/aros-translation-team
a) You tell me your Github user name. I'll invite you. You can work directly with the Git repositories.
b) You create Github forks of the catalog repositories and create pull requests.
c) You send the CT files to mrustler gmx de
===C Utils Misc===
The AROS source uses at several places the __DATE__ macro to fill the date entry of a $VER tag. Problem is that c:version doesn't understand that date format (e.g. "May 21, 2011"). As a result the output of e.g.
> "version c:shell full" contains "(null)". Is extending the version command to understand the format of __DATE__ the right solution for that problem?
AmigaOs compilers should use __AMIGADATE__ macro or similar form, if it isn't implemented it could be emulated in makefile: -D__AMIGADATE__=\"$(shell date "+%d.%m.%Y")\"
BTW. I think DD.MM.YYYY is better format than "Month DD YYY" because "Month DD YYY" is not localized in any way.
"strnicmp" shouldn't work with NULL pointers
The Situation:
compiled a linklib using c++ object files (using the c++ cross compiler).
compiled a C stub that uses the linklib (using the c++ cross compiler).
Try to link them together (using the c++ cross compiler) with C object
files (using the normal target c compiler) that need to use -nostartup
= cant do because using the c++ files pulls in arosc (for stdio etc.) -
so wants to have the autoinit stuff present.
What can I do about this??
If it is possible to manually open it then what do I need to do exactly?
=== ENV ===
The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact. However in some cases (like this one) it is not required.
99% of the time that statement is true (not required) for pretty much every file in ENV: or do people change their default icons - and prefs settings - every boot?
There seem to be a bad habit of late with developers changing things to reflect their own personal preference when the change isn't actually necessary - It would be nice if people could refrain from doing that in the tree without at least discussing it on the dev-list first (and with good reasoning unless they committed said work in the first place..)
We're not keen on the pollution of the "S:" dir: it's meant to be for scripts. What's wrong with "ENV:"?
Only the fact that it takes up RAM. I understand that for PCs with several gigabytes of RAM this is
irrelevant. But let's remember about other machines. The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact.
However in some cases (like this one) it is not required.
How about implementing in the style of HappyENV then? RAM-disk handler that falls through to reading from ENVARC: if there is no such file stored in it already. Removes RAM usage for unchanged files, removes the need to copy ENVARC to ENV in startup-sequence.
Shouldn't be too hard to make from AmberRAM, or even just extend AmberRAM to provide this service.
Is it feasable to build a special version of AmberRAM handling ENV: that will try and copy the requested file from ENVARC: if it isnt found in ENV: ?
Additionaly it could mark closed "files" as untouched - and expunge them from ENV: after a period of time to free up additional RAM:, or when the system is running low on free memory?
Silenty disappearing files may not be a good plan. Would be nice if the following would work:
ASSIGN :ENV SYS:Prefs/Env-Arc ADD
ASSIGN :ENV RAM:ENV ADD
Where new files put in ENV: end up in RAM:ENV, and opening files looks in RAM:ENV first, then SYS:Prefs/Env-Arc
Well - that's essentially what im proposing but without the assigns - or need for a RAM:ENV directory.
Adding it as a feature of AmberRAM sounds like the most memory efficient way (one handler to load in RAM) but that's only if it is possible to make it handle ENV: additionally to RAM:, and if it is even possible to add the proposed functionality (...and how to make it enable it when accessing ENV:).
===(AS)MP support===
If one has to recompile software for SMP multi core, is there any thing special one has to do to get software to run?
Use task.resource if you need to query information about what tasks are running, and clear msgports completely when they are allocated.
Most code should not need Forbid. Use Semaphores, Messages etc. to sync your own code.
Accessing system structures is a different thing. Use the proper API whenever possible.
How single structures will be protected in the future is still a moving target, at least it is not documented. And you should never use undocumented stuff
Ideas on for SMP multi-core
Another suggestion is ... Forbid/Permit function calls are meant to halt multitasking so as no other task could intervene with what ever the calling task is doing, e.g. setting semaphores. Disable/Enable calls are meant to halt interrupts and as a side effect they also halt task switching.
One option is to make it compulsory to protect shared resources with semaphores and forbid the use of simple Forbid() calls as to protect something. Setting semaphore should be done if possible with atomic instructions (check and alter in one instruction). Or make the second concurrent ObtainSemaphore call halt the second calling task and force if possible a task switch which ever gives better results.
Semaphores could store the owning tasks task pointer instead of boolean to make things easier.
As long as the CPU initiates the DMA transfers through the OS, and the OS ensures that the transferred memory is within the region accessible to the user initiating the transfer, everything is fine. The CPU is the conductor, and the CPU by that has the control of which DMA transfer is initiated and which is not.
All you need to do is to write device drivers reasonable. Hint: CachePreDMA and CachePostDMA exist.
All the Os has to do is to verify that the memory regions to be transferred are valid, and prohibit direct access to the DMA control registers from user space. None of these algorithms imply huge costs.
The current OS design doesn't really allow virtual memory in first place, Forbid() is again the problem.
[http://www.tbs-software.com/guide/index.php?guide=autodocs.doc%2Fmemory.doc&node=1 memory.library API] seem to low level. IMHO the programs should not know how the swapping is implemented. I would just go for one new memory flag
MEMF_SWAPPABLE that indicates that a certain memory region or a whole memory pool won't be accessed during Forbid()/Permit() etc. It only solves part of the problem, it only implements virtual memory and not memory protection. For the latter you need to be able make certain memory inaccessible by other programs, some memory read-only for one task and read-write for other tasks, etc. And I think this should be done in the same Address Space in order to avoid you constantly need to swap between different address spaces.
So to summarize, if there are programs using this API we may provide a wrapper layer to get them working but I am not convinced this API should be the reference API with whom to provide VM to AROS programs.
=== Variadic ===
variadic functions (i.e. functions with an arbitrary amount of arguments).
<pre>
#include <stdarg.h>
[...]
char * STDARGS GetKeyWord(int value, char *def, ...)
{
[...]
va_list va;
[...]
va_start(va, def);
[...]
va_end (args);
</pre>
Please keep with using stdarg rather than having va casted to a LONG * type and varargs handled manually. Doing so, prevents tons of casting, where a simple va_arg can be used. So, string = *((char **) args) instead of string=va_arg(va, char *).
<pre>
#include <stdio.h>
#include <stdarg.h>
int printf (const char * format, ...)
{
int retval;
va_list args;
va_start (args, format);
retval = vfprintf (stdout, format, args);
va_end (args);
fflush (stdout);
return retval;
} /* printf */
</pre>
Couldn't find varargs.h or stdarg.h. and have no use for AROS_SLOWSTACKHOOKS or AROS_SLOWSTACKTAGS.
GCC looks for stdarg.h in a different place:
/bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/include/stdarg.h
Here is a path for a "normal" header:
bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/../../../../i386-aros/sys-include/aros/system.h
The use of vararg.h isn't supported by newer gcc versions. If you want your code to run on architectures that pass part of variadic arguments in a number of registers you need to use AROS_SLOWSTACK macros. Otherwise your program will not work on powerpc and x86_64 ports.
Of course the SLOWSTACK stuff is not needed in a function that can use va_list, va_start, va_arg and va_end. It's only needed if you want to write functions like DoMethod or similar.
#include <stdarg.h>
should be enough no matter if you do cross or native compiling. If it does not work, something is wrong and should be corrected.
Stdarg.h is here, Development:lib/gcc/i386-aros/4.2.2/include/
...which is part of the compiler's default include paths. In other words, #include <stdarg.h> works out of the box, indeed. (sorry, I should have just tried it before invoking "search" or "find"...)
furthermore, myprintf() as shown above won't work, because...
printf(format, args);
...is wrong - the second argument does not match printf() prototype, it expects a argument list, but args is of type va_list (obviously) - so one has to use...
vfprintf(stdout, format, args);
...instead, just like in the original printf(), and add fflush(stdout).
additionally, one could use...
int myarg = va_arg(args, int);
...between va_start() and va_end() to access individual arguments, where each call to va_arg() returns an argument casted to the desired type (here: "int") from the list given (here: "args") and advances to the next one.
wrapping up vfprintf() and modifying the format string now is a major speedup! no more backslash-n typing! this has been haunting me for years!
On MOS and AmigaOS, the NewObject variadic function is kept in the static library. It takes most of the parameters on the stack - thanks to that the implementation of NewObject calls the NewObjectA function. Everything works perfect, and the typical MUI macros may be easily used.
This, however, is not the case when you compile for AROS. Here, NewObject is a variadic macro, not a function. Thanks such approach we do not need any custom compiler in case of systems, where the arguments of variadic functions are passed partially through registers and partially through the stack (This is the case of PPC and x86_64, this is also the reason why both OS4 and MOS require specially patched compilers).
Since NewObject is a macro, the gcc's preprocessor expects the list of macros arguments enclosed within parentheses. In MUI macros it is not the case. Imagine the following test code:
<pre>
#define foo(a,b) ((a)+(b))
int loosy_function(int a, int b)
{
return foo(a,b);
}
</pre>
This will compile and work, but the following piece of code:
<pre>
#define foo(a,b) ((a)+(b))
#define END )
int loosy_function(int a, int b)
{
return foo(a,b END;
}
</pre>
will fail with the error: unterminated argument list invoking macro "foo"
There are two ways of fixing your issue. Either create your new objects outside this huge MUI constructions, and in there use just a pointer, or get rid of the "End" macro and exchange it with "TAG_DONE)".
Badly written software is, for example, casting va_list to an APTR or even doing so as if va_list were a plain table of function arguments. Such code needs to be fixed because it has very few chances to work anywhere but on author's machine ;)
The problem is nOt that they assume sizeof(APTR) == 4, its that they often do not use APTR, and use ULONG to store pointers exclusively. If the code used APTR/IPTR as it should - most of the "problems" wouldn't exist.
It would also help if people would start using variadic arguments properly. Many coders do assumptions which shall never be made. Instead, they should consider using stdarg.h file and all the va_* functions :)
===ABI===
In the head of our SVN repository there are now only 3 directories:
<pre>
admin/
branches/
trunk/
</pre>
We have added two extra dirs there: tags and imports
As discussed when we branch ABI V0 and [[Aros/Developer/ABIv1|ABI V1]] it would also be good to introduce tags. Normally this is done in a directory in the repository called tags. Currently we don't have this directory there. (We do have branches/tags that is a hack I have done because one doesn't have write access in the top directory. I think this directory is not clean and should be removed).
The second directory I would introduce is an imports directory for implementing vendor branches as discussed in the svn [http://svnbook.red-bean.com/en/1.5/svn.advanced.vendorbr.html book]. Currently we use code from several different projects and that code is stored inside the AROS tree; we seem to have problems with keeping this code up to date and merge our changes upstream. Maintainers of up stream projects like the MUI classes etc. have complained about this (to put it lightly).
Introducing these vendor branches would make it easier to see what changes we have made and make patches to be sent upstream and make it easier to import newer upstream versions of their code. Although can't "copy" the vendor branch into the main branch because it's already there, so start with a "merge".
Yes, the first step to make the code already in the repository compatible with the vendor branches will be the most difficult. The best way to do it the following way:
* first import the version on which the current AROS code is based into the vendor branch
* then import the new version over it in the vendor branch
* finally merge the difference between these two version in the AROS code present in the repository.
For example, place NList directly under vendor and not in a subdirectory like "contrib/zune/classes".
Actually after we have a stable [http://aros.sourceforge.net/documentation/developers/specifications/drafts/abiv1.php ABIv1 (2012 or later)]. We need to move away as much as possible from the contrib directory to some other repositories. The reasons are ...
* The AROS repository should be for the core AROS code.
* other contrib projects should be tried to be compiled for all Amiga-like OSes.
* The release scheme for AROS and the other programs should not have to be aligned.
* Binary versions should be provided on aros-archives and on aminet and/or OS4Depot to install them. (Some clever programs should maybe be provided to make the life of distribution developers easier).
* avoid parallel forks of programs for AROS and the other amiga OSes.
If there is really a need for a place for hosting AROS projects we may investigate setting up such a server but then including bug tracking, governance, maillist, etc. for each project separately. I personally think there are already enough places like sourceforge, google code, savannah, etc. where people can go for hosting such projects.
==Links==
* http://amigadocs.hokstad.com
* http://amigadocs.hokstad.com/doku.php?id=dev-links
* http://www.liquido2.com/tutorial/index.html
* Amiga(TM) OS4 has a [http://www.ast-workshops.co.uk/os4pg/ workshop] page and hope to produce a [http://amigaworld.net/modules/newbb/viewtopic.php?topic_id=31117&forum=42#549091 book] soon. [http://www.solie.ca/articles/map/map.html Brief Guide].
In the future...?
*AROS 64bit - SMP, Vulkan with OpenGL compability layer
*AROS 32bit - keep for historic reasons
What would you like to see implemented in AROS?
ABIv1 completed, SMP (x86_64), SendMsg()/GetMsg() to support memory protection between target and destination, in that order. Michal Schulz and Jason McMullan have been toying with the question "What are the minimal changes needed to the AmigaOS 3.1 API to support SMP"? The answer so far seems to be "few, but subtle". For example, SysBase->ThisTask is no longer meaningful on SMP, but FindTask(NULL) is. Disable() and Forbid() are shockingly bad on performance, but adding a spinlock semaphore mode to SignalSemaphore will help new code on SMP.
Leveraging a 'common' OS with a lot of machine support (Linux, MacOS, Windows, QNX, etc.) is something that AROS has been doing for quite a long time, and it is the biggest strength of AROS. This AROS experience and programming model, in the same way the Google's Android layers on top of Linux, or MacOS X layers on top of the Darwin/BSD kernel, as a first step
* The graphics + layers subsystem could be implemented as a shim on top of a OpenGL ES implementation (ie on any modern Linux system, or the RaspberryPI's hardware, MacOS X, etc).
- This also allows every window to be on its own 3D surface with backing store, allowing Wanderer (or a Commodity)
rearrange/zoom/animate app windows without having to send a pile or refreshes to them
* Use OpenAL as the sound backend
* AROSTCP would be a thin layer over the native OS's TCP/IP stack
* dos.library, poseidon.library, and input.device would be slim shims over the native APIs
* If we move to loading all libraries' into the application's task space, instead of a single global instance of the library, this will allow SMP and MMU more easily.
- Yes, it will require a lot of work in the libraries to make this transition
- Yes, I do think it will be worth it in the end.
* A 'fat binary' install format (or, maybe LLVM bytecode) that can be 'flattend' to the target architecture on installation.
So, what would this 'AROS of the future' look like?
* AmigaOS 3.x style API, with certain 'fundamental changes' to message passing
* Uses the underlying OS' device drivers, so more AROS developer effort can go to user-visible features and bugfixes
* Allows AROS applications to run side-by-side with the OS's native apps
And why would anyone want to program on such a system?
* AROS applications would run on any system that has the AROS Framework installed
* AROS applications are pixel-for-pixel the same on all platforms.
* Develop with the knowledge that you are guaranteed OpenGL and OpenAL, and the rest of the AROS Framework
an option for mmake to dump its dependency of metatarget in a graphviz[*] input file. This should make it possible to visualize the dependencies and hopefully be inspiration for cleaning up some mess, circular or unneeded dependencies and so on.
AmigaOS gcc 9 [https://franke.ms/amiga/gcc.wiki Old versions] able to create binaries for AmigaOS and [https://eab.abime.net/showthread.php?t=93813 Upgrading gcc versions]
==References==
{{reflist}}
{{status|50%}}
{{BookCat}}
2mfwpl6fh3lig36gv25cjs3ixycxcq7
4656382
4656379
2026-08-05T09:40:38Z
Jeff1138
301139
4656382
wikitext
text/x-wiki
{{ArosNav}}
==A technical overview of AROS==
Google translation [http://translate.google.com/translate?hl=en&sl=auto&tl=de&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs German], [http://translate.google.com/translate?hl=en&sl=auto&tl=fr&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs French], [http://translate.google.com/translate?hl=en&sl=auto&tl=it&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Italian], [http://translate.google.com/translate?hl=en&sl=auto&tl=es&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Spanish], [http://translate.google.com/translate?hl=en&sl=auto&tl=hi&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Hindi], [http://translate.google.com/translate?hl=en&sl=auto&tl=zh-CN&u=http%3A%2F%2Fen.wikibooks.org%2Fwiki%2FAros%2FDeveloper%2FDocs Chinese],
[http://translate.google.com/translate?hl=en&sl=auto&tl=ru&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Russian],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pl&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Polish],
[http://translate.google.com/translate?hl=en&sl=auto&tl=pt&u=http%3A%2F%2Fen.wikibooks.org%2Fw%2Findex.php%3Ftitle%3DAros%2FDeveloper%2FDocs Portuguese]
{{Uncited}}
AROS,<ref>[http://aros.sourceforge.net/download.php References and sources]</ref> like AmigaOS (TM), is a [[w:Message passing|message-passing]], [[w:Preemption (computing)|preemptive]] [[w:Multitasking|multitasking]] [[w:Operating system|OS]].
It uses [[w:Reentrant (subroutine)|re-entrant]] shared libraries to save memory space.
AROS is based around an executive library kernel (Exec) and two other libraries:
* Exec (the "kernel", which is not a kernel in the modern sense),
* Intuition (graphics and GUI, integrated into the system) and
* AmigaDOS (Disk Operating System, the Metacomco's Tripos modified to work with Exec).
The design philosophies of AmigaDOS and Intuition are rather different, the former adopting a C-like API and the latter creating an [http://www.basden.demon.co.uk/amiga/amiga.oo.html object-oriented], message passing aware environment for the programmer. The system base is the only absolute address in AmigaOS (located at 0x00000004) this does differ with AROS as AROS SysBase is automatically provided (no $4) but everything else is dynamically loaded. The OS is well known for delivering high performance due to its close connections with the hardware, while simultaneously having the flexibility to support re-targetable graphics (Cybergraphics) and retargetable audio subsystems (AHI).
: Diagram showing relationships of libraries to system needed
Remember, AROS is a [http://en.wikibooks.org/wiki/Aros/Developer/ABIv1 research] operating system, and while all contributions to the base AROS code are welcome, please contact the dev list first for any core changes. Writing applications for AROS does not have this requirement.
While AROS appears and feels almost feature complete, it is still [[Aros/Developer/IncompleteAPIs|missing a small number of functions]] from the Amiga API - as well as a few implementations of [[Aros/MissingFunctionaility|core functionality]]. There are also a number of user applications that, while not strictly part of the AmigaOS 3.1 environment, need to be written.
[https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1201 This thread provides] information for setup, [http://www.aros.org/documentation/developers/index.php documentation] and whether you are interested in core OS changes and/or writing/porting software apps
*you compile directly under AROS, which can be running on either real hardware, virtual hardware
*in hosted mode under linux/window, cross-compile from that host OS (save your files as ISO-8859-15 encoding instead of UTF-8)
The repository for the [https://github.com/aros-development-team/AROS current development version ABIv1], the [https://github.com/deadw00d/AROS/tree/alt-abiv0 repository for current stable PC version ABIv0 with backported ABIv1 features is located which is used on AROS One and Icaros x86 based distros]
Any [https://github.com/aros-development-team/AROS/issues bugs / issues can be added]
We have a [https://arosdevteam.slack.com/archives/CUFV48U3H slack here], discord on [https://discord.gg/UKp9qdEBuQ Discord@AmigaDev],
==Software Development for AROS==
===Programming languages===
Apart from 'The Developer Environment', which primarily supports C/C++ code, there are other programming languages available for AROS:
'''Scripting'''
:[[Aros/User/DOS|DOS]], included in all
:[[Aros/Developer/Docs/LUA|LUA]], included in all or [http://www.airsoftsoftwair.de/en/prod_hollywood.html Hollywood]
:REXX [[Aros/Developer/Docs/Rexx|Regina (AROS' ARexx)]], included in all
:Python [ Info], included in Icaros
:Ruby [http://www.ruby-lang.org/en Info]/[http://archives.aros-exec.org/index.php?function=browse&cat=development/language download]
'''Basic'''
:[http://amos.pspuae.com/AmosProManual/contents/c1.html '''Amos Pro'''] [http://amos.pspuae.com/index.php?action=forum#1 compatible] [http://www.amigacoding.com/index.php/Main_Page commands] (all incomplete)
::[http://sourceforge.net/projects/xamos/ X-Amos]
::[http://sdlbasic.sourceforge.net/ SDLBasic] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://alvyn.sourceforge.net/ Alvyn] ([http://www.dusabledanslherbe.eu/AROSPage/MISC.14.html download])
::[[Aros/Developer/Basic/Basic4SDL|Basic4SDL]] ([http://archives.aros-exec.org/index.php?function=browse&cat=development/language download])
::[http://www.ultimateamiga.co.uk/index.php?topic=9425.0 Project Deimos],
:'''Blitz Basic''' [http://aros-exec.org/modules/newbb/viewtopic.php?post_id=46537#forumpost46537 none on AROS]
:: [http://www.amiforce.de/main.php Amiblitz] on JanusUAE amiga(TM) emulator
:'''Amiga Basic'''
:: [ ACEBasic]
'''Misc'''
:[[Aros/Developer/Docs/E|AmigaE Portable E]]
:[https://ae.arosworld.org/index.php?board=11.0 FreePascal FPC Aros-Exec thread], [http://archives.aros-exec.org/index.php?function=browse&cat=development/language Download], FreePascal for AROS has its own [http://fpcaroswiki.alb42.de/ Wikibook],
:[[Aros/Developer/Docs/LLVM|LLVM]],
===Where to get the C/C++ Environment===
If you want to develop for AROS, its generally easier to be running linux hosted AROS development environment especially for C++, cross compiling the code. That's how most developers now are doing it. g++ is used to compile owb web browser as well as some other AROS software. If you were hoping for a rich set of C++ libraries or classes defined for the OS feature set, you might be disappointed.
AROS Native compiling is possible, but you're much more likely to run into the odd bug(s) in the dev environment since it gets little testing and fixing by other developers.
Is there a sftp software or scp over ssh available?
Maybe. At least the security part would be handled by [https://github.com/jens-maus/amissl amissl] [https://archives.arosworld.org/index.php?function=browse&cat=network/misc port]. DOpus5 has recently added sftp support. See here for a [https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1974&highlight=ssh&pid=12073#post_12073 ssh scp client]
[https://arosdevteam.slack.com/join/shared_invite/enQtOTc4Mzg0NDIzNzQ0LWQ2NWZmNmMwNGIwNGEyNTgxNzU3MGFjMTk3ZThmOTQ1MTVjMzhmNTllYWQ0ZTUxMjBjMGE0Y2VjMDJmNTc5MzI#/shared-invite/email Slack Dev Forum]
====Cross compilers from Windows or Linux====
*Windows WSL2 walkthrough can be [https://arosnews.github.io/how-to-cross-compile-aros-hosted-wsl/ found here]
you want to build AROS. No problem.
Here are instructions for 64-bit:
https://github.com/deadw00d/AROS/blob/master/INSTALL.md
Here are instructions for 32-bit:
https://github.com/deadw00d/AROS/blob/alt-abiv0/INSTALL.md
And as always has been the case you can use the contrib archive to 'obtain' the development directory which contains the /native/ AROS gcc compiler and tools. That compiler is used to build AROS itself but can be used outside the AROS build process by providing --sysroot with indicated directory to cross compile for AROS.
=====Older guides for Linux hosted compiler=====
Please install these packages before moving to next step. Below is a reference list for Debian-based distributions. Reference build system was Ubuntu 18.04/20.04 amd64.
subversion git-core gcc g++ make gawk bison flex bzip2 netpbm autoconf automake libx11-dev libxext-dev libc6-dev liblzo2-dev libxxf86vm-dev libpng-dev gcc-multilib libsdl1.2-dev byacc python-mako libxcursor-dev cmake zsh mingw64
Do all of these operations under home directory of your user or another directory where your user has write permissions.
Specifically, in a section "Linux-i386", be sure first to build the cross-compiler (toolchain-alt-abiv0-i386) and only then AROS itself (alt-abiv0-linux-i386).
Clone & build
<pre>
$ mkdir myrepo
$ cd myrepo
$ git clone https://github.com/deadw00d/AROS.git AROS
$ cd AROS
$ git checkout alt-abiv0
$ cd ..
$ cp ./AROS/scripts/rebuild.sh .
$ ./rebuild.sh
</pre>
Now to the build selection below - Linux-i386
Select toolchain-alt-abiv0-i386 - Select alt-abiv0-linux-i386 (DEBUG)
Start AROS by:
<pre>
$ cd alt-abiv0-linux-i386/bin/linux-i386/AROS
$ ./Arch/linux/AROSBootstrap
</pre>
Pc-i386 Select toolchain-alt-abiv0-i386 (if not built yet) - Select alt-abiv0-pc-i386
ISO image available in alt-abiv0-pc-i386/distfiles
Now that we have linux-hosted build, we can resume native (option 2).
Run ./rebuild.sh and selection option 2. Wait until it finished, then:
<pre>
$ cd alt-abiv0-pc-i386
$ make
</pre>
Now
<pre>
$ make bootiso
</pre>
Now, your compiler is located in toolchain-alt-abiv0-i386 directory and named i386-aros-gcc. Includes are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/include and libraries are in alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development.lib.
This is how then can be passed to the compiler:
/home/xxx/toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot /home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development -L/home/xxx/alt-abiv0-linux-i386-d/bin/linux-i386/AROS/Development/lib
../toolchain-alt-abiv0-i386/i386-aros-gcc --sysroot bin/linux-i386/AROS/Development local/helloworld/helloworld.c -o local/helloworld/helloworld
Another method was using Debian like distros and download the gimmearos.sh script (on [http://archives.aros-exec.org/index.php?function=browse&cat=development/cross aros-archives]) to setup the developer environment by downloading necessary packages ...
The gimmearos script is a good start in that direction, building the cross compilers and hosted AROS environment, but gimmearos.sh might be out of date or not be completely compatible with any given linux distro.
In order to do that, you have to compile AROS yourself. Download AROS source archive not contrib. Compile AROS by entering the main directory
./configure
make
([http://aros.sourceforge.net/documentation/developers/compiling.php More on compiling AROS]). The result will be a basic AROS system without development tools.
To compile C++ on Linux, type 'make gnu-contrib-crosstools', creating the cross-compilers in ./bin/linux-i386/tools/, named i386-aros-gcc, etc.
'''Note''': Currently, to make the cross compilers usable copy 'collect-aros' from tools/ to tools/i386-aros/bin/. At the moment the cross compilers if used from the Linux command line will only find it when it's there.
If you want to compile native compilers (the Developer Environment), type 'make contrib-gnu-gcc', creating native compilers in AROS' System:Development/bin directory.
When the output needs to be stripped <code>--strip-unneeded --remove-section .comment</code>
The Obj-C backend should build out of the box.
Open contrib/gnu/gcc/mmakefile.src and search for the line which contains "--enable-languages" and add "objc" to the list of languages that follows it.
--enable-languages=c,c++,objc
Better make it—enable-languages=c,c++,objc,obj-c++
ObjC++ is broken as soon as you try to use exceptions, but that might change in future GCC versions and it does not hurt having it there already.
Do you need a cross-compiler or a real compiler? In the first case you can get away with just downloading the proper gcc archive, apply the patch and proceed with the normal gcc build. In the case of a real cross-compiler then when downloading the contrib sources, also need to download the normal sources, place the contrib sources into a directory called contrib, need to install autoconf+automake+perl+python, call ./configure, cd into the subdirectory and type make.
to rebuild GCC with host == build == target == i386-pc-aros. So just get the vanilla sources and apply the patches without bothering about the build system?
[https://vmwaros.blogspot.com/2019/10/a-pre-configured-development-machine.html pre-configured VM environment vmware virtual machine to develop AROS and AROS software]
'''64 bit'''
'''32 bit'''
A good option for multiple OS is [https://axrt.org/index.php?tab=download-aros AxRuntime lets developers compile their Amiga API-based applications as Linux binaries being able to utilize modern development tools available on Linux, like IDEs, debuggers, profilers, etc]
====Native compilers for AROS====
Namely gcc for C or g++ for C++ are supplied with the [[Aros/Developer/Docs#The Developer Environment|Developer Environment]], which is already '''setup''' and part of any current AROS distribution like AROS One or the nightlies
* Current GCC 6.5 (32bit) though moving to 10.5 and 15.1 (64bit)
* Older software components. GNU GCC 4.x GNU BinUtils, GNU Fileutils 4.x, GNU Textutils and others.
On single partition systems and the Boot ISO, the AROS Developer environment is installed under "SYS:Development/". Systems with multiple partitions - such as a Work: partition - tend to install it to there instead, however it can be installed manually to any location. Please remember, if moving, that you will need to correct the Development packages 'install location' env variable to point to the new locations root - look in SYS:S/startup-sequence.
<pre>
Assign Development: SYS:Development
Assign C: Development:bin ADD
</pre>
In the aros build instructions. you need to check out contrib and/or ports into your AROS source directory, as subdirs. then, assuming you are building in an external build dir, as you should, you simply configure and "make contrib" for instance or whatever submodule you might want to build.
===Beginners Tutorials in C C++===
As AROS is [http://eab.abime.net/showthread.php?t=29856 C based] API compatible to AmigaOS 3.x, so most of the information on programming C on the Amiga applies to AROS as well. Please note that there is a lot of AmigaOS 1.3 (1985-1989) and [https://www.markround.com/amigaguide AmigaOS AOS 2.x (1990-1992)] information around but OS3.1 is recommended but limited in amount.
Brief overview of what is required to write AROS Applications
# Using [[Aros/Developer/Docs/Libraries/Intuition|Intuition]] for basic screens/windows
# Using graphics within windows via 8bit [[Aros/Developer/Docs/Libraries/Graphics|graphics]] and so onto 15-16-24bit [[Aros/Developer/Docs/Libraries/CGFX|cybergraphx]]
# Load and save work to [[Aros/Developer/Docs/Libraries/DOS|dos]] disk drives
# Using the [[Aros/Developer/Zune|ZUNE GUI Environment]]
Writing native games require this extra information
# Using [[Aros/Developer/AHIDrivers|AHI audio hardware independent API]]
# Using USB joystick/joypad with the Poseidon USB stack through [[Aros/Developer/Docs/Libraries/LowLevel|LowLevel]] library
Additional features that could be added later
# Adding additional [[Aros/Developer/Docs/Libraries/Locale|Locale]] language translations to your program
# Adding a [[Aros/Developer/Docs/Rexx|AREXX/Regina]] port to your application
# Executing Amiga(TM) [[Aros/User/DOS|DOS]] commands from your application
# Using [[Aros/Developer/Docs/Libraries/Icon|icons]] (.info files) and icon tooltypes (stack, version, and program startup options)
# Local couch or IP based SANA2 networking co-op multi player gaming support
Most AmigaOS programming books are nowadays very much out of date as most are from the late 1980s and do not cover later amigaOS releases like 3.1 for example, Rob Peck's book "Programmer's Guide to the Amiga". The Amiga ROM Kernel manuals aka RKMs like Libraries (3rd edition), Devices (), the AmigaDOS manual (3rd edition) and the Style Guide may have their uses. There are some reference examples from AmigaMail and Devcon notes (available again on an Amiga developers CD 2.1).
For Arexx then "The Amiga Programmer's Guide to ARexx" by Eric Giguere, which was published by Commodore is useful as well as an "Arexx Cookbook".
Curly brackets missing - try SHIFT + ALT + 7 or 0.
* Beginners C Guide [http://www.iu.hio.no/~mark/CTutorial/CTutorial.html C Tutorial],
* [http://thecguru.com/ C for beginners],
* [http://fresh2refresh.com/c/c-basic-program/ C programming basics] for students,
* [https://www.edx.org/courses Free Online course] from American Universities
* Reference Amiga [http://amigadev.elowar.com/ API reference].
* AROS based c source can be found [[Aros/Developer/Docs/Examples|here]] and lots of example code can be found inside [https://github.com/aros-development-team AROS sources] themselves and from the contrib section of the archives from [https://github.com/aros-development-team/contrib Aros site], and study the AROS applications source code, e.g. the test programs from the Tests drawer (folder/directory). Take a look at the code of some smaller AROS programs might be a better and more up to date guide. Some old Os3 [http://www.blackfiveservices.co.uk/amiga-c/ here]
When you upload your builds, please write the architecture (like i386-aros, x86_64-aros, etc.) in the archive name
and it is also advisable to write in the field "Requirements" what ABI (ABIv11, ABIv0 or ABIv1)
===Compiling C/C++ Code===
Native, although we have a IDE Integrated Development Environment (Murks), it does lack a debugger. Whilst others use a combination of a text editor and shell to edit code. Most though use an AROS hosted on Linux to take advantage of the better GCC tools like GDB and various IDEs.
Open shell - its a menu option at the top left of Wanderer (desktop). Or by using the right Win key and w (or F12 and w) within the directory with the source code. Type in
sh
to change the amiga shell into a unix shell. You can then type in ls (unix equivalent to amiga dir). Take a look [http://en.wikibooks.org/wiki/Linux_commands here] for more commands.
For a single file program-name.c or program-name.cpp
gcc -o program-name program-name.c
or
g++ -o program-name program-name.cpp
or
g++ -o test -Wall -g main.cc texturelib.cpp xmodelib.cc -lsdl -lgl
To close the shell, click on the top left-hand corner to close (twice). Once to get back the aros shell and then again to close finally. Use [http://freshmeat.net/projects/cksfv/ cksfv] as a test.
Some source code requires the addition of Amiga API libraries, like dos, which you can flag at the compile time as
gcc -o julia.exe julia.c -ldos
For DOS use -ldos as example and if you are compiling mui codes it will be -lmui or intuition -lintuition. Other missing symbols are due to linker libraries being necessary for linking in functions that aren't in the standard C libraries. For example some source code would need added
-lz or -lm or -lpng or -larosc etc.
use this in unix line command mode to search for 'search-item' in many .c files (*.cpp for c++, etc.)
grep -l 'search-item' *.c
If the program is not executable, try using parameter fno-common
"Delete #?.o"? Or if you are using abcshell then "rm *.o"
:''More information: [[Aros/Developer/Porting software]]''
=== How to make Apps have AROS 64-bit specific support code ===
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
AROS64 already uses 64bit addressing, it just doesn't setup the MMU for more than 4GB physical memory currently.
When porting software to AROS64 it is "mostly" a case of converting ULONG's that are used to store pointers, into IPTR's instead, etc. Another quirk, is making sure items on the stack are the correct size by using the STACKED attribute for them.
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
compiling mui stuff for aros setting -std=gnu99 is necessary, had -std=c99 usually
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order.
crash which suggest memory corruption. From my experience porting from 32-bit to 64-bit these kinds of errors can happen if a pointer is passed somewhere via ULONG variable. Then half of the pointer is cut.
To generate this error, please run AROSBootstrap with -m 1024. This will allocate heap to 64-bit address space which will make these errors immediatelly visible. These types of crashes are hard to debug. Disabled as little code as possible to stop corruption from occurring and then try to read from the code where it can be broken
Crashing in tslf_freevec is another symptom of memory corruption and these memory corruptions will manifest differently on different setups.
==Coding conventions==
As the AROS core source is a shared developer experience, there are rules regarding structure and style. When it comes to your creating your own app and coding, the structure and style should be your own, i.e. you should enjoy what you do and do it so that you can understand what is going on.
===Layout===
<syntaxhighlight lang="c">
static void 1st_function()
{
program
exit(0);
}
int main(void)
{
1st_function();
2nd_function();
3rd_function();
return 0;
}
</syntaxhighlight>
<syntaxhighlight lang="c">
struct Screen * openscreen(void);
struct Window *openwindow(struct Screen *screen, const char *title, LONG x, LONG y, LONG w, LONG h);
VOID 1st_function();
VOID 2nd_function();
int main(int argc, char **argv)
{
program
return 0;
} /* main */
VOID 1st_function()
{
}
VOID 2nd_function()
{
}
</syntaxhighlight>
===General style===
This code is used by many people and therefore you should keep some things in mind when you submit source code:
* Keep things simple
* Keep the source clean
* Always know what you are doing, if not flag it and describe what needs to be done...
* Explain clearly/simply what you are doing
* Remember that you write code once but that it is read many times by many people
===Comments===
AROS uses some of the comments in the source to generate the documentation. Therefore it's necessary to keep a certain format so the tools can find their information. Other comments are ignored but they should explain what you thought when you wrote the code. If you really can't think of an explanation, then don't write the code a second time like this:
<pre>
/* This adds 1 to t */
t ++;
</pre>
What we think of is this:
<pre>
/* Go on with next element */
t ++;
</pre>
===Formatting===
This is only '''IMPORTANT''' if you are going to work on the core AROS code or contrib but not applications which may reside outside like on AROS Archives or other websites.
<syntaxhighlight lang="c">
{
/* a */
struct RastPort * rp;
int a;
/* b */
rp = NULL;
a = 1;
/* c */
if (a == 1)
printf ("Init worked\n");
/* d */
if
(
!(rp = Get_a_pointer_to_the_RastPort
(
some
, long
, arguments
)
)
||
a <= 0
)
{
printf ("Something failed\n");
return FAIL;
}
/* e */
a = printf ("My RastPort is %p, a=%d\n"
, rp
, a
);
return OK;
}
</syntaxhighlight>
Looks ugly, eh ? :-) Ok, here are the rules:
<pre>
If several lines contain similar code, put similar things below each other (see a and b);
Put spaces between operands and operators
Put braces {}, brackets [] and parentheses () below each other (d) if there is much code between.
Brackets and parentheses may be in one line if the code between is small (c)
Indent by 4 Spaces. Two indent levels may be abbreviated by one tab.
</pre>
'''Before committing please normalize the indentation - if you have a mixture of tabs and spaced - please always use spaces, 1 tab = 4 spaces.'''
The reasons for this are:
# While some editors can use an arbitrary sizes for tabs, it's a bit complicated to tell another editor which tab size was used by the one used to write the code.
# Most code in AROS was written this way and your code should look like the rest.
# You can print this code on any printer without special tools to "fix" the tabs.
# Most editors have smart tabs which do exactly this. If your editor doesn't, write a bug report.
If you have a function with many arguments (d, e) you should put the parentheses in lines of their own and each argument in one line (d) or put the first argument behind the opening parentheses (e) and each following argument in a line of its own with the comma in front. The closing parentheses is in a line of its own and aligned with the beginning of the expression (i.e. the a and not the opening parentheses or the printf()).
Use a single blank line to separate logical blocks. Large comments should have a blank line before and after them, small comments should be put before the code they explain with only one blank line before them.
If you see any TABS in AROS core sources then the suggestion is to "detab the file and commit that separately" either before or afterwards from making functionality changes. Make two commits instead of one. This makes it easier for others to see the real changes instead of having to dig through multiple lines of irrelevant diffs.
===Eliminating Global Variables===
i.e. pass variables to functions (local scope) or classes making it easier to track and debug your code.
Any time you find that you need a particular thing in 'a lot of different places', chances are that all those places are conceptually related, and so you can create a class, a namespace, a function, or some other higher-level organizational unit to represent that relationship. This makes the program easier to understand.
Bad Designs
* All variables are global.
* There are no standalone functions, only sub-procedures which act on the global variables.
* Every sub-procedure is at least 500 lines to several thousand
* Every sub-procedure has more than one task to perform
* Copy-paste is preferred to writing methods, AND subtle changes are made in the middle of the code
Good Designs
* structure program into functions (C or basic) - top-down procedural approach
* put in class(es) (freepascal or C++) - the object is fixed and you use methods to access the object
<pre>
class String_List
{
private:
list<string> m_List; // member
public:
void read_strings() { /* read strings into m_List */ }
void print_strings() { /* write contents of m_List to stdout */ }
void sort_strings() { /* sort contents of m_List */ }
void sort_strings_reverse() { /* reverse-sort contents of m_List */ }
void unique_strings() { /* remove duplicate strings */ }
};
int main()
{
String_List myList; // local
myList.read_strings();
myList.sort_strings();
myList.print_strings();
myList.sort_strings_reverse();
myList.print_strings();
myList.unique_strings();
myList.print_strings();
return 0;
}
</pre>
This way it is very easy to replace the list with new list for debugging purposes, or replacing the methods without replacing the list, when you want different results. You only have to replace the content of the local variables.
So create the structure that matches your data (linked lists, trees, arrays, etc.) and what to do with them (sorting, searching, etc.)
<pre>
.h usually contain #define #include typedef enum struct extern screen and window definitions (data structures)
.c should contains functions and algorithms
</pre>
One way to look at it is that menu headings act as the .c file and sub-menu headings as functions.
When you start a project, you place a couple of declarations in the include file. As the project continues, you place more and more declarations in the include file, some of which refer to or contain previous declarations. Before you know it, you have a real mess on your hands. The majority of your source files have knowledge of the data structures and directly reference elements from the structures.
Making changes in an environment where many data structures directly refer to other data structures becomes, at best, a headache. Consider what happens when you change a data structure.
Use good variables names to help clarify code and only comment when you need to explain why a certain programming approach was made.
You're Refactoring Legacy Code, you see a global, you want to get rid of it. How do you do this?
Exactly what to do depends on how the global is used. The first step is to find all uses of the global throughout the code, and get a feel for what the significance of the variable is and how it relates to the rest of the program. Pay particular attention to the "lifetime" of the variable (when it gets initialized, when it is first used, when it is last used, how it gets cleaned up). Then, you will probably make the global a data member of a class (for OO languages), or you will write some get/set functions. Converting to the Singleton Pattern is common, but you may discover that it makes more sense for the data element to be a member of an existing singleton, or maybe even an instance variable.
# Create a basic read method, either as a class or a global function. Replace all reads with the access method, but leave the variable defined as a global.
# Review each of the writes to the method and extract action functions one at a time. Unless two operations are coded identically in the original code, extract each write access separately.
# Change the variable scope from global to local.
# Analyze similar action functions to determine if any can be merged, i.e., there are no functional differences in the results of the function, just differences in the implementation details.
# Review the calls to the read method and see if a more complex functionality should be applied. Follow the approach for writes and unless implementations are identical, create separate access functions.
# Analyze the access functions for duplication.
As returning variables by "passing by value" are forgotten, so "passing by reference" is often used instead. The reference is a pointer to the variable so the value is remembered when returned.
Alternatives
* Hidden Globals
* Singleton Pattern
* Database or TupleSpace
* Context Object
* Dependency Injection
* Stateful Procedures
==AROS/AmigaOS APIs and Docs==
<pre>
Library:
- Private data structure
- Many public access methods
Device:
- Private data structure
- Two (BeginIO/AbortIO) access methods
Resource:
- Public data structure
- *NO* access methods
</pre>
And, being Amiga OS-compatible, there are exceptions to all of these.
===System Libraries===
The [http://aros.sourceforge.net/documentation/developers/app-dev/index.php AROS Guide To Libraries] can be used as a guide to individual commands and Old Dev Docs are used in application programming.
The generated [http://aros.sourceforge.net/documentation/developers/autodocs/ Aros AutoDocs HTML Read] or download [http://aros.sourceforge.net/download.php docs-html.bz2 from here].
Amiga/Aros styles libraries are very different from windows and linux libs. Typical .so/dll libraries are foreign to most Amiga-like OS
*[[Aros/Developer/Docs/Libraries/AROSC|arosc.library]]
*[[Aros/Developer/Docs/Libraries/AmigaGuide|amigaguide.library]]
*[[Aros/Developer/Docs/Libraries/ASL|asl.library]]
*[[Aros/Developer/Docs/Libraries/Bullet|bullet.library]]
*[[Aros/Developer/Docs/Libraries/BSDsocket|bsdsocket.library]]
*[[Aros/Developer/Docs/Libraries/CAMD|camd.library]]
*[[Aros/Developer/Docs/Libraries/Codesets|codesets.library]]
*[[Aros/Developer/Docs/Libraries/CGFX|cybergraphics.library]]
*[[Aros/Developer/Docs/Libraries/CGXVIDEO|cgxvideo.library]]
*[[Aros/Developer/Docs/Libraries/Commodities|commodities.library]]
*[[Aros/Developer/Docs/Libraries/DataTypes|datatypes.library]]
*[[Aros/Developer/Docs/Libraries/DiskFont|diskfont.library]]
*[[Aros/Developer/Docs/Libraries/DOS|dos.library]]
*[[Aros/Developer/Docs/Libraries/Exec|exec.library]]
*[[Aros/Developer/Docs/Libraries/Expansion|expansion.library]]
*[[Aros/Developer/Docs/Libraries/FreeType2|freetype.library]]
*[[Aros/Developer/Docs/Libraries/GadTools|gadtools.library]]
*[[Aros/Developer/Docs/Libraries/Graphics|graphics.library]]
*[[Aros/Developer/Docs/Libraries/Icon|icon.library]]
*[[Aros/Developer/Docs/Libraries/Identify|identify.library]]
*[[Aros/Developer/Docs/Libraries/IFFParse|iffparse.library]]
*[[Aros/Developer/Docs/Libraries/Intuition|intuition.library]]
*[[Aros/Developer/Docs/Libraries/Keymap|keymap.library]]
*[[Aros/Developer/Docs/Libraries/Layers|layers.library]]
*[[Aros/Developer/Docs/Libraries/Locale|locale.library]]
*[[Aros/Developer/Docs/Libraries/LowLevel|lowlevel.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingBas|mathieeesingbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubBas|mathieeedoubbas.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEESingTrans|mathieeesingtrans.library]]
*[[Aros/Developer/Docs/Libraries/MathIEEEDoubTrans|mathieeedoubtrans.library]]
*[[Aros/Developer/Docs/Libraries/Mathtrans|mathtrans.library]]
*[[Aros/Developer/Docs/Libraries/MUIMaster|muimaster.library]]
*[[Aros/Developer/Docs/Libraries/Partition|partition.library]]
*[[Aros/Developer/Docs/Libraries/PopUpMenu|popupmenu.library]]
*[[Aros/Developer/Docs/Libraries/OOP|oop.library]]
*[[Aros/Developer/Docs/Libraries/Regina|regina.library]]
*[[Aros/Developer/Docs/Libraries/Reqtools|reqtools.library]]
*[[Aros/Developer/Docs/Libraries/RexxSysLib|rexxsyslib.library]]
*[[Aros/Developer/Docs/Libraries/ScreenNotify|screennotify.library]]
*[[Aros/Developer/Docs/Libraries/TTEngine|ttengine.library]]
*[[Aros/Developer/Docs/Libraries/Thread|thread.library]]
*[[Aros/Developer/Docs/Libraries/Utility|utility.library]]
*[[Aros/Developer/Docs/Libraries/Xadmaster|xadmaster.library]]
*[[Aros/Developer/Docs/Libraries/Workbench|workbench.library]]
*[https://github.com/aros-development-team/AROS/commit/c82e86b8480277998014cc327b56c7664023a52f ClassAct Reaction boopsi class]
===AROS Subsystems===
# [[Aros/Developer/Zune|Zune MUI compatible GUI]]
# [[Aros/Developer/AROSAppPackages|AROS Application Packages]]
# AHI Audio Drivers - [[Aros/Developer/AHIDrivers|Usage]]/[[Aros/Developer/AHIDriversDev|Development]]
# AROSTCP Sana2 Network Interface Drivers - [[Aros/Developer/NICDrivers|Usage]]/[[Aros/Developer/NICDriversDev|Development]]
# [[Aros/Developer/AmiSSL|AmiSSL]]
# gfx.hidd/cybergraphics Video Drivers - [[Aros/Developer/GfxDrivers|Usage]]/[[Aros/Developer/GfxDriversDev|Development]]
# IO Device Drivers - [[Aros/Developer/IODeviceDrivers|Usage]]/[[Aros/Developer/IODeviceDriversDev|Development]]
# USB Device Drivers - [[Aros/Developer/USBDrivers|Usage]]/[[Aros/Developer/USBDriversDev|Development]]
# PCI Device Drivers - [[Aros/Developer/PCIDrivers|Usage]]/[[Aros/Developer/PCIDriversDev|Development]]
# [http://www.libsdl.org/ SDL] [https://github.com/search?q=repo%3Aaros-development-team%2Fcontrib%20SDL2&type=code SDL2 commits], [https://github.com/aros-development-team/contrib/commit/c62c3c425c35bac19dadc23be092b0b13a66c76c SDL3 initial commit], []
# [[w:Gallium3D|Gallium 3D]] [http://www.mesa3d.org/ openGL aka Mesa] - [[Aros/Developer/OpenGL|Usage]]/[[Aros/Developer/OpenGLDev|Development]] [http://www.swiftless.com/opengltuts.html Swfitless]
# A small subset of GTK2 through [http://sourceforge.net/projects/gtk-mui/ MUI-GTK]
# Cairo 2D Engine - [[Aros/Developer/Cairo|Usage]]/[[Aros/Developer/Cairo|Development]]
# [[Aros/Developer/Scalos|Scalos desktop API and plugin modules]]
# [[Aros/Developer/VHI|VHI video driver]]
====HIDDs====
*[[Aros/Developer/Docs/HIDD/HIDDClass|hiddclass.hidd]]
*[[Aros/Developer/Docs/HIDD/Graphics|graphics.hidd]]
*[[Aros/Developer/Docs/HIDD/VesaGfx|vesagfx.hidd]]
*[[Aros/Developer/Docs/HIDD/ATI|radeon.hidd]]
*[[Aros/Developer/Docs/HIDD/NVidia|nvidia.hidd]]
*[[Aros/Developer/Docs/HIDD/Nouveau|nouveau.hidd]]
*[[Aros/Developer/Docs/HIDD/Kbd|kbd.hidd]]
*[[Aros/Developer/Docs/HIDD/Mouse|mouse.hidd]]
*[[Aros/Developer/Docs/HIDD/i2c|i2c.hidd]]
*[[Aros/Developer/Docs/HIDD/IRQ|irq.hidd (deprecated)]]
*[[Aros/Developer/Docs/HIDD/PCI|pci.hidd]]
*[[Aros/Developer/Docs/HIDD/PCIPC|pcipc.hidd]]
*[[Aros/Developer/Docs/HIDD/Serial|serial.hidd]]
*[[Aros/Developer/Docs/HIDD/Thunderbolt|thunderbolt.hidd]]
https://github.com/aros-development-team/AROS/commit/4f02ea691799aff3a01f60cfa5f9182c82fc57a8
HIDD are used for device/peripheral low level hardware support drivers. The HIDD system is split up into a collection of classes with a strict inheritance hierarchy. A HIDD class implements a device driver for a single device or in rare cases a group of devices and provides an interface for other programs and devices to access.
In order to maintain portability of interfaces across a wide range of hardware this interface will in general not present the raw interface to the underlying hardware. Instead it will present a generic interface that describes many different hardware implementations. This allows for the best reuse of both interfaces and code.
HIDD API is heavyweight though. You need to open a HIDD library, open oop.library, instantiate an object (even if there's no object); and object calls are more costly compared to plain library calls.
Basically your task is to implement a subclass of hidd.ata.bus for your hardware. just implementing the XXXATA__Hidd_ATABus__xxxxxx methods for the Amiga chipset - and appropriate versions of the interface_xxx.c file(s). pretty much everything in probe.c could be ignored - just write a replacement scan for relevant amiga devices and store whatever info you need in the bus data? only the "SUPPORT_LEGACY" blocks might be related.
You do not need to depend on PCI API. PCI is just a way to discover the hardware on PCs, etc.
<hidd/pci.h> includes (at some depth) <interface/HW.h>, which defines IID_HW. This comes from the 'generic' HIDD class in:
rom/hidds/hidd/hiddclass.conf
did not split up HIDD and HW because they are always used in pair. It's the same as hidd/pci.h bringing definition for: PCI, PCIDriver and PCIDevice. PCI is actually PCIHW, just the name was not changed for backwards compatibility reasons. HW is a 'hub' where HIDD instances plug in.
ATA HIDD aoHidd_ATABus_Use32Bit value is completely ignored unless ata.device first detects correct command line parameter.
Yes. Unfortunately I was unable to find any comment in code or svn history with explanations. Looked at Linux source, there 32-bit PIO is also controller driver's property. Some of them enable it, some don't.
Actually, switching the default to ON should be safe. ata.device is fail-safe at this because during IDENTIFY command it validates upper 16 bits, and if they appear to be zeroes in all 128 longwords, then 32-bit mode is switched off. But, nevertheless, I know how tricky hardware can be, so I decided not to change original behavior. If you think it's wrong in some cases, then it's possible to add one more attribute like aHidd_ATABus_Default32Bit. If set to YES, then this means that 32-bit PIO is safe to use by default.
====Devices====
*[[Aros/Developer/Docs/Devices/ATA|ata.device]]
*[[Aros/Developer/Docs/Devices/Console|console.device]]
*[[Aros/Developer/Docs/Devices/Narrator|narrator.device]]
*[[Aros/Developer/Docs/Devices/Printer|printer.device]]
*[[Aros/Developer/Docs/Devices/Trackdisk|trackdisk.device]]
*[[Aros/Developer/Docs/Devices/AmberRAM|amberram.device]]
*[[Aros/Developer/Docs/Devices/Timer|timer.device]]
*[[Aros/Developer/Docs/Devices/|.device]]
The Amiga used [[Aros/Developer/Docs/Devices|Devices]] to communicate with [http://aros-exec.org/modules/newbb/viewtopic.php?start=0&topic_id=3475&viewmode=flat&order=ASC additional hardware]. AROS has replaced these hardware devices with hidd equivalents but some are still retained for backwards compatibility.
Local libraries/devices/handlers,etc. are supposed to override the ones in ROM if their version is higher than the one in ROM.
Here is the list of commands exec default:
{| class="wikitable"
| CMD_CLEAR
| Purge the buffer of the device
|----
| CMD_READ
| Playback Control
|----
| CMD_STOP
| Stopped the activity of the device
|----
| CMD_FLUSH
| Empty the queue of commands
|----
| CMD_RESET
| Reset a device
|----
| CMD_WRITE
| Playback Control
|----
| CMD_INVALID
| Create an error
|----
| CMD_UPDATE
| Gets updated device
|----
| CMD_START
| Will restart the device
|----
|}
While most other "stuff you communicate with" in AmigaOS are devices <ref>AMIGA ROM Kernel Reference Manual: Devices, 3rd Edition. Commodore-Amiga, Inc. Addison-Wesley, 1991. {{ISBN|0-201-56775-X}}</ref> that share a [http://gega.homelinux.net/AmigaDevDocs/ common base interface]. [[Aros/Developer/Docs/Devices1.3|OS 1.3 Device Drivers]].
====Handlers====
:[[Aros/Developer/Docs/Handlers/Pipe|pipe.handler]]
:[[Aros/Developer/Docs/Handlers/Port|port.handler]]
:[[Aros/Developer/Docs/Handlers/SFS|sfs.handler]]
:[[Aros/Developer/Docs/Handlers/FAT|fat.handler]]
:[[Aros/Developer/Docs/Handlers/PFS|pfs.handler]]
:[[Aros/Developer/Docs/Handlers/NTFS|fuse.handler]]
:[[Aros/Developer/Docs/Handlers/FFS|ffs.handler]]
filesystem handlers have their own separate system consisting of completely differently structured messages that dos.library use to pass requests (for things like reading, writing, getting directory contents etc.) to them. AROS originally went with implementing filesystem handlers as devices, which might arguably be more consistent with the rest of the AmigaOS API but which is quite incompatible with AmigaOS itself. However, it made it far harder to port filesystems and the gains were comparatively small, and so there's been a long standing goal of fixing this incompatibility. It has now, June 2011, been reintroduced to all AROS flavors.
are argstr and argsize valid for the handler startup environment?
DOS/RunHandler() calls DOS/CreateNewProcTags(), and then CallEntry() (in rom/dos/exit.c) to start the handler, so yes, argstr and argsize are *present* in the call signature of the handler.
Granted, argstr will be NULL and argsize 0, but those values *are* passed to the handler function using:
<pre>
AROS_UFC3(ULONG, entry,
AROS_UFCA(STRPTR, argptr, A0),
AROS_UFCA(ULONG, argsize, D0),
AROS_UFCA(struct ExecBase *, SysBase, A6));
</pre>
Creating your own [without the whole build tree http://pagesperso-orange.fr/franck.charlet/temp/radeon.zip] and then
<pre>
make stub
make
make install
</pre>
SFS has two Root blocks, one at the start and one at the end of the disk. The Root blocks both contain the same information. They hold various information about the disk structure and have the locations of some important blocks used by the filesystem.
The Root ObjectContainer contains the Root directory Object. The name of this Object is the name of the volume. It is identical to a normal directory Object.
The Bitmap is used to keep track of free space. Each bit in a bitmap represents a single block. A set bit indicates a free block and a cleared bit a used block.
AdminSpaceContainers are used to keep track of space which has been reserved for storing administration blocks. Only the Bitmap, the Root blocks and the actual data stored in files aren't stored in administration space. Administration space is allocated in chunks of 32 blocks at a time. A single AdminSpaceContainer can hold information about a large number of such areas each of which has its own little bitmap of 32 bits.
Extents are stored in a B-Tree. The Root block holds a pointer to the root of the Extent B-Tree. Extents keep track of space in use by a specific file. Each fragment a file consists of has its own Extent. Extents are in a double linked list. The list can be used to locate the next or previous fragment of a file.
Below is the standard block header. This header is found before EVERY type of block used in the filesystem, except data blocks. The id field is used to check if the block is of the correct type when it is being referred to using a BLCK pointer. The checksum field is the SUM of all LONGs in a block plus one, and then negated. When applying a checksum the checksum field itself should be set to zero. The checking a checksum the checksum is okay if the result of the checksum equals zero. The ownblock BLCK pointer points to the block itself. This field is an extra safety check to ensure we are using a valid block.
Field Type Description
id ULONG The id field is used to identify the type of block we are dealing with. It is used to make sure that when referencing a block we got a block of the correct type. The id consist of 4 bytes and each blocktype has its own unique foure letter code.
checksum ULONG This field contains the sum of all longs in this block, plus one and then negated. The checksum can be used to check if the block hasn't been corrupted in any way.
ownblock BLCK Points to itself, or in other words, this field contains the block number of this block. This is yet another way to check whether or not a block is valid.
<pre>
struct fsBlockHeader {
ULONG id;
ULONG checksum;
BLCK ownblock;
};
</pre>
The algorithm to calculate the checksum of a block:
<pre>
ULONG calcchecksum(struct fsBlockHeader *block, LONG blocksize} {
ULONG *data=(ULONG *)block;
ULONG checksum=1;
block->checksum=0;
while(blocksize>0) {
checksum+=*data++;
blocksize-=4;
}
return(-checksum);
}
</pre>
A Root block contains very important information about the structure of a SFS disk. It has information on the location and size of the disk, the blocksize used, locations of various important blocks, version information and some filesystem specific settings.
A SFS disk has two Root blocks; one located at the start of the partition and one at the end. On startup the filesystem will check both Roots to see if it is a valid SFS disk. If either one is missing SFS can still continue (although at the moment it won't).
A Root block could be missing on purpose. For example, if you extend the partition at the end (adding a few MB's) then SFS can detect this with the information stored in the Root block located at the beginning (since only the end-offset has changed). Same goes for the other way around, as long as you don't change start and end point at the same time.
When a Root block is missing because the partition has been made a bit larger, then SFS will in the future be able to resize itself without re-formatting the disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
version UWORD The version of the filesystem block structure. You can check this field to identify what version of the filesystem your dealing with it and to see if you can handle this structure correctly. Don't try to interpret the disk's structure when this field contains an unknown version number!
sequencenumber UWORD Used to identify which Root block was written last in case the sequencenumber on both Root blocks don't match.
datecreated ULONG Creation date of this volume. This is the date when the disk was last formatted and will never be changed.
bits UBYTE Various settings, see below.
<pre>
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
reserved1 ULONG[2] Reserved, leave zero.
firstbyteh ULONG High 32-bits of a 64-bit number. This is the first byte of our partition relative to the start of the disk.
firstbyte ULONG Low 32-bits of a 64-bit number.
lastbyteh ULONG High 32-bits of a 64-bit number. This is the last byte (exclusive) of our partition relative to the start of the disk.
lastbyte ULONG Low 32-bits of a 64-bit number.
totalblocks ULONG The total number of blocks this partition consists of.
blocksize ULONG The size of a block of this partition.
reserved2 ULONG[2] Reserved, leave zero.
reserved3 ULONG[8] Reserved, leave zero.
bitmapbase BLCK Block number of the start of the Bitmap.
adminspacecontainer BLCK Block number of the first AdminSpaceContainer.
rootobjectcontainer BLCK Block number of the ObjectContainer which contains the root of the disk (this is where the volume name is stored).
extentbnoderoot BLCK Block number of the root of the Extent B-Tree.
reserved4 ULONG[4] Reserved, leave zero.
</pre>
<pre>
struct fsRootBlock {
struct fsBlockHeader bheader;
UWORD version;
UWORD sequencenumber;
ULONG datecreated;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
ULONG reserved1[2];
ULONG firstbyteh;
ULONG firstbyte;
ULONG lastbyteh;
ULONG lastbyte;
BLCK totalblocks;
ULONG blocksize;
ULONG reserved2[2];
ULONG reserved3[8];
BLCK bitmapbase;
BLCK adminspacecontainer;
BLCK rootobjectcontainer;
BLCK extentbnoderoot;
ULONG reserved4[4];
};
</pre>
AdminSpaceContainers are used to store the location and bitmap of each administration space. The AdminSpaceContainers are located in a double linked list and they contain an array of fsAdminSpace structures. There is one fsAdminSpace structure for every administration space on disk.
Field Type Description
bheader struct fsBlockHeader Standard block header.
next BLCK The next AdminSpaceContainer, or zero if it is the last in the chain.
previous BLCK The previous AdminSpaceContainer, or zero if it is the first AdminSpaceContainer.
bits UBYTE The number of bits in each in the bits ULONG in the fsAdminSpace structure.
pad1 UBYTE Reserved, leave zero.
pad2 UWORD Reserved, leave zero.
adminspace struct fsAdminSpace An array of fsAdminSpace structures. The size of the array is determined by the current blocksize.
<pre>
struct fsAdminSpaceContainer {
struct fsBlockHeader bheader;
BLCK next;
BLCK previous;
UBYTE bits;
UBYTE pad1;
UWORD pad2;
struct fsAdminSpace adminspace[0];
};
</pre>
Field Type Description
space BLCK The first block of an administration space.
bits ULONG A small bitmap which is used to determine which blocks in an administration space are already in use. The number of bits in this bitmap is determined by the bits field in the AdminSpaceContainer.
<pre>
struct fsAdminSpace {
BLCK space;
ULONG bits;
};
</pre>
The fsBitmap structure is used for Bitmap blocks. A bitmap block is used to keep track of which space is in use and which isn't for a particular area of a disk. All bitmap blocks together keep track of the free space for an entire disk. The location of the first bitmap block is known and all other bitmap blocks are stored in order after the first one.
Field Type Description
bheader struct fsBlockHeader Standard block header.
bitmap ULONG An array of ULONG's. These hold the actual information on which blocks are in use and which aren't.
<pre>
struct fsBitmap {
struct fsBlockHeader bheader;
ULONG bitmap[0];
};
</pre>
Each bit in a bitmap block (except for the block header) represents a single block. If the bit is set than the block is free, and if the bit is clear then it is full. The first ULONG in the bitmap area of the first bitmap block represents blocks 0 through 31 on the disk. Bit 31 of this ULONG is block 0, 30 is block 1, and so on. Bit 0 of the first ULONG represents block 31.
Below is a table to clarify how bitmaps work even further. The first column is the bitmap block number, the second column is the number of the ULONG in the bitmap array. The third column is the bit number in this ULONG, and the last column is the block which this specific bit, in this specific bitmap block represents.
We'll assume here that a bitmap block has room for 120 ULONG's (meaning there is room for storing 32 * 120 bits).
<pre>
Bitmap block ULONG number Bit number Block represented
1 (first) 0 31 0
1 0 30 1
... ... ... ...
1 0 1 30
1 0 0 31
1 1 31 32
... ... ... ...
1 2 31 64
1 2 30 65
... ... ... ...
1 119 0 3839
2 0 31 3840
2 0 30 3841
... ... ... ...
</pre>
The last bitmap block doesn't need to be completely used. The unused bits (which belong to blocks which do not exist) all have to be clear, to indicate that these blocks are in use.
The fsObjectContainer structure is used to hold a variable number of fsObjects structures (Objects) which have the same parent directory. Each ObjectContainer must contain at least one Object. If there is space in the ObjectContainer not used by the variable number of Objects then that space is zero filled. Objects always start at 2-byte boundaries, which means sometimes a padding byte is inserted between two Objects.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the parent Object, or 0 if this object has no parent (which is only the case for the Root directory).
next BLCK The next ObjectContainer belonging to this directory, or zero if it is the last in the chain.
previous BLCK The previous ObjectContainer belonging to this directory, or zero if it is the first ObjectContainer in this directory.
object struct fsObject A variable number of fsObject structures. The number of structures depends on the individual sizes of each fsObject structure and the blocksize. These structures are located directly after each other with at most 1 byte of padding between them to get the structures aligned on a 2 byte boundary.
<pre>
struct fsObjectContainer {
struct fsBlockHeader bheader;
NODE parent;
BLCK next;
BLCK previous;
struct fsObject object[0];
};
</pre>
fsHashTable is the structure of a HashTable block. It functions much like the hash table found in FFS user directory blocks, except that it is stored in a separate block. This block contains a number of hash-chains (about 120 for a 512 byte block). Each hash-chain is a chain of Nodes. Each Node has a pointer to an Object and a pointer to the next entry in the hash-chain. Using such a hash-chain you can locate an object quickly by only knowing its name.
Field Type Description
bheader struct fsBlockHeader Standard block header.
parent NODE The node number of the directory Object this HashTable block belongs to.
hashentry NODE An array of Nodes. Each Node represents the start of a hash-chain (singly linked). A hash-value is calculated using the name of a file or directory, and this value determines in which chain the Object is linked. If there are no entries in a hash-chain then the hashentry value is zero.
<pre>
struct fsHashTable {
struct fsBlockHeader bheader;
NODE parent;
NODE hashentry[0];
};
</pre>
To calculate the hash-value using a name of an Object as input use these routines:
<pre>
UWORD calchash(UBYTE *name) {
UWORD hash=0;
/* Calculates a hash value over the passed in string.
The end of the string can be either a NUL byte or a
slash. The hash function is the same as the one
used in FastFileSystem set to international mode. */
while(name[hash]!=0 && name[hash]!='/') {
hash++;
}
while(*name!=0 && *name!='/') {
hash=hash*13+upperchar(*name++);
}
return((UWORD)(hash % (UWORD)((blocksize-sizeof(struct fsHashTable))>>2)));
}
UBYTE upperchar(UBYTE c) {
if((c>=224 && c<=254 && c!=247) || (c>='a' && c<='z')) {
c-=32;
}
return(c);
}
</pre>
The BNodeContainer is used to store B-Trees. Currently only one B-Tree is in use by this filesystem and it is used to store the location of file data. The fsBNodeContainer structure contains two other structures. The fsBlockHeader structure and the BTreeContainer structure.
Field Type Description
bheader struct fsBlockHeader Standard block header.
btc struct BTreeContainer Contains information about the B-Tree and its nodes contained in this block.
<pre>
struct fsBNodeContainer {
struct fsBlockHeader bheader;
struct BTreeContainer btc;
};
</pre>
First try and locate the Root block. It should start with "ROOT". SFS has two of these, one at the start of the partition and one at the end. One of the fields contains the block size, which will be the size of all important SFS blocks.
The root block has the root object container, which contains information about files and directories in the root directory. The object
containers basically hold one or more smaller structures that represent files and directories. Scanning them all should give you a list of
files and directories.
The root block also has the root of the Extent B-Tree. This is a standard B-Tree structure (not a binary tree) that is used commonly in
all kinds of system, you can read about how they work on Wikipedia if needed. The B-Tree holds the information about *where* all the data is
located for your files.
To recover your files, I'd do this:
* Find one of the root blocks, if not present, then figure out the block size your disk was using, and scan every block in turn to see if it
looks like an ObjectContainer (check the fsBlockHeader's ID, check if the ownblock number is equal to the block you are currently scanning,
and check its checksum). So if you currently have block 12, and you see a block with the correct id, and ownblock = 12 and its checksum is good,
then that's probably a valid ObjectContainer.
* With all the ObjectContainers found, you can extract filenames and directory names from these, but also the number of their first data
block (in the field data) and the file size. For small files (less than blocksize) this data block will be enough to recover the data.
For larger files, you might be lucky and all the remaining blocks are found after the first one (if the file was defragmented). You can't be
sure of that though so...
* For larger files, you need to find all the BNodeContainers. You could scan these in the same way you found all the ObjectContainers (look for
blocks with the correct id, ownblock number and checksum).
* With all the BNodeContainers found, you can try looking up the first data block of a file in the B-Tree structure. This is a bit complicated
-- the B-Tree consists of non-leaf nodes (blocks that only contain pointers to other B-Tree blocks), the isLeaf flag indicates this. Or it
can be a B-Tree leaf block. The leaf blocks contain extra information per entry (see https://hjohn.home.xs4all.nl/SFS/extents.htm)
<pre>
struct fsExtentBNode {
ULONG key;
ULONG next;
ULONG prev;
UWORD blocks;
};
</pre>
The key should be a block of a file (the first of a range), that is 1 to 65535 block long (depending the "blocks" field). If the file is split
up into more parts, then "next" will contain block number of the next range of blocks. You need to look this up again in the B-Tree
structure to find out how large it is.
You can for the most part ignore the other structures (bitmap, admin containers). The fsObjects and B-tree containers is what you'll need to
recover the data.
====Resources====
<pre>
rom/storage/mmakefile.src
rom/storage/storage.conf
rom/storage/storage_device.c
rom/storage/storage_ids.c
rom/storage/storage_init.c
rom/storage/storage_intern.h
rom/storage/storage_mount.c
rom/storage/storage_unit.c
</pre>
<pre>
rom/storage/includes/device.h
rom/storage/includes/unit.h
rom/storage/includes/volume.h
rom/storage/storage_intern.h
</pre>
<pre>
</pre>
*[[Aros/Developer/Docs/Resources/ACPI|acpi.resource]]
*[[Aros/Developer/Docs/Resources/Battclock|battclock.resource]]
*[[Aros/Developer/Docs/Resources/Bootloader|bootloader.resource]]
*[[Aros/Developer/Docs/Resources/Cia|cia.resource]]
*[[Aros/Developer/Docs/Resources/Filesystem|FileSystem.resource]]
*[[Aros/Developer/Docs/Resources/Hostlib|hostlib.resource]]
*[[Aros/Developer/Docs/Resources/Kernel|kernel.resource]]
*[[Aros/Developer/Docs/Resources/Misc|misc.resource]]
*[[Aros/Developer/Docs/Resources/Processor|processor.resource]]
==Debugging Code==
Please use the [http://sourceforge.net/tracker/?group_id=43586&atid=439463 AROS Bug Tracker] if any issues are found.
GRUB Command line list
<pre>
sysdebug
usbdebug - allows to see Poseidon's log in debug output
</pre>
How do I get debugging out of InitResident ? If running i386 hosted on linux sysdebug=initresident on command line.
This way you can enable any of listed flags. sysdebug=all stands for "everything"
Have an executable (crosscompiled C++ code) which has 6 MB size on disk, but after loading it in memory, 250 MB RAM is taken. Any software that would split AROS executable into ELF part which would show actual size values?
readelf -S executable
it will show you all sections in elf file, including sizes and requested alignment.
objdump -h filename
That's will give you a quick overview of the sections and sizes. Ignore all the .debug.* sections.
Would hazard a guess that you have a large .bss section. That's pretty common in C++.
Next step:
nm—size-sort filename | grep ' [bB] '
The last few will be your biggest consumers. Would suggest -C to demangle the symbols... ;)
Suggest profiling the program (just use some printf's in the main loop for time spent in each part), it usually is quite easy to spot slow parts in games or apps.
If someone has '#define IPTR ULONG' somewhere. To see where that define is, redefine IPTR in the source code that fails, just above the line that fails, and the preprocessor will tell you where it was defined first.
===How to setup gdb with AROS/hosted===
Download AROS sources (AROS-xxxxxxxx-source.tar.bz2, where xxxxxxxx is the current date) and AROS contrib sources (AROS-xxxxxxxx-contrib-source) from
Untar-bzip2 and cd to the unpacked archive directory.
> tar -xvjf AROS-xxxxxxxx-source.tar.bz2
> cd AROS-xxxxxxxx-source
Check the link to "contrib" (contrib-source) inside directory, e.g. correct like this:
> rm contrib
> ln -s ../AROS-xxxxxxxx-contrib-source.tar.bz2 contrib
Make sure you have the correct locale setting, otherwise compilation will fail at some point. See [http://aros.sourceforge.net/documentation/developers/compiling.php#setting-the-locale-to-iso8859 here] (or link below) for more on that. You might have to enter this:
> export LANG="en_US.ISO-8859-1"
Now configure for a debug build - see "./configure --help" for more - here are two examples:
> ./configure—enable-debug=stack,modules,symbols
> ./configure—enable-debug=all
You may "make" now, or choose a separate directory for your build (e.g. for easy removal), for example if compiling for i386 architecture you could create a directory like this:
> mkdir linux-i386
> cd linux-i386
> ../AROS/configure—enable-debug=stack,symbols,modules
When done configuring you're ready to go:
> make
Building AROS takes some time - minutes on fast machines (e.g. 2.5 GHz quadcore), up to hours on slower machines.
The result will be AROS Linux hosted with gdb debugging enabled.
See aros.org documentation for more on compiling AROS, including more [http://aros.sourceforge.net/documentation/developers/compiling.php --enable-debug] options.
When finished, enter bin/linux-i386/AROS directory (replace "linux-i386" with your compilation target platform, e.g. linux-x86_64, etc.) inside the unpacked archive directory. This directory contains the required .gdbinit file for properly running AROS inside gdb.
> cd bin/linux-i386/AROS
Run AROS (here: with 128MB of memory) from gdb:
> gdb—args boot/aros-unix -m 128
or
> gdb—args boot/arosboot -m 128
(gdb) r
Watch the shell output - in case AROS complains about "LoadKeyCode2RawKeyTable: Loading "DEVS:Keymaps/X11/keycode2rawkey.table" failed!" you should also see some instructions on how to create a keymap table. (see link above "more on compiling", too.)
Quit gdb, and try default keymap table:
(gdb) q
The program is running. Quit anyway (and kill it)? (y or n) y
> cd ../../..
> make default-x11keymaptable
Re-run AROS, as described above. Try e.g. RAros (= right windows key) + W to open a shell. If this doesn't work you have to create a keymap table yourself, quit gdb again, and make a new keytable:
> make change-x11keymaptable
A window will open. Watch the window's title bar, and follow the instructions.
When done, re-run AROS. RAros + W should now open a shell.
Next, compile your program with gdb support.
When you start GDB is there a warning which says
warning: File "<whatever>/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to ...
If so start gdb with "-ix .gdbinit"
<pre>
Summary - In short:
* build AROS with debugging support (i.e. ./configure --enable-debug=all)
* build your application with debugging support (i.e. option -g)
* run AROS in the GNU debugger (you may use the GUI frontend "ddd" which simplifies usage a bit)
* start your application
* use the commands "findaddr" and "add-symbol-file" as written in the debugging manual
* if the debugger doesn't find the source code of your application use the "dir" command of the debugger.
</pre>
===How to use gdb===
In AROS open a shell, then (in host shell) use CTRL-Z to go into gdb. Use "b Exec_CreatePool" (one of the functions used early on by startup code in programs) to add a breakpoint, then "cont" and gdb will interrupt somewhere early during startup of "program". Use "bt" to show backtrace and "loadseg" for "??" entries. One of them will be for "program". After that you can use "disassemble program".
One thing you need to make sure is that .gdbinit you have in your build directory is the same as in source tree. It has been modified some time ago, but the build system does not refresh it - you need to copy it manually
To recap, please read our debugging [http://aros.sourceforge.net/documentation/developers/debugging.php manual]:
To detect segfaulting when loading, try...
./configure—enable-debug—with-optimization="-O2"
Because crash or no crash may depend on optimization. For newer compilers maybe this helps...
--with-optimization=-"-O2 -fno-strict-aliasing"
One way to make crashes less random (more easily reproducible) is to activate the munging of free memory in rom/exec/freemem.c which is normally commented out:
<pre>
Index: freemem.c
===================================================================
--- freemem.c (revision 34289)
+++ freemem.c (working copy)
@@ -154,11 +154,12 @@
* created with their TCB placed in the tc_MemEntry list. The workaround
* is to avoid munging when FreeMem() is called with task switching disabled.
*/
+
/* DOH! it doesn't work even this way. What's wrong???
- *
- * if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
- * MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
*/
+
+ if ((SysBase->TDNestCnt < 0) && (SysBase->IDNestCnt < 0))
+ MUNGE_BLOCK(memoryBlock, MEMFILL_FREE, byteSize);
}
</pre>
Mungwall can be turned on at runtime. Currently this works in all hosted versions. Just specify "mungwall" on kernel command line and it works. It can work on native too. In order to enable it you need to parse kernel command line, and if "mungwall" is present, set EXECF_MungWall bit in IntExecBase.IntFlags.
This needs to be done before the first AllocMem() for obvious reasons. And never reset back this flag! If you change it on a working system, you are doomed.
Hosted ports do the processing in rom/exec/prepareexecbase.c --enable-debug=mungwall option in configure still works but is going obsolete. A kludge in rom/exec/allocmem.c is responsible for this and it needs to be removed when the transition is done.
BTW, on i386-pc port it can be activated by "mungwall" argument on command line, you don't need to rebuild AROS.
New mungwall affects not only AllocMem()/FreeMem(), but also pools. I also tested it with AllocAbs(), seems to work correctly.
Runtime mungwall works on:
* pc-i386
* pc-x86_64
* linux-i386
* linux-x86_64
* darwin-x86
* linux-ppc
Works on all hosted ports, if the port itself is working.
* amiga-m68k
* Not on sam440-ppc and efika-chrp-ppc, even if they would be able to be built at moment. Does not work on (for now, need NVRAM support)
When starting my freshly rebuilt i386-linux-aros which was compiled with full debugging support I get sometimes the error "Program exited with code 0377". Add the following to your .gdbinit:
set follow-fork-mode child
Here are some of the custom AROS gdb functions (defined in ".gdbinit" file) to resolve "in ?? ()" entries in backtrace:
<pre>
#0 0xb7ffd424 in __kernel_vsyscall ()
#1 0xb7e2a657 in sigsuspend () from /lib/libc.so.6
#2 0xb7c63900 in ?? ()
#3 0xb7c640e3 in ?? ()
#4 0xb7c641e0 in ?? ()
</pre>
You can use
loadseg 0xb7c63900
loadframe 2
or
loadbt
and some others. Use "help " for a little help text. If the commands do not work try "loadkick" first.
Use "thistask", "taskready", "taskwait" to get list of AROS tasks. "bttask " shows backtrace of a task which is in ready or in wait queue and "loadseg" to resolve "??" entries in it's backtrace ("loadframe" would not work as it assume current running task).
===Native debugging tools for AROS===
to enable debugging at boot time entering the GRUB menu editing line (E key) and adding "debug=memory" to your boot line, then press Ctrl+X to complete booting.
SYS:Tools/Debug/'''Bifteck'''
Open a shell and enter the line below to run Biftek and grab the debug messages collected in RAM into a text file.
tools/debug/bifteck > ram:debug.txt
and certainly does not open a window. It is a shell tool and only dumps data located from the debug location.
It is therefore important to 'catch' that debug data as soon as possible (before it gets overridden). You should invoke bifteck at the first opportunity before doing anything else. You can use the TO option to store bifteck output to a file or you can pipe it manually to a file.
SYS:Tools/Debug/'''Sashimi''' - displays error messages
One suggestion is to do a bug() debugging. Each time bug() is executed it will be output on sashimi.
You include <aros/debug.h> and place bug("something\n"); in your source code at location though which control passes.
To get the output - open an aros shell
SYS:Tools/Debug/sashimi > RAM:out.txt
'''Ctrl C''' to end the output to the RAM Disk.
# open shell, and type
# ram: (to switch to ram drive)
# System:Tools/Debug/Sashimi > mylogfile.txt
# open AHI prefs using wanderer (or use another opened shell)
# play test sound
# close AHI prefs
# shell still open with Sashimi running: press ctrl-c to break Sashimi and return to prompt.
# in shell: copy mylogfile.txt System: (or to your required location)
SYS:Utilities/'''Snoopy''' - monitors OS function calls, run "Sashimi" to see Snoopy's output
SYS:Tools/'''WiMP''' - the Window (and Screens) Manipulation Program
You can use the -E option of gcc to find out how preprocessor macros are expanded.
===Errors===
crash in strcasecmp usually means that one of its arguments is NULL.
empty space between these two names, prossibly some invisible character
Old Amiga [http://www.amigacoding.com/index.php?title=Guru_codes&redirect=no Guru Codes]
If the crash is in intuition. Sometimes, if it relates to text, a null pointer sets it off.
an uninitialised pointer can have any address (this is a common fault).
Compiling on 64bit, Many old code would not properly typecast when doing pointer-integer conversions and thus at least throw a warning. This can easily be located and fixed.
[http://www.aros.org/cs/documentation/developers/app-dev/portable.php Portable code]
* Use texteditor or some tool to replace all "ULONG" with "IPTR" and "LONG" with "SIPTR" in the sources.
* Fix (change IPTR/SIPTR back to ULONG/LONG) the few places which really rely on ULONG/LONG being exactly 32 bit. That's for things like pixel (ARGB) buffers, structs written/read to disk, colormaps, but probably not much else.
Then again, many current compilers also throw a warning when you try to assign a pointer value to an integer and the integer is possibly too small. This happens under .NET for example when a 64 bit pointer is assigned to something like an ULONG - so exactly the case which you described.
=== AI ===
<---
Model <---> Agent ---> End user
Gemini LMStudio
Qwen Comfyui
etc
Recent, self hosting locally on laptops, mini pcs or desktops with '''quantization''' 4bit has reduced memory requirements but still require 16Gb+ and no high end gpu for text based
*[https://lmstudio.ai/download LMstudio single gpu],
Google Gemma 4 Model
*[ 12B QAT]
Alibaba Cloud's [https://huggingface.co/ Qwen] team series of large language models LLMs
*[https://huggingface.co/models?other=qwen3 Qwen 3], [],
*[https://huggingface.co/models?other=qwen2 Qwen 2], [https://huggingface.co/Qwen/Qwen2.5-Coder-32B qwen 2.5 Coder],
*[ Kimi K3],
Small Claude Model
*[https://github.com/sipeed/picoclaw picoclaw]
Bigger LLMs but with settings
*[https://ollama.com/download Ollama single gpu]
*[https://github.com/ggml-org/llama.cpp/releases llama.CPP multi gpus],
*[ VLM multiple gpus],
For the full experience
#Training learning using 1+ high end GPUs at least 16GB VRAM per GPU card or 64Gb+ of unified, 16Core CPU with at least 64Gb of RAM system memory, though training can take weeks
#Inference with custom asics or GPUs
*[ MiniMax H3] for audio and video but gpu 8Gb+
*[https://github.com/jamiepine/voicebox voicebox]
*[https://github.com/ideogram-oss/ideogram4 ideogram4]
*[https://github.com/calesthio/OpenMontage OpenMontage]
<pre>
Text to Audio --\
Text to Video --/ Reference Video --> Video and Audio output
</pre>
=== Linux ===
<syntaxhighlight lang="c">
/* 1. Header for your name,date,purpose of program.
2. Pre-processor directives. This will include the #includes for files you want to add.
3. Includes for function prototypes if necessary.
4. Main()
Create Pointers for Libraries and any Window you want to open.
5. Open necessary libraries.
6. Check if open exit program if fail.
7. Open a window exit program if fail.
8. Add your program
9. Close Window
10 Close Libraries.
11 End Program. */
/* standard os included headers <.h> */
#include <dos/dos.h>
#include <dos/dosasl.h>
#include <dos/dosextens.h>
#include <dos/exall.h>
#include <dos/rdargs.h>
#include <exec/memory.h>
#include <exec/types.h>
#include <utility/utility.h>
#include <intuition/intuition.h>
/* define as unresolved external references (proto/xxx.h) and compiler will link to auto(matically) open library */
#include <proto/arossupport.h>
#include <proto/dos.h>
#include <proto/exec.h>
#include <proto/intuition.h>
#include <proto/graphics.h>
#include <proto/cybergraphics.h>
#include <proto/datatypes.h>
#include <proto/icon.h>
#include <workbench/workbench.h>
#include <workbench/icon.h>
#include <datatypes/pictureclass.h>
#include <proto/muimaster.h>
#include <libraries/mui.h>
#include proto/bsdsocket.h
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* my own headers ".h" */
#define CTRL_C (SetSignal(0L,0L) & SIGBREAKF_CTRL_C)
#define isDir(fib) ((fib)->fib_DirEntryType >= 0)
#define ARG_TEMPLATE "FILE/A,ALL/S,QUIET/S,W=WIDTH/N,H=HEIGHT/N,M=METHOD,DEFTOOL"
int main(void)
{
return retval;
} /* main */
</syntaxhighlight>
If you used c++, there is not yet c++ support in our shared library system.
The easiest way to create / compile a shared library would be to use the AROS build system but the libraries can be created manually. You have to create a ROMTAG structure and some header files.
A shared library is built with the %build_module macro with a line like this:
%build_module mmake=MetaTarget modname=mylib modtype=library files=SourceFiles
This macro can build different AROS module types, like devices, Zune classes, HIDDs, etc.
<pre>
##begin config
version 1.0
##end config
##begin functionlist
void func1(LONG a, LONG b)
int func2(char *s, ULONG a)
##end functionlist
</pre>
There is more [http://aros.sourceforge.net/documentation/developers/sys-dev/libraries.php here]
Alternatively,
<pre>
#ifndef LIB_H
#define LIB_H
#define __NOLIBBASE__
#include <exec/libraries.h>
#include <exec/semaphores.h>
#include <dos/dos.h>
#ifdef __AROS__
//#include <aros/debug.h>
#define reg(x)
#define __saveds
#endif
#define USESYSBASE struct ExecBase *SysBase = Base->My_SysBase;
struct MyTestBase
{
struct Library My_Test_Lib;
struct ExecBase *My_SysBase;
APTR My_SegList;
int testint;
};
#endif
</pre>
<pre>
/*--------------------------------------------------------------------------*/
/* Resident header written for mytest.library */
/*--------------------------------------------------------------------------*/
#define __NOLIBBASE__
#define VERSION 1
#define REVISION 0
#define LIBHEADNAME mytest
#define LIBHEADNAMESTR "mytest"
#define COMPDATE "04.10.2015"
#define VERS "1.0"
#define LIBBASETYPE struct MyTestBase
#define LIBBASETYPEPTR LIBBASETYPE *
#include <aros/debug.h>
#include <exec/exec.h>
#include <proto/exec.h>
#include <exec/resident.h>
#include <exec/nodes.h>
#include <exec/libraries.h>
#include <aros/symbolsets.h>
#include "lib.h"
const UBYTE lib_name[] = LIBHEADNAMESTR ".library";
const UBYTE lib_id[] = "$VER: " LIBHEADNAMESTR ".library " VERS " (" COMPDATE ") by ALB42\n";
extern const APTR FuncTable[];
AROS_UFP3 (LIBBASETYPEPTR, InitLib,
AROS_UFPA(LIBBASETYPEPTR, Base, D0),
AROS_UFPA(BPTR, seglist, A0),
AROS_UFPA(struct ExecBase *, sysbase, A6)
);
static struct LibInitStruct
{
IPTR LibSize;
const APTR *FuncTable;
const struct DataTable *DataTable;
APTR InitFunc;
}
const LibInitStruct =
{
sizeof(LIBBASETYPE),
FuncTable,
NULL,
(APTR)InitLib
};
const struct Resident romtag =
{
RTC_MATCHWORD, /* match word */
(APTR)&romtag, /* back pointer */
(APTR)(&romtag + 1), /* skip pointer */
RTF_AUTOINIT | RTF_EXTENDED,/* flags */
VERSION, /* version */
NT_LIBRARY, /* type of module */
0, /* init priority */
(STRPTR)lib_name, /* module name */
(STRPTR)lib_id + 6,
(APTR)&LibInitStruct,
REVISION, NULL
};
AROS_UFH3 (LIBBASETYPEPTR, InitLib,
AROS_UFHA(LIBBASETYPEPTR, Base, D0),
AROS_UFHA(BPTR, seglist, A0),
AROS_UFHA(struct ExecBase *, sysbase, A6)
)
{
AROS_USERFUNC_INIT
Base->My_SegList = seglist;
Base->My_SysBase = (APTR)sysbase;
Base->testint = 0;
USESYSBASE
bug("InitLib\n");
if (!set_open_libraries())
{
set_close_libraries();
return NULL;
}
return Base;
AROS_USERFUNC_EXIT
}
AROS_LH1(LIBBASETYPEPTR, LibOpen,
AROS_LHA (ULONG, version, D0),
LIBBASETYPEPTR, Base, 1, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibOpen\n");
(void)version;
Base->My_Test_Lib.lib_OpenCnt++;
return Base;
AROS_LIBFUNC_EXIT
}
__saveds APTR LibExpungeInternal(LIBBASETYPE *Base reg(a6))
{
USESYSBASE
APTR seglist;
bug("LibExpungeInternal\n");
if (Base->My_Test_Lib.lib_OpenCnt)
{
return 0;
}
seglist = Base->My_SegList;
Forbid();
Remove((struct Node*)Base);
Permit();
FreeMem((APTR)Base - Base->My_Test_Lib.lib_NegSize, (LONG)Base->My_Test_Lib.lib_PosSize +
(LONG)Base->My_Test_Lib.lib_NegSize);
set_close_libraries();
return seglist;
}
AROS_LH0(BPTR, LibClose,
LIBBASETYPEPTR, Base, 2, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibClose\n");
if (!(--Base->My_Test_Lib.lib_OpenCnt))
{
return LibExpungeInternal(Base);
}
return 0;
AROS_LIBFUNC_EXIT
}
AROS_LH1(BPTR, LibExpunge,
AROS_LHA(LIBBASETYPEPTR, Base, D0),
struct ExecBase *, sysBase, 3, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
(void)sysBase;
USESYSBASE
bug("LibExpunge\n");
return LibExpungeInternal(Base);
AROS_LIBFUNC_EXIT
}
AROS_LH0(LIBBASETYPEPTR, LibReserved,
LIBBASETYPEPTR, Base, 4, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("LibReserved\n");
return 0;
//return (APTR)LibReserved();
AROS_LIBFUNC_EXIT
}
// Space for your own functions
// do not forget to update the FuncTable as well
AROS_LH1(int, TestFunction,
AROS_LHA(int, TestValue, D0),
LIBBASETYPEPTR, Base, 5, LIBHEADNAME
)
{
AROS_LIBFUNC_INIT
USESYSBASE
bug("TestFunction\n");
Base->testint = TestValue + Base->testint;
return Base->testint;
AROS_LIBFUNC_EXIT
}
// Functable -> Table of all functions in the Library, in right order - important!
const APTR FuncTable[] =
{
&AROS_SLIB_ENTRY(LibOpen,LIBHEADNAME,1),
&AROS_SLIB_ENTRY(LibClose,LIBHEADNAME,2),
&AROS_SLIB_ENTRY(LibExpunge,LIBHEADNAME,3),
&AROS_SLIB_ENTRY(LibReserved,LIBHEADNAME,4),
&AROS_SLIB_ENTRY(TestFunction,LIBHEADNAME,5),
(void *)-1
};
// AutoInit stuff
void *__PROGRAM_ENTRIES__symbol_set_handler_missing;
void *__LIBS__symbol_set_handler_missing;
// end of AutoInitStuff
</pre>
Makefile
<pre>
VPATH =
CFLAGS = -O2 -g -fomit-frame-pointer -W -Wall -Wno-parentheses
CC = i386-aros-gcc
LD = i386-aros-gcc
LDFLAGS = -nostartfiles -Wl,-Map -Xlinker linkermap
LIBS = -lautoinit -llibinit
STRIP = i386-aros-strip --strip-unneeded --remove-section .comment
OBJS = lib_header.o
all: mytest.library
mytest.library: $(OBJS)
$(LD) $(LDFLAGS) $^ $(LIBS) -o $@
lib_header.o: lib_header.c lib.h
clean:
rm -f *.o *.library *.ppu testlibrary linkermap
</pre>
Porting UNIX library to AROS - dealing with static variables which would make it easy to port such libraries to AROS, keeping the benefits of sharing them on disk, but losing the benefit of actually sharing them in memory.
Our problem arises by the fact we want to share the actual code (the .text section of the library) and constant data, but we need to have per-task .bss and .data sections. If we get rid of our intention to share the .text and .rodata sections, things get quite easy: just load and relocate the library whenever it's open, by whoever it's open. It's like statically linking the library into the executable, except that the final linking is done at runtime.
In the V0 branch, in workbench/hidds/hidd.nouveau was committed pcimock.hidd. This is a pci driver that allows mocking real PCI devices under linux-hosted. The main idea is to be able to run the real hardware driver under linux-hosted with as little changes as possible (some changes will always be needed though unless someone wants to write complete device simulator) so that driver's code paths can be executed and debugged using gdb. This was a very helpful capability when porting nouveau. Now it is externalized from nouveau.hidd and can be used by other people porting drivers. The pcimock.hidd can currently mock 4 different nvidia cards, 1 AGP bridge and also mock irq.hidd.
What's the difference between this driver and the pcilinux.hidd? I used that one to develop many different HW drivers for aros. As far as I understood the intention of pcilinux.hidd it is supposed to get access to real hardware that is running under linux. The pcimock.hidd goal is to mock the hardware. For example my dev box is a PCIE system, but I still would like to run the AGP codes paths in nouveau under linux-hosted to check if they don't seg fault. The other case would be to run codes paths for hardware that the developer does not have (Fermi cards in my case). In the case of pcimock.hidd, the AROS driver's code paths will execute as long as you add proper mocking (for example fill in PCI config area or values for registers in BARs). This is an advantage for ported drivers - the code should already work (since it worked on another system) but there might have been mistakes made during porting which can be detected easily with gdb.
In case you are writing your driver from scratch, pcilinux.hidd hidd will give you more advantage, since you can actually access the real hardware from linux-hosted.
== Misc ==
===APL, MPL, BSD, GPL and LGPL Licences===
The majority of AROS sources in licensed under AROS Public License ([http://aros.sourceforge.net/license.html APL]) which (to a degree) protects us from someone taking AROS sources and not contributing improvements back (for example MorphOS took some AROS source and then contributed changes back)
It is written to allow the use of AROS code in other open source or commercial projects without exception whilst providing a mechanism so that improvements/additions can find their way back to the original source in one form or another.
There are "3rd" party applications used by AROS that do not fall under this license, which are an extra "Contrib" download for convenience.
Anyone can port GPL-ed network and sound drivers as AROSTCP and AHI are GPLed. Direct using (porting) [http://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs GPL]-ed code in other parts of AROS (gfx, sata, usb) is not possible because AROS license is not compatible with GPL. You need to utilize permissive licensed code like BSD or MIT/X11.
BSD and MPL license are the closest to APL.
APL however is not so compatible with LGPL/GPL.
LGPL case - you cannot statically combine APL code with LGPL. You can, however thank to LGPL being "lesser" restrictive, use LGPL dynamically loaded libraries in APL codes.
GPL case - you cannot combine APL code with GPL in any way if there is no explicit clause by GPLed code authors allowing that. If you do combine APL with GPL in "bad" ways described above - you have a problem (you violate GPL). This problem might result in everything in AROS becoming GPL or everything running or AROS becoming GPL (here I'm not sure really). The other scenario is that you are not allowed to legally distribute such code at all. To be honest I have grasped how to violate GPL, but I'm still no exactly sure what happens when you violate it (but I'm sure it's not anything nice)
GPL software can run on top of non-GPL "system components" (see system components exception of GPL), but the other way around (non-GPL using GPL) leads to problems. This means applications like scout, or Quake III are ok (in the majority of cases).
Theres no reason GPL drivers cannot be ported - but they cant be in AROS's ROM (requires linking APL code with GPL), nor can AROS depend on them (e.g. they must use existing apis).
If they are launched (dynamically linked) by a user action that is allowed. It is also allowed to distribute such binaries together for convenience.
GPL is not about statical or dynamic linking but is about executing process and function calls.
These components - SFS, isapnp, Zune texteditor, AHi, network drivers, freetype, openuirl, BHFormat, Edit and (" dynamically loaded libraries") are LGPL, not GPL. Mesa/Nouveau stuff is MIT. Some user tools are GPL though.
'''AROS (system)'''
* system components (libraries/classes/devices/etc) cannot be GPL as they would propagate GPL to complete system as well as GPL is not compatible with MPL from which APL is based
* system components can be LGPL v2 or a permissive license (MIT/BSD)
* system applications can be anything you like (but still I would prefer APL or permissive so the code can be reused if needed)
'''Contrib:'''
* no rules - contrib does not impact AROS system since nothing in AROS system depends on contrib.
About stealing code: The chances of this happening is exactly the same whether we are APL or GPL. If any closed-source option wanted to do it, there is no one that can validate otherwise. MorphOS has used some AROS codes, but contributed changes back.
The rationale behind APL is that while it guarantees that the original developer will get the improvements back (to a certain degree - file based), the person who uses the codes does not have to open his original codes. BSD does not guarantee that the original developer gets improvements. GPL requires the person using the codes to open his codes as well.
The copyright holders needs to stay - we just need information from them that the codes are available under APL (for example a checked-in file like in case of Poseidon). We don't do transfer of copyrights.
; Ultimately what can and cannot be done is up to the author(s) - not the licence.
===AROS source code tree===
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-trunk.txt
* http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
Found this interesting (non-GPL) licensing 'anomaly' - to keep in mind for distributors.
Programs that lose their license if sold ("non-profit only" licensed):
contrib/aminet/comm/term/TinyTerminal
contrib/aminet/dev/basic/bwBASIC
contrib/aminet/text/edit/xdme
contrib/fish/aroach
contrib/fish/lotto
contrib/fish/shuffle
contrib/fish/touch
+ cdvdfs.
Here is a list of all the GPL/GPLv2/GPLv3 licenses fossology found, what have explicit licenses in their comments.
excluded LGPL, BSD/GPL dual licensed and programs (such as Prefs/Edit and BHFormat)
<pre>
AROS/rom/dbus/include/ AFL_v2.1 ,GPL_v2+ (supposedly AFL < 3 is GPL incompatible)
AROS/workbench/classes/zune/betterstring/include/ GPL_v2+
AROS/workbench/classes/zune/texteditor/include/ GPL_v2+
AROS/workbench/classes/datatypes/gemimage/ GPL_v2+ GPL
AROS/workbench/classes/datatypes/degas/ GPL_v2+
AROS/workbench/libs/openurl/README: GPL
AROS/workbench/network/smbfs/documentation/ GPL_v2
AROS/workbench/network/smbfs/source_code/ GPL_v2+
AROS/workbench/network/stacks/AROSTCP/bsdsocket/kern/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/mmakefile.src conf.h GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/sys/ CMU ,GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/net/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/api/ GPL_v2
AROS/workbench/network/stacks/AROSTCP/bsdsocket/conf/conf.h: GPL_v2
AROS/workbench/network/stacks/AROSTCP/netinclude/net/radix.h: CMU ,GPL_v2
AROS/workbench/devs/AHI/AHI/ GPL_v2+
AROS/workbench/devs/AHI/AddAudioModes/ GPL_v2+ AROS/workbench/devs/AHI/AddAudioModes/COPYING: GPL
AROS/workbench/devs/AHI/Docs/texinfo.tex: GPL_v2+
AROS/workbench/devs/AHI/COPYING: GPL
AROS/workbench/devs/AHI/Drivers/EMU10kx/ GPL_v2+
AROS/workbench/devs/AHI/AHI-Handler/ GPL_v2+
AROS/workbench/devs/networks/rtl8029/ GPL GPL_v2+
AROS/workbench/devs/networks/pcnet32/ GPL GPL_v2+
AROS/workbench/devs/networks/ppp/LEGAL: GPL
AROS/workbench/devs/networks/atheros5000/ GPL_v2+
AROS/workbench/devs/networks/rhine/ GPL_v2+
AROS/workbench/devs/networks/nForce/ GPL_v2+ GPL
AROS/workbench/devs/networks/prism2/ GPL GPL_v2+
AROS/workbench/devs/networks/fec/LEGAL: GPL
AROS/workbench/devs/networks/rtl8139/ GPL GPL_v2+
AROS/workbench/devs/networks/etherlink3/ GPL GPL_v2+
AROS/workbench/devs/networks/intelpro100/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8169/ GPL GPL_v2+
AROS/workbench/devs/networks/emac/ GPL GPL_v2+
AROS/workbench/devs/networks/rtl8168/ GPL GPL_v2+
AROS/workbench/devs/networks/realtek8180/ GPL_v2+
AROS/workbench/devs/networks/via-rhine/via-rhine.c: GPL_v2+
AROS/workbench/devs/networks/via-rhine/ GPL GPL_v2+
AROS/workbench/devs/networks/e1000/ GPL_v2
AROS/workbench/devs/networks/sis900/ GPL GPL_v2+
</pre>
AHI: it has special provisions (COPYING.DRIVERS). The library is LGPL, preferences software is GPL and drivers can be anything without breaking GPL/LGPL.
Network stack: well, we are long overdue for a new, IPv6 enabled network stack anyway, anyone interested? ;) Seriously though it seems like the glue code is GPL and as all the drivers. However some of the drivers are our own code, so they could be relicensed to LGPL.
Same filter as the AROS trunk list. These should all be libraries or plugins - no programs.
<pre>
contrib/regina/utsname.h: GPL_v2+
contrib/mui/classes/nlist/include/default-align.h: GPL_v2+
contrib/mui/classes/nlist/include/amiga-align.h: GPL_v2+
contrib/mui/classes/BWins/include/MUI/BWin_mcc.h: GPL
contrib/mui/classes/BWins/include/BWin_private_mcc.h: GPL
contrib/mui/classes/BWins/COPYING: GPL_v2
contrib/mui/classes/BWins/MCC_BWins.readme: GPL_v2
contrib/mui/classes/thebar/include/default-align.h: GPL_v2+
contrib/mui/classes/thebar/include/amiga-align.h: GPL_v2+
contrib/gfx/libs/wazp3d/LEGAL: GPL
contrib/gfx/libs/wazp3d/Wazp3D.readme: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/soft3d_opengl.c: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.h: GPL
contrib/gfx/libs/wazp3d/Wazp3D-src/Wazp3D.c: GPL
contrib/libs/mpega/ GPL_v2+
</pre>
http://www.evillabs.net/AROS/Audit-2012-03-14/AROS-contrib.txt
===Types===
On AROS following rules apply:
<pre>
1. BYTE/UBYTE is 8bit, WORD/UWORD is 16bit, LONG/ULONG is 32bit, QUAD/UQUAD is 64bit, the types are comparable with stdint types (int8_t, int16_t, int32_t, int64_t)
2. IPTR/SIPTR are integer types large enough to fit pointer, that is sizeof(IPTR) = sizeof(APTR) = 4 on 32bit system, and = 8 on 64bit system
3. ti_Data in TagList is large enough to hold a IPTR/APTR type.
4. never store a pointer in integer of type LONG. It may work (if the pointer has upper 32bits clear), but does not have to. Compiler should warn you about that.
5. If you are unsure about point 4, allocate your memory with MEMF_31BIT flag set. But don't expect that AROS internals will do the same.
</pre>
point 4 is actually important.
* UBYTE/BYTE for 8bit
* UWORD/WORD for 16bit
* ULONG/LONG for 32bit
* UQUAD/QUAD for 64bit
<pre>
UBYTE Unsigned 8 bit integer variable (byte).
BYTE Signed 8 bit integer variable (byte).
UWORD Unsigned 16 bit integer variable (word).
WORD Signed 16 bit integer variable (word).
ULONG Unsigned 32 bit integer variable (longword).
LONG Signed 32 bit integer variable (longword).
FLOAT 32 bit IEEE floating point variable.
UQUAD Unsigned 64 bit integer variable.
QUAD Signed 64 bit integer variable.
DOUBLE 64bit IEEE floating point variable.
BOOL Boolean variable, TRUE and FALSE are also defined in exec/types.h.
VOID Void.
APTR A generic pointer for multiple purposes - Arrays.
STRPTR A pointer to a null-terminated string.
IPTR Really important in AROS, the only way to declare a field that can contain both: an integer or a pointer.
</pre>
if you want to write really portable app, you may be interested in standard datatypes defined in C99: int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, intptr_t, uintptr_t. They are all defined in inttypes.h include file.
In exec/types.h the following short-cuts are typedef'd. They are used often in AROS, so you should nearly always include exec/types.h and soon only they will be removed from sys/_types.h include, all types are now defined in include files named aros/types/xxx.h.
(Preparation for C library split; sys/xxx.h include will only be available there when compiling with POSIX C library)
Compiler specific types, like int and long might change their size. In case of AROS, similar to linux, int remains 32 bit whereas long grows to 64 bits in size.
If you use Amiga-like data types, i.e. BYTE/UBYTE, WORD/UWORD, LONG/ULONG and QUAD/UQUAD or the C99 standard types (uint8_t and so on, see stdint.h include) then you should have less issues to solve than by using types without size guarantee.
Of course, all pointers grow to 64 bytes using 64bit cpu. Most of the code can be just recompiled and will work. In rare cases, where e.g. pointers are casted to integers, a special care must be taken. Especially in the cases, where pointer is casted to LONG/ULONG (this code will break on 64 bit AROS) e.g. '#define IPTR ULONG'.
With compiler delint patches which the majority of them are simple casting issues to make the compiler happy. Notice some of the changes involve introducing double casts. In very recent versions of GCC. Yes, the bulk of the double casts are for converting 32 bit addresses (ie from a 32 bit PCI DMA address register) to a 64 bit pointer. First cast is to IPTR (to expand to 64 bits, and prevent sign extension if the address is above 0x7FFFFFFF), and then to APTR.
ULONG != IPTR except on 32bit .. so if you need to store pointers make sure and use IPTR and not ULONG (which some old code does). For this reason things like Taglist elements are 64bit (since the tag data can be a pointer).
If your passing items on the stack you should use the STACKED attribute to make sure they are correctly aligned (on 64bit all items on the stack are 64bit..)
There is more issues like using "== 0L" causes problems.
===Endian===
*BE
*LE
Use the macros from <endian.h> instead making a guess based upon architecture defines
<pre>
#if _BYTE_ORDER == _BIG_ENDIAN
#elif _BYTE_ORDER == _LITTLE_ENDIAN
#else
+
#error <whatever.h> - Byte order for this architecture is unsupported!
</pre>
===SVN and GIT===
If you want to help develop AROS OS itself, you can
* view current GIT/SVN entries [http://aros.sourceforge.net/ Aros Org website] or [https://github.com/aros-development-team/AROS Github], [https://github.com/ezrec older ezrec mirror], [https://github.com/michalsc/AROS/ older mirror], [https://trac.aros.org/trac/timeline TRAC], [],
* awaiting update [http://repo.or.cz/w/AROS.git git repo], [http://www.ohloh.net/p/aros/commits ohloh] or [https://svn.aros.org/svn/aros/trunk/ svn repo] and access [Git version git://repo.or.cz/AROS.git here],
* deprecated [https://www.gitorious.org/aros/aros/commit/a7fda9e ARIX commits] or [https://gitorious.org/aros/aros GIT old]
If you have SVN access (early 2015 introduced a new SVN server, create a new account at trac aros org) and/or have obtained the source [http://aros.sourceforge.net/download.php AROS site] - you can compile the current build tools/environment using:
> make development
and follow this [http://aros.sourceforge.net/documentation/developers/compiling.php#building procedure] or [https://github.com/apiraino/aros_guide Guide]
https://trac.aros.org/trac#Developing
If you plan on contributing back changes, please post information about such changes first on this [http://mail.aros.org/mailman/listinfo/aros-dev/ mailing list] for more experience developers can validate whether they are correct.
Then there are the nightly build machines. They svn update before the build and run configure as one of the next steps. autoconf might be added to the nightly build scripts.
Our build relies on packages downloaded from Internet (SDL for example) - it always worked this way. The minimal requirement (when just building core AROS) is binutils and gcc. If you build contrib as well, you need many more packages to be downloaded.
https://gitorious.org/aros/aros/commits/crosstools-II
git://gitorious.org/aros/aros.git
Branch crosstools-II there is only one commit on top of ABI_V1
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-x86_64
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-x86_64
</pre>
and
<pre>
../../aros-src/AROS/configure --enable-ccache
--with-portssources=~/aros/Sources --target=pc-i386
--with-aros-toolchain-install=/home/weissms/media/data/aros/test/crosstools/pc-i386
</pre>
build OK.
:''More information: [[Aros/Developer/Maintainer|AROS Maintainer Docs]]''
===SDI Calls===
Integrate the 'SDI'-headers to allow easier porting to all amiga-like platforms.
<pre>
PUTCHARPROTO( PutTheChar, char c, struct SPrintfStream *s )
{
// REAL CODE
}
</pre>
have "SDI_compiler.h" and "SDI_hook.h" included
its more organized like
#include SDI/SDI_hook.h
than
#include SDI_hook.h
option 1 --- i also use when back porting from amiga's..
<pre>
#ifdef __AROS__
#include SDI/SDI_hook.h
#else
#include SDI_hook.h
#endif
</pre>
also
you can add the -i include/sdi/ location if you do not want to add or edit any files.
Defining HOOKPROTO to IPTR name(struct IClass * cl, Object * obj, Msg msg); solved the problem
A MUI application most likely needs only the HOOKPROTOxxx SDI macros. They are compatible with AROS, only the attributes (hook, object attribute) must be given in the right order. examine compiler/include/aros/symbolsets.h (AROS_LIBREQ)
compiling mui stuff for aros setting -std=gnu99 is necessary (i have had -std=c99 most of the time).
===Locale with Flexcat===
Most languages have a locale, but not every app is localized, the only thing needed is to translate the "catalog" files. It is a case of locating the correct catalog and saving the translated version.
For every app that lacks of your language catalog and is localized anyway, you should find (in the sources) files related to locale:
* file.cd = catalog descriptor, contains base msg, with internal language (usually english)
* language.ct = catalog translation, contains every translated msg, indexed as in the file.cd.
Compare with other localized apps... Then, "make my_app-catalogs" should create and install your translated catalogs. ex : for, saying, sys:prefs/wanderer:
on root of AROS sources, type:
"make workbench-prefs-wanderer-catalogs"
then (if you changed the .cd file):
"make workbench-prefs-wanderer"
For apps not localized, you have to adapt their code to support it, if it is possible...
noticed the original .cd file has many (//) strings at the end of any voice, so added them also to the .ct file.
That (//) is only for cd files. I'm highly recommending to use FlexCat for updating ct files, e.g. like this:
flexcat app.cd deutsch.ct newctfile deutsch.ct
You'll get error checking and new entries are marked in the resulting ct file.
When editing .ct files, only change those lines containing translation and perhaps version string, nothing else.
The rest is up to the relevant tool, flexcat. In order to update your translation, type in the following in your shell:
flexcat xyz.cd xyz.ct NEWCTFILE xyz_upd.ct COPYMSGNEW
This way you will not only make sure you have correct translation file but flexcat also pre-fills newly added strings with "*** NEW *** text. Even better tool for checking cd/ct/catalog files is catcheck, but this one is sadly only available for AmigaOS/68k...
Some languages have variations, like portugues from portugal and portugues from brasil differs...
This is the way to go. I will have a look at language files, but basically if those two languages differ you have to do two separated set of translation files, yes.
(you could create a brazilian slang language localization too)
* At system level localization for one language is a dot language file.
(ex: locale:languages/klingon.language)
* At app level localization is a dot catalog file
(ex: locale:catalogs/klingon/system/libs/dos.catalog)
* At sources level, the dot ct file, and "$language" dot cd files and some building framework.
(ex: catalogs/my_app.ct catalogs/klingon.cd catalogs/mmakefile.src support.c support.h)
Please, use Flexcat to generate CT files:
FlexCat wanderer.cd NEWCTFILE=deutsch.ct
Then fill the first 2 lines with something useful:
<pre>
## version $VER: wanderer.catalog 1.1 (9.2.2006)
## language deutsch
</pre>
You can even update the CT-File: (This adds the new strings)
FlexCat wanderer.cd deutsch.ct NEWCTFILE=deutsch.ct
To compile a catalog you only need the .cd file and your translation (.ct file):
FlexCat multiview.cd deutsch.ct CATALOG=MultiView.catalog
[http://murks-ide.svn.sourceforge.net/viewvc/murks-ide/trunk/src/Catalogs/flexcat_linux?revision=100 Linux version of FlexCat]
: [http://aros.sourceforge.net/documentation/developers/app-dev/localization.php#localization-for-non-developers More information]
A script which compares the required version (i.e. the version which an application/module etc. tries to open) with the version of the existing CT files. The result is in this table:
https://github.com/aros-translation-team/translations/wiki/Progress
The following cases are highlighted:
n/a i.e. CT misses at all
version in existing CT file is lower than the required version
It might be a bit difficult to participate if you haven't worked with Git before but alternatively you can send your CT files to our Slack channel.
When the ct file has been generated via flexcat (flexcat keyshow.cd NEWCTFILE=spanish.ct) it has the following header:
---------------------------------------------------------------------------------------------------------------
## version $VER: <name>.catalog <ver>.<rev> (04.01.2021)
## language nolanguage
## codeset 0
;
---------------------------------------------------------------------------------------------------------------
Those values <ver>.<rev> are the version and revision of the CT file for the languaje or are the values of the application being localized?
The <ver> part must match with version which the application tries to open. You can find the value either in the column "Required Version" in the table which I've linked above, our you can look in the git repository. For keyshow it would be https://github.com/aros-translation-team/keyshow. You can find in the file "catalog_version.h" the right version number.
The <rev> part starts for new CT files with 0 and should be increased every time the CT file is updated.
Updated several files and created a few more that were missing on the spanish catalog.
The catalogs are in Git repositories at https://github.com/aros-translation-team
a) You tell me your Github user name. I'll invite you. You can work directly with the Git repositories.
b) You create Github forks of the catalog repositories and create pull requests.
c) You send the CT files to mrustler gmx de
===C Utils Misc===
The AROS source uses at several places the __DATE__ macro to fill the date entry of a $VER tag. Problem is that c:version doesn't understand that date format (e.g. "May 21, 2011"). As a result the output of e.g.
> "version c:shell full" contains "(null)". Is extending the version command to understand the format of __DATE__ the right solution for that problem?
AmigaOs compilers should use __AMIGADATE__ macro or similar form, if it isn't implemented it could be emulated in makefile: -D__AMIGADATE__=\"$(shell date "+%d.%m.%Y")\"
BTW. I think DD.MM.YYYY is better format than "Month DD YYY" because "Month DD YYY" is not localized in any way.
"strnicmp" shouldn't work with NULL pointers
The Situation:
compiled a linklib using c++ object files (using the c++ cross compiler).
compiled a C stub that uses the linklib (using the c++ cross compiler).
Try to link them together (using the c++ cross compiler) with C object
files (using the normal target c compiler) that need to use -nostartup
= cant do because using the c++ files pulls in arosc (for stdio etc.) -
so wants to have the autoinit stuff present.
What can I do about this??
If it is possible to manually open it then what do I need to do exactly?
=== ENV ===
The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact. However in some cases (like this one) it is not required.
99% of the time that statement is true (not required) for pretty much every file in ENV: or do people change their default icons - and prefs settings - every boot?
There seem to be a bad habit of late with developers changing things to reflect their own personal preference when the change isn't actually necessary - It would be nice if people could refrain from doing that in the tree without at least discussing it on the dev-list first (and with good reasoning unless they committed said work in the first place..)
We're not keen on the pollution of the "S:" dir: it's meant to be for scripts. What's wrong with "ENV:"?
Only the fact that it takes up RAM. I understand that for PCs with several gigabytes of RAM this is
irrelevant. But let's remember about other machines. The philosophy behind ENV: is that keeping configuration files there allows you to 'Use' preferences by keeping a copy in ENVARC: intact.
However in some cases (like this one) it is not required.
How about implementing in the style of HappyENV then? RAM-disk handler that falls through to reading from ENVARC: if there is no such file stored in it already. Removes RAM usage for unchanged files, removes the need to copy ENVARC to ENV in startup-sequence.
Shouldn't be too hard to make from AmberRAM, or even just extend AmberRAM to provide this service.
Is it feasable to build a special version of AmberRAM handling ENV: that will try and copy the requested file from ENVARC: if it isnt found in ENV: ?
Additionaly it could mark closed "files" as untouched - and expunge them from ENV: after a period of time to free up additional RAM:, or when the system is running low on free memory?
Silenty disappearing files may not be a good plan. Would be nice if the following would work:
ASSIGN :ENV SYS:Prefs/Env-Arc ADD
ASSIGN :ENV RAM:ENV ADD
Where new files put in ENV: end up in RAM:ENV, and opening files looks in RAM:ENV first, then SYS:Prefs/Env-Arc
Well - that's essentially what im proposing but without the assigns - or need for a RAM:ENV directory.
Adding it as a feature of AmberRAM sounds like the most memory efficient way (one handler to load in RAM) but that's only if it is possible to make it handle ENV: additionally to RAM:, and if it is even possible to add the proposed functionality (...and how to make it enable it when accessing ENV:).
===(AS)MP support===
If one has to recompile software for SMP multi core, is there any thing special one has to do to get software to run?
Use task.resource if you need to query information about what tasks are running, and clear msgports completely when they are allocated.
Most code should not need Forbid. Use Semaphores, Messages etc. to sync your own code.
Accessing system structures is a different thing. Use the proper API whenever possible.
How single structures will be protected in the future is still a moving target, at least it is not documented. And you should never use undocumented stuff
Ideas on for SMP multi-core
Another suggestion is ... Forbid/Permit function calls are meant to halt multitasking so as no other task could intervene with what ever the calling task is doing, e.g. setting semaphores. Disable/Enable calls are meant to halt interrupts and as a side effect they also halt task switching.
One option is to make it compulsory to protect shared resources with semaphores and forbid the use of simple Forbid() calls as to protect something. Setting semaphore should be done if possible with atomic instructions (check and alter in one instruction). Or make the second concurrent ObtainSemaphore call halt the second calling task and force if possible a task switch which ever gives better results.
Semaphores could store the owning tasks task pointer instead of boolean to make things easier.
As long as the CPU initiates the DMA transfers through the OS, and the OS ensures that the transferred memory is within the region accessible to the user initiating the transfer, everything is fine. The CPU is the conductor, and the CPU by that has the control of which DMA transfer is initiated and which is not.
All you need to do is to write device drivers reasonable. Hint: CachePreDMA and CachePostDMA exist.
All the Os has to do is to verify that the memory regions to be transferred are valid, and prohibit direct access to the DMA control registers from user space. None of these algorithms imply huge costs.
The current OS design doesn't really allow virtual memory in first place, Forbid() is again the problem.
[http://www.tbs-software.com/guide/index.php?guide=autodocs.doc%2Fmemory.doc&node=1 memory.library API] seem to low level. IMHO the programs should not know how the swapping is implemented. I would just go for one new memory flag
MEMF_SWAPPABLE that indicates that a certain memory region or a whole memory pool won't be accessed during Forbid()/Permit() etc. It only solves part of the problem, it only implements virtual memory and not memory protection. For the latter you need to be able make certain memory inaccessible by other programs, some memory read-only for one task and read-write for other tasks, etc. And I think this should be done in the same Address Space in order to avoid you constantly need to swap between different address spaces.
So to summarize, if there are programs using this API we may provide a wrapper layer to get them working but I am not convinced this API should be the reference API with whom to provide VM to AROS programs.
=== Variadic ===
variadic functions (i.e. functions with an arbitrary amount of arguments).
<pre>
#include <stdarg.h>
[...]
char * STDARGS GetKeyWord(int value, char *def, ...)
{
[...]
va_list va;
[...]
va_start(va, def);
[...]
va_end (args);
</pre>
Please keep with using stdarg rather than having va casted to a LONG * type and varargs handled manually. Doing so, prevents tons of casting, where a simple va_arg can be used. So, string = *((char **) args) instead of string=va_arg(va, char *).
<pre>
#include <stdio.h>
#include <stdarg.h>
int printf (const char * format, ...)
{
int retval;
va_list args;
va_start (args, format);
retval = vfprintf (stdout, format, args);
va_end (args);
fflush (stdout);
return retval;
} /* printf */
</pre>
Couldn't find varargs.h or stdarg.h. and have no use for AROS_SLOWSTACKHOOKS or AROS_SLOWSTACKTAGS.
GCC looks for stdarg.h in a different place:
/bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/include/stdarg.h
Here is a path for a "normal" header:
bin/linux-i386/tools/lib/gcc/i386-aros/4.2.2/../../../../i386-aros/sys-include/aros/system.h
The use of vararg.h isn't supported by newer gcc versions. If you want your code to run on architectures that pass part of variadic arguments in a number of registers you need to use AROS_SLOWSTACK macros. Otherwise your program will not work on powerpc and x86_64 ports.
Of course the SLOWSTACK stuff is not needed in a function that can use va_list, va_start, va_arg and va_end. It's only needed if you want to write functions like DoMethod or similar.
#include <stdarg.h>
should be enough no matter if you do cross or native compiling. If it does not work, something is wrong and should be corrected.
Stdarg.h is here, Development:lib/gcc/i386-aros/4.2.2/include/
...which is part of the compiler's default include paths. In other words, #include <stdarg.h> works out of the box, indeed. (sorry, I should have just tried it before invoking "search" or "find"...)
furthermore, myprintf() as shown above won't work, because...
printf(format, args);
...is wrong - the second argument does not match printf() prototype, it expects a argument list, but args is of type va_list (obviously) - so one has to use...
vfprintf(stdout, format, args);
...instead, just like in the original printf(), and add fflush(stdout).
additionally, one could use...
int myarg = va_arg(args, int);
...between va_start() and va_end() to access individual arguments, where each call to va_arg() returns an argument casted to the desired type (here: "int") from the list given (here: "args") and advances to the next one.
wrapping up vfprintf() and modifying the format string now is a major speedup! no more backslash-n typing! this has been haunting me for years!
On MOS and AmigaOS, the NewObject variadic function is kept in the static library. It takes most of the parameters on the stack - thanks to that the implementation of NewObject calls the NewObjectA function. Everything works perfect, and the typical MUI macros may be easily used.
This, however, is not the case when you compile for AROS. Here, NewObject is a variadic macro, not a function. Thanks such approach we do not need any custom compiler in case of systems, where the arguments of variadic functions are passed partially through registers and partially through the stack (This is the case of PPC and x86_64, this is also the reason why both OS4 and MOS require specially patched compilers).
Since NewObject is a macro, the gcc's preprocessor expects the list of macros arguments enclosed within parentheses. In MUI macros it is not the case. Imagine the following test code:
<pre>
#define foo(a,b) ((a)+(b))
int loosy_function(int a, int b)
{
return foo(a,b);
}
</pre>
This will compile and work, but the following piece of code:
<pre>
#define foo(a,b) ((a)+(b))
#define END )
int loosy_function(int a, int b)
{
return foo(a,b END;
}
</pre>
will fail with the error: unterminated argument list invoking macro "foo"
There are two ways of fixing your issue. Either create your new objects outside this huge MUI constructions, and in there use just a pointer, or get rid of the "End" macro and exchange it with "TAG_DONE)".
Badly written software is, for example, casting va_list to an APTR or even doing so as if va_list were a plain table of function arguments. Such code needs to be fixed because it has very few chances to work anywhere but on author's machine ;)
The problem is nOt that they assume sizeof(APTR) == 4, its that they often do not use APTR, and use ULONG to store pointers exclusively. If the code used APTR/IPTR as it should - most of the "problems" wouldn't exist.
It would also help if people would start using variadic arguments properly. Many coders do assumptions which shall never be made. Instead, they should consider using stdarg.h file and all the va_* functions :)
===ABI===
In the head of our SVN repository there are now only 3 directories:
<pre>
admin/
branches/
trunk/
</pre>
We have added two extra dirs there: tags and imports
As discussed when we branch ABI V0 and [[Aros/Developer/ABIv1|ABI V1]] it would also be good to introduce tags. Normally this is done in a directory in the repository called tags. Currently we don't have this directory there. (We do have branches/tags that is a hack I have done because one doesn't have write access in the top directory. I think this directory is not clean and should be removed).
The second directory I would introduce is an imports directory for implementing vendor branches as discussed in the svn [http://svnbook.red-bean.com/en/1.5/svn.advanced.vendorbr.html book]. Currently we use code from several different projects and that code is stored inside the AROS tree; we seem to have problems with keeping this code up to date and merge our changes upstream. Maintainers of up stream projects like the MUI classes etc. have complained about this (to put it lightly).
Introducing these vendor branches would make it easier to see what changes we have made and make patches to be sent upstream and make it easier to import newer upstream versions of their code. Although can't "copy" the vendor branch into the main branch because it's already there, so start with a "merge".
Yes, the first step to make the code already in the repository compatible with the vendor branches will be the most difficult. The best way to do it the following way:
* first import the version on which the current AROS code is based into the vendor branch
* then import the new version over it in the vendor branch
* finally merge the difference between these two version in the AROS code present in the repository.
For example, place NList directly under vendor and not in a subdirectory like "contrib/zune/classes".
Actually after we have a stable [http://aros.sourceforge.net/documentation/developers/specifications/drafts/abiv1.php ABIv1 (2012 or later)]. We need to move away as much as possible from the contrib directory to some other repositories. The reasons are ...
* The AROS repository should be for the core AROS code.
* other contrib projects should be tried to be compiled for all Amiga-like OSes.
* The release scheme for AROS and the other programs should not have to be aligned.
* Binary versions should be provided on aros-archives and on aminet and/or OS4Depot to install them. (Some clever programs should maybe be provided to make the life of distribution developers easier).
* avoid parallel forks of programs for AROS and the other amiga OSes.
If there is really a need for a place for hosting AROS projects we may investigate setting up such a server but then including bug tracking, governance, maillist, etc. for each project separately. I personally think there are already enough places like sourceforge, google code, savannah, etc. where people can go for hosting such projects.
==Links==
* http://amigadocs.hokstad.com
* http://amigadocs.hokstad.com/doku.php?id=dev-links
* http://www.liquido2.com/tutorial/index.html
* Amiga(TM) OS4 has a [http://www.ast-workshops.co.uk/os4pg/ workshop] page and hope to produce a [http://amigaworld.net/modules/newbb/viewtopic.php?topic_id=31117&forum=42#549091 book] soon. [http://www.solie.ca/articles/map/map.html Brief Guide].
In the future...?
*AROS 64bit - SMP, Vulkan with OpenGL compability layer
*AROS 32bit - keep for historic reasons
What would you like to see implemented in AROS?
ABIv1 completed, SMP (x86_64), SendMsg()/GetMsg() to support memory protection between target and destination, in that order. Michal Schulz and Jason McMullan have been toying with the question "What are the minimal changes needed to the AmigaOS 3.1 API to support SMP"? The answer so far seems to be "few, but subtle". For example, SysBase->ThisTask is no longer meaningful on SMP, but FindTask(NULL) is. Disable() and Forbid() are shockingly bad on performance, but adding a spinlock semaphore mode to SignalSemaphore will help new code on SMP.
Leveraging a 'common' OS with a lot of machine support (Linux, MacOS, Windows, QNX, etc.) is something that AROS has been doing for quite a long time, and it is the biggest strength of AROS. This AROS experience and programming model, in the same way the Google's Android layers on top of Linux, or MacOS X layers on top of the Darwin/BSD kernel, as a first step
* The graphics + layers subsystem could be implemented as a shim on top of a OpenGL ES implementation (ie on any modern Linux system, or the RaspberryPI's hardware, MacOS X, etc).
- This also allows every window to be on its own 3D surface with backing store, allowing Wanderer (or a Commodity)
rearrange/zoom/animate app windows without having to send a pile or refreshes to them
* Use OpenAL as the sound backend
* AROSTCP would be a thin layer over the native OS's TCP/IP stack
* dos.library, poseidon.library, and input.device would be slim shims over the native APIs
* If we move to loading all libraries' into the application's task space, instead of a single global instance of the library, this will allow SMP and MMU more easily.
- Yes, it will require a lot of work in the libraries to make this transition
- Yes, I do think it will be worth it in the end.
* A 'fat binary' install format (or, maybe LLVM bytecode) that can be 'flattend' to the target architecture on installation.
So, what would this 'AROS of the future' look like?
* AmigaOS 3.x style API, with certain 'fundamental changes' to message passing
* Uses the underlying OS' device drivers, so more AROS developer effort can go to user-visible features and bugfixes
* Allows AROS applications to run side-by-side with the OS's native apps
And why would anyone want to program on such a system?
* AROS applications would run on any system that has the AROS Framework installed
* AROS applications are pixel-for-pixel the same on all platforms.
* Develop with the knowledge that you are guaranteed OpenGL and OpenAL, and the rest of the AROS Framework
an option for mmake to dump its dependency of metatarget in a graphviz[*] input file. This should make it possible to visualize the dependencies and hopefully be inspiration for cleaning up some mess, circular or unneeded dependencies and so on.
AmigaOS gcc 9 [https://franke.ms/amiga/gcc.wiki Old versions] able to create binaries for AmigaOS and [https://eab.abime.net/showthread.php?t=93813 Upgrading gcc versions]
==References==
{{reflist}}
{{status|50%}}
{{BookCat}}
qlmemqrivu0xo13lvlnx1f5b55asnv2
Wikijunior:How Things Work/DVD
110
91274
4656292
3838485
2026-08-05T00:46:56Z
SimpleObjects-9ei
3549933
made a few improvements in lead/lede and some sections
4656292
wikitext
text/x-wiki
{{Wikijunior article stub}}
DVD stands for "'''D'''igital '''V'''ersatile '''D'''isc". A DVD is used to hold information that can be read by a computer using a laser. DVDs are used mainly for movies, television programs and computer programs like games. DVDs are the same shape and size as compact discs (CDs) but they store much more information in a different way.
== Who invented it? ==
The DVD was invented by a group of companies including most of the world's largest makers of home video equipment including [[:en:wikipedia:Toshiba|Toshiba]], Philips, Sony and [[:en:wikipedia:Matsushita Electric|Matsushita Electric]].
== How does it get power? ==
A DVD player is powered by electricity. DVD players can either be powered by electricity or batteries.
== How does it work? ==
DVDs are of the same shape and thickness as CDs, and they are made using some of the same materials and manufacturing methods. Like a CD, the data on a DVD is held in the form of small pits and bumps on the disc. A DVD is made up of several layers of plastic that is {{convert|1.2|mm|in}} thick. Each layer is made by injection moulding plastic. This forms a disc that has tiny bumps (often called pits) arranged as a single very long spiral track of data. These bumps are where all the data is stored. The bumps and pits on a DVD are coded information.
Each writeable layer of a DVD has a spiral track of data. On single-layer DVDs, the track always circles from the inside of the disc to the outside. That the spiral track starts at the center means that a single-layer DVD can be smaller than {{convert|12|cm|in}} if desired.
=== How DVDs are read ===
DVDs are read by a laser. The laser senses the pits and bumps and tells the DVD player what to play. The DVD player or computer often knows when the DVD is in or not. If the DVD is very scratched or is breaking or broken, it cannot be read by the laser.
== How dangerous is it? ==
The DVD is not dangerous by itself unless it is broken. Then the pieces are very sharp and could cut your fingers - or your feet if you step on them, so be careful. The laser in the DVD player can also hurt your eyes.
== What does it do? ==
It stores digital information that can be used by a DVD player or computer.
== How does it vary? ==
The first DVDs had a ''single layer'' and could store around 4.5 Gigabytes of data. Later on scientists found a way to make more layers so it could store even more data. These multi-layered DVDs are called ''dual layer'' DVDs which can store around 8.5 Gigabytes of data. Nowadays there are two more types of DVDs which are called Blu-ray and HD-DVD that can store even more. The single layer Blu-ray disc can store 25 Gigabytes of data while the dual layer Blu-ray disc's can store 50 Gigabytes of data. The HD-DVDs can store around 15 Gigabytes of data per layer. The HD-DVDs are no longer available.
== How is it used? ==
DVDs can be used for:
* Storing information, like pictures or video
* Storing video games
* Storing computer programs
* And lots more!
== How has it changed the world? ==
The DVD has modernized the current generations of video playing devices into the digital age.
== What idea(s) and/or inventions had to be developed before it could be created? ==
The DVD was seen as the next step from the video cassette. There are many inventions involved to make a DVD possible. First of all, the computer had to be invented. You'll realize this when you try to understand how DVD works. On a DVD disk there is coded in a binary form all the information one needs to record a picture.
== References ==
{{BookCat}}
c7h3y6ofa1xh8nm1820f629yudwp2wh
Adventist Youth Honors Answer Book/Nature/Mammals
0
102396
4656289
4656020
2026-08-04T20:29:24Z
CommonsDelinker
49843
Removing [[:c:File:National_aquatic_marine_mammal_of_Pakistan.jpg|National_aquatic_marine_mammal_of_Pakistan.jpg]], it has been deleted from Commons by [[:c:User:Yann|Yann]] because: per [[:c:COM:NETCOPYVIO|]].
4656289
wikitext
text/x-wiki
{{honor_header|1|1937|Nature|General Conference}}
{{AY Master|Naturalist|Options}}
{{AY Master|Zoology|Core}}
==1. What Bible verse gives the day mammals were created?==
Genesis 1:24,25, 31
{{Bible verse
|book = Genesis
|chapter = 1
|verse = 24-31
| text = <br>
<sup>24</sup>And God said, "Let the land produce living creatures according to their kinds: livestock, creatures that move along the ground, and wild animals, each according to its kind." And it was so.
<sup>25</sup>God made the wild animals according to their kinds, the livestock according to their kinds, and all the creatures that move along the ground according to their kinds. And God saw that it was good.
<sup>26</sup>Then God said, "Let us make man in our image, in our likeness, and let them rule over the fish of the sea and the birds of the air, over the livestock, over all the earth, and over all the creatures that move along the ground."
<sup>27</sup>So God created man in his own image, in the image of God he created him; male and female he created them.
<sup>28</sup>God blessed them and said to them, "Be fruitful and increase in number; fill the earth and subdue it. Rule over the fish of the sea and the birds of the air and over every living creature that moves on the ground."
<sup>29</sup>Then God said, "I give you every seed-bearing plant on the face of the whole earth and every tree that has fruit with seed in it. They will be yours for food.
<sup>30</sup>And to all the beasts of the earth and all the birds of the air and all the creatures that move on the ground—everything that has the breath of life in it—I give every green plant for food." And it was so.
<sup>31</sup>God saw all that he had made, and it was very good. And there was evening, and there was morning—the sixth day.
}}
==2. List four characteristics of a mammal. ==
::1. Endothermic (Warm-blooded)
::2. Hair or Fur
::3. Mammary (milk producing) glands
::4. Sebaceous (fat-secreting) glands
::5. Heterodont Dentition (Different shapes of teeth in their mouths)
==3. Give one or more identifying characteristics of each of the following orders of mammals, and name one or more species of mammals found in each order==
===a. Marsupialia===
Marsupials have a pouch that protects the young as they are developing. The infant is born at very early stage of development and crawls out of the womb and across the mothers belly to the pouch where the baby finds a nipple that it attaches to as it continues to grow.
{| border ="0"
|-
| [[Image:Kangaroo and joey03.jpg|thumb|250px|''Macropus giganteus'' (Eastern Grey Kangaroo)]]
| [[Image:Koala climbing tree.jpg|thumb|180px|''Phascolarctos cinereus'' (Koala)]] <br>[[Image:AwesomePossum-AmericanOpossum.jpg|thumb|180px|''Didelphis virginiana'' (Virginia Opossum)]]
|[[Image:Tasdevil large.jpg|thumb|180px|''Sarcophilus harrisii'' (Tasmanian Devil)]]<br> [[Image:SpottedQuoll 2005 SeanMcClean.jpg|thumb|180px|''Dasyurus maculatus'' (Tiger Quoll)]]
|-
|}
'''b. Insecivora'''
This literally means insect eater eater and that is the main connecting feature of the animals in this order. Many of the animals that were once a part of this order have been moved to other orders based on DNA analysis. The order Insectivora has been replaced by the orders Erinaceomorpha and Soricomorphaaa.
{| border ="0"
|-
| [[Image:Igel.JPG|thumb|300px|''Erinaceus europaeus'' (European Hedgehog)]]
| [[Image:Southern short-tailed shrew.jpg|thumb|300px|Blarina carolinensis (Southern Short-tailed Shrew)]]
|
|-
|}
===c. Chiroptera===
:The order of flying mammals commonly called "bats".
Bats are mammals. Though sometimes called "flying rodents", "flying mice," or even mistaken for invertebrate bugs and birds, bats are neither rodents nor arthropods.
There are two suborders of bats:
# Megabat Megachiroptera (megabats)
# Microbat Microchiroptera (microbats/echolocating bats)
Despite the name, not all megabats are larger than microbats. The major distinction between the two suborders is based on other factors:
* Microbats use Animal echolocation, whereas megabats do not (except for ''Rousettus'' and relatives, which do).
* Microbats lack the claw at the second toe of the forelimb.
* The ears of microbats do not form a closed ring, but the edges are separated from each other at the base of the ear.
* Microbats lack underfur; they have only guard hairs or are naked.
Megabats eat fruit, nectar or pollen while microbats eat insects, blood (small quantities of blood of animals), small mammals, and fish, relying on animal echolocation for navigation and finding prey.
{| border ="0"
|-
| [[Image:Big-eared-townsend-fledermaus.jpg|thumb|240px|''Corynorhinus townsendii'' (Townsends's Big-eared Bat)]] <br> [[Image:Pipistrellus pipistrellus01.jpg|thumb|''Pipistrellus pipistrellus'' (Common Pipistrelle)]]
| [[Image:Golden crowned fruit bat.jpg|thumb|300px|''Acerodon jubatus'' (Giant golden-crowned flying fox)]]
| [[Image:Vespertilio murinus 2.jpg|thumb|250px|''Vespertilio murinus'' (Parti-coloured bat)]]
|-
|}
===d. Carnivora ===
Carnivora are meat eaters, and have canine teeth that are especially adapted for this behavior. They tend to have good eye sight, a good sense of smell and a well developed brain, all working together to improve their hunting ability.
The order carnivora is not the only order that has carnivores or hunters. Many other orders have creatures that hunt their prey. For example marsupialia contains the ''Sarcophilus harrisii'' (Tasmanian Devil) and the now extinct ''Thylacinus cynocephalus'' (Tasmanian wolf). Insectivora species hunt, but they primarily hunt and eat insects or worms. Bats hunt insects, and the Vampire bat stalks many mammals to drink blood as they sleep.
It should also be said that there are a number of species included in the order carnivora that are not carnivores. ''Ailurus''s (Pandas) are a good example as they primarily eat bamboo, using their canines to rip the hard bamboo apart. Many or the ursas (bears) will have a diet higher in berries than meat.
The skull of carnivora often has a ridge that runs along the top from front to back. This ridge is where the powerful muscles that work the jaw is attached to provide the maximum force. The Panthera leo (lion) has a jaw force of {{H:title|397.4 pounds force|1768N}}, Pathera tigris (Tiger) {{H:title|342.8 pounds force|1525N}}, Ursus Arctos (Brown Bear) {{H:title|169 pounds force|751N}}, and the Canis lupus (gray wolf) {{H:title|133 pounds force|593N}}. Because the canine teeth are so sharp in carnivora, these forces can result in enough pressure to break bones.
{| border ="0"
|-
|[[Image:Fossa.jpg|thumb|180px|''Cryptoprocta ferox'' (Fossa)]] <br> [[Image:Panthera tigris tigris edited2.jpg|thumb|180px|''Panthera tigris'' (Tiger)]]<br> [[Image:Dwarf mongoose Korkeasaari zoo.jpg|thumb|180px| ''Helogale parvula'' (Dwarf Mongoose)]] <br>
[[Image:Noaa-walrus22.jpg|thumb|180px|''Odobenus rosmarus divergens'' (Pacific Walrus)]]
| [[Image:Spotted hyena2.jpg|thumb|212px|''Crocuta crocuta'' (Spotted Hyena)]] <br> [[Image:Front view of a resting Canis lupus ssp.jpg|thumb|205px|''Canis lupus'' (Gray Wolf)]] <br> [[Image:Sealion052006.JPG|thumb|212px|''Zalophus californianus'' (California Sea Lion)]]
| [[Image:Ailurus fulgens RoterPanda LesserPanda.jpg|250px|thumb|''Ailurus fulgens'' (Red Panda)]] [[Image:Procyon lotor 2.jpg|220px|thumb|''Procyon lotor'' (Racoon)]] <br> [[Image:Grizzlybears ChrisServheenUSFWS.jpg|220px|thumb|''Ursus horribilis'' (Grizzly Bear)]]
|-
|}
===e. Pinnipedia===
An order of carnivorous aquatic mammals that comprises the seals, sea lions, and walrus. They are distinguished by their flipper-like limbs.
===f. Rodentia===
Rodents have two incisors in the upper as well as in the lower jaw which grow continuously and must be kept worn down by gnawing; this is the origin of the name, from the Latin rodere, to gnaw, and dens, dentis, tooth. These teeth are used for cutting wood, biting through the skin of fruit, or for defense. The teeth have enamel on the outside and exposed dentine on the inside, so they self-sharpen during gnawing. Rodents lack canines, and have a space between their incisors and premolars. Nearly all rodents feed on plants, seeds in particular, but there are a few exceptions which eat insects or even fish.
{| border ="0"
|-
| [[Image:Aplodontia.jpg|250px|thumb|''Aplodontia rufa'' (Mountain Beaver)]] <br> [[Image:Eastern Grey Squirrel in St James's Park, London - Nov 2006 edit.jpg|200px|thumb|''Sciurus carolinensis'' (Eastern Gray Squirrel)]] <br> [[Image:Beaver.jpg|200px|thumb|''Castor canadensis'' (American Beaver)]] <br> [[Image:Nacktmull.jpg|200px|thumb|Heterocephalus glaber (Naked Mole Rat)]]
| [[Image:Kangaroo-rat.jpg|200px|thumb|Kangaroo rats]] <br> [[Image:Pocket gopher.jpg|200px|thumb|Pocket Gopher]] <br> [[Image:Rattus rattus05.jpg|200px|thumb|Rattus rattus (Black rat)]] <br> [[Image:Hydrochaeris hydrochaeris.jpg|250px|thumb|''Hydrochoerus hydrochaeris'' (capybara)]]
| [[Image:Gundi Ctenodactylus gundi 051117 2.jpg|200px|thumb|Gundi]] <br> [[Image:Porcupine Berlin Zoo.jpg|200px|thumb|Old World Porcupine]] <br> [[Image:Porcupine NPS11952.jpg|200px|thumb|''Erethizon dorsatum'' (North American Porcupine)]] <br> [[Image:Capromys pilorides.jpg|200px|thumb|Capromys pilorides (Hutia)]]
|-
|}
===g. Lagomorpha===
Lagomorphs differ from rodents in that:
* they have four incisors in the upper jaw (not two as in rodents);
* they will only eat vegetation (unlike rodents, who will eat meat and vegetation)
* they will redigest first-time droppings to obtain the most from their plant diet.
They resemble rodents, however, in that their teeth grow throughout their life, thus necessitating constant chewing to keep them from growing too long.
{| border ="0"
|-
| [[Image:Ochotona princeps.jpg|250px|thumb|''Ochotona princeps'' (American Pika)]] <br> [[Image:Kaninchen.jpg|250px|thumb|''Oryctolagus cuniculus'' (European Rabbit)]]
| [[Image:BRACHYLAGUS IDAHOENSIS.jpg|250px|thumb|''Brachylagus idahoensis'' (Pygmy Rabbit)]] <br> [[Image:Desert cottontail.jpg|250px|thumb|''Sylvilagus audubonii'' (Desert Cottontail)]]
| [[Image:Running hare.jpg|250px|thumb|''Lepus europaeus'' (European Hare)]] <br> [[Image:Tochtli-Rabbit-Conejo.jpg|250px|thumb|''Sylvilagus floridanus'' (Eastern Cottontail)]]
|-
|}
===h. Artiodactyla===
The Artiodactyla are mammals with hooves and which bear most of their weight on an even number of toes. They are sometimes called the ''even-toed ungulates'' (ungulates are hooved animals).
{| border ="0"
|-
| [[Image:Lightmatter unidentified pig-like animal.jpg|thumb|200px|''Potamochoerus porcus'' (Red River Hog)]] <br> [[File:Bactrian Camel Tennoji.jpg|thumb|200px|''Camelus bactrianus'' (Bactrian Camel)]] <br> [[Image:Giraffe standing.jpg|thumb|200px|''Giraffa camelopardalis'' (Giraffe)]] <br> [[Image:Sable bull.jpg|thumb|200px|''Hippotragus niger'' (Sable Antelope)]] <br> [[Image:Lleyn sheep.jpg|thumb|200px|''Ovis aries'' (Domestic sheep)]]
| [[Image:Hippo pod edit.jpg|thumb|200px|''Hippopotamus amphibius'' (Hippopotamus)]] <br> [[Image:Moschustier.jpg|thumb|200px| ''Moschus moschiferus'' (Siberian musk deer)]] <br> [[Image:Okapi2.jpg|thumb|200px|''Okapia johnstoni'' (Okapi)]] <br> [[Image:Budorcas taxicolor01.jpg|thumb|200px|''Budorcas taxicolor'' (Takin)]] <br>
| [[Image:Collared peccary02 - melbourne zoo.jpg|thumb|200px|''Tayassu tajacu'' (Collared Peccary)]] <br> [[Image:White-tailed deer.jpg|200px|thumb|''Odocoileus virginianus'' (White-tailed Deer)]] [[Image:Pronghorn antelope.jpg|thumb|200px| ''Antilocapra americana'' (Pronghorn)]] <br> [[Image:American bison k5680-1.jpg|thumb|200px|''Bison bison'' (Bison)]] <br> [[Image:Blackbuck male female.jpg|thumb|200px|''Antilope cervicapra'' (Blackbuck)]] <br> [[Image:Ovibos moschatus.jpg|thumb|200px|''Ovibos moschatus'' (Muskox)]]
|-
|}
===i. Sirenia===
These slow moving herbivores are named after the Sirens of the Homerian legend of Odysseus.
{| border ="0"
|-
| [[Image:Manatee.jpg|thumb|250px|''Trichechus manatus'' (West Indian Manatee)]]
| [[Image:Dugong.jpg|thumb|250px|''Dugong dugon'' (Dugongs)]]
|-
|}
===j. Cetacea===
This group includes whales, porpoises and dolphins. The word cetus means large sea animal, and is the name of a constellation also known as the whale. These mammals are truly aquatic, and many are quite massive, incapable of walking on land.
See questions 6 and 7 below.
{| border ="0"
|-
| [[Image:Eubalaena japonica drawing.jpg|thumb|250px|''Eubalaena japonica'' (Pacific Northern Right whales)]]
|
| [[Image:Humpback underwater.jpg|thumb|250px|''Megaptera novaeangliae'' (Humpback Whale)]]
|-
|}
==4. List four beneficial mammals and tell how they are beneficial.==
::.Bats eat flying insects
::.Dogs provide assistance to the blind and comfort to the sick.
::.Meerkats eat scorpions and snakes.
::.Cats keep down the rodent population
::.Hyena is a scavenger and also helps keep the environment clean and free of disease
::.Bears carry the nutrients of the salmon they eat into the forest. This actually completes the mineral cycle. Minerals start in the forest and are carried by the rains into the streams, then rivers, and finally into the ocean. The salmon take the minerals from the ocean environment and carry them back to the streams and rivers where they are eaten by the bears. The bears carry these minerals back to the forest when they defecate or die. If this cycle was not complete the forest would eventually not have enough of the nutrients needed to be healthy.
::.When wolves were put back into the ecosystem of Yellowstone, we learned how important one animal is in helping form a healthy ecosystem. Without wolves, the elk could eat and drink without fear, and they had eaten most of the willow along the river. There were very few beaver left. When the wolves came back into the environment, the elk were afraid of certain areas where a wolf might hide and this allowed the willows to grow back. Now there is a growing beaver population.
::Any others that the Pathfinder can think of. Accept all reasonable answers.
==5. List four things mammals do that are harmful.==
::Skunks can make a neighborhood smell pretty bad
::Tigers, lions, bears, wolves and many other carnivorous mammals have killed and sometimes eaten people. They also prey on livestock.
::Groundhogs, prairie dogs, gophers, moles and many other burrowing animals can create tripping hazards for humans, horses and other mammals
::Mice can eat a large amount of grain and reproduce so rapidly that large quantities of food can disappear quite quickly.
::Rats can carry disease such as bubonic plague and leptospirosis
::Deer can carry a disease known as chronic wasting disease
::Beavers can back up streams and flood areas as well as cut down trees that are part of an orchard or yard
::Many mammals can carry rabies or distemper and pass these diseases to humans or pets
::Coyotes in urban settings can eat pets or spread garbage
::Deer, moose and other large mammals are involved in thousands of car accidents every year. Sometimes these accidents include human fatalities.
==6. List four mammals that are completely aquatic and designate their natural range.==
:Salt Water Mammals
::1. Whales
:::a. ''Balaenoptera musculus'' (Blue Whale) lives near the surface of the ocean and can be found in every ocean of the world.
::::[[image:Faroe stamp 402 blue whale (Balaenoptera musculus).jpg|140px]] [[image:cetacea range map Blue Whale.PNG|240px]]
:::b. ''Delphinapterus leucas'' (Beluga Whale) lives in Arctic and Sub-Arctic waters. Some will migrate to warmer waters in the summer and even swim up northern rivers into brackish (partly-salty) waters to hunt.
::::[[image:Belugawhale MMC.jpg|240]] [[image:Cetacea range map Beluga.png|240px]]
:::c. ''Balaena mysticetu'' (Bowhead Whale) lives solely in the Arctic near the surface of the ocean.
::::[[image:Bowheads42.jpg|240px]] [[image:Cetacea range map Bowhead Whale.png|240px]]
:::d. ''Megaptera novaeangliae'' (Humpback Whale) lives in all the oceans in the world except the polar seas. They live mostly in shallow water.
::::[[image:Humpback Whale underwater shot.jpg|240px]] [[image:Cetacea range map Humpback Whale.png|240px]]
::2. Dolphins
:::a. ''Tursiops truncatus'' (Bottlenose Dolphins) live in warm and temperate seas and oceans all over the world.
::::[[Image:Bottlenose Dolphin KSC04pd0178 head only.JPG|240px]] [[Image:Cetacea range map Bottlenose Dolphin.png|240px]]
:::b. ''Orcinus orca'' (Orcas or Killer Whales) live in all the oceans and many of the seas in the world. (Even though this aquatic mammal has the name of "whale" it is in the dolphin (''Delphinidae'') family)
::::[[Image:Killerwhales jumping.jpg|240px]] [[Image:Cetacea range map Orca.PNG|240px]]
:::c. ''Stenella longirostris'' (Spinner Dolphin):
::::1.Eastern Spinner Dolphin (''S. l. orientalis''), found in the tropical eastern Pacific.
::::2.Central American or Costa Rican Spinner Dolphin (''S. l. centroamericana''), also found in the tropical eastern Pacific.
::::3.Gray's or Hawaiian Spinner Dolphin (''S. l. longirostris''), found in the central Pacific around Hawaii but represents a mixed bag of broadly similar subtypes found throughout the world.
::::4.Dwarf Spinner Dolphin (''S. l. roseiventris''), first found in the Gulf of Thailand.
::::[[Image:SpinnerDolphinsoffKauai 1999-03-15.jpg|240px]] [[Image:Cetacea range map Spinner Dolphin.PNG|240px]]
:::d. ''Lagenorhynchus obliquidens'' (Pacific White Sided Dolphin) lives in the Pacific Ocean
::3. Porpoise
:::a. ''Neophocaena phocaenoides'' (Finless Porpoise) lives in the shallow coastal waters of Asia especially around India, China, Indonesia and Japan. A unique fresh water population is found in the Yangtze River. At the western end, their range includes the length of the western coast of India and continues up into the Persian Gulf.
::::[[Image:Cetacea range map Finless Porpoise.PNG|240px]]
:::b. ''Phocoena phocaena'' (Harbour Porpoise) is widespread in cooler coastal waters in the Northern Hemisphere, largely in areas with a mean temperature of about 15°C. In the Atlantic, Harbour Porpoises may be present in a concave band of water running from the coast of western Africa round to the eastern seaboard of the United States, including the coasts of Spain, France, the United Kingdom, Ireland, Norway, Iceland, Greenland and Newfoundland.
::::[[Image:Porpoise touching.jpg|240px]] [[Image:Cetacea range map Harbour Porpoise.PNG|240px]]
:::c. ''Phocoena sinus'' (Vaquita) is a very endangered species that lives only in the Sea of Cortez, the northern part of the Gulf of California.
:::: [[Image:Cetacea range map Vaquita.PNG|240px]]
:::d. ''Phocoenoides dalli'' (Dall's Porpoise) ranges across the north Pacific Ocean from southern California to southern Japan (including the Sea of Japan in the south up to the Bering Sea in the north).
::::[[Image:Dalls Porpoise Back.jpg|240px]] [[Image:Cetacea range map Dall's Porpoise.PNG|240px]]
:Fresh Water Mammals
::1. ''Inia geoffrensis'' (Amazon or Pink Dolphin) lives in the Amazon River and Orinoco River systems.
::::[[Image:Inia.jpg|240px]] [[Image:Cetacea range map Amazon River Dolphin.PNG|240px]]
::2. ''Platanista minor minor'' (Indus River Dolphin or Indian River Dolphin) lives in the Indus River and it's tributaries within Pakistan and NW India.
:::: [[Image:Cetacea_range_map_South_Asian_river_dolphin.png|240px]]
==7. Name the largest mammal in the world and tell where it lives, how it feeds, and what it eats.==
The ''Balaenoptera musculus'' (Blue Whale) is the largest animal on the planet. Specimens have been recorded over {{H:title|98 feet|30 meters}} in length and are estimated to weigh more than {{H:title|99 tons|90 tonnes}}. These whales have been seen in every ocean of the world and feed by filtering the water through their baleen plates in their mouth. Adult whales can eat up to {{H:title|4.4 tons|4 tones}} krill (euphausiids) and copepods each day and the calves can drink up to {{H:title|106 Gallons|400 liters}}/day.
::[[Image:Baleen parts.png]]
These amazing creatures were hunted by man to the brink of extinction. Over 378,000 were killed to provide oil and whale meat. The population of ''B. musculus'' (Blue Whales) is now only about 1% of the total 100 years ago.
==8. List eight species of wild mammals that are in your region. Spend at least 5 hours searching for wild mammals in their natural habitat.==
http://www.enature.com/home/ is a good place to find wild animals in your area. You can search by zip code for mammals, and also any other animals and plants, so it's a useful resource for any Nature honor.
==9. Write or tell a story about "Wild Mammals I Have Observed".==
A good opportunity for a story would obviously be the 5 hour search in the last requirement, if you can't think of another story about wild mammals that you have observed.
==References==
*http://en.wikipedia.org/wiki/Cetacea
*http://en.wikipedia.org/wiki/Bats
*http://en.wikipedia.org/wiki/Perissodactyla
[[{{BOOKCATEGORY|Adventist Youth Honors Answer Book}}|{{SUBPAGENAME}}]]
[[{{BOOKCATEGORY|Adventist Youth Honors Answer Book}}/Completed Honors|{{SUBPAGENAME}}]]
jrl4wmu428qz35eobog56vxknnogrzp
Unicode/Versions
0
104146
4656272
4655721
2026-08-04T18:03:36Z
Alexlatham96
377450
/* New Blocks */
4656272
wikitext
text/x-wiki
{{pp-protected|small=yes}}
{{Unicode page}}
{{TOC right}}
{{refimprove|date=June 2017}}
This page is about each version specification, and the differences between the versions.
== Unicode 1.0 ==
Unicode 1.0 was the first version of Unicode, released October 1991. It encoded 7,094 new characters.
=== “Blocks” ===
This version of Unicode did not formally group characters in blocks. But in comparison with version 2.0, the following “blocks” were available:
U+0000-U+FFFD
51 Blocks
* '''Basic Latin (formerly called ASCII)''' (U+0000-U+007F), containing 128 characters.
* '''Latin-1 Supplement (formerly called Latin1)''' (U+0080-U+00FF), containing 128 characters.
* '''Latin Extended-A''' '''(formerly called European Latin)''' (U+0100-U+017F), containing 127 characters.
* '''Latin Extended-B''' '''(formerly called Extended Latin)''' (U+0180-U+01FF), containing 113 characters.
* '''IPA Extensions''' '''(formerly called Standard Phonetic)''' (U+0250-U+02AF), containing 89 characters.
* '''Spacing Modifier Letters''' '''(formerly called Modifier Letters)''' (U+02B0-U+02FF), containing 57 characters.
* '''Combining Diacritical Marks''' '''(formerly called Generic Diacritical Marks)''' (U+0300-U+036F), containing 66 characters.
* '''Greek and Coptic''' '''(formerly called Greek)''' (U+0370-U+03FF), containing 112 characters.
* '''Cyrillic''' (U+0400-U+04FF), containing 192 characters.
* '''Armenian''' (U+0530-U+058F), containing 84 characters.
* '''Hebrew''' (U+0590-U+05FF), containing 52 characters.
* '''Arabic''' (U+0600-U+06FF), containing 169 characters.
* '''Devanagari''' (U+0900-U+097F), containing 104 characters.
* '''Bengali''' (U+0980-U+09FF), containing 89 characters.
* '''Gurmukhi''' (U+0A00-U+0A7F), containing 74 characters.
* '''Gujarati''' (U+0A80-U+0AFF), containing 75 characters.
* '''Oriya''' (U+0B00-U+0B7F), containing 78 characters.
* '''Tamil''' (U+0B80-U+0BFF), containing 61 characters.
* '''Telugu''' (U+0C00-U+0C7F), containing 80 characters.
* '''Kannada''' (U+0C80-U+0CFF), containing 80 characters.
* '''Malayalam''' (U+0D00-U+0D7F), containing 78 characters.
* '''Thai''' (U+0E00-U+0E7F), containing 92 characters.
* '''Lao''' (U+0E80-U+0EFF), containing 70 characters.
* '''Tibetan''' (U+1000-U+105F), containing 71 characters.
* '''Georgian''' (U+10A0-U+10FF), containing 78 characters.
* '''General Punctuation''' (U+2000-U+206F), containing 67 characters.
* '''Superscripts and Subscripts''' (U+2070-U+209F), containing 28 characters.
* '''Currency Symbols''' (U+20A0-U+20CF), containing 11 characters.
* '''Combining Marks for Symbols''' '''(formerly called Diacritical Marks for Symbols)''' (U+20D0-U+20FF), containing 18 characters.
* '''Letterlike Symbols''' (U+2100-U+214F), containing 57 characters.
* '''Number Forms''' (U+2150-U+218F), containing 48 characters.
* '''Arrows''' (U+2190-U+21FF), containing 91 characters.
* '''Mathematical Operators''' (U+2200-U+22FF), containing 242 characters.
* '''Miscellaneous Technical''' (U+2300-U+23FF), containing 43 characters.
* '''Control Pictures''' '''(formerly called Pictures for Control Codes)''' (U+2400-U+243F), containing 37 characters.
* '''Optical Character Recognition''' (U+2440-U+245F), containing 11 characters.
* '''Enclosed Alphanumerics''' (U+2460-U+24FF), containing 139 characters.
* '''Box Drawing''' '''(formerly called Form and Chart Components)''' (U+2500-U+257F), containing 128 characters.
* '''Block Elements''' '''(formerly called Blocks)''' (U+2580-U+259F), containing 22 characters.
* '''Geometric Shapes''' (U+25A0-U+25FF), containing 79 characters.
* '''Miscellaneous Symbols''' '''(formerly called Miscellaneous Dingbats)''' (U+2600-U+26FF), containing 106 characters.
* '''Dingbats''' '''(formerly called Zapf Dingbats)''' (U+2700-U+27BF), containing 160 characters.
* '''CJK Symbols and Punctuation''' (U+3000-U+303F), containing 56 characters.
* '''Hiragana''' (U+3040-U+309F), containing 90 characters.
* '''Katakana''' (U+30A0-U+30FF), containing 90 characters.
* '''Bopomofo''' (U+3100-U+312F), containing 40 characters.
* '''Hangul Compatibility Jamo (formerly called Hangul Elements)''' (U+3130-U+318F), containing 94 characters.
* '''Kanbun (formerly called CJK Miscellaneous)''' (U+3190-U+31FF), containing 16 characters.
* '''Enclosed CJK Letters and Months''' '''(formerly called''' '''Enclosed CJK Letters and Ideographs)''' (U+3200-U+32FF), containing 191 characters.
* '''CJK Compatibility''' '''(formerly called CJK Squared Words for U+3300-U+337F and CJK Squared Abbreviations for U+3380-33FF)''' (U+3300-U+33FF), containing 187 characters.
* '''Hangul''' (U+3400-U+3D2D), containing 2,350 characters.
* '''Private Use Area''' (U+E000-U+FDFF), reserved for 5,632 characters.
* '''CJK Compatibility Forms''' '''(formerly called CNS 11643 Compatibility)''' (U+FE30-U+FE4F), containing 28 characters.
* '''Small Form Variants''' '''(formerly called Small Variants)''' (U+FE50-U+FE6F), containing 26 characters.
* '''Arabic Presentation Forms-B''' '''(formerly called Basic Glyphs for Arabic Language)''' (U+FE70-U+FEFF), containing 140 characters.
* '''Halfwidth and Fullwidth Forms''' '''(formerly called Halfwidth and Fullwidth Variants)''' (U+FF00-U+FFEF), containing 216 characters.
* '''Specials''' '''(formerly called Special)''' (U+FFF0-U+FFFF), containing 1 character.
== Unicode 1.0.1 ==
Unicode 1.0.1 was released June 1992. It encoded 28,292 characters, adding 21,204 new characters and removing 6 characters, for a net increase of 21,198 characters.
=== New blocks ===
* '''CJK Unified Ideographs''' (U+4E00-U+9FFF), containing 20,902 Han Ideographs for Chinese, Japanese and Korean, was added.
* '''CJK Compatibility Ideographs''' (U+F900-U+FAFF), containing 302 Han Ideographs for compatibility with existing character sets, was added.
=== Removed characters ===
* Letters Ka and Kha with Ogonek (total 4 characters) were removed from '''Cyrillic'''. (U+04C5-U+04C6 and U+04C9-U+04CA)
* APL Compose Operator and APL Out (total 2 characters) were removed from '''Miscellaneous Technical'''. (U+2300-U+2301)
=== Rearranged characters ===
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
*'''Circled Katakana:''' ''The characters well be arranged in modern order: e.g., A, I, U, E, O, KA, KI'' (U+32D0-U+32FE)
*'''Basic Glyphs For Arabic Language:''' ''The character shapes will be arranged in different order: Isolate, Final, Initial and Medial'' (U+FE80-FEFC)
=== Characters with semantics changed ===
*'''Zero Width Non-Joiner''' [ZWNJ] (U+20DC)
*'''Zero Width Joiner''' [ZWJ] (U+20DD)
== Unicode 1.1 ==
Unicode 1.1 was released June 1993. It encoded 34,168 characters, adding 5,969 new characters and removing 93 characters, for a net increase of 5,876 characters. It finalized the long anticipated Han Unification.
=== New blocks ===
* '''Hangul Jamo''' (U+1100-U+11FF), containing 240 ''jamo'' for the Hangul script, was added.
* '''Latin Extended Additional''' (U+1E00-U+1EFF), containing 245 precomposed characters for transliteration and Vietnamese, was added.
* '''Greek Extended''' (U+1F00-U+1FFF), containing 233 precomposed characters for polytonic Greek, was added.
* '''Hangul Supplementary-A''' (U+3D2E-U+44B7), containing 1,930 precomposed syllables for the Hangul script, was added.
* '''Hangul Supplementary-B''' (U+44B8-U+4DFF), containing 2,376 precomposed syllables for the Hangul script, was added.
* '''Alphabetic Presentation Forms''' (U+FB00-U+FB4F), containing 57 precomposed characters and ligatures, was added.
* '''Arabic Presentation Forms-A''' (U+FB50-U+FDFF), containing 593 combinations of Arabic letters, was added.
* '''Combining Half Marks''' (U+FE20-U+FE2F), containing 4 halves of diacritical marks, was added.
=== Extended blocks ===
* The long S (ſ) (total 1 character) was added to '''Latin Extended-A'''. (U+017F)
* The Hungarian Dz, characters for transliteration purposes and precomposed characters with double grave and inverted breve (total 35 characters) were added to '''Latin Extended-B''' (U+01F1-U+01F5 and U+01FA-U+0217). The block was expanded from (U+0180-U+01FF) to (U+0180-U+024F)
* Diacritics for polytonic Greek and double width diacritics (total 6 characters) were added to '''Combining Diacritical Marks'''. (U+0342-U+0345 and U+0360-U+0361)
* Compatibility character now deprecated, Ano Teleia, and other characters (total 5 characters) were added to '''Greek and Coptic''' (U+0374-U+0375, U+037A, U+037E and U+0387).
* Additional characters for non-Slavic languages (total 38 characters) were added to '''Cyrillic'''. (U+04D0-U+04EB, U+04EE-U+04F5 and U+04F8-U+04F9)
* A ligature of Ech and Yiwn (և) (total 1 character) was added to '''Armenian'''. (U+0587)
* One deprecated compatibility character and several characters for biblical texts (total 25 characters) were added to '''Arabic'''. (U+066D and U+06D6-U+06ED)
* A sign Virama (total 1 character) was added to '''Gurmukhi''' (U+0A4D).
* Letters Candra O and E (total 3 characters) were added to '''Gujarati'''. (U+0A8D, U+0A91 and U+0AC9)
* An Ai Length mark (total 1 character) was added to '''Oriya'''. (U+0B56)
* An undertie, a pair of brackets and six formatting characters now deprecated (total 9 characters) were added to '''General Punctuation'''. (U+203F, U+2045-U+2046 and U+206A-U+206F)
* Some additional symbols and the complete set of APL functional symbols (total 79 characters) were added to '''Miscellaneous Technical'''. (U+2300 and U+232D-U+237A)
* A large circle (◯) (total 1 character) was added to '''Geometric Shapes'''. (U+25EF)
* The ideographic telegraph line feed separator symbol (〷) (total 1 character) was added to '''CJK Symbols and Punctuation'''. (U+3037)
* Four Katakana letters not in use since 1945 (total 4 characters) were added to '''Katakana'''. (U+30F7-U+30FA)
* Ideographic telegraph symbols for the twelve months (total 12 characters) were added to '''Enclosed CJK Letters and Months'''. (U+32C0-U+32CB)
* Ideographic telegraph symbols for hours and days and six additional measure units (total 62 characters) were added to '''CJK Compatibility'''. (U+3358-U+3376 and U+33E0-U+33FE)
* Some more space (total 2,304 characters) was added to the '''Private Use Area'''.
* Seven halfwidth geometric shapes (total 7 characters) were added to '''Halfwidth and Fullwidth Forms'''. (U+FFE8-U+FFEE)
=== Removed blocks ===
* '''Tibetan''', containing 71 letters for the Tibetan script, was removed from the Unicode standard.
=== Removed characters ===
* A total of 10 characters were removed from '''Greek and Coptic'''. (U+0370-U+0372, U+03D7-U+03D9, U+03DB, U+03DD, U+03DF, and U+03E1)
* Point Varika (total 1 character) was removed from ''Hebrew''. (U+05F5)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Thai'''. (U+0E70-U+0E74)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Lao'''. (U+0EF0-U+0EF4)
* An Ideographic Ditto Mark (total 1 character) was removed from '''CJK Symbols and Punctuation''' (U+3004) and merged with CJK Unified Ideograph-4EDD.
=== Rearranged characters ===
* Greek character U+03F3 was changed from Spacing Tonos to Letter Yot.
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
== Unicode 2.0 ==
Unicode 2.0 was released July 1996. It encoded 38,885 characters, adding 11,373 new characters and removing 6,656 characters, for a net increase of 4,717 characters. This was the first Unicode version to reserve blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Hangul Syllables''' (U+AC00-U+D7AF), containing 11,172 precomposed syllables for the Hangul script, was added.
* '''High Surrogates''' (U+D800-U+DB7F), setting aside 896 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''High Private Use Surrogates''' (U+DB80-U+DBFF), setting aside 128 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Low Surrogates''' (U+DC00-U+DFFF), setting aside 1,024 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Supplementary Private Use Area-A''' (U+F0000-U+FFFFF), reserving 65,534 characters for private use, was added.
* '''Supplementary Private Use Area-B''' (U+100000-U+10FFFF), reserving 65,534 characters for private use, was added.
=== Reinstated blocks ===
* '''Tibetan''' (U+0F00-U+0FFF), now containing 168 characters for the Tibetan script including religious signs, was readded.
=== Removed blocks ===
* '''Hangul''', containing 2,350 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-A''', containing 1,930 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-B''', containing 2,376 precomposed syllables for the Hangul script, was removed from the Unicode standard.
=== Extended blocks ===
* Cantillation marks for use in religious texts (total 31 characters) were added to '''Hebrew'''. (U+0591-U+05A1, U+05A3-U+05AF and U+05C4)
* A long S with Dot Above (total 1 character) was added to '''Latin Extended Additional'''. (U+1E9B)
* A Vietnamese Dong sign (total 1 character) was added to '''Currency Symbols'''. (U+20AB)
== Unicode 2.1 ==
Unicode 2.1 was released May 1998. It encoded 38,887 characters, adding only 2 new characters.
=== Extended blocks ===
* A Euro sign (total 1 character) was added to '''Currency Symbols'''. (U+20AC)
* An Object Replacement Character (total 1 character) was added to '''Specials'''. (U+FFFC)
== Unicode 3.0 ==
Unicode 3.0 was released September 1999. It was a big update and encoded 49,194 characters, adding 10,307 new characters.
=== New blocks ===
* '''Syriac''' (U+0700-U+074F), containing 71 characters used for writing in Syriac script, was added.
* '''Thaana''' (U+0780-U+07BF), containing 49 characters used for writing in Thaana script, was added.
* '''Sinhala''' (U+0D80-U+0DFF), containing 80 characters for the Sinhala script, was added.
* '''Myanmar''' (U+1000-U+109F), containing 78 characters for the Burmese script, was added.
* '''Ethiopic''' (U+1200-U+137F), containing 345 syllables and punctuation marks for the Ethiopic script, was added.
* '''Cherokee''' (U+13A0-U+13FF), containing 85 syllables for the Cherokee script, was added.
* '''Unified Canadian Aboriginal Syllabics''' (U+1400-U+167F), containing 630 syllables and punctuation marks for writing in indigenous languages of Canada, was added.
* '''Ogham''' (U+1680-U+169F), containing 29 characters for the ancient Ogham script, was added.
* '''Runic''' (U+16A0-U+16FF), containing 81 characters for the Germanic runes, was added.
* '''Khmer''' (U+1780-U+17FF), containing 103 characters for the Khmer script, was added.
* '''Mongolian''' (U+1800-U+18AF), containing 155 characters for the classical Mongolian script, was added.
* '''Braille Patterns''' (U+2800-U+28FF), containing 256 Braille letters, was added.
* '''CJK Radicals Supplement''' (U+2E80-U+2EFF), containing 115 non-Kangxi radicals, was added.
* '''Kangxi Radicals''' (U+2F00-U+2FDF), containing 214 radicals from the Kangxi dictionary, was added.
* '''Ideographic Description Characters''' (U+2FF0-U+2FFF), containing 12 characters used to describe a Han ideograph not available in the font, was added.
* '''Bopomofo Extended''' (U+31A0-U+31BF), containing 24 characters used for phonetic transcription of minority languages of Taiwan, was added.
* '''CJK Unified Ideographs Extension A''' (U+3400-U+4DBF), containing 6,582 additional Han Ideographs, was added.
* '''Yi Syllables''' (U+A000-U+A48F), containing 1,165 syllables of the modern Yi script, was added.
* '''Yi Radicals''' (U+A490-U+A4CF), containing 50 radicals of Yi Syllables, was added.
=== Extended blocks ===
* Additional precomposed characters, letters and capital letters of lowercase-only letters (total 30 characters) were added to '''Latin Extended-B'''. (U+01F6-U+01F9, U+0218-U+021F and U+0222-U+0233)
* Extensions for disordered speech (total 5 characters) were added to '''IPA Extensions'''. (U+02A9-U+02AD)
* Some additional modifier letters (total 6 characters) were added to '''Spacing Modifier Letters'''. (U+02DF and U+02EA-U+02EE)
* Additional combining diacritics for IPA (total 10 characters) were added to '''Combining Diacritical Marks'''. (U+0346-U+034E and U+0362)
* Lowercase versions of archaic letters and the Kai symbol (total 5 characters) were added to '''Greek and Coptic'''. (U+03D7, U+03DB, U+03DD, U+03DF and U+03E1)
* Nonstandard letters for Macedonian, combining numeral signs and three letters for Kildin Sami (total 12 characters) were added to '''Cyrillic'''. (U+0400, U+040D, U+0450, U+045D, U+0488-U+0489, U+048C-U+048F and U+04EC-U+04ED)
* A Hyphen (total 1 character) was added to '''Armenian'''. (U+058A)
* Combining hamza and maddah and nine additional Arabic characters (total 12 characters) were added to '''Arabic'''. (U+0653-U+0655, U+06B8-U+06B9, U+06BF, U+06CF and U+06FA-U+06FE)
* Additional letters and religious symbols (total 25 characters) were added to '''Tibetan'''. (U+0F6A, U+0F96, U+0FAE-U+0FB0, U+0FB8, U+0FBA-U+0FBC, U+0FBE-U+0FCC and U+0FCF)
* A narrow no-break space and 6 additional punctuation marks (total 7 characters) were added to '''General Punctuation'''. (U+202F and U+2048-U+204D)
* The Kip, Tugrik and Drachma sign (total 3 characters) were added to '''Currency Symbols'''. (U+20AD-U+20AF)
* An enclosing screen and an enclosing key (total 2 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E2-U+20E3)
* The information symbol and a rotated Q (total 2 characters) were added to '''Letterlike Symbols'''. (U+2139-U+213A)
* A mirrored Roman capital numeral hundred (Ↄ) (total 1 character) was added to '''Number Forms'''. (U+2183)
* Some additional arrows (total 9 characters) were added to '''Arrows'''. (U+21EB-U+21F3)
* Some additional technical symbols, including common keys on a 101 keyboard (total 33 characters) were added to '''Miscellaneous Technical'''. (U+2301, U+237B and U+237D-U+239A)
* Two additional control pictures (total 2 characters) were added to '''Control Pictures'''. (U+2425-U+2426)
* Squares and circles with quadrants (total 8 characters) were added to '''Geometric Shapes'''. (U+25F0-U+25F7)
* Two Syriac crosses and a signature mark (total 3 characters) were added to '''Miscellaneous Symbols'''. (U+2619 and U+2670-U+2671)
* Three Hangzhou numerals and a variation indicator (total 4 characters) were added to '''CJK Symbols and Punctuation'''. (U+3038-U+303A and U+303E)
* A ligature Yod with Hiriq (יִ) (total 1 character) was added to '''Alphabetic Presentation Forms'''. (U+FB1D)
* Three additional control characters for ruby markup (total 3 characters) were added to '''Specials'''. (U+FFF9-U+FFFB)
== Unicode 3.1 ==
Unicode 3.1 was released March 2001. It encoded 94,140 characters, adding 44,946 new characters, and mainly focused on blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Old Italic''' (U+10300-U+1032F), containing 35 letters for the Etruscan script, was added.
* '''Gothic''' (U+10330-U+1034F), containing 27 letters for the Gothic script, was added.
* '''Deseret''' (U+10400-U+1044F), containing 76 letters for the constructed Deseret script, was added.
* '''Byzantine Musical Symbols''' (U+1D000-U+1D0FF), containing 246 symbols for musical notation in Byzantine, was added.
* '''Musical Symbols''' (U+1D100-U+1D1FF), containing 219 characters for current musical notation, was added.
* '''Mathematical Alphanumeric Symbols''' (U+1D400-U+1D7FF), containing 991 Latin and Greek letters in serif, sans-serif, bold, italic, double-struck, script and Fraktur/Blackletter, was added.
* '''CJK Unified Ideographs Extension B''' (U+20000-U+2A6DF), containing 42,711 additional Chinese Ideographs, was added.
* '''CJK Compatibility Ideographs Supplement''' (U+2F800-U+2FA1F), containing 542 additional Chinese Ideographs for compatibility purposes, was added.
* '''Tags''', containing 97 language tags, was added. (U+E0000-U+E007F)
=== Extended noncharacters ===
* The Noncharacters range: U+FDD0..U+FDEF were added to '''Arabic Presentation Forms-A'''.
=== Extended blocks ===
* The capital Theta symbol and the Lunate Epsilon symbol (total 2 characters) were added to '''Greek and Coptic'''. (U+03F4-U+03F5)
=== Characters and Scripts Under Investigation or Rejected ===
* Khmer Sign Laak Was Rejected. (U+17DD) From '''Khmer.'''
* Georgian Letter U-Brjuu Was Rejected. From '''Georgian.'''
== Unicode 3.2 ==
Unicode 3.2 was released March 2002. It encoded 95,156 characters, adding 1,016 new characters.
=== New blocks ===
* '''Cyrillic Supplementary (now Cyrillic Supplement)''' (U+0500-U+052F), containing 16 characters used for the Komi language, was added.
* '''Tagalog''' (U+1700-U+171F), containing 20 characters for the Baybayin script, was added.
* '''Hanunoo''' (U+1720-U+173F), containing 23 characters and punctuation for the Hanunó'o script, was added.
* '''Buhid''' (U+1740-U+175F), containing 20 characters for the Buhid script, was added.
* '''Tagbanwa''' (U+1760-U+177F), containing 18 characters for the Tagbanwa script, was added.
* '''Miscellaneous Mathematical Symbols-A''' (U+27C0-U+27EF), containing 28 symbols used in math notation, was added.
* '''Supplemental Arrows-A''' (U+27F0-U+27FF), containing 16 additional arrows, was added.
* '''Supplemental Arrows-B''' (U+2900-U+297F), containing 128 special arrows, was added.
* '''Miscellaneous Mathematical Symbols-B''' (U+2980-U+29FF), containing 128 additional mathematical symbols, was added.
* '''Supplemental Mathematical Operators''' (U+2A00-U+2AFF), containing 256 additional mathematical operators, was added.
* '''Katakana Phonetic Extensions''' (U+31F0-U+31FF), containing 16 Katakana letters used for Ainu, was added.
* '''Variation Selectors''' (U+FE00-U+FE0F), containing 16 symbols used for indicating variations, was added.
=== Extended blocks ===
* A capital letter N with Long Right Leg (total 1 character) was added to '''Latin Extended-B'''. (U+0220)
* The combining grapheme joiner and combining Latin letters used in medieval texts (total 14 characters) were added to '''Combining Diacritical Marks'''. (U+034F and U+0363-U+036F)
* The Qoppa and a reversed lunate epsilon symbol (total 3 characters) were added to '''Greek and Coptic'''. (U+03D8-U+03D9 and U+03F6)
* Four additional letters used for the Kildin Sami language (total 8 characters) were added to '''Cyrillic'''. (U+048A-U+048B, U+04C5-U+04C6, U+04C9-U+04CA and U+04CD-U+04CE)
* A dotless Beh and a dotless Qaf (total 2 characters) were added to '''Arabic'''. (U+066E-U+066F)
* A Letter for Addu dialect (total 1 character) was added to '''Thaana'''. (U+07B1)
* The letters Yn and Elifi (total 2 characters) were added to '''Georgian'''. (U+10F7-U+10F8)
* Some additional punctuation marks and control characters (total 12 characters) were added to '''General Punctuation'''. (U+2047, U+204E-U+2052, U+2057 and U+205F-U+2063)
* A superscript letter I (total 1 character) was added to '''Superscripts and Subscripts'''. (U+2071)
* German Penny and Peso sign (total 2 characters) were added to '''Currency Symbols'''. (U+20B0-U+20B1)
* Some additional combining characters (total 7 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E4-U+20EA)
* Some double-struck and reversed/turned letters (total 15 characters) were added to '''Letterlike Symbols'''. (U+213D-U+214B)
* Some additional arrows (total 12 characters) were added to '''Arrows'''. (U+21F4-U+21FF)
* Some additional mathematical operators (total 14 characters) were added to '''Mathematical Operators'''. (U+22F2-U+22FF)
* Variable-width and additional symbols (total 53 characters) were added to '''Miscellaneous Technical'''. (U+237C and U+239B-U+23CE)
* Black and double circled numerals (total 20 characters) were added to '''Enclosed Alphanumerics'''. U+24EB-U+24FE)
* Quadrant elements (total 10 characters) were added to '''Block Elements'''. (U+2596-U+259F)
* Some additional triangles and squares (total 8 characters) were added to '''Geometric Shapes'''. (U+25F8-U+25FF)
* Shogi pieces ,recycling symbols, dices and dotted circles (total 24 characters) were added to '''Miscellaneous Symbols'''. (U+2616-U+2617, U+2672-U+267D and U+2680-U+2689)
* Additional parenthesis (total 14 characters) were added to '''Dingbats'''. (U+2768-U+2775)
* Three additional marks (total 3 characters) were added to '''CJK Symbols and Punctuation'''. (U+303B-U+303D)
* A digraph and two additional characters (total 3 characters) were added to '''Hiragana'''. (U+3095-U+3096 and U+309F)
* A digraph and a double hyphen (total 2 characters) were added to '''Katakana'''. (U+30A0 and U+30FF)
* Additional circled numerals (total 30 characters) were added to '''Enclosed CJK Letters and Months'''. (U+3251-U+325F and U+32B1-U+32BF
* Five missing radicals (total 5 characters) were added to '''Yi Radicals'''. (U+A4A2-U+A4A3, U+A4B4, U+A4C1, U+A4C5)
* Additional compatibility characters (total 59 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA30-U+FA6A)
* A Rial sign (total 1 character) was added to '''Arabic Presentation Forms-A'''. (U+FDFC)
* Two sesame dots (total 2 characters) were added to '''CJK Compatibility Forms'''. (U+FE45-U+FE46)
* A tail fragment (total 1 character) was added to '''Arabic Presentation Forms-B'''. (U+FE73)
* A pair of double parenthesis (total 2 characters) was added to '''Halfwidth and Fullwidth Forms'''. (U+FF5F-U+FF60)
== Unicode 4.0 ==
Unicode 4.0 was released April 2003. It encoded 96,382 characters, adding 1,226 new characters.
=== New blocks ===
* '''Limbu''', containing 66 characters for the Limbu abugida, was added.
* '''Tai Le''', containing 35 letters for the Tai Le script, was added.
* '''Khmer Symbols''', containing 32 symbols for the lunar calendar, was added.
* '''Phonetic Extensions''', containing 108 letters used in phonetic transcription, was added.
* '''Miscellaneous Symbols and Arrows''', containing 14 additional arrows, was added.
* '''Yijing Hexagram Symbols''', containing 64 hexagrams, was added.
* '''Linear B Syllabary''', containing 88 syllables of the ancient Linear B script, was added.
* '''Linear B Ideograms''', containing 123 ideograms of the ancient Linear B script, was added.
* '''Aegean Numbers''', containing 57 numerals used in the Aegean area, was added.
* '''Ugaritic''', containing 31 characters used in Ugaritic cuneiform, was added.
* '''Shavian''', containing 48 letters used for the artificial Shavian script, was added.
* '''Osmanya''', containing 40 characters used in the artificial Osmanya script, was added.
* '''Cypriot Syllabary''', containing 55 characters formerly used on Cyprus, was added.
* '''Tai Xuan Jing Symbols''', containing 87 symbols of Tai Xuan Jing, was added.
* '''Variation Selectors Supplement''', containing 240 additional variation selectors, was added.
=== Extended blocks ===
* Letters with curl used in Sinology (total 4 characters) were added to '''Latin Extended-B'''.
* Former IPA letters (total 2 characters) were added to '''IPA Extensions'''.
* Some additional characters (total 17 characters) were added to '''Spacing Modifier Letters'''.
* Additional combining double-width diacritics and diacritics corresponding to their spacing equivalent (total 11 characters) were added to '''Combining Diacritical Marks'''.
* The archaic letters Sho and San and the capital Lunate Sigma (total 5 characters) were added to '''Greek and Coptic'''.
* Some additional markers, biblical signs, and letters with inverted V (total 19 characters) were added to '''Arabic'''.
* Letters used for foreign words from Persian and Sogdian (total 6 characters) were added to '''Syriac'''.
* The short A (ऄ) (total 1 character) was added to '''Devanagari'''.
* The Avagraha sign (ঽ) (total 1 character) was added to '''Bengali'''.
* The Adak Bindi and Visarga signs (total 2 characters) were added to '''Gurmukhi'''.
* The vocalic l and ll and the Rupee sign (total 5 characters) were added to '''Gujarati'''.
* The letters Va and Wa (total 2 characters) were added to '''Oriya'''.
* Additional signs for date and finance environments (total 8 characters) were added to '''Tamil'''.
* The Nukta and Avagraha signs (total 2 characters) were added to '''Kannada'''.
* Some symbols and signs (total 11 characters) were added to '''Khmer'''.
* An inverted undertie and a swung dash (total 2 characters) were added to '''General Punctuation'''.
* The facsimile sign (℻) (total 1 character) was added to '''Letterlike Symbols'''.
* The eject symbol and a vertical line (total 2 characters) were added to '''Miscellaneous Technical'''.
* A black circled digit zero (⓿) (total 1 character) was added to '''Enclosed Alphanumerics'''.
* Monograms and diagrams, flags, warning and weather symbols and a cup of tea (total 12 characters) were added to '''Miscellaneous Symbols'''.
* Additional parenthesized and circled Korean characters and supplemental signs (total 9 characters) were added to '''Enclosed CJK Letters and Months'''.
* Additional measure units (total 7 characters) were added to '''CJK Compatibility'''.
* An additional Arabic sign (﷽) (total 1 character) was added to '''Arabic Presentation Forms-A'''.
* A pair of vertical parenthesis (total 2 characters) was added to '''CJK Compatibility Forms'''.
* The letters Oi and Ew (total 4 characters) were added to '''Deseret'''.
* A small script l (ℓ) (total 1 character) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 4.1 ==
Unicode 4.1 was released March 31, 2005. It encoded 97,655 characters, adding 1,273 new characters.
=== New blocks ===
* '''Arabic Supplement''', containing 30 characters for various languages written with the Arabic script, was added.
* '''Ethiopic Supplement''', containing 26 characters and signs for Sebatbeit, was added.
* '''New Tai Lue''', containing 80 characters for the New Tai Lue script, was added.
* '''Buginese''', containing 30 characters for the Lontara script, was added.
* '''Phonetic Extensions Supplement''', containing 64 additional letters for phonetic transcription, was added.
* '''Combining Diacritical Marks Supplement''', containing 4 additional diacritics, was added.
* '''Glagolitic''', containing 94 characters for the Glagolitic script, was added.
* '''Coptic''', containing 114 characters for the Coptic script, was added.
* '''Georgian Supplement''', containing 38 Nuskhuri letters, was added.
* '''Tifinagh''', containing 55 characters for the Tifinagh script, was added.
* '''Ethiopic Extended''', containing 79 additional Ethiopic syllables, was added.
* '''Supplemental Punctuation''', containing 26 additional punctuation marks, was added.
* '''CJK Strokes''', containing 16 strokes for Han Ideographs, was added.
* '''Modifier Tone Letters''', containing 23 letters for Chinese tones, was added.
* '''Syloti Nagri''', containing 44 characters for the Syloti Nagri abugida, was added.
* '''Vertical Forms''', containing 10 punctuation marks suited for vertical text, was added.
* '''Ancient Greek Numbers''', containing 75 numerals and signs used in Ancient Greek, was added.
* '''Old Persian''', containing 50 characters for Old Persian cuneiform, was added.
* '''Kharoshthi''', containing 65 characters for the Kharoshthi abugida, was added.
* '''Ancient Greek Musical Notation''', containing 70 musical signs used in Ancient Greek, was added.
=== Extended blocks ===
* Letters for Sencoten, digraphs, letters with swash tail and other additions (total 11 characters) were added to '''Latin Extended-B'''.
* Additional diacritics for transliteration (total 5 characters) were added to '''Combining Diacritical Marks'''.
* Rho with stroke, reversed and dotted Lunate Sigma (total 4 characters) were added to '''Greek and Coptic'''.
* Ghe with descender (Ӷ) (total 2 characters) was added to '''Cyrillic'''.
* An additional biblical mark and some punctuation marks (total 4 characters) were added to '''Hebrew'''.
* Additional biblical marks, punctuation marks and the Afghani sign (total 8 characters) were added to '''Arabic'''.
* A glottal stop (ॽ) (total 1 character) was added to '''Devanagari'''.
* The Khanda Ta letter (ৎ) (total 1 character) was added to '''Bengali'''.
* The letter Sha and the digit zero (total 2 characters) were added to '''Tamil'''.
* Two marks used in Bhutan (total 2 characters) were added to '''Tibetan'''.
* Two letters and a modifier letter (total 3 characters) were added to '''Georgian'''.
* Some additional syllables (total 11 characters) were added to '''Ethiopic'''.
* Additional phonetic symbols (total 20 characters) were added to '''Phonetic Extensions'''.
* A flower and dot punctuation marks (total 9 characters) were added to '''General Punctuation'''.
* Additional subscript letters (total 5 characters) were added to '''Superscripts and Subscripts'''.
* The Guarani, Austral, Hryvnia and Cedi signs (total 4 characters) were added to '''Currency Symbols'''.
* A combining long double solidus (total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* The per sign and a double-struck letter Pi (total 2 characters) were added to '''Letterlike Symbols'''.
* Metrical and electrical signs (total 11 characters) were added to '''Miscellaneous Technical'''.
* Additional gender and map symbols (total 30 characters) were added to '''Miscellaneous Symbols'''.
* Some additional mathematical symbols (total 7 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional arrows and squares (total 6 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* A circled Hangul character (㉾) (total 1 character) was added to '''Enclosed CJK Letters and Months'''.
* Additional Han Ideographs (total 22 characters) were added to '''CJK Unified Ideographs'''.
* Additional Compatibility Ideographs (total 106 characters) were added to '''CJK Compatibility Ideographs'''.
* Italic dotless small i and j (total 2 characters) were added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.0 ==
Unicode 5.0 was released July 14, 2006. It encoded 99,024 characters, adding 1,369 new characters.
=== New blocks ===
* '''N'Ko''', containing 59 characters for the N'Ko script, was added.
* '''Balinese''', containing 121 characters and musical signs for the Balinese abugida, was added.
* '''Latin Extended-C''', containing 17 letters for various languages, was added.
* '''Latin Extended-D''', containing 2 characters for UPA, was added.
* '''Phags-pa''', containing 56 characters for the Phags-pa script, was added.
* '''Phoenician''', containing 27 letters and numerals for the Phoenician script, was added.
* '''Cuneiform''', containing 879 signs for Sumero-Akkadian Cuneiform, was added.
* '''Cuneiform Numbers and Punctuation''', containing 103 numerals and punctuation signs for Sumero-Akkadian Cuneiform, was added.
* '''Counting Rod Numerals''', containing 18 numerals used with counting rods, was added.
=== Extended blocks ===
* Various letters used mainly for aboriginal languages (total 14 characters) were added to '''Latin Extended-B'''.
* Lowercase lunate sigma symbols (total 3 characters) were added to '''Greek and Coptic'''.
* Lowercase palochka and 3 letters used in Nivkh (total 7 characters) were added to '''Cyrillic'''.
* Two letters used in Khanty and other languages (total 4 characters) were added to '''Cyrillic Supplement'''.
* A specific point meant for Vav (total 1 character) was added to '''Hebrew'''.
* Four letters used in Sindhi (total 4 characters) were added to '''Devanagari'''.
* Four letters used in Sanskrit (total 4 characters) were added to '''Kannada'''.
* Additional IPA diacritics (total 9 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Four combining arrows (total 4 characters) were added to '''Combining Diacritical Marks for Symbols'''.
* A danish symbol and a lowercase turned F (total 2 characters) were added to '''Letterlike Symbols'''.
* A lowercase reversed C (ↄ) (total 1 character) was added to '''Number Forms'''.
* Vertical parenthesis, geometric forms and electrical symbols (total 12 characters) were added to '''Miscellaneous Technical'''.
* A neuter symbol (⚲) (total 1 character) was added to '''Miscellaneous Symbols'''.
* Four additional mathematical symbols (total 4 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional squares, pentagons and hexagons (total 11 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Four additional tone letters used in Chinantec (total 4 characters) were added to '''Modifier Tone Letters'''.
* Bold Digamma (𝟊/'''Ϝ''') (total 2 characters) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.1 ==
Unicode 5.1 was released April 4, 2008. It encoded 100,648 characters, adding 1,624 new characters.
=== New blocks ===
* '''Sundanese''', containing 55 letters for Sundanese script, was added.
* '''Lepcha''', containing 74 letters for Lepcha script, was added.
* '''Ol Chiki''', containing 48 letters for Ol Chiki script, was added.
* '''Cyrillic Extended-A''', containing 32 letters for combining Cyrillic letters, was added.
* '''Vai''', containing 300 letters for Vai script, was added.
* '''Cyrillic Extended-B''', containing 78 letters for additional Cyrillic characters, was added.
* '''Saurashtra''', containing 81 letters for Saurashtra script, was added.
* '''Kayah Li''', containing 48 letters for Kayah languages, was added.
* '''Rejang''', containing 37 letters for Rejang script, was added.
* '''Cham''', containing 83 letters for Cham script, was added.
* '''Ancient Symbols''', containing 12 characters for weights and measures and other Ancient symbols, was added.
* '''Phaistos Disc''', containing 46 hieroglyphs for Phaistos, was added.
* '''Lycian''', containing 29 letters for Lycian script, was added.
* '''Carian''', containing 49 letters for Carian script, was added.
* '''Lydian''', containing 27 letters for Lydian script, was added.
* '''Mahjong Tiles''', containing 44 mahjong tiles, was added.
* '''Domino Tiles''', containing 100 domino tiles, was added.
=== Extended blocks ===
* Archaic letters and capital kai symbol (total 7 characters) were added to '''Greek and Coptic'''.
* Combining Pokrytie (total 1 character) was added to '''Cyrillic'''.
* Mordvin, Kurdish, Aleut and Chuvash letters (total 16 characters) were added to '''Cyrillic Supplement'''.
* Radix symbols, Letterlike, punctuation, Koranic annotation signs and additions for early Persian and Azerbaijani (total 15 characters) were added to '''Arabic'''.
* Additional letters in Torwali, Burushaski and early Persian (total 18 characters) were added to '''Arabic Supplement'''.
* High spacing dot and candra a (total 2 characters) were added to '''Devanagari'''.
* Udaat and yakash signs (total 2 characters) were added to '''Gurmukhi'''.
* Vocalic rr, l and ll (total 3 characters) were added to '''Oriya'''.
* Om symbol (ௐ) (total 1 character) was added to '''Tamil'''.
* Avagraha, additional phonetic letters, vocalic l and ll, fractional signs and tuumu (total 13 characters) were added to '''Telugu'''.
* Avagraha, vocalic rr, l and ll, Malayalam numerics and fractions and chillu letters (total 17 characters) were added to '''Malayalam'''.
* Letters for Balti and various symbols (total 6 characters) were added to '''Tibetan'''.
* Characters for various languages (total 78 characters) were added to '''Myanmar'''.
* Manchu Ali Gali lha (ᢪ) (total 1 character) was added to '''Mongolian'''.
* Miscellaneous combining marks (total 28 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Medievalist latin letters and miscellaneous letters (total 10 characters) were added to '''Latin Extended Additional'''.
* Invisible plus (+) (total 1 character) was added to '''General Punctuation'''.
* Combining asterisk above ( ⃰)(total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* Symbol for Samaritan Source (⅏) (total 1 character) was added to '''Letterlike Symbols'''.
* Archaic Roman Numerals (total 4 characters) were added to '''Number Forms'''.
* Outlined white star and other signs (total 15 characters) were added to '''Miscellaneous Symbols'''.
* Long division and additional mathematical brackets (total 5 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Miscellaneous signs (total 51 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Additional latin letters (total 12 characters) were added to '''Latin Extended-C'''.
* Additional punctuation (total 23 characters) were added to '''Supplemental Punctuation'''.
* Letter ih (ㄭ) (total 1 character) was added to '''Bopomofo'''.
* Other strokes (total 20 characters) were added to '''CJK Strokes'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Africanist tone letters (total 5 characters) were added to '''Modifier Tone Letters'''.
* Miscellaneous letters and symbols (total 112 characters) were added to '''Latin Extended-D'''.
* Continuous macrons for Coptic (total 3 characters) were added to '''Combining Half Marks'''.
* Musical symbol multiple measure rest (𝄩) (total 1 character) was added to '''Musical Symbols'''.
== Unicode 5.2 ==
Unicode 5.2 was released in October 1, 2009. It encoded 107,296 characters, adding 6,648 new characters.
=== New blocks ===
* '''Samaritan''', containing 61 letters for Samaritan script, was added.
* '''Unified Canadian Aboriginal Syllabics Extended''', containing 70 syllables for various cree languages, was added.
* '''Tai Tham''', containing 127 letters for Tai Tham script, was added.
* '''Vedic Extensions''', containing 35 characters for tone marks and signs, was added.
* '''Lisu''', containing 48 letters for Lisu (Fraser) script, was added.
* '''Bamum''', containing 88 letters for Bamum script, was added.
* '''Common Indic Number Forms''', containing 10 fractions and marks, was added.
* '''Devanagari Extended''', containing 28 additional marks, was added.
* '''Hangul Jamo Extended-A''', containing 29 characters for additional old initial consonants in hangul jamo, was added.
* '''Javanese''', containing 91 letters for Javanese script, was added.
* '''Myanmar Extended-A''', containing 28 letters for Khamti Shan in Myanmar, was added.
* '''Tai Viet''', containing 72 letters for Tai Viet script, was added.
* '''Meetei Mayek''', containing 56 letters for Meetei Mayek script, was added.
* '''Hangul Jamo Extended-B''', containing 72 characters for additional old medieval vowels and final consonants in hangul jamo, was added.
* '''Imperial Aramaic''', containing 31 characters for Old Aramaic, was added.
* '''Old South Arabian''', containing 32 letters and numbers for South Arabian, was added.
* '''Avestan''', containing 61 characters for Avestan script, was added.
* '''Inscriptional Parthian''', containing 30 characters for Inscriptional Parthian script, was added.
* '''Inscriptional Pahlavi''', containing 27 characters for Inscriptional Pahlavi script, was added.
* '''Old Turkic''', containing 73 characters for Orkhon script, was added.
* '''Rumi Numeral Symbols''', containing 31 numeric characters used in Fez, Morocco, and elsewhere in North Africa and the Iberian peninsula, between the tenth and seventeenth centuries, was added.
* '''Kaithi''', containing 66 letters for Kaithi script, was added.
* '''Egyptian Hieroglyphs''', containing 1,071 hieroglyphs for Egyptian, was added.
* '''Enclosed Alphanumeric Supplement''', containing 63 additional circled, parenthesized and squared alphanumerics, was added.
* '''Enclosed Ideographic Supplement''', containing 44 squared and tortoised shell bracketed ideographs, was added.
* '''CJK Unified Ideographs Extension C''', containing 4,149 additional Chinese Ideographs, was added.
=== Extended blocks ===
* Abhaz letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Inverted Candrabinbu and additional signs and letters (total 5 characters) were added to '''Devanagari'''.
* Ganda Mark (৻) (total 1 character) was added to '''Bengali'''.
* Religious svasti signs (total 4 characters) were added to '''Tibetan'''.
* Extensions for Khamti Shan and Alton and Phake (total 4 characters) were added to '''Myanmar'''.
* Additional old initial consonants, medival vowels, and old final consonants (total 16 characters) were added to '''Hangul Jamo'''.
* Hyphen and additional syllables (total 10 characters) were added to '''Unified Canadian Aboriginal Syllabics'''.
* Letter Sua and Tham Digit One (total 3 characters) were added to '''New Tai Lue'''.
* Combing Almost Equal to Below ( ᷽) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* The Live Tournosis, Spesmillo and Tenge signs (total 3 characters) were added to '''Currency Symbols'''.
* Additional vulgar fractions from ARIB STD B24 (total 4 characters) were added to '''Number Forms'''.
* Decimal exponent symbol (⏨) from ARIB STD B24 (total 1 characters) was added to '''Miscellaneous Technical'''.
* A soccer ball and symbols from ARIB STD B24 (total 59 characters) were added to '''Miscellaneous Symbols'''.
* Heavy exclamation mark symbol (❗) from ARIB STD B24 (total 1 character) was added to '''Dingbats'''.
* Traffic sign, dictionary and map symbols from ARIB STD B24 (total 5 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Capital letter turned alpha and additions for shona (total 3 characters) were added to '''Latin Extended-C'''.
* Cryptogrammic letters and combining marks (total 7 characters) were added to '''Coptic'''.
* Word separator middle dot used in Avestan (⸱) (total 1 character) was added to '''Supplemental Punctuation'''.
* Circled ideographs and numbers on black squares from ARIB STD B24 (total 12 characters) were added to '''Enclosed CJK Letters and Months'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Miscellaneous additions for compatibility (total 3 characters) were added to '''CJK Compatibility Ideographs'''.
* Number two and three (total 2 characters) were added to '''Phoenician'''.
== Unicode 6.0 ==
Unicode 6.0 was released in October 11, 2010. It encoded 109,384 characters, adding 2,088 new characters.
=== New blocks ===
* '''Mandaic''', containing 29 letters for Mandaic script, was added.
* '''Batak''', containing 56 letters for Batak script, was added.
* '''Ethiopic Extended-A''', containing 32 letters for Gamo-Gofa-Dawro, Basketo and Gumuz Ethiophic syllables, was added.
* '''Brahmi''', containing 108 characters for ancient Brahmi abugida, was added.
* '''Bamum Supplement''', containing 761 letters for additional Bamum script, was added.
* '''Kana Supplement''', containing 2 characters for archaic katakana, was added.
* '''Playing Cards''', containing 59 playing cards, was added.
* '''Miscellaneous Symbols and Pictographs''', containing 529 additional symbols, was added.
* '''Emoticons''', containing 63 faces, cat faces and gesture symbols, was added.
* '''Transport and Map Symbols''', containing 70 transportation, traffic signs and other symbols, was added.
* '''Alchemical Symbols''', containing 116 symbols for elements, was added.
* '''CJK Unified Ideographs Extension D''', containing 222 miscellaneous Han ideographs, was added.
=== Extended blocks ===
* Azerbaijani letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Kashmiri Yeh and Wavy hamza below (total 2 characters) were added to '''Arabic'''.
* Dependent vowel signs and letters used in Kashmiri and Bihari (total 10 characters) were added to '''Devanagari'''.
* Fraction signs (total 6 characters) were added to '''Oriya'''.
* Letters used in scholarly only and letter dot reph (total 3 characters) were added to '''Malayalam'''.
* Leading and Trailing Mchan Rtags (total 6 characters) were added to '''Tibetan'''.
* Additional combining marks (total 2 characters) were added to '''Ethiopic'''.
* Combining Double Inverted Breve Below (᷼) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* Miscellaneous subscript letters (total 8 characters) were added to '''Superscripts and Subscripts'''.
* Indian Rupee Sign (₹) (total 1 character) was added to '''Currency Symbols'''.
* Pointing double triangle and additional mechanical symbols (total 11 characters) were added to '''Miscellaneous Technical'''.
* Ophiucisus, astronomical symbol for uranus and pentagrams (total 6 characters) were added to '''Miscellaneous Symbols'''.
* Additional heavy punctation marks, raised fist, raised hand, sparkles, heavy arithmetic symbols and curly loops (total 16 characters) were added to '''Dingbats'''.
* Squared logicals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Separator mark and consonant joiner (total 2 characters) were added to '''Tifinagh'''.
* Bopomofo for Hmu and Ge (total 3 characters) were added to '''Bopomofo Extended'''.
* Reversed Tse (total 2 characters) were added to '''Cyrillic Extended-B'''.
* Additional letters (total 15 characters) were added to '''Latin Extended-D'''.
* Pedagogical symbols (total 16 characters) were added to '''Arabic Presentation Forms-A'''.
* Additional squared, black circled and squared letters and regional indicator letters (total 107 characters) were added to '''Enclosed Alphanumeric Supplement'''.
* Squared katakana, squared ideographs and circled advantage and accept (total 13 characters) were added to '''Enclosed Ideographic Supplement'''.
== Unicode 6.1 ==
Unicode 6.1 was released in January 31, 2012. It encoded 110,116 characters, adding 732 new characters.
=== New blocks ===
* '''Arabic Extended-A''' (U+08A0-U+08FF), containing 39 characters, was added.
* '''Sundanese Supplement''' (U+1CC0-U+1CCF), containing 8 characters, was added.
* '''Meetei Mayek Extensions''' (U+AAE0-U+AAFF), containing 23 characters, was added.
* '''Meroitic Hieroglyphs''' (U+10980-U+1099F), containing 32 characters, was added.
* '''Meroitic Cursive''' (U+109A0-U+109FF), containing 26 characters, was added.
* '''Sora Sompeng''' (U+110D0-U+110FF), containing 35 characters, was added.
* '''Chakma''' (U+11100-U+1114F), containing 67 characters, was added.
* '''Sharada''' (U+11180-U+111DF), containing 83 characters, was added.
* '''Takri''' (U+11680-U+116CF), containing 66 characters, was added.
* '''Miao''' (U+16F00-U+16F9F), containing 133 characters, was added.
* '''Arabic Mathematical Alphabetic Symbols''' (U+1EE00-U+1EEFF), containing 143 characters, was added.
=== Extended blocks ===
* An Armenian Dram sign (total 1 character) was added to '''Armenian'''. (U+058F)
* A sign Samvat (total 1 character) was added to '''Arabic'''. (U+0604)
* An Abbreviation mark (total 1 character) was added to '''Gujarati'''. (U+0AF0)
* Letters for Khmu (total 2 characters) were added to '''Lao'''. (U+0EDE-U+0EDF)
* Capital letter Yn, letter Aen, Hard and Labial sign (total 5 characters) were added to '''Georgian'''. (U+10C7, U+10CD and U+10FD-U+10FF)
* Letters and signs for Old Sundanese (total 9 characters) were added to '''Sundanese'''. (U+1BAB-U+1BAD and U+1BBA-U+1BBF)
* Sign Rotated Ardhavisarga, Candra Above, Jihvamuliya and Uphadhmaniya (total 4 characters) were added to '''Vedic Extensions'''. (U+1CF3-U+1CF6)
* Mathematical diagonals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''. (U+27CB and U+27CD)
* A letter Bohairic Khei (total 2 characters) were added to '''Coptic'''. (U+2CF2-U+2CF3)
* Small letters Yn and Aen (total 2 characters) were added to '''Georgian Supplement'''. (U+2D27 and U+2D2D)
* Letters Ye and Yo (total 2 characters) were added to '''Tifinagh'''. (U+2D66-U+2D67)
* (total 10 characters) were added to '''Supplemental Punctuation'''. (U+2E32-U+2E3B)
* An additional ideograph for Kanji (total 1 character) was added to '''CJK Unified Ideographs'''. (U+9FCC)
* Combining letter for Slavonic (total 9 characters) were added to '''Cyrillic Extended-B'''. (U+A674-U+A67B and U+A69F)
* Letter C with Bar, capital letter H with Hook and modifier letters for extended IPA (total 5 characters) were added to '''Latin Extended-D'''. (U+A792-U+A793, U+A7AA and U+A7F8-U+A7F9)
* Some additional ideographs for Korea (total 2 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA2E-U+FA2F)
* Symbols for Canadian legal use (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F16A-U+1F16B)
* Typikon symbols (total 4 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F540-U+1F543)
* (total 13 characters) were added to '''Emoticons'''. (U+1F600, U+1F611, U+1F615, U+1F617, U+1F619, U+1F61B, U+1F61F, U+1F626-U+1F627, U+1F62C, U+1F62E-U+1F62F and U+1F634)
== Unicode 6.2 ==
Unicode 6.2 was released in September 26, 2012. It encoded 110,117 characters, adding only 1 new character.
=== Extended blocks ===
* A Turkish Lira sign (total 1 character) was added to '''Currency Symbols'''. (U+20BA)
== Unicode 6.3 ==
Unicode 6.3 was released in September 30, 2013. It encoded 110,122 characters, adding only 5 new characters.
=== Extended blocks ===
* A Letter mark (total 1 character) was added to '''Arabic'''. (U+061C)
* Isolate directional format characters (total 4 characters) were added to '''General Punctuation'''. (U+2066-U+2069)
== Unicode 7.0 ==
Unicode 7.0 was released in June 16, 2014. It encoded 112,956 characters, adding 2,834 new characters.
=== New blocks ===
* '''Combining Diacritical Marks Extended''' (U+1AB0-U+1AFF), containing 15 marks, was added.
* '''Myanmar Extended-B''' (U+A9E0-U+A9FF), containing 31 letters, was added.
* '''Latin Extended-E''' (U+AB30-U+AB6F), containing 50 letters, was added.
* '''Coptic Epact Numbers''' (U+102E0-U+102FF), containing 28 numbers, was added.
* '''Old Permic''' (U+10350-U+1037F), containing 43 letters, was added.
* '''Elbasan''' (U+10500-U+1052F), containing 50 letters, was added.
* '''Caucasian Albanian''' (U+10530-U+1056F), containing 53 letters and marks, was added.
* '''Linear A''' (U+10600-U+1077F), containing 341 signs, was added.
* '''Palmyrene''' (U+10860-U+1087F), containing 32 letters, was added.
* '''Nabataean''' (U+10880-U+108AF), containing 40 letters and numbers, was added.
* '''Old North Arabian''' (U+10A80-U+10A9F), containing 32 letters and numbers, was added.
* '''Manichaean''' (U+10AC0-U+10AFF), containing 51 characters, was added.
* '''Psalter Pahlavi''' (U+10B80-U+10BAF), containing 29 characters, was added.
* '''Mahajani''' (U+11150-U+1117F), containing 39 letters and signs, was added.
* '''Sinhala Archaic Numbers''' (U+111E0-U+111FF), containing 20 numbers, was added.
* '''Khojki''' (U+11200-U+1124F), containing 61 characters, was added.
* '''Khudawadi''' (U+112B0-U+112FF), containing 69 characters, was added.
* '''Grantha''' (U+11300-U+1137F), containing 83 characters, was added.
* '''Tirhuta''' (U+11480-U+114DF), containing 82 characters, was added.
* '''Siddham''' (U+11580-U+115FF), containing 72 characters, was added.
* '''Modi''' (U+11600-U+1165F), containing 79 characters, was added.
* '''Warang Citi''' (U+118A0-U+118FF), containing 84 letters and numbers, was added.
* '''Pau Cin Hau''' (U+11AC0-U+11AFF), containing 57 characters, was added.
* '''Mro''' (U+16A40-U+16A6F), containing 43 characters, was added.
* '''Bassa Vah''' (U+16AD0-U+16AFF), containing 36 characters, was added.
* '''Pahawh Hmong''' (U+16B00-U+16B8F), containing 127 letters and signs, was added.
* '''Duployan''' (U+1BC00-U+1BC9F), containing 143 characters, was added.
* '''Shorthand Format Controls''' (U+1BCA0-U+1BCAF), containing 4 format characters, was added.
* '''Mende Kikakui''' (U+1E800-U+1E8DF), containing 213 syllables and numbers, was added.
* '''Ornamental Dingbats''' (U+1F650-U+1F67F), containing 48 pictographic characters, was added.
* '''Geometric Shapes Extended''' (U+1F780-U+1F7FF), containing 85 pictographic characters, was added.
* '''Supplemental Arrows-C''' (U+1F800-U+1F8FF), containing 148 pictographic characters, was added.
=== Extended blocks ===
* A capital letter Yot (total 1 character) was added to '''Greek and Coptic'''. (U+037F)
* Letters for Orok, Komi and Khanty (total 8 characters) were added to '''Cyrillic Supplement'''. (U+0528-U+052F)
* An Eternity sign (total 2 characters) were added to '''Armenian'''. (U+058D-U+058E)
* A Number Mark Above (total 1 character) was added to '''Arabic'''. (U+0605)
* Letters for African, Philippine, Turkic, Berber, Belarusian, Palula and Shina languages (total 8 characters) were added to '''Arabic Extended-A'''. (U+08A1, U+08AD-U+08B2 and U+08FF)
* A letter for Marwari (total 1 character) was added to '''Devanagari'''. (U+0978)
* A sign Anji (total 1 character) was added to '''Bengali'''. (U+0980)
* Sign Candrabindu and letter Llla (total 2 characters) were added to '''Telugu'''. (U+0C00 and U+0C34)
* A Sign Candrabindu (total 1 character) was added to '''Kannada'''. (U+0C81)
* A Sign Candrabindu (total 1 character) was added to '''Malayalam'''. (U+0D01)
* Lith Numerals (total 10 characters) were added to '''Sinhala'''. (U+0DE6-U+0DEF)
* Additional Old English runes (total 8 characters) were added to '''Runic'''. (U+16F1-U+16F8)
* Letters Gyan and Tra (total 2 characters) were added to '''Limbu'''. (U+191D-U+191E)
* Signs for Jaiminiya Sama Veda (total 2 characters) were added to '''Vedic Extensions'''. (U+1CF8-U+1CF9)
* Marks for Germanic and American lexicology (total 15 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DE7-U+1DF5)
* Nordic Mark, Manat and Ruble sign (total 3 characters) were added to '''Currency Symbols'''. (U+20BB-U+20BD)
* Playback symbols from Webdings font (total 7 characters) were added to '''Miscellaneous Technical'''. (U+23F4-U+23FA)
* A Scissors symbol from Wingdings 2 font (total 1 character) was added to '''Dingbats'''. (U+2700)
* Arrows for Lithuanian dialectology and symbols from Wingdings 3 font (total 115 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2B4D-U+2B4F, U+2B5A-U+2B5F, U+2B60-U+2B73, U+2B76-U+2B95, U+2B98-U+2BB9, U+2BBD-U+2BC8 and U+2BCA-U+2BD1)
* (total 7 characters) were added to '''Supplemental Punctuation'''. (U+2E3C-U+2E42)
* Early Cyrillic letters and letters for Lithuanian dialectology (total 6 characters) were added to '''Cyrillic Extended-B'''. (U+A698-U+A69D)
* Letters for European, American and African orthography (total 18 characters) were added to '''Latin Extended-D'''. (U+A794-U+A79F, U+A7AB-U+A7AD, U+A7B0-U+A7B1 and U+A7F7)
* Tone marks for Tai Laing and letters for Shwe Palaung (total 4 characters) were added to '''Myanmar Extended-A'''. (U+AA7C-U+AA7F)
* Combining phonetic marks (total 7 characters) were added to '''Combining Half Marks'''. (U+FE27-U+FE2D)
* Additional mathematical symbols (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018B-U+1018C)
* A Greek Tau Rho symbol (total 1 character) was added to '''Ancient Symbols'''. (U+101A0)
* A letter Ess (total 1 character) was added to '''Old Italic'''. (U+1031F)
* A Number Joiner (total 1 character) was added to '''Brahmi'''. (U+1107F)
* Sutra mark and sign Ekam (total 2 characters) were added to '''Sharada'''. (U+111CD and U+111DA)
* Additional cuneiform signs (total 42 characters) were added to '''Cuneiform'''. (U+1236F-U+12398)
* Additional numbers, vulgar fractions and a punctuation mark (total 13 characters) were added to '''Cuneiform Numbers and Punctuation'''. (U+12463-U+1246E and U+12474)
* Red Joker, Fool and trumps (total 23 characters) were added to '''Playing Cards'''. (U+1F0BF and U+1F0E0-U+1F0F5)
* Dingbat normal and negative sans-serif digit zero (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10B-U+1F10C)
* Symbols from Webdings, Wingdings 1 and 2 font (total 209 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F321-U+1F32C, U+1F336, U+1F37D, U+1F394-U+1F39F, U+1F3C5, U+1F3CB-U+1F3CE, U+1F3D4-U+1F3DF, U+1F3F1-U+1F3F7, U+1F43F, U+1F441, U+1F4F8, U+1F4FD-U+1F4FE, U+1F53E-U+1F53F, U+1F544-U+1F54A, U+1F568-U+1F579, U+1F57B-U+1F5A3 and U+1F5A5-U+1F5FA)
* Slightly frowning and smiling faces emoji (total 2 characters) were added to '''Emoticons'''. (U+1F641-U+1F642)
* Symbols from Webdings and Wingdings 2 font (total 27 characters) were added to '''Transport and Map Symbols'''. (U+1F6C6-U+1F6CF, U+1F6E0-U+1F6EC and U+1F6F0-U+1F6F3)
== Unicode 8.0 ==
Unicode 8.0 was released in June 17, 2015. It encoded 120,672 characters, adding 7,716 new characters.
=== New blocks ===
* '''Cherokee Supplement''' (U+AB70-U+ABBF), containing 80 lowercase letters, was added.
* '''Hatran''' (U+108E0-U+108FF), containing 26 letters, was added.
* '''Old Hungarian''' (U+10C80-U+10CFF), containing 108 letters, was added.
* '''Multani''' (U+11280-U+112AF), containing 38 letters, was added.
* '''Ahom''' (U+11700-U+1173F), containing 57 letters, was added.
* '''Early Dynastic Cuneiform''' (U+12480-U+1254F), containing 196 characters, was added.
* '''Anatolian Hieroglyphs''' (U+14400-U+1467F), containing 583 characters, was added.
* '''Sutton SignWriting''' (U+1D800-U+1DAAF), containing 672 signs, was added.
* '''Supplemental Symbols and Pictographs''' (U+1F900-U+1F9FF), containing 15 pictographic characters, was added.
* '''CJK Unified Ideographs Extension E''' (U+2B820-U+2CEAF), containing 5762 characters, was added.
=== Extended blocks ===
* Letters for Arwi (total 3 characters) were added to '''Arabic Extended-A'''. (U+08B3-U+08B4 and U+08E3)
* A letter for Avestan transliteration (total 1 character) was added to '''Gujarati'''. (U+0AF9)
* A letter for Andhra Pradesh (total 1 character) was added to '''Telugu'''. (U+0C5A)
* An archaic letter II (total 1 character) was added to '''Malayalam'''. (U+0D5F)
* A letter Mv and small letters (total 7 characters) were added to '''Cherokee'''. (U+13F5 and U+13F8-U+13FD)
* A Georgian Lari sign (total 1 character) was added to '''Currency Symbols'''. (U+20BE)
* Turned digits (total 2 characters) were added to '''Number Forms'''. (U+218A-U+218B)
* Two headed arrows with triangle arrowheads (total 4 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BEC-U+2BEF)
* Some additional ideographs (total 9 characters) were added to '''CJK Unified Ideographs'''. (U+9FCD-U+9FD5)
* A combining letter Ef (total 1 character) was added to '''Cyrillic Extended-B'''. (U+A69E)
* Sinological dot, phonetic extension for African languages, letters for American and Gabonese orthography (total 7 characters) were added to '''Latin Extended-D'''. (U+A78F and U+A7B2-U+A7B7)
* Sign Siddham and letter Jain Om (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FC-U+A8FD)
* Letters for Yakut transliteration (total 4 characters) were added to '''Latin Extended-E'''. (U+AB60-U+AB63)
* A combining mark for Church Slavonic (total 2 characters) were added to '''Combining Half Marks'''. (U+FE2E-U+FE2F)
* Numerals and vulgar fractions (total 64 characters) were added to '''Meroitic Cursive'''. (U+109BC-U+109BD, U+109C0-U+109CF and U+109D2-U+109FF)
* Sandhi mark, diacritical marks for Kashmiri, sign Siddham and punctuation marks (total 9 characters) were added to '''Sharada'''. (U+111C9-U+111CC and U+111DB-U+111DF)
* Combining Anusvara Above and letter Om (total 2 characters) were added to '''Grantha'''. (U+11300 and U+11350)
* Section marks and alternate letters (total 20 characters) were added to '''Siddham'''. (U+115CA-U+115DD)
* An additional sign (total 1 character) was added to '''Cuneiform'''. (U+12399)
* East-Slavic musical symbols (total 11 characters) were added to '''Musical Symbols'''. (U+1D1DE-U+1D1E8)
* (total 24 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F32D-U+1F32F, U+1F37E-U+1F37F, U+1F3CF-U+1F3D3, U+1F3F8-U+1F3FF, U+1F4FF and U+1F54B-U+1F54F)
* Upside Down Face and Face With Rolling Eyes emoji (total 2 characters) were added to '''Emoticons'''. (U+1F643-U+1F644)
* A Place of Worship emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D0)
== Unicode 9.0 ==
Unicode 9.0, was released in June 21, 2016. It encoded 128,172 characters, adding 7,500 new characters.
=== New blocks ===
* '''Cyrillic Extended-C''' (U+1C80-U+1C8F), containing 9 letters, was added.
* '''Osage''' (U+104B0-U+104FF), containing 72 letters, was added.
* '''Newa''' (U+11400-U+1147F), containing 92 letters, was added.
* '''Mongolian Supplement''' (U+11660-U+1167F), containing 13 letters, was added.
* '''Bhaiksuki''' (U+11C00-U+11C6F), containing 97 letters, was added.
* '''Marchen''' (U+11C70-U+11CBF), containing 68 letters, was added.
* '''Ideographic Symbols and Punctuation''' (U+16FE0-U+16FFF), containing 1 letter, was added.
* '''Tangut''' (U+17000-U+187FF), containing 6125 letters, was added.
* '''Tangut Components''' (U+18800-U+18AFF), containing 755 letters, was added.
* '''Glagolitic Supplement''' (U+1E000-U+1E02F), containing 38 letters, was added.
* '''Adlam''' (U+1E900-U+1E95F), containing 87 letters, was added.
=== Extended blocks ===
* Letters for Bravanese, Warsh and Quranic marks used in Pakistan (total 23 characters) were added to '''Arabic Extended-A'''. (U+08B6-U+08BD and U+08D4-U+08E2)
* A sign Spacing Candrabindu (total 1 character) were added to '''Kannada'''. (U+0C80)
* Sign Para, Chillu letters and vulgar fractions (total 14 characters) were added to '''Malayalam'''. (U+0D4F, U+0D54-U+0D56, U+0D58-U+0D5E and U+0D76-U+0D78)
* A diacritical mark for Newa (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFB)
* Power symbols (total 4 characters) were added to '''Miscellaneous Technical'''. (U+23FB-U+23FE)
* Punctuation marks for Church Slavonic (total 2 characters) were added to '''Supplemental Punctuation'''. (U+2E43-U+2E44)
* A letter for Unifon (total 1 character) was added to '''Latin Extended-D'''. (U+A7AE)
* A sign Candrabindu (total 1 character) was added to '''Saurashtra'''. (U+A8C5)
* Indiction sign and a currency symbol (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018D-U+1018E)
* A sign Sukun (total 1 character) was added to '''Khojki'''. (U+1123E)
* Japanese TV symbols (total 18 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F19B-U+1F1AC)
* A Japanese TV symbol (total 1 character) was added to '''Enclosed Ideographic Supplement'''. (U+1F23B)
* A dancing man and Black Heart emoji (total 2 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F57A and U+1F5A4)
* Octagonal Sign, Shopping Trolley, scooters and a Canoe emoji (total 5 characters) were added to '''Transport and Map Symbols'''. (U+1F6D1-U+1F6D2 and U+1F6F4-U+1F6F6)
* (total 67 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F919-U+1F91E, U+1F920-U+1F927, U+1F930, U+1F933-U+1F93E, U+1F940-U+1F94B, U+1F950-U+1F95E and U+1F985-U+1F991)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|0030 FE00
|
|short diagonal stroke form # DIGIT ZERO
|-
|1000 FE00
|
|dotted form # MYANMAR LETTER KA
|-
|1002 FE00
|
|dotted form # MYANMAR LETTER GA
|-
|1004 FE00
|
|dotted form # MYANMAR LETTER NGA
|-
|1010 FE00
|
|dotted form # MYANMAR LETTER TA
|-
|1011 FE00
|
|dotted form # MYANMAR LETTER THA
|-
|1015 FE00
|
|dotted form # MYANMAR LETTER PA
|-
|1019 FE00
|
|dotted form # MYANMAR LETTER MA
|-
|101A FE00
|
|dotted form # MYANMAR LETTER YA
|-
|101C FE00
|
|dotted form # MYANMAR LETTER LA
|-
|101D FE00
|
|dotted form # MYANMAR LETTER WA
|-
|1022 FE00
|
|dotted form # MYANMAR LETTER SHAN A
|-
|1031 FE00
|
|dotted form # MYANMAR VOWEL SIGN E
|-
|1075 FE00
|
|dotted form # MYANMAR LETTER SHAN KA
|-
|1078 FE00
|
|dotted form # MYANMAR LETTER SHAN CA
|-
|107A FE00
|
|dotted form # MYANMAR LETTER SHAN NYA
|-
|1080 FE00
|
|dotted form # MYANMAR LETTER SHAN THA
|-
|2205 FE00
|
|zero with long diagonal stroke overlay form # EMPTY SET
|-
|AA60 FE00
|
|dotted form # MYANMAR LETTER KHAMTI GA
|-
|AA61 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CA
|-
|AA62 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CHA
|-
|AA63 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JA
|-
|AA64 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JHA
|-
|AA65 FE00
|
|dotted form # MYANMAR LETTER KHAMTI NYA
|-
|AA66 FE00
|
|dotted form # MYANMAR LETTER KHAMTI TTA
|-
|AA6B FE00
|
|dotted form # MYANMAR LETTER KHAMTI NA
|-
|AA6C FE00
|
|dotted form # MYANMAR LETTER KHAMTI SA
|-
|AA6F FE00
|
|dotted form # MYANMAR LETTER KHAMTI FA
|-
|AA7A FE00
|
|dotted form # MYANMAR LETTER AITON RA
|-
|…
|
|278 additional emoji variation sequences
|}
== Unicode 10.0 ==
Unicode 10.0, was released in June 20, 2017. It encoded 136,690 characters, adding 8,518 new characters.
=== New blocks ===
* '''Syriac Supplement''' (U+0860-U+086F), containing 11 characters, was added.
* '''Zanabazar Square''' (U+11A00-U+11A4F), containing 72 characters, was added.
* '''Soyombo''' (U+11A50-U+11AAF), containing 80 characters, was added.
* '''Masaram Gondi''' (U+11D00-U+11D5F), containing 75 characters, was added.
* '''Kana Extended-A''' (U+1B100-U+1B12F), containing 31 characters, was added.
* '''Nushu''' (U+1B170-U+1B2FF), containing 396 characters, was added.
* '''CJK Unified Ideographs Extension F''' (U+2CEB0-U+2EBEF), containing 7,473 characters, was added.
=== Extended blocks ===
* A Vedic Anusvara and Abbreviation mark (total 2 characters) were added to '''Bengali'''. (U+09FC-U+09FD)
* Letters for Arabic transliteration (total 6 characters) were added to '''Gujarati'''. (U+0AFA-U+0AFF)
* A combining Anusvara Above and Viramas (total 3 characters) were added to '''Malayalam'''. (U+0D00 and U+0D3B-U+0D3C)
* A sign Atikrama (total 1 character) was added to '''Vedic Extensions'''. (U+1CF7)
* Combining diacritical marks for Church Slavonic (total 4 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DF6-U+1DF9)
* A Bitcoin sign (total 1 character) was added to '''Currency Symbols'''. (U+20BF)
* An Observe Eye symbol (total 1 character) was added to '''Miscellaneous Technical'''. (U+23FF)
* A Group mark (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2BD2)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E45-U+2E49)
* A letter O with Dot Above (total 1 character) was added to '''Bopomofo'''. (U+312E)
* Ideographs for Slavonic transliteration (total 21 characters) were added to '''CJK Unified Ideographs'''. (U+9FD6-U+9FEA)
* Letters for North Italic (total 3 characters) were added to '''Old Italic'''. (U+1032D-U+1032F)
* An Iteration mark for Nushu (total 1 character) was added to '''Ideographic Symbols and Punctuation'''. (U+16FE1)
* Letters for Hentaigana (total 254 characters) were added to '''Kana Supplement'''. (U+1B002-U+1B0FF)
* Symbols for Chinese Folk religion (total 6 characters) were added to '''Enclosed Ideographic Supplement'''. (U+1F260-U+1F265)
* Stupa, Pagoda, Sled and Flying Saucer emoji (total 4 characters) were added to '''Transport and Map Symbols'''. (U+1F6D3-U+1F6D4 and U+1F6F7-U+1F6F8)
* (total 66 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F900-U+1F90B, U+1F91F, U+1F928-U+1F92F, U+1F931-U+1F932, U+1F94C, U+1F95F-U+1F96B, U+1F992-U+1F997 and U+1F9D0-U+1F9E6)
== Unicode 11.0 ==
Unicode 11.0, was released in June 5, 2018. It encoded 137,374 characters, adding 684 new characters.
=== New blocks ===
* '''Georgian Extended''' (U+1C90-U+1CBF), containing 46 characters, was added.
* '''Hanifi Rohingya''' (U+10D00-U+10D3F), containing 50 characters, was added.
* '''Old Sogdian''' (U+10F00-U+10F2F), containing 40 characters, was added.
* '''Sogdian''' (U+10F30-U+10F6F), containing 42 characters, was added.
* '''Dogra''' (U+11800-U+1184F), containing 60 characters, was added.
* '''Gunjala Gondi''' (U+11D60-U+11DAF), containing 63 characters, was added.
* '''Makasar''' (U+11EE0-U+11EFF), containing 25 characters, was added.
* '''Medefaidrin''' (U+16E40-U+16E9F), containing 91 characters, was added.
* '''Mayan Numerals''' (U+1D2E0-U+1D2FF), containing 20 characters, was added.
* '''Indic Siyaq Numbers''' (U+1EC70-U+1ECBF), containing 68 characters, was added.
* '''Chess Symbols''' (U+1FA00-U+1FA6F), containing 14 characters, was added.
=== Extended blocks ===
* Small letters Turned Ayb and Yi with Stroke (total 2 characters) were added to '''Armenian'''. (U+0560 and U+0588)
* A triangle Yod (total 1 character) were added to '''Hebrew'''. (U+05EF)
* A Dantayalan and currency symbols (total 3 characters) were added to '''N'Ko'''. (U+07FD-U+07FF)
* A Small Low Waw (total 1 character) was added to '''Arabic Extended-A'''. (U+08D3)
* A Sandhi mark (total 1 character) was added to '''Bengali'''. (U+09FE)
* An Abbreviation mark (total 1 character) was added to '''Gurmukhi'''. (U+0A76)
* A combining Anusvara Above (total 1 character) was added to '''Telugu'''. (U+0C04)
* A sign Siddham (total 1 character) was added to '''Kannada'''. (U+0C84)
* A letter for Buryat (total 1 character) was added to '''Mongolian'''. (U+1878)
* Symbols for chess notation, astrological and half star symbols (total 43 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BBA-U+2BBC, U+2BD3-U+2BEB and 2BF0-U+2BFE)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E4A-U+2E4E)
* A letter NN (total 1 character) was added to '''Bopomofo'''. (U+312F)
* Some ideographs for Kanji (total 5 characters) were added to '''CJK Unified Ideographs'''. (U+9FEB-U+9FEF)
* A small capital Q and a letter for Mazahua (total 3 characters) were added to '''Latin Extended-D'''. (U+A7AF and U+A7B8-U+A7B9)
* Letter and vowel sign Ay (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FE-U+A8FF)
* Letters Ttta, Vha and a vulgar fraction (total 3 characters) were added to '''Kharoshthi'''. (U+10A34-U+10A35 and U+10A48)
* A Number Sign Above (total 1 character) was added to '''Kaithi'''. (U+110CD)
* Letter Lhaa, vowel sign Aa and Ei (total 3 characters) were added to '''Chakma'''. (U+11144-U+11146)
* A combining Bindu Below (total 1 character) was added to '''Grantha'''. (U+1133B)
* A Sandhi mark (total 1 character) was added to '''Newa'''. (U+1145E)
* An alternate letter Ba (total 1 character) was added to '''Ahom'''. (U+1171A)
* A mark Pluta (total 1 character) was added to '''Soyombo'''. (U+11A9D)
* Additional ideographs (total 5 characters) were added to '''Tangut'''. (U+187ED-U+187F1)
* Tally marks (total 7 characters) were added to '''Counting Rod Numerals'''. (U+1D372-U+1D378)
* A Copyleft symbol (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F12F)
* A Skateboard emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6F9)
* Normal and negative circled shapes (total 4 characters) were added to '''Geometric Shapes Extended'''. (U+1F7D5-U+1F7D8)
* (total 65 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F94D-U+1F94F, U+1F96C-U+1F970, U+1F973-U+1F976, U+1F97A, U+1F97C-U+1F97F, U+1F998-U+1F99F, U+1F9A0-U+1F9A2, U+1F9B0-U+1F9B9, U+1F9C1-U+1F9C2 and U+1F9E7-U+1F9FF)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|FF10 FE00
|
|short diagonal stroke form # FULLWIDTH DIGIT ZERO
|}
== Unicode 12.0 ==
Unicode 12.0 was released on March 5, 2019. It encoded 137,928 characters, adding 554 new characters.
=== New blocks ===
* '''Elymaic''' (U+10FE0-U+10FFF), containing 23 characters, was added.
* '''Nandinagari''' (U+119A0-U+119FF), containing 65 characters, was added.
* '''Tamil Supplement''' (U+11FC0-U+11FFF), containing 51 characters, was added.
* '''Egyptian Hieroglyph Format Controls''' (U+13430-U+1343F), containing 9 characters, was added.
* '''Small Kana Extension''' (U+1B130-U+1B16F), containing 7 characters, was added.
* '''Nyiakeng Puachue Hmong''' (U+1E100-U+1E14F), containing 71 characters, was added.
* '''Wancho''' (U+1E2C0-U+1E2FF), containing 59 characters, was added.
* '''Ottoman Siyaq Numbers''' (U+1ED00-U+1ED4F), containing 61 characters, was added.
* '''Symbols and Pictographs Extended-A''' (U+1FA70-U+1FAFF), containing 16 characters, was added.
=== Extended blocks ===
* A sign Siddham (total 1 character) was added to '''Telugu'''. (U+0C77)
* Letters for Pail and Sanskrit (total 15 characters) were added to '''Lao'''. (U+0E86, U+0E89, U+0E8C, U+0E8E-U+0E93, U+0E98, U+0EA0, U+0EA8-U+0EA9, U+0EAC and U+0EBA)
* A sign Double Anusvara Antargomukha (total 1 character) was added to '''Vedic Extensions'''. (U+1CFA)
* An astrological symbol and Hellschreiber Pause symbol (total 2 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BC9 and U+2BFF)
* A Cornish Verse Divider (total 1 character) was added to '''Supplemental Punctuation'''. (U+2E4F)
* Egyptological letters, Anglicana W and letters for early Pinyin (total 11 characters) were added to '''Latin Extended-D'''. (U+A7BA-U+A7BF and U+A7C2-U+A7C6)
*Sinological phonetic letters (total 2 characters) were added to '''Latin Extended-E'''. (U+AB66-U+AB67)
* A Vedic Anusvara (total 1 character) was added to '''Newa'''. (U+1145F)
* An archaic letter Kha (total 1 character) was added to '''Takri'''. (U+116B8)
* Sign Jihvamuliya and Uphadhmaniya (total 2 characters) were added to '''Soyombo'''. (U+11A84-U+11A85)
* Letters for various Yi and Miao languages (total 16 characters) were added to '''Miao'''. (U+16F45-U+16F4A, U+16F4F and U+16F7F-U+16F87)
* Marks for Ancient Chinese texts (total 2 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE2-U+16FE3)
* Some additional ideographs (total 6 characters) were added to '''Tangut'''. (U+187F2-U+187F7)
* A Nasalization mark (total 1 character) was added to '''Adlam'''. (U+1E94B)
* A Spanish and Portuguese register mark (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F16C)
* Hindu Temple and Auto Rickshaw emoji (total 2 characters) were added to '''Transport and Map Symbols'''. (U+1F6D5 and U+1F6FA)
* Large colored circles and boxes (total 12 characters) were added to '''Geometric Shapes Extended'''. (U+1F7E0-U+1F7EB)
* (total 31 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90D-U+1F90F, U+1F93F, U+1F971, U+1F97B, U+1F9A5-U+1F9AA, U+1F9AE-U+1F9AF, U+1F9BA-U+1F9BF, U+1F9C3-U+1F9CA and U+1F9CD-U+1F9CF)
* Heterodox chess symbols (total 84 characters) were added to '''Chess Symbols'''. (U+1FA00-U+1FA53)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Spacing Modifier Letters
|02EA, 02EB
|2
|-
|Vedic Extensions
|1CF2..1CF3
|2
|-
|Currency Symbols
|20A9
|1
|-
|CJK Symbols and Punctuation
|3001, 3002
|2
|-
|Bopomofo
|3105..312F
|43
|-
|Bopomofo Extended
|31A0..31BA
|27
|-
|CJK Unified Ideographs Extension A
|37C3, 3B9D, 3CFD, 3FE0, 44EC, 4A76
|6
|-
|CJK Unified Ideographs
|5344, 55B9, 6ABC, 6FF9, 809E, 80BC, 80E9, 8132, 8159, 841C, 891D, 8C6C, 915E, 9FD4
|14
|-
|Phags-pa
|A840..A877
|56
|-
|Halfwidth and Fullwidth Forms
|FF01, FF0C, FF0E, FF1A, FF1B, FF1F
|6
|-
|CJK Unified Ideographs Extension B
|200DD, 20164, 20BBF, 20C02, 20CED, 21D4C, 2278B, 23AB8, 2459B, 24A7D, 24FB9, 25ED7, 2677C, 26B4C, 26C21, 26CBE, 26E3D, 28834, 289A1, 289C0, 28A0F, 28B46
|22
|-
|CJK Unified Ideographs Extension C
|2A8FB, 2A917, 2AA30
|3
|-
|CJK Unified Ideographs Extension E
|2BA52, 2BD77, 2C494, 2C72F, 2C734, 2CB38
|6
|-
|CJK Unified Ideographs Extension F
|2D23B, 2E83A
|2
|-
! colspan="2" |Total
!192
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|3001 FE00
|
|corner-justified form # IDEOGRAPHIC COMMA
|-
|3001 FE01
|
|centered form # IDEOGRAPHIC COMMA
|-
|3002 FE00
|
|corner-justified form # IDEOGRAPHIC FULL STOP
|-
|3002 FE01
|
|centered form # IDEOGRAPHIC FULL STOP
|-
|FF01 FE00
|
|corner-justified form # FULLWIDTH EXCLAMATION MARK
|-
|FF01 FE01
|
|centered form # FULLWIDTH EXCLAMATION MARK
|-
|FF0C FE00
|
|corner-justified form # FULLWIDTH COMMA
|-
|FF0C FE01
|
|centered form # FULLWIDTH COMMA
|-
|FF0E FE00
|
|corner-justified form # FULLWIDTH FULL STOP
|-
|FF0E FE01
|
|centered form # FULLWIDTH FULL STOP
|-
|FF1A FE00
|
|corner-justified form # FULLWIDTH COLON
|-
|FF1A FE01
|
|centered form # FULLWIDTH COLON
|-
|FF1B FE00
|
|corner-justified form # FULLWIDTH SEMICOLON
|-
|FF1B FE01
|
|centered form # FULLWIDTH SEMICOLON
|-
|FF1F FE00
|
|corner-justified form # FULLWIDTH QUESTION MARK
|-
|FF1F FE01
|
|centered form # FULLWIDTH QUESTION MARK
|}
== Unicode 12.1 ==
Unicode 12.1 was released on May 7, 2019. It encoded 137,929 characters, adding only 1 new character.
=== Extended blocks ===
* A square era name Reiwa (total 1 character) was added to '''Enclosed CJK Letters and Months'''. (U+32FF)
== Unicode 13.0 ==
Unicode 13.0 was released on March 10, 2020. It encoded 143,859 characters, adding 5,930 new characters.
=== New blocks ===
* '''Yezidi''' (U+10E80-U+10EBF), containing 47 characters, was added.
* '''Chorasmian''' (U+10FB0-U+10FDF), containing 28 characters, was added.
* '''Dives Akuru''' (U+11900-U+1195F), containing 72 characters, was added.
* '''Lisu Supplement''' (U+11FB0-U+11FBF), containing 1 character, was added.
* '''Khitan Small Script''' (U+18B00-U+18CFF), containing 470 characters, was added.
* '''Tangut Supplement''' (U+18D00-U+18D08), containing 9 characters, was added.
* '''Symbols for Legacy Computing''' (U+1FB00-U+1FBFF), containing 212 characters, was added.
* '''CJK Unified Ideographs Extension G''' (U+30000-U+3134F), containing 4939 characters, was added.
=== Extended blocks ===
* Letters for African languages and Punjabi (total 10 characters) were added to '''Arabic Extended-A'''. (U+08BE-U+08C7)
* A sign Overline (total 1 character) was added to '''Oriya'''. (U+0B55)
* A Vedic Anusvara (total 1 character) was added to '''Malayalam'''. (U+0D04)
* A sign Candrabindu (total 1 character) was added to '''Sinhala'''. (U+0D81)
* Combining diacritical marks for Scottish phonology (total 2 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1ABF-U+1AC0)
* A Japanese symbol for Type A Electronics (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B97)
* Cross patties and a Tironian sign Capita Et (total 3 characters) were added to '''Supplemental Punctuation'''. (U+2E50-U+2E52)
* Letters for Taiwan and Cantonese language (total 5 characters) were added to '''Bopomofo Extended'''. (U+31BB-U+31BF)
* Some disunified ideographs (total 10 characters) were added to '''CJK Unified Ideographs Extension A'''. (U+4DB6-4DBF)
* Some ideographs for China (total 13 characters) were added to '''CJK Unified Ideographs'''. (U+9FF0-U+9FFC)
* Letters for Gaulish (total 6 characters) were added to '''Latin Extended-D'''. (U+A7C7-U+A7CA and U+A7F5-U+A7F6)
* An alternate sign Nasanta (total 1 character) was added to '''Syloti Nagri'''. (U+A82C)
* Letter R With Midle Tilde and modifier letters for Scottish phonology (total 4 characters) were added to '''Latin Extended-E'''. (U+AB68-U+AB6B)
* A symbol Ascia (total 1 character) was added to '''Ancient Symbols'''. (U+1019C)
* A letter for Pali (total 1 character) was added to '''Chakma'''. (U+11147)
* A vowel sign Prishthamatra E and Inverted Candrabindu (total 2 characters) were added to '''Sharada'''. (U+111CE and U+111CF)
* Double comma, sign Jihvamuliya and Uphadhmaniya (total 3 characters) were added to '''Newa'''. (U+1145A and U+11460-U+11461)
* Khitan Small Script Filler and reading marks for Vietnamese (total 3 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE4 and U+16FF0-U+16FF1)
* Some additional components (total 13 characters) were added to '''Tangut Components'''. (U+18AF3-U+18AFF)
* Creative Commons license symbols and Mask Work symbol (total 7 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10D-U+1F10F, U+1F16D-1F16F and U+1F1AD)
* Hut, Elevator, Pickup Truck and Roller Skate emoji (total 4 characters) were added to '''Transportation and Map Symbols'''. (U+1F6D6-U+1F6D7 and U+1F6FB-U+1F6FC)
* Arrows for legacy computing (total 2 characters) were added to '''Supplemental Arrows-C'''. (U+1F8B0-U+1F8B1)
* (total 10 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90C, U+1F972, U+1F977-U+1F978, U+1F9A3-U+1F9A4, U+1F9AB-U+1F9AD and U+1F9CB)
* (total 41 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA74, U+1FA83-U+1FA86, U+1FA96-U+1FAA8, U+1FAB0-U+1FAB6, U+1FAC0-U+1FAC2 and U+1FAD0-U+1FAD6)
* Gongche charaters for Kunqu Opera (total 7 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6D7-U+2A6DD)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Tagalog
|1700..170C, 170E..1714
|20
|-
|Mongolian
|1834, 1871, 1878
|3
|-
|Sundanese
|1BAB
|1
|-
|Currency Symbols
|20BF
|1
|-
|CJK Radicals Supplement
|2E80..2E99, 2E9B..2EF3
|115
|-
|Kangxi Radicals
|2F00..2FD5
|214
|-
|CJK Unified Ideographs Extension A
|3472, 38C7, 3DB8, 3FE0, 440B, 46E9
|6
|-
|CJK Unified Ideographs
|53FD, 6146, 6711, 671C, 6721, 6725, 6BD2, 7B9A, 87CE, 8956, 93BF, 9B97
|12
|-
|Latin Extended-D
|A764..A765
|2
|-
|Phags-pa
|A86D
|1
|-
|Tangut
|175F6, 17F0D, 17F8A, 17FA5, 180D6, 18139, 18147, 184F1, 18736
|9
|-
|Tangut Components
|18843, 18856, 1888C, 1890A, 18915, 1893B
|6
|-
|Adlam
|1E900..1E94A, 1E950..1E959, 1E95E..1E95F
|71
|-
|Miscellaneous Symbols and Pictographs
|1F3B1
|1
|-
|Supplemental Symbols and Pictographs
|1F995..1F998, 1F99B..1F99E, 1F9B0..1F9B3, 1F9E7
|13
|-
|CJK Unified Ideographs Extension B
|20219, 21249, 21827, 22C3A, 2327B, 23496, 2355E, 2363B, 236ED, 23839, 23FD5, 24261, 24726, 248F2, 2548E, 26657, 26C9E, 26FE1, 27334, 27C0E, 27CEF, 2A38C
|22
|-
|CJK Unified Ideographs Extension C
|2AED5, 2AEF3, 2AF76, 2B09F, 2B1C3, 2B1E5
|6
|-
|CJK Unified Ideographs Extension E
|2B83C, 2B8D9..2B8DA, 2B96F, 2BBD7, 2BD61, 2BE4A, 2BF1D, 2BF9D, 2C0B8, 2C142, 2C176, 2C316, 2C3FB, 2C402, 2C7AC, 2C82C, 2C83A, 2C9A1, 2CC88, 2CD68
|21
|-
|CJK Unified Ideographs Extension F
|2DC09, 2DE4A, 2EB7E, 2EB89
|4
|-
|CJK Compatibility Ideographs Supplement
|2F83B, 2F878, 2F8D6..2F8D7, 2F8DA, 2F8F0, 2F984, 2FA02
|8
|-
! colspan="2" |Total
!536
|}
== Unicode 14.0 ==
Unicode 14.0 was released on September 14, 2021. It encoded 144,697 characters, adding 838 new characters.
=== New blocks ===
* '''Arabic Extended-B''' (U+0870-U+089F), containing 41 characters, was added.
* '''Vithkuqi''' (U+10570-U+105BF), containing 70 characters, was added.
* '''Latin Extended-F''' (U+10780-U+107BF), containing 57 characters, was added.
* '''Old Uyghur''' (U+10F70-U+10FAF), containing 26 characters, was added.
* '''Unified Canadian Aboriginal Syllabics Extended-A''' (U+11AB0-U+11ABF), containing 16 characters, was added.
* '''Cypro-Minoan''' (U+12F90-U+12FFF), containing 99 characters, was added.
* '''Tangsa''' (U+16A70-U+16ACF), containing 89 characters, was added.
* '''Kana Extended-B''' (U+1AFF0-U+1AFFF), containing 13 characters, was added.
* '''Znamenny Musical Notation''' (U+1CF00-U+1CFFF), containing 185 characters, was added.
* '''Latin Extended-G''' (U+1DF00-U+1DFFF), containing 31 characters, was added.
* '''Toto''' (U+1E290-U+1E2BF), containing 31 characters, was added.
* '''Ethiopic Extended-B''' (U+1E7E0-U+1E7FF), containing 28 characters, was added.
=== Extended blocks ===
* An End of Text punctuation mark (total 1 character) was added to '''Arabic'''. (U+061D)
* Letters for Balti and Quranic orthography (total 12 characters) were added to '''Arabic Extended-A'''. (U+08B5 and U+08C8-U+08D2)
* A sign Nukta and letter Nakaara Pollu (total 2 characters) were added to '''Telugu'''. (U+0C3C and U+0C5D)
* A letter Nakaara Pollu (total 1 character) was added to '''Kannada'''. (U+0CDD)
* A letter Ra, sign Pamudpod and archaic letter Ra (total 3 characters) were added to '''Tagalog'''. (U+170D, U+1715 and U+171F)
* A fourth Free variation selector (total 1 character) was added to '''Mongolian'''. (U+180F)
* Combining diacritical marks for extended IPA (total 14 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1AC1-U+1ACE)
* An archaic ligature Jnya and punctuation marks (total 3 characters) were added to '''Balinese'''. (U+1B4C and U+1B7D-U+1B7E)
* A combining Dot Below Left (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFA)
* A Kyrgyz Som sign (total 1 character) was added to '''Currency Symbols'''. (U+20C0)
* A letter Caudate Chrivi (total 2 characters) were added to '''Glagolitic'''. (U+2C2F and U+2C5F)
* Medieval and phonetic punctuation marks (total 11 characters) were added to '''Supplemental Punctuation'''. (U+2E53-U+2E5D)
* Some ideographs for Macao (total 3 characters) were added to '''CJK Unified Ideographs'''. (U+9FFD-U+9FFF)
* Archaic European letters, modifier letters for Sokuon and Chatino orthography (total 13 characters) were added to '''Latin Extended-D'''. (U+A7C0-U+A7C1, U+A7D0-U+A7D1, U+A7D3, U+A7D5, U+A7D6-U+A7D9 and U+A7F2-U+A7F4)
* A modifier letter Wasla Above and honorifics (total 20 characters) were added to '''Arabic Presentation Forms-A'''. (U+FBC2, U+FD40-U+FD4F, U+FDCF and U+FDFE-U+FDFF)
* Letters for Old Tamil (total 6 characters) were added to '''Brahmi'''. (U+11070-U+11075)
* A vowel sign Vocalic R (total 1 character) was added to '''Khaiti'''. (U+110C2)
* An Abbreviation sign (total 1 character) was added to '''Takri'''. (U+116B9)
* Letters for Tai Ahom (total 7 characters) were added to '''Ahom'''. (U+11740-U+11746) The block was expanded from (U+11700-U+1173F) to (U+11700-U+1174F)
* Kana archaic letters (total 4 characters) were added to '''Kana Extended-A'''. (U+1B11F-U+1B122)
* Accidental symbols for Iranian classical music (total 2 characters) were added to '''Musical Symbols'''. (U+1D1E9-U+1D1EA)
* Playground Slide, Wheel and Ring Buoy emoji (total 3 characters) were added to '''Transportation and Map Symbols'''. (U+1F6DD-U+1F6DF)
* A Heavy Equals Sign emoji (total 1 character) was added to '''Geometric Shapes Extended'''. (U+1F7F0)
* A Troll and Face Holding Back Tears emoji (total 2 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F979 and U+1F9CC)
* (total 31 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA7B-U+1FA7C, U+1FAA9-U+1FAAC, U+1FAB7-U+1FABA, U+1FAC3-U+1FAC5, U+1FAD7-U+1FAD9, U+1FAE0-U+1FAE7 and U+1FAF0-U+1FAF6)
* Some ideographs for Macao (total 2 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6DE-U+2A6DF)
* Disunified ideographs and a G source ideograph for China, Hong Kong and Vietnam (total 4 characters) were added to '''CJK Unified Ideographs Extension C'''. (U+2B735-U+2B738)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Latin Extended-B
|0184..0185
|2
|-
|Arabic
|0674..0678, 06C5, 06C7, 06FE
|8
|-
|Letterlike Symbols
|210B, 2110, 2112, 211B, 212C, 2130..2131, 2133
|8
|-
|Enclosed Alphanumerics
|2460..24FF
|160
|-
|Dingbats
|2776..2793
|30
|-
|CJK Symbols and Punctuation
|3001..3029, 3030..303D, 303F
|56
|-
|CJK Strokes
|31C0..31E3
|36
|-
|Katakana Phonetic Extensions
|31F0..31FF
|16
|-
|Enclosed CJK Letters and Months
|3200..321E, 3220..32FF
|255
|-
|CJK Compatibiity
|3300..33FF
|256
|-
|CJK Unified Ideographs Extension A
|3777, 3B3F
|2
|-
|CJK Unified Ideographs
|5DD5, 652C, 6AC0
|3
|-
|Arabic Presentation Forms-A
|FBD7..FBD8, FBDD, FBE0..FBE1
|5
|-
|Vertical Forms
|FE10..FE19
|10
|-
|CJK Compatibiity Forms
|FE30..FE4F
|32
|-
|Small Form Variants
|FE50..FE52, FE54..FE66, FE68..FE6B
|26
|-
|Halfwidth and Fullwidth Forms
|FF01..FF9F, FFA1..FFBE, FFC2..FFC7, FFCA..FFCF, FFD2..FFD7, FFDA..FFDC, FFE0..FFE6, FFE8..FFEE
|225
|-
|Egyptian Hieroglyphs
|1300A, 13017, 1302D, 13032, 13034..13035, 13037..13038, 1303A..1303E, 1304E..1304F, 13055, 13057, 13068, 1309A, 130D2, 130D5, 130F6, 130FE, 13192, 1325F, 13267, 1326A, 13281, 13297, 1329E, 132B4, 132C1, 132E6, 13304, 1331F, 13378..1337B, 1337D..1337E, 133F3, 133FA..13403, 1340D, 13417, 1342B
|55
|-
|Mathematical Alphanumeric Symbols
|1D49C, 1D49E..1D49F, 1D4A2, 1D4A5..1D4A6, 1D4A9..1D4AC, 1D4AE..1D4B5
|18
|-
|Enclosed Alphanumeric Supplement
|1F100..1F1AD, 1F1E6..1F1FF
|200
|-
|Enclosed Ideographic Supplement
|1F200..1F202, 1F210..1F23B, 1F240..1F248, 1F250..1F251, 1F260..1F265
|64
|-
|Supplemental Symbols and Pictographs
|1F930
|1
|-
|CJK Unified Ideographs Extension B
|22ADC, 230F2, 25B27, 26F28
|4
|-
! colspan="2" |Total
!1472
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|1D49C FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE00
|
|chancery style # SCRIPT CAPITAL B
|-
|1D49E FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE00
|
|chancery style # SCRIPT CAPITAL E
|-
|2131 FE00
|
|chancery style # SCRIPT CAPITAL F
|-
|1D4A2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE00
|
|chancery style # SCRIPT CAPITAL H
|-
|2110 FE00
|
|chancery style # SCRIPT CAPITAL I
|-
|1D4A5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE00
|
|chancery style # SCRIPT CAPITAL L
|-
|2133 FE00
|
|chancery style # SCRIPT CAPITAL M
|-
|1D4A9 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE00
|
|chancery style # SCRIPT CAPITAL R
|-
|1D4AE FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Z
|-
|1D49C FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE01
|
|roundhand style # SCRIPT CAPITAL B
|-
|1D49E FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE01
|
|roundhand style # SCRIPT CAPITAL E
|-
|2131 FE01
|
|roundhand style # SCRIPT CAPITAL F
|-
|1D4A2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE01
|
|roundhand style # SCRIPT CAPITAL H
|-
|2110 FE01
|
|roundhand style # SCRIPT CAPITAL I
|-
|1D4A5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE01
|
|roundhand style # SCRIPT CAPITAL L
|-
|2133 FE01
|
|roundhand style # SCRIPT CAPITAL M
|-
|1D4A9 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE01
|
|roundhand style # SCRIPT CAPITAL R
|-
|1D4AE FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Z
|}
===Named Sequences===
Here is a table with new named character sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Name
|-
|0915 093C
|DEVANAGARI SEQUENCE FOR LETTER QA
|-
|0916 093C
|DEVANAGARI SEQUENCE FOR LETTER KHHA
|-
|0917 093C
|DEVANAGARI SEQUENCE FOR LETTER GHHA
|-
|091C 093C
|DEVANAGARI SEQUENCE FOR LETTER ZA
|-
|0921 093C
|DEVANAGARI SEQUENCE FOR LETTER DDDHA
|-
|0922 093C
|DEVANAGARI SEQUENCE FOR LETTER RHA
|-
|092B 093C
|DEVANAGARI SEQUENCE FOR LETTER FA
|-
|092F 093C
|DEVANAGARI SEQUENCE FOR LETTER YYA
|-
|09A1 09BC
|BENGALI SEQUENCE FOR LETTER RRA
|-
|09A2 09BC
|BENGALI SEQUENCE FOR LETTER RHA
|-
|09AF 09BC
|BENGALI SEQUENCE FOR LETTER YYA
|-
|0A32 0A3C
|GURMUKHI SEQUENCE FOR LETTER LLA
|-
|0A38 0A3C
|GURMUKHI SEQUENCE FOR LETTER SHA
|-
|0A16 0A3C
|GURMUKHI SEQUENCE FOR LETTER KHHA
|-
|0A17 0A3C
|GURMUKHI SEQUENCE FOR LETTER GHHA
|-
|0A1C 0A3C
|GURMUKHI SEQUENCE FOR LETTER ZA
|-
|0A2B 0A3C
|GURMUKHI SEQUENCE FOR LETTER FA
|-
|0B21 0B3C
|ORIYA SEQUENCE FOR LETTER RRA
|-
|0B22 0B3C
|ORIYA SEQUENCE FOR LETTER RHA
|}
== Unicode 15.0 ==
Unicode 15.0 was released on September 13, 2022. It encoded 149,186 characters, adding 4,489 new characters.
=== New blocks ===
* '''Arabic Extended-C''' (U+10EC0-U+10EFF), containing 3 characters, was added.
* '''Devanagari Extended-A''' (U+11B00-U+11B5F), containing 10 characters, was added.
* '''Kawi''' (U+11F00-U+11F5F), containing 86 characters, was added.
* '''Kaktovik Numerals''' (U+1D2C0-U+1D2DF), containing 20 characters, was added.
* '''Cyrillic Extended-D''' (U+1E030-U+1E08F), containing 63 characters, was added.
* '''Nag Mundari''' (U+1E4D0-U+1E4FF), containing 42 characters, was added.
* '''CJK Unified Ideographs Extension H''' (U+31350-U+323AF), containing 4192 characters, was added.
=== Extended blocks ===
* A Yamakkan (total 1 character) was added to '''Lao'''. (U+0ECE)
* A combining Anusvara Above Right (total 1 character) was added to '''Kannada'''. (U+0CF3)
* Letters Qa, Short I and Vocalic R (total 3 characters) were added to '''Khojki'''. (U+1123F-U+11241)
* An additional hieroglyph to Group V (total 1 character) was added to '''Egyptian Hieroglyphs'''
* Extended format controls (total 29 characters) were added to '''Egyptian Hieroglyph Format Controls'''. (U+13439-U+13455). The block was expanded from (U+13430-U+1343F) to (U+13430-U+1345F)
* Hiragana and Katakana Small Ko (total 2 characters) were added to '''Small Kana Extension'''. (U+1B132 and U+1B155)
* Letters for Malayalam transliteration (total 6 characters) were added to '''Latin Extended-G'''. (U+1DF25-U+1DF2A)
* A Wireless emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6DC)
* A Nine Pointed White Star (total 1 character) was be added to '''Geometric Shapes Extended'''. (U+1F7D9)
* A Lot of Fortune, eclipse symbols and symbols for dwarf planets (total 6 characters) were added to '''Alchemical symbols'''. (U+1F774-U+1F776 and U+1F77B-U+1F77F)
* (total 20 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA75-U+1FA77, U+1FA87-U+1FA88, U+1FAAD-U+1FAAF, U+1FABB-U+1FABF, U+1FACE-U+1FACF, U+1FADA-U+1FADB, U+1FAE8 and U+1FAF7-U+1FAF8)
* A disunified ideograph for Macao (total 1 character) was added to '''CJK Unified Ideographs Extension C'''. (U+2B739)
===Glyph Changes===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|IPA Extensions
|025E, 029A
|2
|-
|United Canadian Aboriginal Syllabics
|144B, 14D1, 1506, 15C0..15C3, 15E8..15EE, 1601, 1604..1607, 160A..160D, 1614..162D, 1630..163F, 1646..1647, 165A
|66
|-
|United Canadian Aboriginal Syllabics Extended
|18DB, 18EC, 18F1..18F2, 18F5
|5
|-
|Sundanese
|1BBF
|1
|-
|Optical Character Recognition
|2447
|1
|-
|CJK Unified Ideographs Extension A
|34DC, 3BF6, 3C43, 48B4, 4DBE
|5
|-
|CJK Unified Ideographs
|585F, 5F50, 6BC0, 7BC9, 833E
|5
|-
|Cyrillic Extended-B
|A66E
|1
|-
|Old Turkic
|10C47
|1
|-
|Egyptian Hieroglyphs
|various (new standardized variation sequences)
|94
|-
|Khitan Small Script
|18CCA
|1
|-
|Wancho (font update)
|1E2C0..1E2F9, 1E2FF
|59
|-
|Alchemical Symbols (font update)
|1F700..1F773
|116
|-
|CJK Unified Ideographs Extension B
|20048, 20A1C, 2143F, 21A5F, 21C08, 21FBA, 22ACF, 23392, 238A7, 23D8F, 23F4E, 25D20, 26E30, 27B48, 27C4F, 28633, 28B02, 28E9A, 29760, 2A60F
|20
|-
|CJK Unified Ideographs Extension C
|2B249
|1
|-
|CJK Unified Ideographs Extension E
|2BB37, 2BD7D, 2C151, 2C1E0, 2C2D6, 2C5CA, 2C810, 2CD34
|8
|-
|CJK Unified Ideographs Extension F
|2CF4E, 2D25D, 2D3EC, 2D6A7, 2D7BA, 2D979, 2DA74, 2DA97, 2DC13, 2DDC0, 2DF10, 2DF78, 2E05A, 2E0AE, 2E516, 2E640, 2E680, 2EA63
|18
|-
|CJK Compatibility Ideographs Supplement
|2F804, 2F805, 2F833, 2F835, 2F84C, 2F84F, 2F852, 2F855, 2F887, 2F88B, 2F899, 2F8A0, 2F8A6, 2F8A7, 2F8AD, 2F8B1, 2F8B4, 2F8B7, 2F8BA, 2F8D0, 2F8E0..2F8E2, 2F8E5, 2F8E6, 2F8FE, 2F900, 2F901, 2F907, 2F912, 2F922, 2F926, 2F936, 2F938, 2F94E, 2F959, 2F95F, 2F96C, 2F99F, 2F9B8, 2F9BA, 2F9D3, 2F9DB, 2F9DC, 2F9E8, 2F9EA, 2F9EE, 2FA00, 2FA0D, 2FA1B
|50
|-
|CJK Unified Ideographs Extension G
|302FC, 30723, 30A6D, 30CF7, 30DBF, 31006, 3105D
|7
|-
! colspan="2" |Total
!461
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|13091 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027
|-
|13092 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027A
|-
|13093 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D028
|-
|130A9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D047
|-
|1310F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F016
|-
|13117 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F023
|-
|1311C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F028
|-
|13121 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F032
|-
|13127 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F037A
|-
|13139 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13139 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13183 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH H005
|-
|13187 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH H008
|-
|131A0 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131A0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131B1 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B1 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B8 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M009
|-
|131B9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M010
|-
|131BA FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M010A
|-
|131CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M017
|-
|131EE FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131EE FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131F8 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N010
|-
|131F9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131F9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131FA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N012
|-
|131FA FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N012
|-
|13216 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH N035
|-
|13257 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O006
|-
|1327B FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH O029
|-
|1327F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O031
|-
|1327F FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O031
|-
|13285 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O036
|-
|1328C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O039
|-
|132A4 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132A4 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132AA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Q003
|-
|132CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH R024
|-
|132DC FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S010
|-
|132E7 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E7 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E9 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S020
|-
|132F8 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S033
|-
|132FD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S037
|-
|13302 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S042
|-
|13303 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S043
|-
|13307 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T001
|-
|13308 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T002
|-
|13310 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008
|-
|13311 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008A
|-
|13312 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13312 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13313 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13313 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13314 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T010
|-
|13314 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T010
|-
|1331B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331B FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T016A
|-
|13321 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13321 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13322 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13322 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13331 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T035
|-
|13331 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T035
|-
|1333B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U007
|-
|1333C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U008
|-
|1334A FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U022
|-
|13361 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U042
|-
|13373 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V007A
|-
|13377 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V010
|-
|13378 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V011
|-
|1337D FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V012A
|-
|13385 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V019
|-
|13399 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V026
|-
|1339A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V027
|-
|133AF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W001
|-
|133B0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W002
|-
|133BF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W014
|-
|133D3 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH X004A
|-
|133DD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH Y002
|-
|133F2 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z007
|-
|133F5 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z010
|-
|133F6 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z011
|-
|13403 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z015I
|-
|13416 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA008
|-
|13419 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|1341A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA012
|-
|13423 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA021
|-
|1342C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA030
|-
|1342E FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA032
|-
|13443 FE00
|
|expanded # EGYPTIAN HIEROGLYPH LOST SIGN
|-
|13444 FE00
|
|expanded # EGYPTIAN HIEROGLYPH HALF LOST SIGN
|-
|13445 FE00
|
|expanded # EGYPTIAN HIEROGLYPH TALL LOST SIGN
|-
|13446 FE00
|
|expanded # EGYPTIAN HIEROGLYPH WIDE LOST SIGN
|}
== Unicode 15.1 ==
Unicode 15.1 was released on September 12th, 2023. It encoded 149,813 characters, adding 627 new characters.
=== New Blocks ===
* '''CJK Unified Ideographs Extension I''' (U+2EBF0-U+2EE5F), containing 622 characters, was added.
=== Extended Blocks ===
* 4 Ideographic characters were added to '''Ideographic Description Characters'''. (U+2FFC-U+2FFF)
* An Ideographic subtraction (total 1 character) was added to '''CJK Strokes'''. (U+31EF)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|CJK Unified Ideographs Extension A
|357E, 358B..358E, 3599..359D, 35AF..35B0, 35B2..35B3, 35DF..35E1, 35EF, 360F, 3612, 3F94, 44D5, 48EE
|5
|-
|CJK Unified Ideographs
|5098, 512D, 517A, 5391, 54DB, 551C, 551F, 55B8, 55ED, 56AB, 591E, 594A, 5B2E, 5DFC..5DFD, 5EE4, 609E, 65B0, 65B3, 65D5, 65F2, 67B2, 6AB6, 6AEC, 6C69, 6FC2, 6FD3, 7019, 7361, 74BD, 7934, 820B, 826E, 83BB, 8412, 8456, 848A, 896F, 8E34, 8FD7, 9166, 9855, 985E, 9C4D
|5
|-
|Latin Extended-D
|A798
|1
|-
|Latin Extended-E
|AB5A
|1
|-
|Tangut
|17105, 172A4, 17BD1..17BD3, 17EF9, 18136
|59
|-
|Alchemical Symbols
|1F741, 1F747, 1F74C, 1F74F, 1F756, 1F758, 1F763, 1F768, 1F76D, 1F76E
|116
|-
|CJK Unified Ideographs Extension B
|20302, 2087A, 20C00, 230B7, 2339E, 236EF, 237C3, 23B87, 23CC0, 23CD9, 23E5E, 2486F, 249D6, 249E8, 24D6A, 2585E, 25D89, 26A5A..26A5B, 26A73, 26A82..26A83, 26A90, 26AA6, 26AA8, 26AD8, 27350, 279F8, 284A3, 28BBA, 29516, 29530
|20
|-
|CJK Unified Ideographs Extension C
|2A741, 2AB63, 2ACD8, 2AF6F, 2B173, 2B490
|1
|-
|CJK Unified Ideographs Extension E
|2BC2E, 2BF45, 2C04C, 2C13A, 2C43C, 2C43E, 2C816
|8
|-
|CJK Unified Ideographs Extension F
|2D1CC..2D1CD, 2D1DD, 2D1E4, 2D1F7, 2D203, 2D256, 2D266, 2D2A2, 2D2AC, 2D2DA
|18
|-
|CJK Unified Ideographs Extension G
|301D4, 301D9, 301E4, 301E8, 301FF..30200, 30205, 3020C, 30211, 30215..30217, 30220, 30234..30235, 30237
|7
|-
|CJK Unified Ideographs Extension H
|314B7, 31542, 31569, 31C7F, 31D5A, 31F68
|7
|-
! colspan="2" |Total
!164
|}
== Unicode 16.0 ==
Unicode 16.0 was released on September 10th, 2024. It encoded 154,998 characters, adding 5185 new characters.
=== New Blocks ===
* '''Todhri''' (U+105C0-U+105FF), containing 52 characters, was added.
* '''Garay''' (U+10D40-U+10D8F), containing 69 characters, was added.
* '''Tulu-Tigalari''' (U+11380-U+113FF), containing 80 characters, was added.
* '''Myanmar Extended-C''' (U+116D0-U+116FF), containing 20 characters, was added.
* '''Sunuwar''' (U+11BC0-U+11BFF), containing 44 characters, was added.
* '''Egyptian Hieroglyphs Extended-A''' (U+13460-U+143FF), containing 3995 characters, was added.
* '''Gurung Khema''' (U+16100-U+1613F), containing 58 characters, was added.
* '''Kirat Rai''' (U+16D40-U+16D7F), containing 58 characters, was added.
* '''Symbols for Legacy Computing Supplement''' (U+1CC00-U+1CEBF), containing 686 characters, was added.
* '''Ol Onal''' (U+1E5D0-U+1E5FF), containing 44 characters, was added.
=== Extended Blocks ===
* A combining diacritical mark for Jawi (total 1 character) was added to '''Arabic Extended-B'''. (U+0897)
* Inverted letters and a punctuation mark (total 3 characters) was added to '''Balinese'''. (U+1B4E-U+1B4F and U+1B7F)
* A letter Tje (total 2 characters) was added to '''Cyrillic Extended-C'''. (U+1C89-U+1C8A)
* Legacy computing symbols for Delete (total 3 characters) was added to '''Control Pictures'''. (U+2427-U+2429)
* CJK strokes HXG and SZP (total 2 characters) was added to '''CJK Strokes'''. (U+31E4-U+31E5)
* A capital Rams Horn, an S with Diagonal Stroke, Lamda Letters, and letters for Wakashan and Salishan Languages (total 6 characters) was added to '''Latin Extended-D'''. (U+A7CB-U+A7CD, U+A7DA-U+A7DC)
* A combining Alef overlay and letters with two dots vertically below (total 4 characters) was added to '''Arabic Extended-C'''. (U+10EC2-U+10EC4 and U+10EFC)
* A sign Nukta (total 1 character) was added to '''Kawi'''. (U+11F5A)
* A blank character (total 1 character) was added to '''Khitan Small Script'''. (U+18CFF)
* A rightwards arrow with hook, and arrows for legacy computing and arrows for Egyptology (total 12 characters) was added to '''Supplemental Arrows-C'''. (U+1F8B2-U+1F8BB, U+1F8C0-U+1F8C1)
* A Harp, Shovel, Leafless Tree, Fingerprint, Root Vegetable, Splatter, and Face with Bags Under Eyes (total 7 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA89, U+1FA8F, U+1FABE, U+1FAC6, U+1FADC, U+1FADF, and U+1FAE9)
* Graphic shapes for legacy computing (total 37 characters) was added to '''Symbols for Legacy Computing'''. (U+1FBCB-U+1FBEF)
== Unicode 17.0 ==
Unicode 17.0 was released on September 9th, 2025. It encoded 159,801 characters, adding 4,083 new characters.
=== New Blocks ===
* '''Sidetic''' (U+10940-U+1095F), containing 26 characters, was added.
* '''Sharada Supplement''' (U+11B60-U+11B7F), containing 8 characters, was added.
* '''Tolong Siki''' (U+11DB0-U+11DEF), containing 54 characters, was added.
* '''Beria Erfe''' (U+16EA0-U+16EDF), containing 50 characters, was added.
* '''Tangut Components Supplement''' (U+18D80-U+18DFF), containing 115 characters, was added.
* '''Miscellaneous Symbols Supplement''' (U+1CEC0-U+1CEFF), containing 34 characters, was added.
* '''Tai Yo''' (U+1E6C0-U+1E6FF), containing 55 characters, was added.
* '''CJK Unified Ideographs Extension J''' (U+323B0-U+3347F), containing 4298 characters, was added.
=== Extended Blocks ===
* A Noon with Ring Above (total 1 character) was added to '''Arabic Extended-B'''. (U+088F)
* An archaic ligature Shrii (total 1 character) was added to '''Telugu'''. (U+0C5C)
* An archaic ligature Shrii (total 1 character) was added to '''Kannada'''. (U+0CDC)
* Compound tone and harrington diacritics (total 26 characters) was to '''Combining Diacritical Marks Extended'''. (U+1ACF-U+1ADD, U+1AE0-U+1AEB)
* Saudi Riyal Sign (total 1 character) was added to '''Currency Symbols'''. (U+20C1)
* Equal Sign with Infinity Above (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B96)
* 2 capital letters for Middle English, Latin pharyngeal voiced fricative, and Modifier Letter Capital S (total 5 characters) was added to '''Latin Extended-D'''. (U+A7CE-U+A7CF, U+A7D2, U+A7D4, U+A7F1)
* Arabic Ligature Rahmatu Allaahi Alayh and Arabic Honorifics (total 25 characters) was added to '''Arabic Presentation Forms-A'''. (U+FBC3-U+FBD2, U+FD90, U+FD91, U+FDC8-U+FDCE)
* A Small Yeh Barree with Two Dots Below, Thin Noon, Biblical End of Verse, Yeh with Four Dots Below, Honorifics, Double Vertical Bar Below, and Small Low Noon (total 14 characters) was added to '''Arabic Extended-C'''. (U+10EC5-U+10EC7, U+10ED0-U+10ED8, U+10EFA-U+10EFB)
* Chinese Simplified and Traditional Er and Yangqin Slow Signs Two, Three, and Four (total 5 characters) was added to '''Ideographic Symbols and Punctuation'''. (U+16FF2-U+16FF6)
* Some additional ideographs (total 8 characters) was added to '''Tangut'''. (U+187F8-U+187FF)
* Additional ideographs (total 22 characters) was added to '''Tangut Supplement'''. (U+18D09-U+18D1E)
* Nine symbols (total 9 characters) was added to '''Symbols for Legacy Computing Supplement'''. (U+1CCFA-U+1CCFC, U+1CEBA-1CEBF)
* A Landslide (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D8)
* Historical asteroid symbols (total 4 characters) was added to '''Alchemical Symbols'''. (U+1F777-U+1F77A)
* Chemical symbols (total 9 characters) was added to '''Supplemental Arrows-C'''. (U+1F8D0-U+1F8D8)
* White and Black Chess Ferz and Alfil (total 4 characters) was added to '''Chess Symbols'''. (U+1FA54-U+1FA57)
* A trombone, treasure chest, hairy creature, orca, distorted face, and fight cloud (total 6 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA8A, U+1FA8E, U+1FAC8, U+1FACD, U+1FAEA, and U+1FAEF)
* An alarm bell symbol (total 1 character) was added to '''Symbols for Legacy Computing'''. (U+1FBFA)
* Additional ideographs (total 6 characters) was added to '''CJK Unified Ideographs Extension C'''. (U+2B73A-U+2B73F)
* Additional ideographs (total 12 characters) was added to '''CJK Unified Ideographs Extension E'''. (U+2CEA2-U+2CEAD)
== Unicode 18.0 ==
Unicode 18.0 will be released around September 2026. In August 2025, only 61 characters were accepted, but more were accepted in November 2025.
=== New Blocks ===
*'''Bengali Supplement''' (U+11DF0-U+11DFF), containing 2 characters, will be added.
* '''Archaic Cuneiform Numerals''' (U+12550-U+1268F), containing 311 characters, will be added.
* '''Jurchen''' (U+18E00-U+1919F), containing 914 characters, will be added.
* '''Jurchen Radicals''' (U+191A0-U+191DF), containing 51 characters, will be added.
* '''Musical Symbols Supplement''' (U+1D250-U+1D28F), containing 50 characters, will be added.
* '''Miscellaneous Symbols and Arrows Extended''' (U+1DB00-U+1DBFF), containing 29 characters, will be added.
* '''Seal Script''' (U+3D000-U+3FC3F), containing 11328 characters, will be added.
=== Extended Blocks ===
* Modifier letters Eh, Ini, and Yi (total 3 characters) will be added to '''Armenian'''. (U+0558, U+058B-U+058C)
* Hebrew Point Sheva Na Mudgash and Hebrew Point Dagesh Hazaq Mudgash (total 2 characters) will be added to '''Hebrew'''. (U+05C8-U+05C9)
* Signs for dot above and double dot above (total 2 characters) will be added to '''Oriya'''. (U+0B53-U+0B54)
* Alternate positioned IPA diacritics and diacritics for Chao and Khoe (total 7 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1ADE-U+1ADF, U+1AEC-U+1AF0)
* Latin subscript small letter w, y, and z and Modifier letter high and low vertical line (total 4 characters) will be added to '''Superscripts and Subscripts'''. (U+208F, U+209D-U+209F)
* Rufiyaa Sign, UAE Dirham Sign, and Omani Rial (total 3 characters) will be added to '''Currency Symbols'''. (U+20C2-U+20C4)
* Two Wiggly Exclamation Marks and Two Parenthesis with Middle Ring (total 4 characters) will be added to '''Supplemental Punctuation'''. (U+2E60-U+2E63)
* Latin capital letter closed omega and Latin capital letter r with long leg and (total 2 characters) will be added to '''Latin Extended-D'''. (U+A7DD and U+A7E2)
* Latin capital letter script r and script r with ring (total 2 characters) will be added to '''Latin Extended-E'''. (U+AB6C-U+AB6D)
* Latin modifier letters for clicks (total 5 characters) will be added to '''Latin Extended-F'''. (U+107BB-U+107BF)
* Arabic Crown Letters, Quranic Characters, and Arabic Crown (total 39 characters) will be added to '''Arabic Extended-C'''. (U+10EC9-U+10ECF, U+10ED9-U+10EEE, U+10EF0-U+10EF9)
* Devanagari Letter Alternate Ddda (total 1 character) will be added to '''Devanagari Extended-A'''. (U+11B0A)
* Extended Cuneiform Numeric Signs (total 12 characters) will be added to '''Cuneiform Numbers and Punctuation'''. (U+1246F, U+12475-U+1247F)
* Jurchen Small Script characters (total 5 characters) will be added to '''Khitan Small Script'''. (U+18CD6-U+18CDA)
* Two additional ideographs (total 2 characters) will be added to '''Tangut Supplement'''. (U+18D1F-U+18D20)
* Hiragana Digraph Koto, Katakana Diagraphs Toki, Tote, and Yori, letters alternate Ne, and Wi (total 6 characters) will be added to '''Kana Extended-A'''. (U+1B123-U+1B128)
* Katakana letter small archaic Ye (total 1 character) will be added to '''Small Kana Extension'''. (U+1B168)
* Leibnizian alchemical symbols, Leibnizian cossic characters, and Leibnizian mathematical signs and symbols (total 19 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED2-U+1CED4, U+1CEDD-U+1CEDF, U+1CEF1-U+1CEFD)
* Stein Zimmerman Symbols, Digit Slash Symbols, and other Symbols (total 23 characters) will be added to '''Musical Symbols'''. (U+1D127-U+1D128, U+1D1EB-U+1D1FF)
* Mathematical italic long s with descender s (U+1D6A6) will be added to '''Mathematical Alphanumeric Symbols'''.
* Affricate ligatures, letters with palatal hook, barred letters, RFE letters, Initial Teaching Alphabet, English Phonotypic Alphabet, Leibnizian cossic characters, and modifier letters (total 151 characters) will be added to '''Latin Extended-G'''. (U+1DF1F-U+1DF24, U+1DF2B-U+1DF81, U+1DF90-U+1DF96, U+1DFCD-U+1DFFF)
* A Tomobiki symbol (total 1 character) will be added to '''Enclosed Alphanumeric Supplement'''. (U+1F1AE)
* A lighthouse (total 1 character) will be added to '''Transport and Map Symbols'''. (U+1F6D9)
* A black circle with white vertical bar, and Extended Geometric Shapes (total 17 characters) will be added to '''Geometric Shapes Extended'''. (U+1F7DA-U+1F7DB, U+1F7F1-U+1F7FF)
* A meteor, eraser, net with handle, monarch butterfly, pickle, cracking face, leftwards thumb sign, and rightwards thumb sign (total 8 characters) will be added to '''Symbols and Pictographs Extended-A'''. (U+1FA8B-1FA8D, U+1FACC, U+1FADD, U+1FAEB, U+1FAF9-1FAFA)
* An additional ideograph (total 1 character) will be added to '''CJK Unified Ideographs Extension D'''. (U+2B81E)
== Code Points Provisionally Assigned==
This is a section where you can add any upcoming Unicode characters that have been [https://www.unicode.org/alloc/Pipeline.html#codepoint_reservation provisionally assigned for mature proposals] (but not yet accepted) for a future update of The Unicode Standard.
=== New Blocks ===
<!--* '''Arabic Extended-D''' (U+10D90-U+10E5F), containing 3 characters, will be added.-->
* '''Sirmauri''' (U+11850-U+1188F), containing 55 characters, will be added.
* '''Leke''' (U+11B80-U+11BBF), containing 55 characters, will be added.
* '''Proto-Cuneiform''' (U+12690-U+12ECF), containing 1392 characters, will be added.
* '''Mwangwego''' (U+16E00-U+16E3F), containing 64 characters, will be added.
* '''Shaaldaa''' (U+1C800-U+1CB2F), containing 804 characters, will be added.
=== Extended Blocks ===
* Telugu Sign Spacing Candrabindu (total 1 character) will be added to '''Telugu'''. (U+0C70)
<!--* Kannada Signs Ardhanusvara and Combining Anusvara Above (total 1 character) will be added to '''Kannada'''. (U+0CF0 and U+0CF4)-->
* Mongolian Letter Manchu Alternative Ue (total 1 character) will be added to '''Mongolian'''. (U+1879)
* Combining Grave-Acute-Macron, Combining inverted lazy s Above, and Combining comma Above and acute (total 3 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1AF1-U+1AF3)
* Cyrillic small letter Yeru with connecting bar (total 1 character) will be added to '''Cyrillic Extended-C'''. (U+1C8B)
* Belarusian Ruble sign and Ruble sign with double vertical stem (total 2 characters) will be added to '''Currency Symbols'''. (U+20C5, U+20CF)
<!--* Combining Long Triple Solidus Overlay and Combining Saltire Overlay (total 2 characters) will be added to '''Combining Diacritical Marks for Symbols'''. (U+20F1-U+20F2)-->
<!--* Latin capital and small letter i with oblique stroke (total 2 characters) will be added to '''Latin Extended-D'''. (U+AB6E)-->
* Latin capital letter u with left hook (total 1 character) will be added to '''Latin Extended-E'''. (U+AB6E)
* Arabic Dotless Half-Yeh and Half-Yeh (total 2 characters) will be added to '''Arabic Extended-C'''. (U+10EC0-U+10EC1)<!--also Arabic Dotless Half-Jeem and Astronomical Kaf (U+10EC8, U+10EEF), up to 4 characters-->
<!--Brahmi minimizing virama (total 1 character) will be added to '''Brahmi'''. (U+1107E)-->
* Tulu-Tigalari letter combining anusvara above and letter archaic II (total 2 characters) will be added to '''Tulu-Tigalari'''. (U+113CB, U+113DA<!--planned to move to 113DB, with signs om pushpika with tail and shrii pushpika with tail added at U+113D9-U+113DA, up to 4 characters-->
<!--* Newa Letter Heavy Ya (total 1 character) will be added to '''Newa'''. (U+11462)-->
* Dogra Signs Candrabindu and Avaragha (total 2 characters) will be added to '''Dogra'''. (U+1183C-U+1183D)
* Devanagari Jivamuliya and Upadhmaniya (total 2 characters) will be added to '''Devanagari Extended-A'''. (U+11B0B-U+11B0C)
* Alchemical Symbol for Calx-2 and Alchemical Symbol for Retort-2 (total 2 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED1, U+1CED5)
<!--* Musical Symbol down arrowhead breath mark (total 1 character) will be added to '''Musical Symbols Supplement'''. (U+1D282)-->
<!--* Leibnizian letterlike symbols and miscellaneous mathematical symbols (total 15 characters) will be added to '''Miscellaneous Symbols and Arrows Extended'''. (U+1DB1D-U+1DB2B)-->
* Small w with palatal hook, small n and r with double middle tilde, small capital i with retroflex hook, small open q, x with stroke, small wavy y, schwa with right hook, Romance dialectology symbols, zh ligature, Albanian letter edhe, Modifier letter capital y, and modifier letter accents (total 17 characters) will be added to '''Latin Extended-G'''. (U+1DF82-U+1DF8F, U+1DF97-U+1DF9A, U+1DFC4-U+1DFCD)<!---also Albanian Frashëri letters, characters up to 26-->
<!--*Arabic Astronomical zero and five astronomical symbols (total 6 characters) will be added to Arabic Mathematical Alphabetic Symbols (U+1EEE0-U+1EEE5)-->
==Roadmap Blocks==
This is a section where proportional maps of proposed allocations to Unicode and ISO/IEC 10646 are presented. Italic indicates scripts for which detailed proposals have not yet been written.<ref>[https://unicode.org/roadmaps/smp/]</ref>
* '''Northern Palaeohispanic''' (U+10200-U+1023F)
* '''Southern Palaeohispanic''' (U+10240-U+1027F)
* '''''Shavian Quikscript''' (U+103E0-U+103FF)''
* '''Combining Diacritical Marks Extended-A''' (U+107C0-U+107FF)
* '''Proto-Sinaitic''' (U+108B0-U+108DF)
* '''''Numidian''' (U+10960-U+1097F)''
* '''Balti''' (U+10AA0-U+10ABF)
* '''Book Pahlavi''' (U+10BB0-U+10BDF)
* '''Baburi''' (U+10BE0-U+10BFF)
* '''Arabic Extended-D''' (U+10D90-U+10E5F)
* '''Landa''' (U+11250-U+1127F)
* '''Tani Lipi''' (U+114E0-U+114FF)
* '''Ranjana''' (U+11500-U+1157F)
* '''Zou''' (U+11750-U+117AF)
* '''Pyu''' (U+117B0-U+117FF)
* '''Vateluttu''' (U+11960-U+1199F)
* '''Balti-B''' (U+11CC0-U+11CFF)
* '''Tocharian''' (U+11E00-U+11E6F)
* '''Khotanese''' (U+11E70-U+11ECF)
* '''Pallava''' (U+11F60-U+11FAF)
* '''''Egyptian Hieroglyphs Extended-B''' (U+14680-U+151FF)''
* '''Mayan Hieroglyphs''' (U+15500-U+15AFF)
* '''Kore Sebeli''' (U+15B00-U+15B6F)<!--proposed to be accepted, 93 characters-->
* '''Mandombe''' (U+15B80-U+15FFF)
* '''Kurukh Banna''' (U+16140-U+1618F)
* '''Moon''' (U+161A0-U+161FF)
* '''Blissymbols''' (U+16200-U+167FF)
* '''Woleai''' (U+16B90-U+16BFF)
* '''Kpelle''' (U+16C00-U+16C7F)
* '''Tikamuli''' (U+16C80-U+16CBF)
* '''Tangsa (Khimhun)''' (U+16CD0-U+16CFF)
* '''Afaka''' (U+16D00-U+16D3F)
* '''Kulitan''' (U+16DD0-U+16DFF)
* '''''Bopomofo Extended-A''' (U+16FA0-U+16FAF)''
* '''Kanbun Extended-A''' (U+16FB0-U+16FDF)
* '''Khitan Large Script''' (U+19200-U+199FF)
* '''Pau Cin Hau Syllabary''' (U+19E00-U+1A2FF)
* '''Eskaya''' (U+1A300-U+1A75F)
* '''Rejang Extended''' (U+1A760-U+1A77F)
* '''''Kaida''''' (U+1A780-U+1A7FF)
* '''Naxi Dongba''' (U+1A800-U+1ACFF)
* '''''Naxi Geba''' (U+1AD00-U+1AFCF)''
* '''''Kana Extended-C''' (U+1AFD0-U+1AFEF)''
* '''Shuishu Logograms''' (U+1B300-U+1B5FF)
* '''Lisu Syllabic Script''' (U+1B600-U+1B9FF)
* '''Indus''' (U+1BA00-U+1BB8F)
* '''Pitman Shorthand''' (U+1BCB0-U+1BCFF)
* '''Proto-Elamite''' (U+1BE00-U+1C37F)
* '''Linear Elamite''' (U+1C380-U+1C4FF)
* '''Ndiko Jonam''' (U+1CB30-U+1CB7F)<!--proposed to be accepted, 60 characters-->
* '''N<nowiki>'</nowiki>ti''' (U+1CB80-U+1CBAF)<!--proposed to be accepted, 47 characters-->
* '''Old Chinese Musical Symbols (Flute and Pipa)''' (U+1D290-U+1D2BF)
* '''''Mathematical Alphanumeric Symbols Supplement''' (U+1D380-U+1D3FF)''
* '''Jianzi Format Controls''' (U+1DAE0-U+1DAFF)
* '''Leibnizian Ambiguous Signs''' (U+1DC00-U+1DC3F)<!--proposed to be accepted, 54 characters-->
* '''Eebee Hmong''' (U+1E150-U+1E1FF)
* '''Western Cham''' (U+1E200-U+1E26F)
* '''Loma''' (U+1E300-U+1E41F)
* '''Bagam''' (U+1E420-U+1E4CF)
* '''Pungchen''' (U+1E500-U+1E52F)
* '''''Pungchung''' (U+1E530-U+1E55F)''
* '''''Marchung''' (U+1E560-U+1E59F)''
* '''Brusha''' (U+1E5A0-U+1E5CF)
* '''''Chola''' (U+1E600-U+1E65F)''
* '''Box-Headed''' (U+1E660-U+1E6BF)
* '''Lampung''' (U+1E700-U+1E73F)
* '''Kerinci''' (U+1E740-U+1E76F)
* '''Buginese Supplement''' (U+1E770-U+1E7BF)
* '''''Lontara Bilang-Bilang''' (U+1E7C0-U+1E7DF)''
* '''N'Ko Supplement''' (U+1E960-1E97F)
* '''''Byblos''''' (U+1EB90-U+1EBFF)
* '''Persian Siyaq Numbers''' (U+1EC00-U+1EC7F)
* '''Diwani Siyaq Numbers''' (U+1ECC0-U+1ECFF)
* '''''Extended Pictographic Characters''' (U+1FC00-U+1FFFF)''
* '''CJK Unified Ideographs Components-A''' (U+2FA20-U+2FA9F)
* '''CJK Unified Ideographs Components-B''' (U+2FAA0-U+2FC1F)
== References ==
{{reflist}}
gjlpdu2d22b9ojmogru7w1b3hltbnem
4656273
4656272
2026-08-04T18:03:49Z
Alexlatham96
377450
/* New Blocks */
4656273
wikitext
text/x-wiki
{{pp-protected|small=yes}}
{{Unicode page}}
{{TOC right}}
{{refimprove|date=June 2017}}
This page is about each version specification, and the differences between the versions.
== Unicode 1.0 ==
Unicode 1.0 was the first version of Unicode, released October 1991. It encoded 7,094 new characters.
=== “Blocks” ===
This version of Unicode did not formally group characters in blocks. But in comparison with version 2.0, the following “blocks” were available:
U+0000-U+FFFD
51 Blocks
* '''Basic Latin (formerly called ASCII)''' (U+0000-U+007F), containing 128 characters.
* '''Latin-1 Supplement (formerly called Latin1)''' (U+0080-U+00FF), containing 128 characters.
* '''Latin Extended-A''' '''(formerly called European Latin)''' (U+0100-U+017F), containing 127 characters.
* '''Latin Extended-B''' '''(formerly called Extended Latin)''' (U+0180-U+01FF), containing 113 characters.
* '''IPA Extensions''' '''(formerly called Standard Phonetic)''' (U+0250-U+02AF), containing 89 characters.
* '''Spacing Modifier Letters''' '''(formerly called Modifier Letters)''' (U+02B0-U+02FF), containing 57 characters.
* '''Combining Diacritical Marks''' '''(formerly called Generic Diacritical Marks)''' (U+0300-U+036F), containing 66 characters.
* '''Greek and Coptic''' '''(formerly called Greek)''' (U+0370-U+03FF), containing 112 characters.
* '''Cyrillic''' (U+0400-U+04FF), containing 192 characters.
* '''Armenian''' (U+0530-U+058F), containing 84 characters.
* '''Hebrew''' (U+0590-U+05FF), containing 52 characters.
* '''Arabic''' (U+0600-U+06FF), containing 169 characters.
* '''Devanagari''' (U+0900-U+097F), containing 104 characters.
* '''Bengali''' (U+0980-U+09FF), containing 89 characters.
* '''Gurmukhi''' (U+0A00-U+0A7F), containing 74 characters.
* '''Gujarati''' (U+0A80-U+0AFF), containing 75 characters.
* '''Oriya''' (U+0B00-U+0B7F), containing 78 characters.
* '''Tamil''' (U+0B80-U+0BFF), containing 61 characters.
* '''Telugu''' (U+0C00-U+0C7F), containing 80 characters.
* '''Kannada''' (U+0C80-U+0CFF), containing 80 characters.
* '''Malayalam''' (U+0D00-U+0D7F), containing 78 characters.
* '''Thai''' (U+0E00-U+0E7F), containing 92 characters.
* '''Lao''' (U+0E80-U+0EFF), containing 70 characters.
* '''Tibetan''' (U+1000-U+105F), containing 71 characters.
* '''Georgian''' (U+10A0-U+10FF), containing 78 characters.
* '''General Punctuation''' (U+2000-U+206F), containing 67 characters.
* '''Superscripts and Subscripts''' (U+2070-U+209F), containing 28 characters.
* '''Currency Symbols''' (U+20A0-U+20CF), containing 11 characters.
* '''Combining Marks for Symbols''' '''(formerly called Diacritical Marks for Symbols)''' (U+20D0-U+20FF), containing 18 characters.
* '''Letterlike Symbols''' (U+2100-U+214F), containing 57 characters.
* '''Number Forms''' (U+2150-U+218F), containing 48 characters.
* '''Arrows''' (U+2190-U+21FF), containing 91 characters.
* '''Mathematical Operators''' (U+2200-U+22FF), containing 242 characters.
* '''Miscellaneous Technical''' (U+2300-U+23FF), containing 43 characters.
* '''Control Pictures''' '''(formerly called Pictures for Control Codes)''' (U+2400-U+243F), containing 37 characters.
* '''Optical Character Recognition''' (U+2440-U+245F), containing 11 characters.
* '''Enclosed Alphanumerics''' (U+2460-U+24FF), containing 139 characters.
* '''Box Drawing''' '''(formerly called Form and Chart Components)''' (U+2500-U+257F), containing 128 characters.
* '''Block Elements''' '''(formerly called Blocks)''' (U+2580-U+259F), containing 22 characters.
* '''Geometric Shapes''' (U+25A0-U+25FF), containing 79 characters.
* '''Miscellaneous Symbols''' '''(formerly called Miscellaneous Dingbats)''' (U+2600-U+26FF), containing 106 characters.
* '''Dingbats''' '''(formerly called Zapf Dingbats)''' (U+2700-U+27BF), containing 160 characters.
* '''CJK Symbols and Punctuation''' (U+3000-U+303F), containing 56 characters.
* '''Hiragana''' (U+3040-U+309F), containing 90 characters.
* '''Katakana''' (U+30A0-U+30FF), containing 90 characters.
* '''Bopomofo''' (U+3100-U+312F), containing 40 characters.
* '''Hangul Compatibility Jamo (formerly called Hangul Elements)''' (U+3130-U+318F), containing 94 characters.
* '''Kanbun (formerly called CJK Miscellaneous)''' (U+3190-U+31FF), containing 16 characters.
* '''Enclosed CJK Letters and Months''' '''(formerly called''' '''Enclosed CJK Letters and Ideographs)''' (U+3200-U+32FF), containing 191 characters.
* '''CJK Compatibility''' '''(formerly called CJK Squared Words for U+3300-U+337F and CJK Squared Abbreviations for U+3380-33FF)''' (U+3300-U+33FF), containing 187 characters.
* '''Hangul''' (U+3400-U+3D2D), containing 2,350 characters.
* '''Private Use Area''' (U+E000-U+FDFF), reserved for 5,632 characters.
* '''CJK Compatibility Forms''' '''(formerly called CNS 11643 Compatibility)''' (U+FE30-U+FE4F), containing 28 characters.
* '''Small Form Variants''' '''(formerly called Small Variants)''' (U+FE50-U+FE6F), containing 26 characters.
* '''Arabic Presentation Forms-B''' '''(formerly called Basic Glyphs for Arabic Language)''' (U+FE70-U+FEFF), containing 140 characters.
* '''Halfwidth and Fullwidth Forms''' '''(formerly called Halfwidth and Fullwidth Variants)''' (U+FF00-U+FFEF), containing 216 characters.
* '''Specials''' '''(formerly called Special)''' (U+FFF0-U+FFFF), containing 1 character.
== Unicode 1.0.1 ==
Unicode 1.0.1 was released June 1992. It encoded 28,292 characters, adding 21,204 new characters and removing 6 characters, for a net increase of 21,198 characters.
=== New blocks ===
* '''CJK Unified Ideographs''' (U+4E00-U+9FFF), containing 20,902 Han Ideographs for Chinese, Japanese and Korean, was added.
* '''CJK Compatibility Ideographs''' (U+F900-U+FAFF), containing 302 Han Ideographs for compatibility with existing character sets, was added.
=== Removed characters ===
* Letters Ka and Kha with Ogonek (total 4 characters) were removed from '''Cyrillic'''. (U+04C5-U+04C6 and U+04C9-U+04CA)
* APL Compose Operator and APL Out (total 2 characters) were removed from '''Miscellaneous Technical'''. (U+2300-U+2301)
=== Rearranged characters ===
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
*'''Circled Katakana:''' ''The characters well be arranged in modern order: e.g., A, I, U, E, O, KA, KI'' (U+32D0-U+32FE)
*'''Basic Glyphs For Arabic Language:''' ''The character shapes will be arranged in different order: Isolate, Final, Initial and Medial'' (U+FE80-FEFC)
=== Characters with semantics changed ===
*'''Zero Width Non-Joiner''' [ZWNJ] (U+20DC)
*'''Zero Width Joiner''' [ZWJ] (U+20DD)
== Unicode 1.1 ==
Unicode 1.1 was released June 1993. It encoded 34,168 characters, adding 5,969 new characters and removing 93 characters, for a net increase of 5,876 characters. It finalized the long anticipated Han Unification.
=== New blocks ===
* '''Hangul Jamo''' (U+1100-U+11FF), containing 240 ''jamo'' for the Hangul script, was added.
* '''Latin Extended Additional''' (U+1E00-U+1EFF), containing 245 precomposed characters for transliteration and Vietnamese, was added.
* '''Greek Extended''' (U+1F00-U+1FFF), containing 233 precomposed characters for polytonic Greek, was added.
* '''Hangul Supplementary-A''' (U+3D2E-U+44B7), containing 1,930 precomposed syllables for the Hangul script, was added.
* '''Hangul Supplementary-B''' (U+44B8-U+4DFF), containing 2,376 precomposed syllables for the Hangul script, was added.
* '''Alphabetic Presentation Forms''' (U+FB00-U+FB4F), containing 57 precomposed characters and ligatures, was added.
* '''Arabic Presentation Forms-A''' (U+FB50-U+FDFF), containing 593 combinations of Arabic letters, was added.
* '''Combining Half Marks''' (U+FE20-U+FE2F), containing 4 halves of diacritical marks, was added.
=== Extended blocks ===
* The long S (ſ) (total 1 character) was added to '''Latin Extended-A'''. (U+017F)
* The Hungarian Dz, characters for transliteration purposes and precomposed characters with double grave and inverted breve (total 35 characters) were added to '''Latin Extended-B''' (U+01F1-U+01F5 and U+01FA-U+0217). The block was expanded from (U+0180-U+01FF) to (U+0180-U+024F)
* Diacritics for polytonic Greek and double width diacritics (total 6 characters) were added to '''Combining Diacritical Marks'''. (U+0342-U+0345 and U+0360-U+0361)
* Compatibility character now deprecated, Ano Teleia, and other characters (total 5 characters) were added to '''Greek and Coptic''' (U+0374-U+0375, U+037A, U+037E and U+0387).
* Additional characters for non-Slavic languages (total 38 characters) were added to '''Cyrillic'''. (U+04D0-U+04EB, U+04EE-U+04F5 and U+04F8-U+04F9)
* A ligature of Ech and Yiwn (և) (total 1 character) was added to '''Armenian'''. (U+0587)
* One deprecated compatibility character and several characters for biblical texts (total 25 characters) were added to '''Arabic'''. (U+066D and U+06D6-U+06ED)
* A sign Virama (total 1 character) was added to '''Gurmukhi''' (U+0A4D).
* Letters Candra O and E (total 3 characters) were added to '''Gujarati'''. (U+0A8D, U+0A91 and U+0AC9)
* An Ai Length mark (total 1 character) was added to '''Oriya'''. (U+0B56)
* An undertie, a pair of brackets and six formatting characters now deprecated (total 9 characters) were added to '''General Punctuation'''. (U+203F, U+2045-U+2046 and U+206A-U+206F)
* Some additional symbols and the complete set of APL functional symbols (total 79 characters) were added to '''Miscellaneous Technical'''. (U+2300 and U+232D-U+237A)
* A large circle (◯) (total 1 character) was added to '''Geometric Shapes'''. (U+25EF)
* The ideographic telegraph line feed separator symbol (〷) (total 1 character) was added to '''CJK Symbols and Punctuation'''. (U+3037)
* Four Katakana letters not in use since 1945 (total 4 characters) were added to '''Katakana'''. (U+30F7-U+30FA)
* Ideographic telegraph symbols for the twelve months (total 12 characters) were added to '''Enclosed CJK Letters and Months'''. (U+32C0-U+32CB)
* Ideographic telegraph symbols for hours and days and six additional measure units (total 62 characters) were added to '''CJK Compatibility'''. (U+3358-U+3376 and U+33E0-U+33FE)
* Some more space (total 2,304 characters) was added to the '''Private Use Area'''.
* Seven halfwidth geometric shapes (total 7 characters) were added to '''Halfwidth and Fullwidth Forms'''. (U+FFE8-U+FFEE)
=== Removed blocks ===
* '''Tibetan''', containing 71 letters for the Tibetan script, was removed from the Unicode standard.
=== Removed characters ===
* A total of 10 characters were removed from '''Greek and Coptic'''. (U+0370-U+0372, U+03D7-U+03D9, U+03DB, U+03DD, U+03DF, and U+03E1)
* Point Varika (total 1 character) was removed from ''Hebrew''. (U+05F5)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Thai'''. (U+0E70-U+0E74)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Lao'''. (U+0EF0-U+0EF4)
* An Ideographic Ditto Mark (total 1 character) was removed from '''CJK Symbols and Punctuation''' (U+3004) and merged with CJK Unified Ideograph-4EDD.
=== Rearranged characters ===
* Greek character U+03F3 was changed from Spacing Tonos to Letter Yot.
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
== Unicode 2.0 ==
Unicode 2.0 was released July 1996. It encoded 38,885 characters, adding 11,373 new characters and removing 6,656 characters, for a net increase of 4,717 characters. This was the first Unicode version to reserve blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Hangul Syllables''' (U+AC00-U+D7AF), containing 11,172 precomposed syllables for the Hangul script, was added.
* '''High Surrogates''' (U+D800-U+DB7F), setting aside 896 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''High Private Use Surrogates''' (U+DB80-U+DBFF), setting aside 128 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Low Surrogates''' (U+DC00-U+DFFF), setting aside 1,024 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Supplementary Private Use Area-A''' (U+F0000-U+FFFFF), reserving 65,534 characters for private use, was added.
* '''Supplementary Private Use Area-B''' (U+100000-U+10FFFF), reserving 65,534 characters for private use, was added.
=== Reinstated blocks ===
* '''Tibetan''' (U+0F00-U+0FFF), now containing 168 characters for the Tibetan script including religious signs, was readded.
=== Removed blocks ===
* '''Hangul''', containing 2,350 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-A''', containing 1,930 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-B''', containing 2,376 precomposed syllables for the Hangul script, was removed from the Unicode standard.
=== Extended blocks ===
* Cantillation marks for use in religious texts (total 31 characters) were added to '''Hebrew'''. (U+0591-U+05A1, U+05A3-U+05AF and U+05C4)
* A long S with Dot Above (total 1 character) was added to '''Latin Extended Additional'''. (U+1E9B)
* A Vietnamese Dong sign (total 1 character) was added to '''Currency Symbols'''. (U+20AB)
== Unicode 2.1 ==
Unicode 2.1 was released May 1998. It encoded 38,887 characters, adding only 2 new characters.
=== Extended blocks ===
* A Euro sign (total 1 character) was added to '''Currency Symbols'''. (U+20AC)
* An Object Replacement Character (total 1 character) was added to '''Specials'''. (U+FFFC)
== Unicode 3.0 ==
Unicode 3.0 was released September 1999. It was a big update and encoded 49,194 characters, adding 10,307 new characters.
=== New blocks ===
* '''Syriac''' (U+0700-U+074F), containing 71 characters used for writing in Syriac script, was added.
* '''Thaana''' (U+0780-U+07BF), containing 49 characters used for writing in Thaana script, was added.
* '''Sinhala''' (U+0D80-U+0DFF), containing 80 characters for the Sinhala script, was added.
* '''Myanmar''' (U+1000-U+109F), containing 78 characters for the Burmese script, was added.
* '''Ethiopic''' (U+1200-U+137F), containing 345 syllables and punctuation marks for the Ethiopic script, was added.
* '''Cherokee''' (U+13A0-U+13FF), containing 85 syllables for the Cherokee script, was added.
* '''Unified Canadian Aboriginal Syllabics''' (U+1400-U+167F), containing 630 syllables and punctuation marks for writing in indigenous languages of Canada, was added.
* '''Ogham''' (U+1680-U+169F), containing 29 characters for the ancient Ogham script, was added.
* '''Runic''' (U+16A0-U+16FF), containing 81 characters for the Germanic runes, was added.
* '''Khmer''' (U+1780-U+17FF), containing 103 characters for the Khmer script, was added.
* '''Mongolian''' (U+1800-U+18AF), containing 155 characters for the classical Mongolian script, was added.
* '''Braille Patterns''' (U+2800-U+28FF), containing 256 Braille letters, was added.
* '''CJK Radicals Supplement''' (U+2E80-U+2EFF), containing 115 non-Kangxi radicals, was added.
* '''Kangxi Radicals''' (U+2F00-U+2FDF), containing 214 radicals from the Kangxi dictionary, was added.
* '''Ideographic Description Characters''' (U+2FF0-U+2FFF), containing 12 characters used to describe a Han ideograph not available in the font, was added.
* '''Bopomofo Extended''' (U+31A0-U+31BF), containing 24 characters used for phonetic transcription of minority languages of Taiwan, was added.
* '''CJK Unified Ideographs Extension A''' (U+3400-U+4DBF), containing 6,582 additional Han Ideographs, was added.
* '''Yi Syllables''' (U+A000-U+A48F), containing 1,165 syllables of the modern Yi script, was added.
* '''Yi Radicals''' (U+A490-U+A4CF), containing 50 radicals of Yi Syllables, was added.
=== Extended blocks ===
* Additional precomposed characters, letters and capital letters of lowercase-only letters (total 30 characters) were added to '''Latin Extended-B'''. (U+01F6-U+01F9, U+0218-U+021F and U+0222-U+0233)
* Extensions for disordered speech (total 5 characters) were added to '''IPA Extensions'''. (U+02A9-U+02AD)
* Some additional modifier letters (total 6 characters) were added to '''Spacing Modifier Letters'''. (U+02DF and U+02EA-U+02EE)
* Additional combining diacritics for IPA (total 10 characters) were added to '''Combining Diacritical Marks'''. (U+0346-U+034E and U+0362)
* Lowercase versions of archaic letters and the Kai symbol (total 5 characters) were added to '''Greek and Coptic'''. (U+03D7, U+03DB, U+03DD, U+03DF and U+03E1)
* Nonstandard letters for Macedonian, combining numeral signs and three letters for Kildin Sami (total 12 characters) were added to '''Cyrillic'''. (U+0400, U+040D, U+0450, U+045D, U+0488-U+0489, U+048C-U+048F and U+04EC-U+04ED)
* A Hyphen (total 1 character) was added to '''Armenian'''. (U+058A)
* Combining hamza and maddah and nine additional Arabic characters (total 12 characters) were added to '''Arabic'''. (U+0653-U+0655, U+06B8-U+06B9, U+06BF, U+06CF and U+06FA-U+06FE)
* Additional letters and religious symbols (total 25 characters) were added to '''Tibetan'''. (U+0F6A, U+0F96, U+0FAE-U+0FB0, U+0FB8, U+0FBA-U+0FBC, U+0FBE-U+0FCC and U+0FCF)
* A narrow no-break space and 6 additional punctuation marks (total 7 characters) were added to '''General Punctuation'''. (U+202F and U+2048-U+204D)
* The Kip, Tugrik and Drachma sign (total 3 characters) were added to '''Currency Symbols'''. (U+20AD-U+20AF)
* An enclosing screen and an enclosing key (total 2 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E2-U+20E3)
* The information symbol and a rotated Q (total 2 characters) were added to '''Letterlike Symbols'''. (U+2139-U+213A)
* A mirrored Roman capital numeral hundred (Ↄ) (total 1 character) was added to '''Number Forms'''. (U+2183)
* Some additional arrows (total 9 characters) were added to '''Arrows'''. (U+21EB-U+21F3)
* Some additional technical symbols, including common keys on a 101 keyboard (total 33 characters) were added to '''Miscellaneous Technical'''. (U+2301, U+237B and U+237D-U+239A)
* Two additional control pictures (total 2 characters) were added to '''Control Pictures'''. (U+2425-U+2426)
* Squares and circles with quadrants (total 8 characters) were added to '''Geometric Shapes'''. (U+25F0-U+25F7)
* Two Syriac crosses and a signature mark (total 3 characters) were added to '''Miscellaneous Symbols'''. (U+2619 and U+2670-U+2671)
* Three Hangzhou numerals and a variation indicator (total 4 characters) were added to '''CJK Symbols and Punctuation'''. (U+3038-U+303A and U+303E)
* A ligature Yod with Hiriq (יִ) (total 1 character) was added to '''Alphabetic Presentation Forms'''. (U+FB1D)
* Three additional control characters for ruby markup (total 3 characters) were added to '''Specials'''. (U+FFF9-U+FFFB)
== Unicode 3.1 ==
Unicode 3.1 was released March 2001. It encoded 94,140 characters, adding 44,946 new characters, and mainly focused on blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Old Italic''' (U+10300-U+1032F), containing 35 letters for the Etruscan script, was added.
* '''Gothic''' (U+10330-U+1034F), containing 27 letters for the Gothic script, was added.
* '''Deseret''' (U+10400-U+1044F), containing 76 letters for the constructed Deseret script, was added.
* '''Byzantine Musical Symbols''' (U+1D000-U+1D0FF), containing 246 symbols for musical notation in Byzantine, was added.
* '''Musical Symbols''' (U+1D100-U+1D1FF), containing 219 characters for current musical notation, was added.
* '''Mathematical Alphanumeric Symbols''' (U+1D400-U+1D7FF), containing 991 Latin and Greek letters in serif, sans-serif, bold, italic, double-struck, script and Fraktur/Blackletter, was added.
* '''CJK Unified Ideographs Extension B''' (U+20000-U+2A6DF), containing 42,711 additional Chinese Ideographs, was added.
* '''CJK Compatibility Ideographs Supplement''' (U+2F800-U+2FA1F), containing 542 additional Chinese Ideographs for compatibility purposes, was added.
* '''Tags''', containing 97 language tags, was added. (U+E0000-U+E007F)
=== Extended noncharacters ===
* The Noncharacters range: U+FDD0..U+FDEF were added to '''Arabic Presentation Forms-A'''.
=== Extended blocks ===
* The capital Theta symbol and the Lunate Epsilon symbol (total 2 characters) were added to '''Greek and Coptic'''. (U+03F4-U+03F5)
=== Characters and Scripts Under Investigation or Rejected ===
* Khmer Sign Laak Was Rejected. (U+17DD) From '''Khmer.'''
* Georgian Letter U-Brjuu Was Rejected. From '''Georgian.'''
== Unicode 3.2 ==
Unicode 3.2 was released March 2002. It encoded 95,156 characters, adding 1,016 new characters.
=== New blocks ===
* '''Cyrillic Supplementary (now Cyrillic Supplement)''' (U+0500-U+052F), containing 16 characters used for the Komi language, was added.
* '''Tagalog''' (U+1700-U+171F), containing 20 characters for the Baybayin script, was added.
* '''Hanunoo''' (U+1720-U+173F), containing 23 characters and punctuation for the Hanunó'o script, was added.
* '''Buhid''' (U+1740-U+175F), containing 20 characters for the Buhid script, was added.
* '''Tagbanwa''' (U+1760-U+177F), containing 18 characters for the Tagbanwa script, was added.
* '''Miscellaneous Mathematical Symbols-A''' (U+27C0-U+27EF), containing 28 symbols used in math notation, was added.
* '''Supplemental Arrows-A''' (U+27F0-U+27FF), containing 16 additional arrows, was added.
* '''Supplemental Arrows-B''' (U+2900-U+297F), containing 128 special arrows, was added.
* '''Miscellaneous Mathematical Symbols-B''' (U+2980-U+29FF), containing 128 additional mathematical symbols, was added.
* '''Supplemental Mathematical Operators''' (U+2A00-U+2AFF), containing 256 additional mathematical operators, was added.
* '''Katakana Phonetic Extensions''' (U+31F0-U+31FF), containing 16 Katakana letters used for Ainu, was added.
* '''Variation Selectors''' (U+FE00-U+FE0F), containing 16 symbols used for indicating variations, was added.
=== Extended blocks ===
* A capital letter N with Long Right Leg (total 1 character) was added to '''Latin Extended-B'''. (U+0220)
* The combining grapheme joiner and combining Latin letters used in medieval texts (total 14 characters) were added to '''Combining Diacritical Marks'''. (U+034F and U+0363-U+036F)
* The Qoppa and a reversed lunate epsilon symbol (total 3 characters) were added to '''Greek and Coptic'''. (U+03D8-U+03D9 and U+03F6)
* Four additional letters used for the Kildin Sami language (total 8 characters) were added to '''Cyrillic'''. (U+048A-U+048B, U+04C5-U+04C6, U+04C9-U+04CA and U+04CD-U+04CE)
* A dotless Beh and a dotless Qaf (total 2 characters) were added to '''Arabic'''. (U+066E-U+066F)
* A Letter for Addu dialect (total 1 character) was added to '''Thaana'''. (U+07B1)
* The letters Yn and Elifi (total 2 characters) were added to '''Georgian'''. (U+10F7-U+10F8)
* Some additional punctuation marks and control characters (total 12 characters) were added to '''General Punctuation'''. (U+2047, U+204E-U+2052, U+2057 and U+205F-U+2063)
* A superscript letter I (total 1 character) was added to '''Superscripts and Subscripts'''. (U+2071)
* German Penny and Peso sign (total 2 characters) were added to '''Currency Symbols'''. (U+20B0-U+20B1)
* Some additional combining characters (total 7 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E4-U+20EA)
* Some double-struck and reversed/turned letters (total 15 characters) were added to '''Letterlike Symbols'''. (U+213D-U+214B)
* Some additional arrows (total 12 characters) were added to '''Arrows'''. (U+21F4-U+21FF)
* Some additional mathematical operators (total 14 characters) were added to '''Mathematical Operators'''. (U+22F2-U+22FF)
* Variable-width and additional symbols (total 53 characters) were added to '''Miscellaneous Technical'''. (U+237C and U+239B-U+23CE)
* Black and double circled numerals (total 20 characters) were added to '''Enclosed Alphanumerics'''. U+24EB-U+24FE)
* Quadrant elements (total 10 characters) were added to '''Block Elements'''. (U+2596-U+259F)
* Some additional triangles and squares (total 8 characters) were added to '''Geometric Shapes'''. (U+25F8-U+25FF)
* Shogi pieces ,recycling symbols, dices and dotted circles (total 24 characters) were added to '''Miscellaneous Symbols'''. (U+2616-U+2617, U+2672-U+267D and U+2680-U+2689)
* Additional parenthesis (total 14 characters) were added to '''Dingbats'''. (U+2768-U+2775)
* Three additional marks (total 3 characters) were added to '''CJK Symbols and Punctuation'''. (U+303B-U+303D)
* A digraph and two additional characters (total 3 characters) were added to '''Hiragana'''. (U+3095-U+3096 and U+309F)
* A digraph and a double hyphen (total 2 characters) were added to '''Katakana'''. (U+30A0 and U+30FF)
* Additional circled numerals (total 30 characters) were added to '''Enclosed CJK Letters and Months'''. (U+3251-U+325F and U+32B1-U+32BF
* Five missing radicals (total 5 characters) were added to '''Yi Radicals'''. (U+A4A2-U+A4A3, U+A4B4, U+A4C1, U+A4C5)
* Additional compatibility characters (total 59 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA30-U+FA6A)
* A Rial sign (total 1 character) was added to '''Arabic Presentation Forms-A'''. (U+FDFC)
* Two sesame dots (total 2 characters) were added to '''CJK Compatibility Forms'''. (U+FE45-U+FE46)
* A tail fragment (total 1 character) was added to '''Arabic Presentation Forms-B'''. (U+FE73)
* A pair of double parenthesis (total 2 characters) was added to '''Halfwidth and Fullwidth Forms'''. (U+FF5F-U+FF60)
== Unicode 4.0 ==
Unicode 4.0 was released April 2003. It encoded 96,382 characters, adding 1,226 new characters.
=== New blocks ===
* '''Limbu''', containing 66 characters for the Limbu abugida, was added.
* '''Tai Le''', containing 35 letters for the Tai Le script, was added.
* '''Khmer Symbols''', containing 32 symbols for the lunar calendar, was added.
* '''Phonetic Extensions''', containing 108 letters used in phonetic transcription, was added.
* '''Miscellaneous Symbols and Arrows''', containing 14 additional arrows, was added.
* '''Yijing Hexagram Symbols''', containing 64 hexagrams, was added.
* '''Linear B Syllabary''', containing 88 syllables of the ancient Linear B script, was added.
* '''Linear B Ideograms''', containing 123 ideograms of the ancient Linear B script, was added.
* '''Aegean Numbers''', containing 57 numerals used in the Aegean area, was added.
* '''Ugaritic''', containing 31 characters used in Ugaritic cuneiform, was added.
* '''Shavian''', containing 48 letters used for the artificial Shavian script, was added.
* '''Osmanya''', containing 40 characters used in the artificial Osmanya script, was added.
* '''Cypriot Syllabary''', containing 55 characters formerly used on Cyprus, was added.
* '''Tai Xuan Jing Symbols''', containing 87 symbols of Tai Xuan Jing, was added.
* '''Variation Selectors Supplement''', containing 240 additional variation selectors, was added.
=== Extended blocks ===
* Letters with curl used in Sinology (total 4 characters) were added to '''Latin Extended-B'''.
* Former IPA letters (total 2 characters) were added to '''IPA Extensions'''.
* Some additional characters (total 17 characters) were added to '''Spacing Modifier Letters'''.
* Additional combining double-width diacritics and diacritics corresponding to their spacing equivalent (total 11 characters) were added to '''Combining Diacritical Marks'''.
* The archaic letters Sho and San and the capital Lunate Sigma (total 5 characters) were added to '''Greek and Coptic'''.
* Some additional markers, biblical signs, and letters with inverted V (total 19 characters) were added to '''Arabic'''.
* Letters used for foreign words from Persian and Sogdian (total 6 characters) were added to '''Syriac'''.
* The short A (ऄ) (total 1 character) was added to '''Devanagari'''.
* The Avagraha sign (ঽ) (total 1 character) was added to '''Bengali'''.
* The Adak Bindi and Visarga signs (total 2 characters) were added to '''Gurmukhi'''.
* The vocalic l and ll and the Rupee sign (total 5 characters) were added to '''Gujarati'''.
* The letters Va and Wa (total 2 characters) were added to '''Oriya'''.
* Additional signs for date and finance environments (total 8 characters) were added to '''Tamil'''.
* The Nukta and Avagraha signs (total 2 characters) were added to '''Kannada'''.
* Some symbols and signs (total 11 characters) were added to '''Khmer'''.
* An inverted undertie and a swung dash (total 2 characters) were added to '''General Punctuation'''.
* The facsimile sign (℻) (total 1 character) was added to '''Letterlike Symbols'''.
* The eject symbol and a vertical line (total 2 characters) were added to '''Miscellaneous Technical'''.
* A black circled digit zero (⓿) (total 1 character) was added to '''Enclosed Alphanumerics'''.
* Monograms and diagrams, flags, warning and weather symbols and a cup of tea (total 12 characters) were added to '''Miscellaneous Symbols'''.
* Additional parenthesized and circled Korean characters and supplemental signs (total 9 characters) were added to '''Enclosed CJK Letters and Months'''.
* Additional measure units (total 7 characters) were added to '''CJK Compatibility'''.
* An additional Arabic sign (﷽) (total 1 character) was added to '''Arabic Presentation Forms-A'''.
* A pair of vertical parenthesis (total 2 characters) was added to '''CJK Compatibility Forms'''.
* The letters Oi and Ew (total 4 characters) were added to '''Deseret'''.
* A small script l (ℓ) (total 1 character) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 4.1 ==
Unicode 4.1 was released March 31, 2005. It encoded 97,655 characters, adding 1,273 new characters.
=== New blocks ===
* '''Arabic Supplement''', containing 30 characters for various languages written with the Arabic script, was added.
* '''Ethiopic Supplement''', containing 26 characters and signs for Sebatbeit, was added.
* '''New Tai Lue''', containing 80 characters for the New Tai Lue script, was added.
* '''Buginese''', containing 30 characters for the Lontara script, was added.
* '''Phonetic Extensions Supplement''', containing 64 additional letters for phonetic transcription, was added.
* '''Combining Diacritical Marks Supplement''', containing 4 additional diacritics, was added.
* '''Glagolitic''', containing 94 characters for the Glagolitic script, was added.
* '''Coptic''', containing 114 characters for the Coptic script, was added.
* '''Georgian Supplement''', containing 38 Nuskhuri letters, was added.
* '''Tifinagh''', containing 55 characters for the Tifinagh script, was added.
* '''Ethiopic Extended''', containing 79 additional Ethiopic syllables, was added.
* '''Supplemental Punctuation''', containing 26 additional punctuation marks, was added.
* '''CJK Strokes''', containing 16 strokes for Han Ideographs, was added.
* '''Modifier Tone Letters''', containing 23 letters for Chinese tones, was added.
* '''Syloti Nagri''', containing 44 characters for the Syloti Nagri abugida, was added.
* '''Vertical Forms''', containing 10 punctuation marks suited for vertical text, was added.
* '''Ancient Greek Numbers''', containing 75 numerals and signs used in Ancient Greek, was added.
* '''Old Persian''', containing 50 characters for Old Persian cuneiform, was added.
* '''Kharoshthi''', containing 65 characters for the Kharoshthi abugida, was added.
* '''Ancient Greek Musical Notation''', containing 70 musical signs used in Ancient Greek, was added.
=== Extended blocks ===
* Letters for Sencoten, digraphs, letters with swash tail and other additions (total 11 characters) were added to '''Latin Extended-B'''.
* Additional diacritics for transliteration (total 5 characters) were added to '''Combining Diacritical Marks'''.
* Rho with stroke, reversed and dotted Lunate Sigma (total 4 characters) were added to '''Greek and Coptic'''.
* Ghe with descender (Ӷ) (total 2 characters) was added to '''Cyrillic'''.
* An additional biblical mark and some punctuation marks (total 4 characters) were added to '''Hebrew'''.
* Additional biblical marks, punctuation marks and the Afghani sign (total 8 characters) were added to '''Arabic'''.
* A glottal stop (ॽ) (total 1 character) was added to '''Devanagari'''.
* The Khanda Ta letter (ৎ) (total 1 character) was added to '''Bengali'''.
* The letter Sha and the digit zero (total 2 characters) were added to '''Tamil'''.
* Two marks used in Bhutan (total 2 characters) were added to '''Tibetan'''.
* Two letters and a modifier letter (total 3 characters) were added to '''Georgian'''.
* Some additional syllables (total 11 characters) were added to '''Ethiopic'''.
* Additional phonetic symbols (total 20 characters) were added to '''Phonetic Extensions'''.
* A flower and dot punctuation marks (total 9 characters) were added to '''General Punctuation'''.
* Additional subscript letters (total 5 characters) were added to '''Superscripts and Subscripts'''.
* The Guarani, Austral, Hryvnia and Cedi signs (total 4 characters) were added to '''Currency Symbols'''.
* A combining long double solidus (total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* The per sign and a double-struck letter Pi (total 2 characters) were added to '''Letterlike Symbols'''.
* Metrical and electrical signs (total 11 characters) were added to '''Miscellaneous Technical'''.
* Additional gender and map symbols (total 30 characters) were added to '''Miscellaneous Symbols'''.
* Some additional mathematical symbols (total 7 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional arrows and squares (total 6 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* A circled Hangul character (㉾) (total 1 character) was added to '''Enclosed CJK Letters and Months'''.
* Additional Han Ideographs (total 22 characters) were added to '''CJK Unified Ideographs'''.
* Additional Compatibility Ideographs (total 106 characters) were added to '''CJK Compatibility Ideographs'''.
* Italic dotless small i and j (total 2 characters) were added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.0 ==
Unicode 5.0 was released July 14, 2006. It encoded 99,024 characters, adding 1,369 new characters.
=== New blocks ===
* '''N'Ko''', containing 59 characters for the N'Ko script, was added.
* '''Balinese''', containing 121 characters and musical signs for the Balinese abugida, was added.
* '''Latin Extended-C''', containing 17 letters for various languages, was added.
* '''Latin Extended-D''', containing 2 characters for UPA, was added.
* '''Phags-pa''', containing 56 characters for the Phags-pa script, was added.
* '''Phoenician''', containing 27 letters and numerals for the Phoenician script, was added.
* '''Cuneiform''', containing 879 signs for Sumero-Akkadian Cuneiform, was added.
* '''Cuneiform Numbers and Punctuation''', containing 103 numerals and punctuation signs for Sumero-Akkadian Cuneiform, was added.
* '''Counting Rod Numerals''', containing 18 numerals used with counting rods, was added.
=== Extended blocks ===
* Various letters used mainly for aboriginal languages (total 14 characters) were added to '''Latin Extended-B'''.
* Lowercase lunate sigma symbols (total 3 characters) were added to '''Greek and Coptic'''.
* Lowercase palochka and 3 letters used in Nivkh (total 7 characters) were added to '''Cyrillic'''.
* Two letters used in Khanty and other languages (total 4 characters) were added to '''Cyrillic Supplement'''.
* A specific point meant for Vav (total 1 character) was added to '''Hebrew'''.
* Four letters used in Sindhi (total 4 characters) were added to '''Devanagari'''.
* Four letters used in Sanskrit (total 4 characters) were added to '''Kannada'''.
* Additional IPA diacritics (total 9 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Four combining arrows (total 4 characters) were added to '''Combining Diacritical Marks for Symbols'''.
* A danish symbol and a lowercase turned F (total 2 characters) were added to '''Letterlike Symbols'''.
* A lowercase reversed C (ↄ) (total 1 character) was added to '''Number Forms'''.
* Vertical parenthesis, geometric forms and electrical symbols (total 12 characters) were added to '''Miscellaneous Technical'''.
* A neuter symbol (⚲) (total 1 character) was added to '''Miscellaneous Symbols'''.
* Four additional mathematical symbols (total 4 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional squares, pentagons and hexagons (total 11 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Four additional tone letters used in Chinantec (total 4 characters) were added to '''Modifier Tone Letters'''.
* Bold Digamma (𝟊/'''Ϝ''') (total 2 characters) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.1 ==
Unicode 5.1 was released April 4, 2008. It encoded 100,648 characters, adding 1,624 new characters.
=== New blocks ===
* '''Sundanese''', containing 55 letters for Sundanese script, was added.
* '''Lepcha''', containing 74 letters for Lepcha script, was added.
* '''Ol Chiki''', containing 48 letters for Ol Chiki script, was added.
* '''Cyrillic Extended-A''', containing 32 letters for combining Cyrillic letters, was added.
* '''Vai''', containing 300 letters for Vai script, was added.
* '''Cyrillic Extended-B''', containing 78 letters for additional Cyrillic characters, was added.
* '''Saurashtra''', containing 81 letters for Saurashtra script, was added.
* '''Kayah Li''', containing 48 letters for Kayah languages, was added.
* '''Rejang''', containing 37 letters for Rejang script, was added.
* '''Cham''', containing 83 letters for Cham script, was added.
* '''Ancient Symbols''', containing 12 characters for weights and measures and other Ancient symbols, was added.
* '''Phaistos Disc''', containing 46 hieroglyphs for Phaistos, was added.
* '''Lycian''', containing 29 letters for Lycian script, was added.
* '''Carian''', containing 49 letters for Carian script, was added.
* '''Lydian''', containing 27 letters for Lydian script, was added.
* '''Mahjong Tiles''', containing 44 mahjong tiles, was added.
* '''Domino Tiles''', containing 100 domino tiles, was added.
=== Extended blocks ===
* Archaic letters and capital kai symbol (total 7 characters) were added to '''Greek and Coptic'''.
* Combining Pokrytie (total 1 character) was added to '''Cyrillic'''.
* Mordvin, Kurdish, Aleut and Chuvash letters (total 16 characters) were added to '''Cyrillic Supplement'''.
* Radix symbols, Letterlike, punctuation, Koranic annotation signs and additions for early Persian and Azerbaijani (total 15 characters) were added to '''Arabic'''.
* Additional letters in Torwali, Burushaski and early Persian (total 18 characters) were added to '''Arabic Supplement'''.
* High spacing dot and candra a (total 2 characters) were added to '''Devanagari'''.
* Udaat and yakash signs (total 2 characters) were added to '''Gurmukhi'''.
* Vocalic rr, l and ll (total 3 characters) were added to '''Oriya'''.
* Om symbol (ௐ) (total 1 character) was added to '''Tamil'''.
* Avagraha, additional phonetic letters, vocalic l and ll, fractional signs and tuumu (total 13 characters) were added to '''Telugu'''.
* Avagraha, vocalic rr, l and ll, Malayalam numerics and fractions and chillu letters (total 17 characters) were added to '''Malayalam'''.
* Letters for Balti and various symbols (total 6 characters) were added to '''Tibetan'''.
* Characters for various languages (total 78 characters) were added to '''Myanmar'''.
* Manchu Ali Gali lha (ᢪ) (total 1 character) was added to '''Mongolian'''.
* Miscellaneous combining marks (total 28 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Medievalist latin letters and miscellaneous letters (total 10 characters) were added to '''Latin Extended Additional'''.
* Invisible plus (+) (total 1 character) was added to '''General Punctuation'''.
* Combining asterisk above ( ⃰)(total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* Symbol for Samaritan Source (⅏) (total 1 character) was added to '''Letterlike Symbols'''.
* Archaic Roman Numerals (total 4 characters) were added to '''Number Forms'''.
* Outlined white star and other signs (total 15 characters) were added to '''Miscellaneous Symbols'''.
* Long division and additional mathematical brackets (total 5 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Miscellaneous signs (total 51 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Additional latin letters (total 12 characters) were added to '''Latin Extended-C'''.
* Additional punctuation (total 23 characters) were added to '''Supplemental Punctuation'''.
* Letter ih (ㄭ) (total 1 character) was added to '''Bopomofo'''.
* Other strokes (total 20 characters) were added to '''CJK Strokes'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Africanist tone letters (total 5 characters) were added to '''Modifier Tone Letters'''.
* Miscellaneous letters and symbols (total 112 characters) were added to '''Latin Extended-D'''.
* Continuous macrons for Coptic (total 3 characters) were added to '''Combining Half Marks'''.
* Musical symbol multiple measure rest (𝄩) (total 1 character) was added to '''Musical Symbols'''.
== Unicode 5.2 ==
Unicode 5.2 was released in October 1, 2009. It encoded 107,296 characters, adding 6,648 new characters.
=== New blocks ===
* '''Samaritan''', containing 61 letters for Samaritan script, was added.
* '''Unified Canadian Aboriginal Syllabics Extended''', containing 70 syllables for various cree languages, was added.
* '''Tai Tham''', containing 127 letters for Tai Tham script, was added.
* '''Vedic Extensions''', containing 35 characters for tone marks and signs, was added.
* '''Lisu''', containing 48 letters for Lisu (Fraser) script, was added.
* '''Bamum''', containing 88 letters for Bamum script, was added.
* '''Common Indic Number Forms''', containing 10 fractions and marks, was added.
* '''Devanagari Extended''', containing 28 additional marks, was added.
* '''Hangul Jamo Extended-A''', containing 29 characters for additional old initial consonants in hangul jamo, was added.
* '''Javanese''', containing 91 letters for Javanese script, was added.
* '''Myanmar Extended-A''', containing 28 letters for Khamti Shan in Myanmar, was added.
* '''Tai Viet''', containing 72 letters for Tai Viet script, was added.
* '''Meetei Mayek''', containing 56 letters for Meetei Mayek script, was added.
* '''Hangul Jamo Extended-B''', containing 72 characters for additional old medieval vowels and final consonants in hangul jamo, was added.
* '''Imperial Aramaic''', containing 31 characters for Old Aramaic, was added.
* '''Old South Arabian''', containing 32 letters and numbers for South Arabian, was added.
* '''Avestan''', containing 61 characters for Avestan script, was added.
* '''Inscriptional Parthian''', containing 30 characters for Inscriptional Parthian script, was added.
* '''Inscriptional Pahlavi''', containing 27 characters for Inscriptional Pahlavi script, was added.
* '''Old Turkic''', containing 73 characters for Orkhon script, was added.
* '''Rumi Numeral Symbols''', containing 31 numeric characters used in Fez, Morocco, and elsewhere in North Africa and the Iberian peninsula, between the tenth and seventeenth centuries, was added.
* '''Kaithi''', containing 66 letters for Kaithi script, was added.
* '''Egyptian Hieroglyphs''', containing 1,071 hieroglyphs for Egyptian, was added.
* '''Enclosed Alphanumeric Supplement''', containing 63 additional circled, parenthesized and squared alphanumerics, was added.
* '''Enclosed Ideographic Supplement''', containing 44 squared and tortoised shell bracketed ideographs, was added.
* '''CJK Unified Ideographs Extension C''', containing 4,149 additional Chinese Ideographs, was added.
=== Extended blocks ===
* Abhaz letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Inverted Candrabinbu and additional signs and letters (total 5 characters) were added to '''Devanagari'''.
* Ganda Mark (৻) (total 1 character) was added to '''Bengali'''.
* Religious svasti signs (total 4 characters) were added to '''Tibetan'''.
* Extensions for Khamti Shan and Alton and Phake (total 4 characters) were added to '''Myanmar'''.
* Additional old initial consonants, medival vowels, and old final consonants (total 16 characters) were added to '''Hangul Jamo'''.
* Hyphen and additional syllables (total 10 characters) were added to '''Unified Canadian Aboriginal Syllabics'''.
* Letter Sua and Tham Digit One (total 3 characters) were added to '''New Tai Lue'''.
* Combing Almost Equal to Below ( ᷽) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* The Live Tournosis, Spesmillo and Tenge signs (total 3 characters) were added to '''Currency Symbols'''.
* Additional vulgar fractions from ARIB STD B24 (total 4 characters) were added to '''Number Forms'''.
* Decimal exponent symbol (⏨) from ARIB STD B24 (total 1 characters) was added to '''Miscellaneous Technical'''.
* A soccer ball and symbols from ARIB STD B24 (total 59 characters) were added to '''Miscellaneous Symbols'''.
* Heavy exclamation mark symbol (❗) from ARIB STD B24 (total 1 character) was added to '''Dingbats'''.
* Traffic sign, dictionary and map symbols from ARIB STD B24 (total 5 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Capital letter turned alpha and additions for shona (total 3 characters) were added to '''Latin Extended-C'''.
* Cryptogrammic letters and combining marks (total 7 characters) were added to '''Coptic'''.
* Word separator middle dot used in Avestan (⸱) (total 1 character) was added to '''Supplemental Punctuation'''.
* Circled ideographs and numbers on black squares from ARIB STD B24 (total 12 characters) were added to '''Enclosed CJK Letters and Months'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Miscellaneous additions for compatibility (total 3 characters) were added to '''CJK Compatibility Ideographs'''.
* Number two and three (total 2 characters) were added to '''Phoenician'''.
== Unicode 6.0 ==
Unicode 6.0 was released in October 11, 2010. It encoded 109,384 characters, adding 2,088 new characters.
=== New blocks ===
* '''Mandaic''', containing 29 letters for Mandaic script, was added.
* '''Batak''', containing 56 letters for Batak script, was added.
* '''Ethiopic Extended-A''', containing 32 letters for Gamo-Gofa-Dawro, Basketo and Gumuz Ethiophic syllables, was added.
* '''Brahmi''', containing 108 characters for ancient Brahmi abugida, was added.
* '''Bamum Supplement''', containing 761 letters for additional Bamum script, was added.
* '''Kana Supplement''', containing 2 characters for archaic katakana, was added.
* '''Playing Cards''', containing 59 playing cards, was added.
* '''Miscellaneous Symbols and Pictographs''', containing 529 additional symbols, was added.
* '''Emoticons''', containing 63 faces, cat faces and gesture symbols, was added.
* '''Transport and Map Symbols''', containing 70 transportation, traffic signs and other symbols, was added.
* '''Alchemical Symbols''', containing 116 symbols for elements, was added.
* '''CJK Unified Ideographs Extension D''', containing 222 miscellaneous Han ideographs, was added.
=== Extended blocks ===
* Azerbaijani letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Kashmiri Yeh and Wavy hamza below (total 2 characters) were added to '''Arabic'''.
* Dependent vowel signs and letters used in Kashmiri and Bihari (total 10 characters) were added to '''Devanagari'''.
* Fraction signs (total 6 characters) were added to '''Oriya'''.
* Letters used in scholarly only and letter dot reph (total 3 characters) were added to '''Malayalam'''.
* Leading and Trailing Mchan Rtags (total 6 characters) were added to '''Tibetan'''.
* Additional combining marks (total 2 characters) were added to '''Ethiopic'''.
* Combining Double Inverted Breve Below (᷼) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* Miscellaneous subscript letters (total 8 characters) were added to '''Superscripts and Subscripts'''.
* Indian Rupee Sign (₹) (total 1 character) was added to '''Currency Symbols'''.
* Pointing double triangle and additional mechanical symbols (total 11 characters) were added to '''Miscellaneous Technical'''.
* Ophiucisus, astronomical symbol for uranus and pentagrams (total 6 characters) were added to '''Miscellaneous Symbols'''.
* Additional heavy punctation marks, raised fist, raised hand, sparkles, heavy arithmetic symbols and curly loops (total 16 characters) were added to '''Dingbats'''.
* Squared logicals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Separator mark and consonant joiner (total 2 characters) were added to '''Tifinagh'''.
* Bopomofo for Hmu and Ge (total 3 characters) were added to '''Bopomofo Extended'''.
* Reversed Tse (total 2 characters) were added to '''Cyrillic Extended-B'''.
* Additional letters (total 15 characters) were added to '''Latin Extended-D'''.
* Pedagogical symbols (total 16 characters) were added to '''Arabic Presentation Forms-A'''.
* Additional squared, black circled and squared letters and regional indicator letters (total 107 characters) were added to '''Enclosed Alphanumeric Supplement'''.
* Squared katakana, squared ideographs and circled advantage and accept (total 13 characters) were added to '''Enclosed Ideographic Supplement'''.
== Unicode 6.1 ==
Unicode 6.1 was released in January 31, 2012. It encoded 110,116 characters, adding 732 new characters.
=== New blocks ===
* '''Arabic Extended-A''' (U+08A0-U+08FF), containing 39 characters, was added.
* '''Sundanese Supplement''' (U+1CC0-U+1CCF), containing 8 characters, was added.
* '''Meetei Mayek Extensions''' (U+AAE0-U+AAFF), containing 23 characters, was added.
* '''Meroitic Hieroglyphs''' (U+10980-U+1099F), containing 32 characters, was added.
* '''Meroitic Cursive''' (U+109A0-U+109FF), containing 26 characters, was added.
* '''Sora Sompeng''' (U+110D0-U+110FF), containing 35 characters, was added.
* '''Chakma''' (U+11100-U+1114F), containing 67 characters, was added.
* '''Sharada''' (U+11180-U+111DF), containing 83 characters, was added.
* '''Takri''' (U+11680-U+116CF), containing 66 characters, was added.
* '''Miao''' (U+16F00-U+16F9F), containing 133 characters, was added.
* '''Arabic Mathematical Alphabetic Symbols''' (U+1EE00-U+1EEFF), containing 143 characters, was added.
=== Extended blocks ===
* An Armenian Dram sign (total 1 character) was added to '''Armenian'''. (U+058F)
* A sign Samvat (total 1 character) was added to '''Arabic'''. (U+0604)
* An Abbreviation mark (total 1 character) was added to '''Gujarati'''. (U+0AF0)
* Letters for Khmu (total 2 characters) were added to '''Lao'''. (U+0EDE-U+0EDF)
* Capital letter Yn, letter Aen, Hard and Labial sign (total 5 characters) were added to '''Georgian'''. (U+10C7, U+10CD and U+10FD-U+10FF)
* Letters and signs for Old Sundanese (total 9 characters) were added to '''Sundanese'''. (U+1BAB-U+1BAD and U+1BBA-U+1BBF)
* Sign Rotated Ardhavisarga, Candra Above, Jihvamuliya and Uphadhmaniya (total 4 characters) were added to '''Vedic Extensions'''. (U+1CF3-U+1CF6)
* Mathematical diagonals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''. (U+27CB and U+27CD)
* A letter Bohairic Khei (total 2 characters) were added to '''Coptic'''. (U+2CF2-U+2CF3)
* Small letters Yn and Aen (total 2 characters) were added to '''Georgian Supplement'''. (U+2D27 and U+2D2D)
* Letters Ye and Yo (total 2 characters) were added to '''Tifinagh'''. (U+2D66-U+2D67)
* (total 10 characters) were added to '''Supplemental Punctuation'''. (U+2E32-U+2E3B)
* An additional ideograph for Kanji (total 1 character) was added to '''CJK Unified Ideographs'''. (U+9FCC)
* Combining letter for Slavonic (total 9 characters) were added to '''Cyrillic Extended-B'''. (U+A674-U+A67B and U+A69F)
* Letter C with Bar, capital letter H with Hook and modifier letters for extended IPA (total 5 characters) were added to '''Latin Extended-D'''. (U+A792-U+A793, U+A7AA and U+A7F8-U+A7F9)
* Some additional ideographs for Korea (total 2 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA2E-U+FA2F)
* Symbols for Canadian legal use (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F16A-U+1F16B)
* Typikon symbols (total 4 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F540-U+1F543)
* (total 13 characters) were added to '''Emoticons'''. (U+1F600, U+1F611, U+1F615, U+1F617, U+1F619, U+1F61B, U+1F61F, U+1F626-U+1F627, U+1F62C, U+1F62E-U+1F62F and U+1F634)
== Unicode 6.2 ==
Unicode 6.2 was released in September 26, 2012. It encoded 110,117 characters, adding only 1 new character.
=== Extended blocks ===
* A Turkish Lira sign (total 1 character) was added to '''Currency Symbols'''. (U+20BA)
== Unicode 6.3 ==
Unicode 6.3 was released in September 30, 2013. It encoded 110,122 characters, adding only 5 new characters.
=== Extended blocks ===
* A Letter mark (total 1 character) was added to '''Arabic'''. (U+061C)
* Isolate directional format characters (total 4 characters) were added to '''General Punctuation'''. (U+2066-U+2069)
== Unicode 7.0 ==
Unicode 7.0 was released in June 16, 2014. It encoded 112,956 characters, adding 2,834 new characters.
=== New blocks ===
* '''Combining Diacritical Marks Extended''' (U+1AB0-U+1AFF), containing 15 marks, was added.
* '''Myanmar Extended-B''' (U+A9E0-U+A9FF), containing 31 letters, was added.
* '''Latin Extended-E''' (U+AB30-U+AB6F), containing 50 letters, was added.
* '''Coptic Epact Numbers''' (U+102E0-U+102FF), containing 28 numbers, was added.
* '''Old Permic''' (U+10350-U+1037F), containing 43 letters, was added.
* '''Elbasan''' (U+10500-U+1052F), containing 50 letters, was added.
* '''Caucasian Albanian''' (U+10530-U+1056F), containing 53 letters and marks, was added.
* '''Linear A''' (U+10600-U+1077F), containing 341 signs, was added.
* '''Palmyrene''' (U+10860-U+1087F), containing 32 letters, was added.
* '''Nabataean''' (U+10880-U+108AF), containing 40 letters and numbers, was added.
* '''Old North Arabian''' (U+10A80-U+10A9F), containing 32 letters and numbers, was added.
* '''Manichaean''' (U+10AC0-U+10AFF), containing 51 characters, was added.
* '''Psalter Pahlavi''' (U+10B80-U+10BAF), containing 29 characters, was added.
* '''Mahajani''' (U+11150-U+1117F), containing 39 letters and signs, was added.
* '''Sinhala Archaic Numbers''' (U+111E0-U+111FF), containing 20 numbers, was added.
* '''Khojki''' (U+11200-U+1124F), containing 61 characters, was added.
* '''Khudawadi''' (U+112B0-U+112FF), containing 69 characters, was added.
* '''Grantha''' (U+11300-U+1137F), containing 83 characters, was added.
* '''Tirhuta''' (U+11480-U+114DF), containing 82 characters, was added.
* '''Siddham''' (U+11580-U+115FF), containing 72 characters, was added.
* '''Modi''' (U+11600-U+1165F), containing 79 characters, was added.
* '''Warang Citi''' (U+118A0-U+118FF), containing 84 letters and numbers, was added.
* '''Pau Cin Hau''' (U+11AC0-U+11AFF), containing 57 characters, was added.
* '''Mro''' (U+16A40-U+16A6F), containing 43 characters, was added.
* '''Bassa Vah''' (U+16AD0-U+16AFF), containing 36 characters, was added.
* '''Pahawh Hmong''' (U+16B00-U+16B8F), containing 127 letters and signs, was added.
* '''Duployan''' (U+1BC00-U+1BC9F), containing 143 characters, was added.
* '''Shorthand Format Controls''' (U+1BCA0-U+1BCAF), containing 4 format characters, was added.
* '''Mende Kikakui''' (U+1E800-U+1E8DF), containing 213 syllables and numbers, was added.
* '''Ornamental Dingbats''' (U+1F650-U+1F67F), containing 48 pictographic characters, was added.
* '''Geometric Shapes Extended''' (U+1F780-U+1F7FF), containing 85 pictographic characters, was added.
* '''Supplemental Arrows-C''' (U+1F800-U+1F8FF), containing 148 pictographic characters, was added.
=== Extended blocks ===
* A capital letter Yot (total 1 character) was added to '''Greek and Coptic'''. (U+037F)
* Letters for Orok, Komi and Khanty (total 8 characters) were added to '''Cyrillic Supplement'''. (U+0528-U+052F)
* An Eternity sign (total 2 characters) were added to '''Armenian'''. (U+058D-U+058E)
* A Number Mark Above (total 1 character) was added to '''Arabic'''. (U+0605)
* Letters for African, Philippine, Turkic, Berber, Belarusian, Palula and Shina languages (total 8 characters) were added to '''Arabic Extended-A'''. (U+08A1, U+08AD-U+08B2 and U+08FF)
* A letter for Marwari (total 1 character) was added to '''Devanagari'''. (U+0978)
* A sign Anji (total 1 character) was added to '''Bengali'''. (U+0980)
* Sign Candrabindu and letter Llla (total 2 characters) were added to '''Telugu'''. (U+0C00 and U+0C34)
* A Sign Candrabindu (total 1 character) was added to '''Kannada'''. (U+0C81)
* A Sign Candrabindu (total 1 character) was added to '''Malayalam'''. (U+0D01)
* Lith Numerals (total 10 characters) were added to '''Sinhala'''. (U+0DE6-U+0DEF)
* Additional Old English runes (total 8 characters) were added to '''Runic'''. (U+16F1-U+16F8)
* Letters Gyan and Tra (total 2 characters) were added to '''Limbu'''. (U+191D-U+191E)
* Signs for Jaiminiya Sama Veda (total 2 characters) were added to '''Vedic Extensions'''. (U+1CF8-U+1CF9)
* Marks for Germanic and American lexicology (total 15 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DE7-U+1DF5)
* Nordic Mark, Manat and Ruble sign (total 3 characters) were added to '''Currency Symbols'''. (U+20BB-U+20BD)
* Playback symbols from Webdings font (total 7 characters) were added to '''Miscellaneous Technical'''. (U+23F4-U+23FA)
* A Scissors symbol from Wingdings 2 font (total 1 character) was added to '''Dingbats'''. (U+2700)
* Arrows for Lithuanian dialectology and symbols from Wingdings 3 font (total 115 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2B4D-U+2B4F, U+2B5A-U+2B5F, U+2B60-U+2B73, U+2B76-U+2B95, U+2B98-U+2BB9, U+2BBD-U+2BC8 and U+2BCA-U+2BD1)
* (total 7 characters) were added to '''Supplemental Punctuation'''. (U+2E3C-U+2E42)
* Early Cyrillic letters and letters for Lithuanian dialectology (total 6 characters) were added to '''Cyrillic Extended-B'''. (U+A698-U+A69D)
* Letters for European, American and African orthography (total 18 characters) were added to '''Latin Extended-D'''. (U+A794-U+A79F, U+A7AB-U+A7AD, U+A7B0-U+A7B1 and U+A7F7)
* Tone marks for Tai Laing and letters for Shwe Palaung (total 4 characters) were added to '''Myanmar Extended-A'''. (U+AA7C-U+AA7F)
* Combining phonetic marks (total 7 characters) were added to '''Combining Half Marks'''. (U+FE27-U+FE2D)
* Additional mathematical symbols (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018B-U+1018C)
* A Greek Tau Rho symbol (total 1 character) was added to '''Ancient Symbols'''. (U+101A0)
* A letter Ess (total 1 character) was added to '''Old Italic'''. (U+1031F)
* A Number Joiner (total 1 character) was added to '''Brahmi'''. (U+1107F)
* Sutra mark and sign Ekam (total 2 characters) were added to '''Sharada'''. (U+111CD and U+111DA)
* Additional cuneiform signs (total 42 characters) were added to '''Cuneiform'''. (U+1236F-U+12398)
* Additional numbers, vulgar fractions and a punctuation mark (total 13 characters) were added to '''Cuneiform Numbers and Punctuation'''. (U+12463-U+1246E and U+12474)
* Red Joker, Fool and trumps (total 23 characters) were added to '''Playing Cards'''. (U+1F0BF and U+1F0E0-U+1F0F5)
* Dingbat normal and negative sans-serif digit zero (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10B-U+1F10C)
* Symbols from Webdings, Wingdings 1 and 2 font (total 209 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F321-U+1F32C, U+1F336, U+1F37D, U+1F394-U+1F39F, U+1F3C5, U+1F3CB-U+1F3CE, U+1F3D4-U+1F3DF, U+1F3F1-U+1F3F7, U+1F43F, U+1F441, U+1F4F8, U+1F4FD-U+1F4FE, U+1F53E-U+1F53F, U+1F544-U+1F54A, U+1F568-U+1F579, U+1F57B-U+1F5A3 and U+1F5A5-U+1F5FA)
* Slightly frowning and smiling faces emoji (total 2 characters) were added to '''Emoticons'''. (U+1F641-U+1F642)
* Symbols from Webdings and Wingdings 2 font (total 27 characters) were added to '''Transport and Map Symbols'''. (U+1F6C6-U+1F6CF, U+1F6E0-U+1F6EC and U+1F6F0-U+1F6F3)
== Unicode 8.0 ==
Unicode 8.0 was released in June 17, 2015. It encoded 120,672 characters, adding 7,716 new characters.
=== New blocks ===
* '''Cherokee Supplement''' (U+AB70-U+ABBF), containing 80 lowercase letters, was added.
* '''Hatran''' (U+108E0-U+108FF), containing 26 letters, was added.
* '''Old Hungarian''' (U+10C80-U+10CFF), containing 108 letters, was added.
* '''Multani''' (U+11280-U+112AF), containing 38 letters, was added.
* '''Ahom''' (U+11700-U+1173F), containing 57 letters, was added.
* '''Early Dynastic Cuneiform''' (U+12480-U+1254F), containing 196 characters, was added.
* '''Anatolian Hieroglyphs''' (U+14400-U+1467F), containing 583 characters, was added.
* '''Sutton SignWriting''' (U+1D800-U+1DAAF), containing 672 signs, was added.
* '''Supplemental Symbols and Pictographs''' (U+1F900-U+1F9FF), containing 15 pictographic characters, was added.
* '''CJK Unified Ideographs Extension E''' (U+2B820-U+2CEAF), containing 5762 characters, was added.
=== Extended blocks ===
* Letters for Arwi (total 3 characters) were added to '''Arabic Extended-A'''. (U+08B3-U+08B4 and U+08E3)
* A letter for Avestan transliteration (total 1 character) was added to '''Gujarati'''. (U+0AF9)
* A letter for Andhra Pradesh (total 1 character) was added to '''Telugu'''. (U+0C5A)
* An archaic letter II (total 1 character) was added to '''Malayalam'''. (U+0D5F)
* A letter Mv and small letters (total 7 characters) were added to '''Cherokee'''. (U+13F5 and U+13F8-U+13FD)
* A Georgian Lari sign (total 1 character) was added to '''Currency Symbols'''. (U+20BE)
* Turned digits (total 2 characters) were added to '''Number Forms'''. (U+218A-U+218B)
* Two headed arrows with triangle arrowheads (total 4 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BEC-U+2BEF)
* Some additional ideographs (total 9 characters) were added to '''CJK Unified Ideographs'''. (U+9FCD-U+9FD5)
* A combining letter Ef (total 1 character) was added to '''Cyrillic Extended-B'''. (U+A69E)
* Sinological dot, phonetic extension for African languages, letters for American and Gabonese orthography (total 7 characters) were added to '''Latin Extended-D'''. (U+A78F and U+A7B2-U+A7B7)
* Sign Siddham and letter Jain Om (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FC-U+A8FD)
* Letters for Yakut transliteration (total 4 characters) were added to '''Latin Extended-E'''. (U+AB60-U+AB63)
* A combining mark for Church Slavonic (total 2 characters) were added to '''Combining Half Marks'''. (U+FE2E-U+FE2F)
* Numerals and vulgar fractions (total 64 characters) were added to '''Meroitic Cursive'''. (U+109BC-U+109BD, U+109C0-U+109CF and U+109D2-U+109FF)
* Sandhi mark, diacritical marks for Kashmiri, sign Siddham and punctuation marks (total 9 characters) were added to '''Sharada'''. (U+111C9-U+111CC and U+111DB-U+111DF)
* Combining Anusvara Above and letter Om (total 2 characters) were added to '''Grantha'''. (U+11300 and U+11350)
* Section marks and alternate letters (total 20 characters) were added to '''Siddham'''. (U+115CA-U+115DD)
* An additional sign (total 1 character) was added to '''Cuneiform'''. (U+12399)
* East-Slavic musical symbols (total 11 characters) were added to '''Musical Symbols'''. (U+1D1DE-U+1D1E8)
* (total 24 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F32D-U+1F32F, U+1F37E-U+1F37F, U+1F3CF-U+1F3D3, U+1F3F8-U+1F3FF, U+1F4FF and U+1F54B-U+1F54F)
* Upside Down Face and Face With Rolling Eyes emoji (total 2 characters) were added to '''Emoticons'''. (U+1F643-U+1F644)
* A Place of Worship emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D0)
== Unicode 9.0 ==
Unicode 9.0, was released in June 21, 2016. It encoded 128,172 characters, adding 7,500 new characters.
=== New blocks ===
* '''Cyrillic Extended-C''' (U+1C80-U+1C8F), containing 9 letters, was added.
* '''Osage''' (U+104B0-U+104FF), containing 72 letters, was added.
* '''Newa''' (U+11400-U+1147F), containing 92 letters, was added.
* '''Mongolian Supplement''' (U+11660-U+1167F), containing 13 letters, was added.
* '''Bhaiksuki''' (U+11C00-U+11C6F), containing 97 letters, was added.
* '''Marchen''' (U+11C70-U+11CBF), containing 68 letters, was added.
* '''Ideographic Symbols and Punctuation''' (U+16FE0-U+16FFF), containing 1 letter, was added.
* '''Tangut''' (U+17000-U+187FF), containing 6125 letters, was added.
* '''Tangut Components''' (U+18800-U+18AFF), containing 755 letters, was added.
* '''Glagolitic Supplement''' (U+1E000-U+1E02F), containing 38 letters, was added.
* '''Adlam''' (U+1E900-U+1E95F), containing 87 letters, was added.
=== Extended blocks ===
* Letters for Bravanese, Warsh and Quranic marks used in Pakistan (total 23 characters) were added to '''Arabic Extended-A'''. (U+08B6-U+08BD and U+08D4-U+08E2)
* A sign Spacing Candrabindu (total 1 character) were added to '''Kannada'''. (U+0C80)
* Sign Para, Chillu letters and vulgar fractions (total 14 characters) were added to '''Malayalam'''. (U+0D4F, U+0D54-U+0D56, U+0D58-U+0D5E and U+0D76-U+0D78)
* A diacritical mark for Newa (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFB)
* Power symbols (total 4 characters) were added to '''Miscellaneous Technical'''. (U+23FB-U+23FE)
* Punctuation marks for Church Slavonic (total 2 characters) were added to '''Supplemental Punctuation'''. (U+2E43-U+2E44)
* A letter for Unifon (total 1 character) was added to '''Latin Extended-D'''. (U+A7AE)
* A sign Candrabindu (total 1 character) was added to '''Saurashtra'''. (U+A8C5)
* Indiction sign and a currency symbol (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018D-U+1018E)
* A sign Sukun (total 1 character) was added to '''Khojki'''. (U+1123E)
* Japanese TV symbols (total 18 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F19B-U+1F1AC)
* A Japanese TV symbol (total 1 character) was added to '''Enclosed Ideographic Supplement'''. (U+1F23B)
* A dancing man and Black Heart emoji (total 2 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F57A and U+1F5A4)
* Octagonal Sign, Shopping Trolley, scooters and a Canoe emoji (total 5 characters) were added to '''Transport and Map Symbols'''. (U+1F6D1-U+1F6D2 and U+1F6F4-U+1F6F6)
* (total 67 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F919-U+1F91E, U+1F920-U+1F927, U+1F930, U+1F933-U+1F93E, U+1F940-U+1F94B, U+1F950-U+1F95E and U+1F985-U+1F991)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|0030 FE00
|
|short diagonal stroke form # DIGIT ZERO
|-
|1000 FE00
|
|dotted form # MYANMAR LETTER KA
|-
|1002 FE00
|
|dotted form # MYANMAR LETTER GA
|-
|1004 FE00
|
|dotted form # MYANMAR LETTER NGA
|-
|1010 FE00
|
|dotted form # MYANMAR LETTER TA
|-
|1011 FE00
|
|dotted form # MYANMAR LETTER THA
|-
|1015 FE00
|
|dotted form # MYANMAR LETTER PA
|-
|1019 FE00
|
|dotted form # MYANMAR LETTER MA
|-
|101A FE00
|
|dotted form # MYANMAR LETTER YA
|-
|101C FE00
|
|dotted form # MYANMAR LETTER LA
|-
|101D FE00
|
|dotted form # MYANMAR LETTER WA
|-
|1022 FE00
|
|dotted form # MYANMAR LETTER SHAN A
|-
|1031 FE00
|
|dotted form # MYANMAR VOWEL SIGN E
|-
|1075 FE00
|
|dotted form # MYANMAR LETTER SHAN KA
|-
|1078 FE00
|
|dotted form # MYANMAR LETTER SHAN CA
|-
|107A FE00
|
|dotted form # MYANMAR LETTER SHAN NYA
|-
|1080 FE00
|
|dotted form # MYANMAR LETTER SHAN THA
|-
|2205 FE00
|
|zero with long diagonal stroke overlay form # EMPTY SET
|-
|AA60 FE00
|
|dotted form # MYANMAR LETTER KHAMTI GA
|-
|AA61 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CA
|-
|AA62 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CHA
|-
|AA63 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JA
|-
|AA64 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JHA
|-
|AA65 FE00
|
|dotted form # MYANMAR LETTER KHAMTI NYA
|-
|AA66 FE00
|
|dotted form # MYANMAR LETTER KHAMTI TTA
|-
|AA6B FE00
|
|dotted form # MYANMAR LETTER KHAMTI NA
|-
|AA6C FE00
|
|dotted form # MYANMAR LETTER KHAMTI SA
|-
|AA6F FE00
|
|dotted form # MYANMAR LETTER KHAMTI FA
|-
|AA7A FE00
|
|dotted form # MYANMAR LETTER AITON RA
|-
|…
|
|278 additional emoji variation sequences
|}
== Unicode 10.0 ==
Unicode 10.0, was released in June 20, 2017. It encoded 136,690 characters, adding 8,518 new characters.
=== New blocks ===
* '''Syriac Supplement''' (U+0860-U+086F), containing 11 characters, was added.
* '''Zanabazar Square''' (U+11A00-U+11A4F), containing 72 characters, was added.
* '''Soyombo''' (U+11A50-U+11AAF), containing 80 characters, was added.
* '''Masaram Gondi''' (U+11D00-U+11D5F), containing 75 characters, was added.
* '''Kana Extended-A''' (U+1B100-U+1B12F), containing 31 characters, was added.
* '''Nushu''' (U+1B170-U+1B2FF), containing 396 characters, was added.
* '''CJK Unified Ideographs Extension F''' (U+2CEB0-U+2EBEF), containing 7,473 characters, was added.
=== Extended blocks ===
* A Vedic Anusvara and Abbreviation mark (total 2 characters) were added to '''Bengali'''. (U+09FC-U+09FD)
* Letters for Arabic transliteration (total 6 characters) were added to '''Gujarati'''. (U+0AFA-U+0AFF)
* A combining Anusvara Above and Viramas (total 3 characters) were added to '''Malayalam'''. (U+0D00 and U+0D3B-U+0D3C)
* A sign Atikrama (total 1 character) was added to '''Vedic Extensions'''. (U+1CF7)
* Combining diacritical marks for Church Slavonic (total 4 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DF6-U+1DF9)
* A Bitcoin sign (total 1 character) was added to '''Currency Symbols'''. (U+20BF)
* An Observe Eye symbol (total 1 character) was added to '''Miscellaneous Technical'''. (U+23FF)
* A Group mark (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2BD2)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E45-U+2E49)
* A letter O with Dot Above (total 1 character) was added to '''Bopomofo'''. (U+312E)
* Ideographs for Slavonic transliteration (total 21 characters) were added to '''CJK Unified Ideographs'''. (U+9FD6-U+9FEA)
* Letters for North Italic (total 3 characters) were added to '''Old Italic'''. (U+1032D-U+1032F)
* An Iteration mark for Nushu (total 1 character) was added to '''Ideographic Symbols and Punctuation'''. (U+16FE1)
* Letters for Hentaigana (total 254 characters) were added to '''Kana Supplement'''. (U+1B002-U+1B0FF)
* Symbols for Chinese Folk religion (total 6 characters) were added to '''Enclosed Ideographic Supplement'''. (U+1F260-U+1F265)
* Stupa, Pagoda, Sled and Flying Saucer emoji (total 4 characters) were added to '''Transport and Map Symbols'''. (U+1F6D3-U+1F6D4 and U+1F6F7-U+1F6F8)
* (total 66 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F900-U+1F90B, U+1F91F, U+1F928-U+1F92F, U+1F931-U+1F932, U+1F94C, U+1F95F-U+1F96B, U+1F992-U+1F997 and U+1F9D0-U+1F9E6)
== Unicode 11.0 ==
Unicode 11.0, was released in June 5, 2018. It encoded 137,374 characters, adding 684 new characters.
=== New blocks ===
* '''Georgian Extended''' (U+1C90-U+1CBF), containing 46 characters, was added.
* '''Hanifi Rohingya''' (U+10D00-U+10D3F), containing 50 characters, was added.
* '''Old Sogdian''' (U+10F00-U+10F2F), containing 40 characters, was added.
* '''Sogdian''' (U+10F30-U+10F6F), containing 42 characters, was added.
* '''Dogra''' (U+11800-U+1184F), containing 60 characters, was added.
* '''Gunjala Gondi''' (U+11D60-U+11DAF), containing 63 characters, was added.
* '''Makasar''' (U+11EE0-U+11EFF), containing 25 characters, was added.
* '''Medefaidrin''' (U+16E40-U+16E9F), containing 91 characters, was added.
* '''Mayan Numerals''' (U+1D2E0-U+1D2FF), containing 20 characters, was added.
* '''Indic Siyaq Numbers''' (U+1EC70-U+1ECBF), containing 68 characters, was added.
* '''Chess Symbols''' (U+1FA00-U+1FA6F), containing 14 characters, was added.
=== Extended blocks ===
* Small letters Turned Ayb and Yi with Stroke (total 2 characters) were added to '''Armenian'''. (U+0560 and U+0588)
* A triangle Yod (total 1 character) were added to '''Hebrew'''. (U+05EF)
* A Dantayalan and currency symbols (total 3 characters) were added to '''N'Ko'''. (U+07FD-U+07FF)
* A Small Low Waw (total 1 character) was added to '''Arabic Extended-A'''. (U+08D3)
* A Sandhi mark (total 1 character) was added to '''Bengali'''. (U+09FE)
* An Abbreviation mark (total 1 character) was added to '''Gurmukhi'''. (U+0A76)
* A combining Anusvara Above (total 1 character) was added to '''Telugu'''. (U+0C04)
* A sign Siddham (total 1 character) was added to '''Kannada'''. (U+0C84)
* A letter for Buryat (total 1 character) was added to '''Mongolian'''. (U+1878)
* Symbols for chess notation, astrological and half star symbols (total 43 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BBA-U+2BBC, U+2BD3-U+2BEB and 2BF0-U+2BFE)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E4A-U+2E4E)
* A letter NN (total 1 character) was added to '''Bopomofo'''. (U+312F)
* Some ideographs for Kanji (total 5 characters) were added to '''CJK Unified Ideographs'''. (U+9FEB-U+9FEF)
* A small capital Q and a letter for Mazahua (total 3 characters) were added to '''Latin Extended-D'''. (U+A7AF and U+A7B8-U+A7B9)
* Letter and vowel sign Ay (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FE-U+A8FF)
* Letters Ttta, Vha and a vulgar fraction (total 3 characters) were added to '''Kharoshthi'''. (U+10A34-U+10A35 and U+10A48)
* A Number Sign Above (total 1 character) was added to '''Kaithi'''. (U+110CD)
* Letter Lhaa, vowel sign Aa and Ei (total 3 characters) were added to '''Chakma'''. (U+11144-U+11146)
* A combining Bindu Below (total 1 character) was added to '''Grantha'''. (U+1133B)
* A Sandhi mark (total 1 character) was added to '''Newa'''. (U+1145E)
* An alternate letter Ba (total 1 character) was added to '''Ahom'''. (U+1171A)
* A mark Pluta (total 1 character) was added to '''Soyombo'''. (U+11A9D)
* Additional ideographs (total 5 characters) were added to '''Tangut'''. (U+187ED-U+187F1)
* Tally marks (total 7 characters) were added to '''Counting Rod Numerals'''. (U+1D372-U+1D378)
* A Copyleft symbol (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F12F)
* A Skateboard emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6F9)
* Normal and negative circled shapes (total 4 characters) were added to '''Geometric Shapes Extended'''. (U+1F7D5-U+1F7D8)
* (total 65 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F94D-U+1F94F, U+1F96C-U+1F970, U+1F973-U+1F976, U+1F97A, U+1F97C-U+1F97F, U+1F998-U+1F99F, U+1F9A0-U+1F9A2, U+1F9B0-U+1F9B9, U+1F9C1-U+1F9C2 and U+1F9E7-U+1F9FF)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|FF10 FE00
|
|short diagonal stroke form # FULLWIDTH DIGIT ZERO
|}
== Unicode 12.0 ==
Unicode 12.0 was released on March 5, 2019. It encoded 137,928 characters, adding 554 new characters.
=== New blocks ===
* '''Elymaic''' (U+10FE0-U+10FFF), containing 23 characters, was added.
* '''Nandinagari''' (U+119A0-U+119FF), containing 65 characters, was added.
* '''Tamil Supplement''' (U+11FC0-U+11FFF), containing 51 characters, was added.
* '''Egyptian Hieroglyph Format Controls''' (U+13430-U+1343F), containing 9 characters, was added.
* '''Small Kana Extension''' (U+1B130-U+1B16F), containing 7 characters, was added.
* '''Nyiakeng Puachue Hmong''' (U+1E100-U+1E14F), containing 71 characters, was added.
* '''Wancho''' (U+1E2C0-U+1E2FF), containing 59 characters, was added.
* '''Ottoman Siyaq Numbers''' (U+1ED00-U+1ED4F), containing 61 characters, was added.
* '''Symbols and Pictographs Extended-A''' (U+1FA70-U+1FAFF), containing 16 characters, was added.
=== Extended blocks ===
* A sign Siddham (total 1 character) was added to '''Telugu'''. (U+0C77)
* Letters for Pail and Sanskrit (total 15 characters) were added to '''Lao'''. (U+0E86, U+0E89, U+0E8C, U+0E8E-U+0E93, U+0E98, U+0EA0, U+0EA8-U+0EA9, U+0EAC and U+0EBA)
* A sign Double Anusvara Antargomukha (total 1 character) was added to '''Vedic Extensions'''. (U+1CFA)
* An astrological symbol and Hellschreiber Pause symbol (total 2 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BC9 and U+2BFF)
* A Cornish Verse Divider (total 1 character) was added to '''Supplemental Punctuation'''. (U+2E4F)
* Egyptological letters, Anglicana W and letters for early Pinyin (total 11 characters) were added to '''Latin Extended-D'''. (U+A7BA-U+A7BF and U+A7C2-U+A7C6)
*Sinological phonetic letters (total 2 characters) were added to '''Latin Extended-E'''. (U+AB66-U+AB67)
* A Vedic Anusvara (total 1 character) was added to '''Newa'''. (U+1145F)
* An archaic letter Kha (total 1 character) was added to '''Takri'''. (U+116B8)
* Sign Jihvamuliya and Uphadhmaniya (total 2 characters) were added to '''Soyombo'''. (U+11A84-U+11A85)
* Letters for various Yi and Miao languages (total 16 characters) were added to '''Miao'''. (U+16F45-U+16F4A, U+16F4F and U+16F7F-U+16F87)
* Marks for Ancient Chinese texts (total 2 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE2-U+16FE3)
* Some additional ideographs (total 6 characters) were added to '''Tangut'''. (U+187F2-U+187F7)
* A Nasalization mark (total 1 character) was added to '''Adlam'''. (U+1E94B)
* A Spanish and Portuguese register mark (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F16C)
* Hindu Temple and Auto Rickshaw emoji (total 2 characters) were added to '''Transport and Map Symbols'''. (U+1F6D5 and U+1F6FA)
* Large colored circles and boxes (total 12 characters) were added to '''Geometric Shapes Extended'''. (U+1F7E0-U+1F7EB)
* (total 31 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90D-U+1F90F, U+1F93F, U+1F971, U+1F97B, U+1F9A5-U+1F9AA, U+1F9AE-U+1F9AF, U+1F9BA-U+1F9BF, U+1F9C3-U+1F9CA and U+1F9CD-U+1F9CF)
* Heterodox chess symbols (total 84 characters) were added to '''Chess Symbols'''. (U+1FA00-U+1FA53)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Spacing Modifier Letters
|02EA, 02EB
|2
|-
|Vedic Extensions
|1CF2..1CF3
|2
|-
|Currency Symbols
|20A9
|1
|-
|CJK Symbols and Punctuation
|3001, 3002
|2
|-
|Bopomofo
|3105..312F
|43
|-
|Bopomofo Extended
|31A0..31BA
|27
|-
|CJK Unified Ideographs Extension A
|37C3, 3B9D, 3CFD, 3FE0, 44EC, 4A76
|6
|-
|CJK Unified Ideographs
|5344, 55B9, 6ABC, 6FF9, 809E, 80BC, 80E9, 8132, 8159, 841C, 891D, 8C6C, 915E, 9FD4
|14
|-
|Phags-pa
|A840..A877
|56
|-
|Halfwidth and Fullwidth Forms
|FF01, FF0C, FF0E, FF1A, FF1B, FF1F
|6
|-
|CJK Unified Ideographs Extension B
|200DD, 20164, 20BBF, 20C02, 20CED, 21D4C, 2278B, 23AB8, 2459B, 24A7D, 24FB9, 25ED7, 2677C, 26B4C, 26C21, 26CBE, 26E3D, 28834, 289A1, 289C0, 28A0F, 28B46
|22
|-
|CJK Unified Ideographs Extension C
|2A8FB, 2A917, 2AA30
|3
|-
|CJK Unified Ideographs Extension E
|2BA52, 2BD77, 2C494, 2C72F, 2C734, 2CB38
|6
|-
|CJK Unified Ideographs Extension F
|2D23B, 2E83A
|2
|-
! colspan="2" |Total
!192
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|3001 FE00
|
|corner-justified form # IDEOGRAPHIC COMMA
|-
|3001 FE01
|
|centered form # IDEOGRAPHIC COMMA
|-
|3002 FE00
|
|corner-justified form # IDEOGRAPHIC FULL STOP
|-
|3002 FE01
|
|centered form # IDEOGRAPHIC FULL STOP
|-
|FF01 FE00
|
|corner-justified form # FULLWIDTH EXCLAMATION MARK
|-
|FF01 FE01
|
|centered form # FULLWIDTH EXCLAMATION MARK
|-
|FF0C FE00
|
|corner-justified form # FULLWIDTH COMMA
|-
|FF0C FE01
|
|centered form # FULLWIDTH COMMA
|-
|FF0E FE00
|
|corner-justified form # FULLWIDTH FULL STOP
|-
|FF0E FE01
|
|centered form # FULLWIDTH FULL STOP
|-
|FF1A FE00
|
|corner-justified form # FULLWIDTH COLON
|-
|FF1A FE01
|
|centered form # FULLWIDTH COLON
|-
|FF1B FE00
|
|corner-justified form # FULLWIDTH SEMICOLON
|-
|FF1B FE01
|
|centered form # FULLWIDTH SEMICOLON
|-
|FF1F FE00
|
|corner-justified form # FULLWIDTH QUESTION MARK
|-
|FF1F FE01
|
|centered form # FULLWIDTH QUESTION MARK
|}
== Unicode 12.1 ==
Unicode 12.1 was released on May 7, 2019. It encoded 137,929 characters, adding only 1 new character.
=== Extended blocks ===
* A square era name Reiwa (total 1 character) was added to '''Enclosed CJK Letters and Months'''. (U+32FF)
== Unicode 13.0 ==
Unicode 13.0 was released on March 10, 2020. It encoded 143,859 characters, adding 5,930 new characters.
=== New blocks ===
* '''Yezidi''' (U+10E80-U+10EBF), containing 47 characters, was added.
* '''Chorasmian''' (U+10FB0-U+10FDF), containing 28 characters, was added.
* '''Dives Akuru''' (U+11900-U+1195F), containing 72 characters, was added.
* '''Lisu Supplement''' (U+11FB0-U+11FBF), containing 1 character, was added.
* '''Khitan Small Script''' (U+18B00-U+18CFF), containing 470 characters, was added.
* '''Tangut Supplement''' (U+18D00-U+18D08), containing 9 characters, was added.
* '''Symbols for Legacy Computing''' (U+1FB00-U+1FBFF), containing 212 characters, was added.
* '''CJK Unified Ideographs Extension G''' (U+30000-U+3134F), containing 4939 characters, was added.
=== Extended blocks ===
* Letters for African languages and Punjabi (total 10 characters) were added to '''Arabic Extended-A'''. (U+08BE-U+08C7)
* A sign Overline (total 1 character) was added to '''Oriya'''. (U+0B55)
* A Vedic Anusvara (total 1 character) was added to '''Malayalam'''. (U+0D04)
* A sign Candrabindu (total 1 character) was added to '''Sinhala'''. (U+0D81)
* Combining diacritical marks for Scottish phonology (total 2 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1ABF-U+1AC0)
* A Japanese symbol for Type A Electronics (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B97)
* Cross patties and a Tironian sign Capita Et (total 3 characters) were added to '''Supplemental Punctuation'''. (U+2E50-U+2E52)
* Letters for Taiwan and Cantonese language (total 5 characters) were added to '''Bopomofo Extended'''. (U+31BB-U+31BF)
* Some disunified ideographs (total 10 characters) were added to '''CJK Unified Ideographs Extension A'''. (U+4DB6-4DBF)
* Some ideographs for China (total 13 characters) were added to '''CJK Unified Ideographs'''. (U+9FF0-U+9FFC)
* Letters for Gaulish (total 6 characters) were added to '''Latin Extended-D'''. (U+A7C7-U+A7CA and U+A7F5-U+A7F6)
* An alternate sign Nasanta (total 1 character) was added to '''Syloti Nagri'''. (U+A82C)
* Letter R With Midle Tilde and modifier letters for Scottish phonology (total 4 characters) were added to '''Latin Extended-E'''. (U+AB68-U+AB6B)
* A symbol Ascia (total 1 character) was added to '''Ancient Symbols'''. (U+1019C)
* A letter for Pali (total 1 character) was added to '''Chakma'''. (U+11147)
* A vowel sign Prishthamatra E and Inverted Candrabindu (total 2 characters) were added to '''Sharada'''. (U+111CE and U+111CF)
* Double comma, sign Jihvamuliya and Uphadhmaniya (total 3 characters) were added to '''Newa'''. (U+1145A and U+11460-U+11461)
* Khitan Small Script Filler and reading marks for Vietnamese (total 3 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE4 and U+16FF0-U+16FF1)
* Some additional components (total 13 characters) were added to '''Tangut Components'''. (U+18AF3-U+18AFF)
* Creative Commons license symbols and Mask Work symbol (total 7 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10D-U+1F10F, U+1F16D-1F16F and U+1F1AD)
* Hut, Elevator, Pickup Truck and Roller Skate emoji (total 4 characters) were added to '''Transportation and Map Symbols'''. (U+1F6D6-U+1F6D7 and U+1F6FB-U+1F6FC)
* Arrows for legacy computing (total 2 characters) were added to '''Supplemental Arrows-C'''. (U+1F8B0-U+1F8B1)
* (total 10 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90C, U+1F972, U+1F977-U+1F978, U+1F9A3-U+1F9A4, U+1F9AB-U+1F9AD and U+1F9CB)
* (total 41 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA74, U+1FA83-U+1FA86, U+1FA96-U+1FAA8, U+1FAB0-U+1FAB6, U+1FAC0-U+1FAC2 and U+1FAD0-U+1FAD6)
* Gongche charaters for Kunqu Opera (total 7 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6D7-U+2A6DD)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Tagalog
|1700..170C, 170E..1714
|20
|-
|Mongolian
|1834, 1871, 1878
|3
|-
|Sundanese
|1BAB
|1
|-
|Currency Symbols
|20BF
|1
|-
|CJK Radicals Supplement
|2E80..2E99, 2E9B..2EF3
|115
|-
|Kangxi Radicals
|2F00..2FD5
|214
|-
|CJK Unified Ideographs Extension A
|3472, 38C7, 3DB8, 3FE0, 440B, 46E9
|6
|-
|CJK Unified Ideographs
|53FD, 6146, 6711, 671C, 6721, 6725, 6BD2, 7B9A, 87CE, 8956, 93BF, 9B97
|12
|-
|Latin Extended-D
|A764..A765
|2
|-
|Phags-pa
|A86D
|1
|-
|Tangut
|175F6, 17F0D, 17F8A, 17FA5, 180D6, 18139, 18147, 184F1, 18736
|9
|-
|Tangut Components
|18843, 18856, 1888C, 1890A, 18915, 1893B
|6
|-
|Adlam
|1E900..1E94A, 1E950..1E959, 1E95E..1E95F
|71
|-
|Miscellaneous Symbols and Pictographs
|1F3B1
|1
|-
|Supplemental Symbols and Pictographs
|1F995..1F998, 1F99B..1F99E, 1F9B0..1F9B3, 1F9E7
|13
|-
|CJK Unified Ideographs Extension B
|20219, 21249, 21827, 22C3A, 2327B, 23496, 2355E, 2363B, 236ED, 23839, 23FD5, 24261, 24726, 248F2, 2548E, 26657, 26C9E, 26FE1, 27334, 27C0E, 27CEF, 2A38C
|22
|-
|CJK Unified Ideographs Extension C
|2AED5, 2AEF3, 2AF76, 2B09F, 2B1C3, 2B1E5
|6
|-
|CJK Unified Ideographs Extension E
|2B83C, 2B8D9..2B8DA, 2B96F, 2BBD7, 2BD61, 2BE4A, 2BF1D, 2BF9D, 2C0B8, 2C142, 2C176, 2C316, 2C3FB, 2C402, 2C7AC, 2C82C, 2C83A, 2C9A1, 2CC88, 2CD68
|21
|-
|CJK Unified Ideographs Extension F
|2DC09, 2DE4A, 2EB7E, 2EB89
|4
|-
|CJK Compatibility Ideographs Supplement
|2F83B, 2F878, 2F8D6..2F8D7, 2F8DA, 2F8F0, 2F984, 2FA02
|8
|-
! colspan="2" |Total
!536
|}
== Unicode 14.0 ==
Unicode 14.0 was released on September 14, 2021. It encoded 144,697 characters, adding 838 new characters.
=== New blocks ===
* '''Arabic Extended-B''' (U+0870-U+089F), containing 41 characters, was added.
* '''Vithkuqi''' (U+10570-U+105BF), containing 70 characters, was added.
* '''Latin Extended-F''' (U+10780-U+107BF), containing 57 characters, was added.
* '''Old Uyghur''' (U+10F70-U+10FAF), containing 26 characters, was added.
* '''Unified Canadian Aboriginal Syllabics Extended-A''' (U+11AB0-U+11ABF), containing 16 characters, was added.
* '''Cypro-Minoan''' (U+12F90-U+12FFF), containing 99 characters, was added.
* '''Tangsa''' (U+16A70-U+16ACF), containing 89 characters, was added.
* '''Kana Extended-B''' (U+1AFF0-U+1AFFF), containing 13 characters, was added.
* '''Znamenny Musical Notation''' (U+1CF00-U+1CFFF), containing 185 characters, was added.
* '''Latin Extended-G''' (U+1DF00-U+1DFFF), containing 31 characters, was added.
* '''Toto''' (U+1E290-U+1E2BF), containing 31 characters, was added.
* '''Ethiopic Extended-B''' (U+1E7E0-U+1E7FF), containing 28 characters, was added.
=== Extended blocks ===
* An End of Text punctuation mark (total 1 character) was added to '''Arabic'''. (U+061D)
* Letters for Balti and Quranic orthography (total 12 characters) were added to '''Arabic Extended-A'''. (U+08B5 and U+08C8-U+08D2)
* A sign Nukta and letter Nakaara Pollu (total 2 characters) were added to '''Telugu'''. (U+0C3C and U+0C5D)
* A letter Nakaara Pollu (total 1 character) was added to '''Kannada'''. (U+0CDD)
* A letter Ra, sign Pamudpod and archaic letter Ra (total 3 characters) were added to '''Tagalog'''. (U+170D, U+1715 and U+171F)
* A fourth Free variation selector (total 1 character) was added to '''Mongolian'''. (U+180F)
* Combining diacritical marks for extended IPA (total 14 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1AC1-U+1ACE)
* An archaic ligature Jnya and punctuation marks (total 3 characters) were added to '''Balinese'''. (U+1B4C and U+1B7D-U+1B7E)
* A combining Dot Below Left (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFA)
* A Kyrgyz Som sign (total 1 character) was added to '''Currency Symbols'''. (U+20C0)
* A letter Caudate Chrivi (total 2 characters) were added to '''Glagolitic'''. (U+2C2F and U+2C5F)
* Medieval and phonetic punctuation marks (total 11 characters) were added to '''Supplemental Punctuation'''. (U+2E53-U+2E5D)
* Some ideographs for Macao (total 3 characters) were added to '''CJK Unified Ideographs'''. (U+9FFD-U+9FFF)
* Archaic European letters, modifier letters for Sokuon and Chatino orthography (total 13 characters) were added to '''Latin Extended-D'''. (U+A7C0-U+A7C1, U+A7D0-U+A7D1, U+A7D3, U+A7D5, U+A7D6-U+A7D9 and U+A7F2-U+A7F4)
* A modifier letter Wasla Above and honorifics (total 20 characters) were added to '''Arabic Presentation Forms-A'''. (U+FBC2, U+FD40-U+FD4F, U+FDCF and U+FDFE-U+FDFF)
* Letters for Old Tamil (total 6 characters) were added to '''Brahmi'''. (U+11070-U+11075)
* A vowel sign Vocalic R (total 1 character) was added to '''Khaiti'''. (U+110C2)
* An Abbreviation sign (total 1 character) was added to '''Takri'''. (U+116B9)
* Letters for Tai Ahom (total 7 characters) were added to '''Ahom'''. (U+11740-U+11746) The block was expanded from (U+11700-U+1173F) to (U+11700-U+1174F)
* Kana archaic letters (total 4 characters) were added to '''Kana Extended-A'''. (U+1B11F-U+1B122)
* Accidental symbols for Iranian classical music (total 2 characters) were added to '''Musical Symbols'''. (U+1D1E9-U+1D1EA)
* Playground Slide, Wheel and Ring Buoy emoji (total 3 characters) were added to '''Transportation and Map Symbols'''. (U+1F6DD-U+1F6DF)
* A Heavy Equals Sign emoji (total 1 character) was added to '''Geometric Shapes Extended'''. (U+1F7F0)
* A Troll and Face Holding Back Tears emoji (total 2 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F979 and U+1F9CC)
* (total 31 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA7B-U+1FA7C, U+1FAA9-U+1FAAC, U+1FAB7-U+1FABA, U+1FAC3-U+1FAC5, U+1FAD7-U+1FAD9, U+1FAE0-U+1FAE7 and U+1FAF0-U+1FAF6)
* Some ideographs for Macao (total 2 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6DE-U+2A6DF)
* Disunified ideographs and a G source ideograph for China, Hong Kong and Vietnam (total 4 characters) were added to '''CJK Unified Ideographs Extension C'''. (U+2B735-U+2B738)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Latin Extended-B
|0184..0185
|2
|-
|Arabic
|0674..0678, 06C5, 06C7, 06FE
|8
|-
|Letterlike Symbols
|210B, 2110, 2112, 211B, 212C, 2130..2131, 2133
|8
|-
|Enclosed Alphanumerics
|2460..24FF
|160
|-
|Dingbats
|2776..2793
|30
|-
|CJK Symbols and Punctuation
|3001..3029, 3030..303D, 303F
|56
|-
|CJK Strokes
|31C0..31E3
|36
|-
|Katakana Phonetic Extensions
|31F0..31FF
|16
|-
|Enclosed CJK Letters and Months
|3200..321E, 3220..32FF
|255
|-
|CJK Compatibiity
|3300..33FF
|256
|-
|CJK Unified Ideographs Extension A
|3777, 3B3F
|2
|-
|CJK Unified Ideographs
|5DD5, 652C, 6AC0
|3
|-
|Arabic Presentation Forms-A
|FBD7..FBD8, FBDD, FBE0..FBE1
|5
|-
|Vertical Forms
|FE10..FE19
|10
|-
|CJK Compatibiity Forms
|FE30..FE4F
|32
|-
|Small Form Variants
|FE50..FE52, FE54..FE66, FE68..FE6B
|26
|-
|Halfwidth and Fullwidth Forms
|FF01..FF9F, FFA1..FFBE, FFC2..FFC7, FFCA..FFCF, FFD2..FFD7, FFDA..FFDC, FFE0..FFE6, FFE8..FFEE
|225
|-
|Egyptian Hieroglyphs
|1300A, 13017, 1302D, 13032, 13034..13035, 13037..13038, 1303A..1303E, 1304E..1304F, 13055, 13057, 13068, 1309A, 130D2, 130D5, 130F6, 130FE, 13192, 1325F, 13267, 1326A, 13281, 13297, 1329E, 132B4, 132C1, 132E6, 13304, 1331F, 13378..1337B, 1337D..1337E, 133F3, 133FA..13403, 1340D, 13417, 1342B
|55
|-
|Mathematical Alphanumeric Symbols
|1D49C, 1D49E..1D49F, 1D4A2, 1D4A5..1D4A6, 1D4A9..1D4AC, 1D4AE..1D4B5
|18
|-
|Enclosed Alphanumeric Supplement
|1F100..1F1AD, 1F1E6..1F1FF
|200
|-
|Enclosed Ideographic Supplement
|1F200..1F202, 1F210..1F23B, 1F240..1F248, 1F250..1F251, 1F260..1F265
|64
|-
|Supplemental Symbols and Pictographs
|1F930
|1
|-
|CJK Unified Ideographs Extension B
|22ADC, 230F2, 25B27, 26F28
|4
|-
! colspan="2" |Total
!1472
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|1D49C FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE00
|
|chancery style # SCRIPT CAPITAL B
|-
|1D49E FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE00
|
|chancery style # SCRIPT CAPITAL E
|-
|2131 FE00
|
|chancery style # SCRIPT CAPITAL F
|-
|1D4A2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE00
|
|chancery style # SCRIPT CAPITAL H
|-
|2110 FE00
|
|chancery style # SCRIPT CAPITAL I
|-
|1D4A5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE00
|
|chancery style # SCRIPT CAPITAL L
|-
|2133 FE00
|
|chancery style # SCRIPT CAPITAL M
|-
|1D4A9 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE00
|
|chancery style # SCRIPT CAPITAL R
|-
|1D4AE FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Z
|-
|1D49C FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE01
|
|roundhand style # SCRIPT CAPITAL B
|-
|1D49E FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE01
|
|roundhand style # SCRIPT CAPITAL E
|-
|2131 FE01
|
|roundhand style # SCRIPT CAPITAL F
|-
|1D4A2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE01
|
|roundhand style # SCRIPT CAPITAL H
|-
|2110 FE01
|
|roundhand style # SCRIPT CAPITAL I
|-
|1D4A5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE01
|
|roundhand style # SCRIPT CAPITAL L
|-
|2133 FE01
|
|roundhand style # SCRIPT CAPITAL M
|-
|1D4A9 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE01
|
|roundhand style # SCRIPT CAPITAL R
|-
|1D4AE FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Z
|}
===Named Sequences===
Here is a table with new named character sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Name
|-
|0915 093C
|DEVANAGARI SEQUENCE FOR LETTER QA
|-
|0916 093C
|DEVANAGARI SEQUENCE FOR LETTER KHHA
|-
|0917 093C
|DEVANAGARI SEQUENCE FOR LETTER GHHA
|-
|091C 093C
|DEVANAGARI SEQUENCE FOR LETTER ZA
|-
|0921 093C
|DEVANAGARI SEQUENCE FOR LETTER DDDHA
|-
|0922 093C
|DEVANAGARI SEQUENCE FOR LETTER RHA
|-
|092B 093C
|DEVANAGARI SEQUENCE FOR LETTER FA
|-
|092F 093C
|DEVANAGARI SEQUENCE FOR LETTER YYA
|-
|09A1 09BC
|BENGALI SEQUENCE FOR LETTER RRA
|-
|09A2 09BC
|BENGALI SEQUENCE FOR LETTER RHA
|-
|09AF 09BC
|BENGALI SEQUENCE FOR LETTER YYA
|-
|0A32 0A3C
|GURMUKHI SEQUENCE FOR LETTER LLA
|-
|0A38 0A3C
|GURMUKHI SEQUENCE FOR LETTER SHA
|-
|0A16 0A3C
|GURMUKHI SEQUENCE FOR LETTER KHHA
|-
|0A17 0A3C
|GURMUKHI SEQUENCE FOR LETTER GHHA
|-
|0A1C 0A3C
|GURMUKHI SEQUENCE FOR LETTER ZA
|-
|0A2B 0A3C
|GURMUKHI SEQUENCE FOR LETTER FA
|-
|0B21 0B3C
|ORIYA SEQUENCE FOR LETTER RRA
|-
|0B22 0B3C
|ORIYA SEQUENCE FOR LETTER RHA
|}
== Unicode 15.0 ==
Unicode 15.0 was released on September 13, 2022. It encoded 149,186 characters, adding 4,489 new characters.
=== New blocks ===
* '''Arabic Extended-C''' (U+10EC0-U+10EFF), containing 3 characters, was added.
* '''Devanagari Extended-A''' (U+11B00-U+11B5F), containing 10 characters, was added.
* '''Kawi''' (U+11F00-U+11F5F), containing 86 characters, was added.
* '''Kaktovik Numerals''' (U+1D2C0-U+1D2DF), containing 20 characters, was added.
* '''Cyrillic Extended-D''' (U+1E030-U+1E08F), containing 63 characters, was added.
* '''Nag Mundari''' (U+1E4D0-U+1E4FF), containing 42 characters, was added.
* '''CJK Unified Ideographs Extension H''' (U+31350-U+323AF), containing 4192 characters, was added.
=== Extended blocks ===
* A Yamakkan (total 1 character) was added to '''Lao'''. (U+0ECE)
* A combining Anusvara Above Right (total 1 character) was added to '''Kannada'''. (U+0CF3)
* Letters Qa, Short I and Vocalic R (total 3 characters) were added to '''Khojki'''. (U+1123F-U+11241)
* An additional hieroglyph to Group V (total 1 character) was added to '''Egyptian Hieroglyphs'''
* Extended format controls (total 29 characters) were added to '''Egyptian Hieroglyph Format Controls'''. (U+13439-U+13455). The block was expanded from (U+13430-U+1343F) to (U+13430-U+1345F)
* Hiragana and Katakana Small Ko (total 2 characters) were added to '''Small Kana Extension'''. (U+1B132 and U+1B155)
* Letters for Malayalam transliteration (total 6 characters) were added to '''Latin Extended-G'''. (U+1DF25-U+1DF2A)
* A Wireless emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6DC)
* A Nine Pointed White Star (total 1 character) was be added to '''Geometric Shapes Extended'''. (U+1F7D9)
* A Lot of Fortune, eclipse symbols and symbols for dwarf planets (total 6 characters) were added to '''Alchemical symbols'''. (U+1F774-U+1F776 and U+1F77B-U+1F77F)
* (total 20 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA75-U+1FA77, U+1FA87-U+1FA88, U+1FAAD-U+1FAAF, U+1FABB-U+1FABF, U+1FACE-U+1FACF, U+1FADA-U+1FADB, U+1FAE8 and U+1FAF7-U+1FAF8)
* A disunified ideograph for Macao (total 1 character) was added to '''CJK Unified Ideographs Extension C'''. (U+2B739)
===Glyph Changes===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|IPA Extensions
|025E, 029A
|2
|-
|United Canadian Aboriginal Syllabics
|144B, 14D1, 1506, 15C0..15C3, 15E8..15EE, 1601, 1604..1607, 160A..160D, 1614..162D, 1630..163F, 1646..1647, 165A
|66
|-
|United Canadian Aboriginal Syllabics Extended
|18DB, 18EC, 18F1..18F2, 18F5
|5
|-
|Sundanese
|1BBF
|1
|-
|Optical Character Recognition
|2447
|1
|-
|CJK Unified Ideographs Extension A
|34DC, 3BF6, 3C43, 48B4, 4DBE
|5
|-
|CJK Unified Ideographs
|585F, 5F50, 6BC0, 7BC9, 833E
|5
|-
|Cyrillic Extended-B
|A66E
|1
|-
|Old Turkic
|10C47
|1
|-
|Egyptian Hieroglyphs
|various (new standardized variation sequences)
|94
|-
|Khitan Small Script
|18CCA
|1
|-
|Wancho (font update)
|1E2C0..1E2F9, 1E2FF
|59
|-
|Alchemical Symbols (font update)
|1F700..1F773
|116
|-
|CJK Unified Ideographs Extension B
|20048, 20A1C, 2143F, 21A5F, 21C08, 21FBA, 22ACF, 23392, 238A7, 23D8F, 23F4E, 25D20, 26E30, 27B48, 27C4F, 28633, 28B02, 28E9A, 29760, 2A60F
|20
|-
|CJK Unified Ideographs Extension C
|2B249
|1
|-
|CJK Unified Ideographs Extension E
|2BB37, 2BD7D, 2C151, 2C1E0, 2C2D6, 2C5CA, 2C810, 2CD34
|8
|-
|CJK Unified Ideographs Extension F
|2CF4E, 2D25D, 2D3EC, 2D6A7, 2D7BA, 2D979, 2DA74, 2DA97, 2DC13, 2DDC0, 2DF10, 2DF78, 2E05A, 2E0AE, 2E516, 2E640, 2E680, 2EA63
|18
|-
|CJK Compatibility Ideographs Supplement
|2F804, 2F805, 2F833, 2F835, 2F84C, 2F84F, 2F852, 2F855, 2F887, 2F88B, 2F899, 2F8A0, 2F8A6, 2F8A7, 2F8AD, 2F8B1, 2F8B4, 2F8B7, 2F8BA, 2F8D0, 2F8E0..2F8E2, 2F8E5, 2F8E6, 2F8FE, 2F900, 2F901, 2F907, 2F912, 2F922, 2F926, 2F936, 2F938, 2F94E, 2F959, 2F95F, 2F96C, 2F99F, 2F9B8, 2F9BA, 2F9D3, 2F9DB, 2F9DC, 2F9E8, 2F9EA, 2F9EE, 2FA00, 2FA0D, 2FA1B
|50
|-
|CJK Unified Ideographs Extension G
|302FC, 30723, 30A6D, 30CF7, 30DBF, 31006, 3105D
|7
|-
! colspan="2" |Total
!461
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|13091 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027
|-
|13092 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027A
|-
|13093 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D028
|-
|130A9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D047
|-
|1310F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F016
|-
|13117 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F023
|-
|1311C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F028
|-
|13121 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F032
|-
|13127 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F037A
|-
|13139 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13139 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13183 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH H005
|-
|13187 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH H008
|-
|131A0 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131A0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131B1 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B1 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B8 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M009
|-
|131B9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M010
|-
|131BA FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M010A
|-
|131CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M017
|-
|131EE FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131EE FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131F8 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N010
|-
|131F9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131F9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131FA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N012
|-
|131FA FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N012
|-
|13216 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH N035
|-
|13257 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O006
|-
|1327B FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH O029
|-
|1327F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O031
|-
|1327F FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O031
|-
|13285 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O036
|-
|1328C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O039
|-
|132A4 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132A4 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132AA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Q003
|-
|132CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH R024
|-
|132DC FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S010
|-
|132E7 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E7 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E9 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S020
|-
|132F8 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S033
|-
|132FD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S037
|-
|13302 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S042
|-
|13303 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S043
|-
|13307 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T001
|-
|13308 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T002
|-
|13310 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008
|-
|13311 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008A
|-
|13312 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13312 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13313 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13313 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13314 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T010
|-
|13314 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T010
|-
|1331B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331B FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T016A
|-
|13321 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13321 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13322 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13322 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13331 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T035
|-
|13331 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T035
|-
|1333B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U007
|-
|1333C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U008
|-
|1334A FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U022
|-
|13361 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U042
|-
|13373 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V007A
|-
|13377 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V010
|-
|13378 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V011
|-
|1337D FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V012A
|-
|13385 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V019
|-
|13399 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V026
|-
|1339A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V027
|-
|133AF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W001
|-
|133B0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W002
|-
|133BF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W014
|-
|133D3 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH X004A
|-
|133DD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH Y002
|-
|133F2 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z007
|-
|133F5 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z010
|-
|133F6 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z011
|-
|13403 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z015I
|-
|13416 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA008
|-
|13419 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|1341A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA012
|-
|13423 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA021
|-
|1342C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA030
|-
|1342E FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA032
|-
|13443 FE00
|
|expanded # EGYPTIAN HIEROGLYPH LOST SIGN
|-
|13444 FE00
|
|expanded # EGYPTIAN HIEROGLYPH HALF LOST SIGN
|-
|13445 FE00
|
|expanded # EGYPTIAN HIEROGLYPH TALL LOST SIGN
|-
|13446 FE00
|
|expanded # EGYPTIAN HIEROGLYPH WIDE LOST SIGN
|}
== Unicode 15.1 ==
Unicode 15.1 was released on September 12th, 2023. It encoded 149,813 characters, adding 627 new characters.
=== New Blocks ===
* '''CJK Unified Ideographs Extension I''' (U+2EBF0-U+2EE5F), containing 622 characters, was added.
=== Extended Blocks ===
* 4 Ideographic characters were added to '''Ideographic Description Characters'''. (U+2FFC-U+2FFF)
* An Ideographic subtraction (total 1 character) was added to '''CJK Strokes'''. (U+31EF)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|CJK Unified Ideographs Extension A
|357E, 358B..358E, 3599..359D, 35AF..35B0, 35B2..35B3, 35DF..35E1, 35EF, 360F, 3612, 3F94, 44D5, 48EE
|5
|-
|CJK Unified Ideographs
|5098, 512D, 517A, 5391, 54DB, 551C, 551F, 55B8, 55ED, 56AB, 591E, 594A, 5B2E, 5DFC..5DFD, 5EE4, 609E, 65B0, 65B3, 65D5, 65F2, 67B2, 6AB6, 6AEC, 6C69, 6FC2, 6FD3, 7019, 7361, 74BD, 7934, 820B, 826E, 83BB, 8412, 8456, 848A, 896F, 8E34, 8FD7, 9166, 9855, 985E, 9C4D
|5
|-
|Latin Extended-D
|A798
|1
|-
|Latin Extended-E
|AB5A
|1
|-
|Tangut
|17105, 172A4, 17BD1..17BD3, 17EF9, 18136
|59
|-
|Alchemical Symbols
|1F741, 1F747, 1F74C, 1F74F, 1F756, 1F758, 1F763, 1F768, 1F76D, 1F76E
|116
|-
|CJK Unified Ideographs Extension B
|20302, 2087A, 20C00, 230B7, 2339E, 236EF, 237C3, 23B87, 23CC0, 23CD9, 23E5E, 2486F, 249D6, 249E8, 24D6A, 2585E, 25D89, 26A5A..26A5B, 26A73, 26A82..26A83, 26A90, 26AA6, 26AA8, 26AD8, 27350, 279F8, 284A3, 28BBA, 29516, 29530
|20
|-
|CJK Unified Ideographs Extension C
|2A741, 2AB63, 2ACD8, 2AF6F, 2B173, 2B490
|1
|-
|CJK Unified Ideographs Extension E
|2BC2E, 2BF45, 2C04C, 2C13A, 2C43C, 2C43E, 2C816
|8
|-
|CJK Unified Ideographs Extension F
|2D1CC..2D1CD, 2D1DD, 2D1E4, 2D1F7, 2D203, 2D256, 2D266, 2D2A2, 2D2AC, 2D2DA
|18
|-
|CJK Unified Ideographs Extension G
|301D4, 301D9, 301E4, 301E8, 301FF..30200, 30205, 3020C, 30211, 30215..30217, 30220, 30234..30235, 30237
|7
|-
|CJK Unified Ideographs Extension H
|314B7, 31542, 31569, 31C7F, 31D5A, 31F68
|7
|-
! colspan="2" |Total
!164
|}
== Unicode 16.0 ==
Unicode 16.0 was released on September 10th, 2024. It encoded 154,998 characters, adding 5185 new characters.
=== New Blocks ===
* '''Todhri''' (U+105C0-U+105FF), containing 52 characters, was added.
* '''Garay''' (U+10D40-U+10D8F), containing 69 characters, was added.
* '''Tulu-Tigalari''' (U+11380-U+113FF), containing 80 characters, was added.
* '''Myanmar Extended-C''' (U+116D0-U+116FF), containing 20 characters, was added.
* '''Sunuwar''' (U+11BC0-U+11BFF), containing 44 characters, was added.
* '''Egyptian Hieroglyphs Extended-A''' (U+13460-U+143FF), containing 3995 characters, was added.
* '''Gurung Khema''' (U+16100-U+1613F), containing 58 characters, was added.
* '''Kirat Rai''' (U+16D40-U+16D7F), containing 58 characters, was added.
* '''Symbols for Legacy Computing Supplement''' (U+1CC00-U+1CEBF), containing 686 characters, was added.
* '''Ol Onal''' (U+1E5D0-U+1E5FF), containing 44 characters, was added.
=== Extended Blocks ===
* A combining diacritical mark for Jawi (total 1 character) was added to '''Arabic Extended-B'''. (U+0897)
* Inverted letters and a punctuation mark (total 3 characters) was added to '''Balinese'''. (U+1B4E-U+1B4F and U+1B7F)
* A letter Tje (total 2 characters) was added to '''Cyrillic Extended-C'''. (U+1C89-U+1C8A)
* Legacy computing symbols for Delete (total 3 characters) was added to '''Control Pictures'''. (U+2427-U+2429)
* CJK strokes HXG and SZP (total 2 characters) was added to '''CJK Strokes'''. (U+31E4-U+31E5)
* A capital Rams Horn, an S with Diagonal Stroke, Lamda Letters, and letters for Wakashan and Salishan Languages (total 6 characters) was added to '''Latin Extended-D'''. (U+A7CB-U+A7CD, U+A7DA-U+A7DC)
* A combining Alef overlay and letters with two dots vertically below (total 4 characters) was added to '''Arabic Extended-C'''. (U+10EC2-U+10EC4 and U+10EFC)
* A sign Nukta (total 1 character) was added to '''Kawi'''. (U+11F5A)
* A blank character (total 1 character) was added to '''Khitan Small Script'''. (U+18CFF)
* A rightwards arrow with hook, and arrows for legacy computing and arrows for Egyptology (total 12 characters) was added to '''Supplemental Arrows-C'''. (U+1F8B2-U+1F8BB, U+1F8C0-U+1F8C1)
* A Harp, Shovel, Leafless Tree, Fingerprint, Root Vegetable, Splatter, and Face with Bags Under Eyes (total 7 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA89, U+1FA8F, U+1FABE, U+1FAC6, U+1FADC, U+1FADF, and U+1FAE9)
* Graphic shapes for legacy computing (total 37 characters) was added to '''Symbols for Legacy Computing'''. (U+1FBCB-U+1FBEF)
== Unicode 17.0 ==
Unicode 17.0 was released on September 9th, 2025. It encoded 159,801 characters, adding 4,083 new characters.
=== New Blocks ===
* '''Sidetic''' (U+10940-U+1095F), containing 26 characters, was added.
* '''Sharada Supplement''' (U+11B60-U+11B7F), containing 8 characters, was added.
* '''Tolong Siki''' (U+11DB0-U+11DEF), containing 54 characters, was added.
* '''Beria Erfe''' (U+16EA0-U+16EDF), containing 50 characters, was added.
* '''Tangut Components Supplement''' (U+18D80-U+18DFF), containing 115 characters, was added.
* '''Miscellaneous Symbols Supplement''' (U+1CEC0-U+1CEFF), containing 34 characters, was added.
* '''Tai Yo''' (U+1E6C0-U+1E6FF), containing 55 characters, was added.
* '''CJK Unified Ideographs Extension J''' (U+323B0-U+3347F), containing 4298 characters, was added.
=== Extended Blocks ===
* A Noon with Ring Above (total 1 character) was added to '''Arabic Extended-B'''. (U+088F)
* An archaic ligature Shrii (total 1 character) was added to '''Telugu'''. (U+0C5C)
* An archaic ligature Shrii (total 1 character) was added to '''Kannada'''. (U+0CDC)
* Compound tone and harrington diacritics (total 26 characters) was to '''Combining Diacritical Marks Extended'''. (U+1ACF-U+1ADD, U+1AE0-U+1AEB)
* Saudi Riyal Sign (total 1 character) was added to '''Currency Symbols'''. (U+20C1)
* Equal Sign with Infinity Above (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B96)
* 2 capital letters for Middle English, Latin pharyngeal voiced fricative, and Modifier Letter Capital S (total 5 characters) was added to '''Latin Extended-D'''. (U+A7CE-U+A7CF, U+A7D2, U+A7D4, U+A7F1)
* Arabic Ligature Rahmatu Allaahi Alayh and Arabic Honorifics (total 25 characters) was added to '''Arabic Presentation Forms-A'''. (U+FBC3-U+FBD2, U+FD90, U+FD91, U+FDC8-U+FDCE)
* A Small Yeh Barree with Two Dots Below, Thin Noon, Biblical End of Verse, Yeh with Four Dots Below, Honorifics, Double Vertical Bar Below, and Small Low Noon (total 14 characters) was added to '''Arabic Extended-C'''. (U+10EC5-U+10EC7, U+10ED0-U+10ED8, U+10EFA-U+10EFB)
* Chinese Simplified and Traditional Er and Yangqin Slow Signs Two, Three, and Four (total 5 characters) was added to '''Ideographic Symbols and Punctuation'''. (U+16FF2-U+16FF6)
* Some additional ideographs (total 8 characters) was added to '''Tangut'''. (U+187F8-U+187FF)
* Additional ideographs (total 22 characters) was added to '''Tangut Supplement'''. (U+18D09-U+18D1E)
* Nine symbols (total 9 characters) was added to '''Symbols for Legacy Computing Supplement'''. (U+1CCFA-U+1CCFC, U+1CEBA-1CEBF)
* A Landslide (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D8)
* Historical asteroid symbols (total 4 characters) was added to '''Alchemical Symbols'''. (U+1F777-U+1F77A)
* Chemical symbols (total 9 characters) was added to '''Supplemental Arrows-C'''. (U+1F8D0-U+1F8D8)
* White and Black Chess Ferz and Alfil (total 4 characters) was added to '''Chess Symbols'''. (U+1FA54-U+1FA57)
* A trombone, treasure chest, hairy creature, orca, distorted face, and fight cloud (total 6 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA8A, U+1FA8E, U+1FAC8, U+1FACD, U+1FAEA, and U+1FAEF)
* An alarm bell symbol (total 1 character) was added to '''Symbols for Legacy Computing'''. (U+1FBFA)
* Additional ideographs (total 6 characters) was added to '''CJK Unified Ideographs Extension C'''. (U+2B73A-U+2B73F)
* Additional ideographs (total 12 characters) was added to '''CJK Unified Ideographs Extension E'''. (U+2CEA2-U+2CEAD)
== Unicode 18.0 ==
Unicode 18.0 will be released around September 2026. In August 2025, only 61 characters were accepted, but more were accepted in November 2025.
=== New Blocks ===
*'''Bengali Supplement''' (U+11DF0-U+11DFF), containing 2 characters, will be added.
* '''Archaic Cuneiform Numerals''' (U+12550-U+1268F), containing 311 characters, will be added.
* '''Jurchen''' (U+18E00-U+1919F), containing 914 characters, will be added.
* '''Jurchen Radicals''' (U+191A0-U+191DF), containing 51 characters, will be added.
* '''Musical Symbols Supplement''' (U+1D250-U+1D28F), containing 50 characters, will be added.
* '''Miscellaneous Symbols and Arrows Extended''' (U+1DB00-U+1DBFF), containing 29 characters, will be added.
* '''Seal Script''' (U+3D000-U+3FC3F), containing 11328 characters, will be added.
=== Extended Blocks ===
* Modifier letters Eh, Ini, and Yi (total 3 characters) will be added to '''Armenian'''. (U+0558, U+058B-U+058C)
* Hebrew Point Sheva Na Mudgash and Hebrew Point Dagesh Hazaq Mudgash (total 2 characters) will be added to '''Hebrew'''. (U+05C8-U+05C9)
* Signs for dot above and double dot above (total 2 characters) will be added to '''Oriya'''. (U+0B53-U+0B54)
* Alternate positioned IPA diacritics and diacritics for Chao and Khoe (total 7 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1ADE-U+1ADF, U+1AEC-U+1AF0)
* Latin subscript small letter w, y, and z and Modifier letter high and low vertical line (total 4 characters) will be added to '''Superscripts and Subscripts'''. (U+208F, U+209D-U+209F)
* Rufiyaa Sign, UAE Dirham Sign, and Omani Rial (total 3 characters) will be added to '''Currency Symbols'''. (U+20C2-U+20C4)
* Two Wiggly Exclamation Marks and Two Parenthesis with Middle Ring (total 4 characters) will be added to '''Supplemental Punctuation'''. (U+2E60-U+2E63)
* Latin capital letter closed omega and Latin capital letter r with long leg and (total 2 characters) will be added to '''Latin Extended-D'''. (U+A7DD and U+A7E2)
* Latin capital letter script r and script r with ring (total 2 characters) will be added to '''Latin Extended-E'''. (U+AB6C-U+AB6D)
* Latin modifier letters for clicks (total 5 characters) will be added to '''Latin Extended-F'''. (U+107BB-U+107BF)
* Arabic Crown Letters, Quranic Characters, and Arabic Crown (total 39 characters) will be added to '''Arabic Extended-C'''. (U+10EC9-U+10ECF, U+10ED9-U+10EEE, U+10EF0-U+10EF9)
* Devanagari Letter Alternate Ddda (total 1 character) will be added to '''Devanagari Extended-A'''. (U+11B0A)
* Extended Cuneiform Numeric Signs (total 12 characters) will be added to '''Cuneiform Numbers and Punctuation'''. (U+1246F, U+12475-U+1247F)
* Jurchen Small Script characters (total 5 characters) will be added to '''Khitan Small Script'''. (U+18CD6-U+18CDA)
* Two additional ideographs (total 2 characters) will be added to '''Tangut Supplement'''. (U+18D1F-U+18D20)
* Hiragana Digraph Koto, Katakana Diagraphs Toki, Tote, and Yori, letters alternate Ne, and Wi (total 6 characters) will be added to '''Kana Extended-A'''. (U+1B123-U+1B128)
* Katakana letter small archaic Ye (total 1 character) will be added to '''Small Kana Extension'''. (U+1B168)
* Leibnizian alchemical symbols, Leibnizian cossic characters, and Leibnizian mathematical signs and symbols (total 19 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED2-U+1CED4, U+1CEDD-U+1CEDF, U+1CEF1-U+1CEFD)
* Stein Zimmerman Symbols, Digit Slash Symbols, and other Symbols (total 23 characters) will be added to '''Musical Symbols'''. (U+1D127-U+1D128, U+1D1EB-U+1D1FF)
* Mathematical italic long s with descender s (U+1D6A6) will be added to '''Mathematical Alphanumeric Symbols'''.
* Affricate ligatures, letters with palatal hook, barred letters, RFE letters, Initial Teaching Alphabet, English Phonotypic Alphabet, Leibnizian cossic characters, and modifier letters (total 151 characters) will be added to '''Latin Extended-G'''. (U+1DF1F-U+1DF24, U+1DF2B-U+1DF81, U+1DF90-U+1DF96, U+1DFCD-U+1DFFF)
* A Tomobiki symbol (total 1 character) will be added to '''Enclosed Alphanumeric Supplement'''. (U+1F1AE)
* A lighthouse (total 1 character) will be added to '''Transport and Map Symbols'''. (U+1F6D9)
* A black circle with white vertical bar, and Extended Geometric Shapes (total 17 characters) will be added to '''Geometric Shapes Extended'''. (U+1F7DA-U+1F7DB, U+1F7F1-U+1F7FF)
* A meteor, eraser, net with handle, monarch butterfly, pickle, cracking face, leftwards thumb sign, and rightwards thumb sign (total 8 characters) will be added to '''Symbols and Pictographs Extended-A'''. (U+1FA8B-1FA8D, U+1FACC, U+1FADD, U+1FAEB, U+1FAF9-1FAFA)
* An additional ideograph (total 1 character) will be added to '''CJK Unified Ideographs Extension D'''. (U+2B81E)
== Code Points Provisionally Assigned==
This is a section where you can add any upcoming Unicode characters that have been [https://www.unicode.org/alloc/Pipeline.html#codepoint_reservation provisionally assigned for mature proposals] (but not yet accepted) for a future update of The Unicode Standard.
=== New Blocks ===
<!--* '''Arabic Extended-D''' (U+10D90-U+10E5F), containing 3 characters, will be added.-->
* '''Sirmauri''' (U+11850-U+1188F), containing 55 characters, will be added.
* '''Leke''' (U+11B80-U+11BBF), containing 55 characters, will be added.
* '''Proto-Cuneiform''' (U+12690-U+12ECF), containing 1392 characters, will be added.
* '''Chisoi''' (U+16D80-U+16DAF), containing 40 characters, will be added.
* '''Mwangwego''' (U+16E00-U+16E3F), containing 64 characters, will be added.
* '''Shaaldaa''' (U+1C800-U+1CB2F), containing 804 characters, will be added.
=== Extended Blocks ===
* Telugu Sign Spacing Candrabindu (total 1 character) will be added to '''Telugu'''. (U+0C70)
<!--* Kannada Signs Ardhanusvara and Combining Anusvara Above (total 1 character) will be added to '''Kannada'''. (U+0CF0 and U+0CF4)-->
* Mongolian Letter Manchu Alternative Ue (total 1 character) will be added to '''Mongolian'''. (U+1879)
* Combining Grave-Acute-Macron, Combining inverted lazy s Above, and Combining comma Above and acute (total 3 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1AF1-U+1AF3)
* Cyrillic small letter Yeru with connecting bar (total 1 character) will be added to '''Cyrillic Extended-C'''. (U+1C8B)
* Belarusian Ruble sign and Ruble sign with double vertical stem (total 2 characters) will be added to '''Currency Symbols'''. (U+20C5, U+20CF)
<!--* Combining Long Triple Solidus Overlay and Combining Saltire Overlay (total 2 characters) will be added to '''Combining Diacritical Marks for Symbols'''. (U+20F1-U+20F2)-->
<!--* Latin capital and small letter i with oblique stroke (total 2 characters) will be added to '''Latin Extended-D'''. (U+AB6E)-->
* Latin capital letter u with left hook (total 1 character) will be added to '''Latin Extended-E'''. (U+AB6E)
* Arabic Dotless Half-Yeh and Half-Yeh (total 2 characters) will be added to '''Arabic Extended-C'''. (U+10EC0-U+10EC1)<!--also Arabic Dotless Half-Jeem and Astronomical Kaf (U+10EC8, U+10EEF), up to 4 characters-->
<!--Brahmi minimizing virama (total 1 character) will be added to '''Brahmi'''. (U+1107E)-->
* Tulu-Tigalari letter combining anusvara above and letter archaic II (total 2 characters) will be added to '''Tulu-Tigalari'''. (U+113CB, U+113DA<!--planned to move to 113DB, with signs om pushpika with tail and shrii pushpika with tail added at U+113D9-U+113DA, up to 4 characters-->
<!--* Newa Letter Heavy Ya (total 1 character) will be added to '''Newa'''. (U+11462)-->
* Dogra Signs Candrabindu and Avaragha (total 2 characters) will be added to '''Dogra'''. (U+1183C-U+1183D)
* Devanagari Jivamuliya and Upadhmaniya (total 2 characters) will be added to '''Devanagari Extended-A'''. (U+11B0B-U+11B0C)
* Alchemical Symbol for Calx-2 and Alchemical Symbol for Retort-2 (total 2 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED1, U+1CED5)
<!--* Musical Symbol down arrowhead breath mark (total 1 character) will be added to '''Musical Symbols Supplement'''. (U+1D282)-->
<!--* Leibnizian letterlike symbols and miscellaneous mathematical symbols (total 15 characters) will be added to '''Miscellaneous Symbols and Arrows Extended'''. (U+1DB1D-U+1DB2B)-->
* Small w with palatal hook, small n and r with double middle tilde, small capital i with retroflex hook, small open q, x with stroke, small wavy y, schwa with right hook, Romance dialectology symbols, zh ligature, Albanian letter edhe, Modifier letter capital y, and modifier letter accents (total 17 characters) will be added to '''Latin Extended-G'''. (U+1DF82-U+1DF8F, U+1DF97-U+1DF9A, U+1DFC4-U+1DFCD)<!---also Albanian Frashëri letters, characters up to 26-->
<!--*Arabic Astronomical zero and five astronomical symbols (total 6 characters) will be added to Arabic Mathematical Alphabetic Symbols (U+1EEE0-U+1EEE5)-->
==Roadmap Blocks==
This is a section where proportional maps of proposed allocations to Unicode and ISO/IEC 10646 are presented. Italic indicates scripts for which detailed proposals have not yet been written.<ref>[https://unicode.org/roadmaps/smp/]</ref>
* '''Northern Palaeohispanic''' (U+10200-U+1023F)
* '''Southern Palaeohispanic''' (U+10240-U+1027F)
* '''''Shavian Quikscript''' (U+103E0-U+103FF)''
* '''Combining Diacritical Marks Extended-A''' (U+107C0-U+107FF)
* '''Proto-Sinaitic''' (U+108B0-U+108DF)
* '''''Numidian''' (U+10960-U+1097F)''
* '''Balti''' (U+10AA0-U+10ABF)
* '''Book Pahlavi''' (U+10BB0-U+10BDF)
* '''Baburi''' (U+10BE0-U+10BFF)
* '''Arabic Extended-D''' (U+10D90-U+10E5F)
* '''Landa''' (U+11250-U+1127F)
* '''Tani Lipi''' (U+114E0-U+114FF)
* '''Ranjana''' (U+11500-U+1157F)
* '''Zou''' (U+11750-U+117AF)
* '''Pyu''' (U+117B0-U+117FF)
* '''Vateluttu''' (U+11960-U+1199F)
* '''Balti-B''' (U+11CC0-U+11CFF)
* '''Tocharian''' (U+11E00-U+11E6F)
* '''Khotanese''' (U+11E70-U+11ECF)
* '''Pallava''' (U+11F60-U+11FAF)
* '''''Egyptian Hieroglyphs Extended-B''' (U+14680-U+151FF)''
* '''Mayan Hieroglyphs''' (U+15500-U+15AFF)
* '''Kore Sebeli''' (U+15B00-U+15B6F)<!--proposed to be accepted, 93 characters-->
* '''Mandombe''' (U+15B80-U+15FFF)
* '''Kurukh Banna''' (U+16140-U+1618F)
* '''Moon''' (U+161A0-U+161FF)
* '''Blissymbols''' (U+16200-U+167FF)
* '''Woleai''' (U+16B90-U+16BFF)
* '''Kpelle''' (U+16C00-U+16C7F)
* '''Tikamuli''' (U+16C80-U+16CBF)
* '''Tangsa (Khimhun)''' (U+16CD0-U+16CFF)
* '''Afaka''' (U+16D00-U+16D3F)
* '''Kulitan''' (U+16DD0-U+16DFF)
* '''''Bopomofo Extended-A''' (U+16FA0-U+16FAF)''
* '''Kanbun Extended-A''' (U+16FB0-U+16FDF)
* '''Khitan Large Script''' (U+19200-U+199FF)
* '''Pau Cin Hau Syllabary''' (U+19E00-U+1A2FF)
* '''Eskaya''' (U+1A300-U+1A75F)
* '''Rejang Extended''' (U+1A760-U+1A77F)
* '''''Kaida''''' (U+1A780-U+1A7FF)
* '''Naxi Dongba''' (U+1A800-U+1ACFF)
* '''''Naxi Geba''' (U+1AD00-U+1AFCF)''
* '''''Kana Extended-C''' (U+1AFD0-U+1AFEF)''
* '''Shuishu Logograms''' (U+1B300-U+1B5FF)
* '''Lisu Syllabic Script''' (U+1B600-U+1B9FF)
* '''Indus''' (U+1BA00-U+1BB8F)
* '''Pitman Shorthand''' (U+1BCB0-U+1BCFF)
* '''Proto-Elamite''' (U+1BE00-U+1C37F)
* '''Linear Elamite''' (U+1C380-U+1C4FF)
* '''Ndiko Jonam''' (U+1CB30-U+1CB7F)<!--proposed to be accepted, 60 characters-->
* '''N<nowiki>'</nowiki>ti''' (U+1CB80-U+1CBAF)<!--proposed to be accepted, 47 characters-->
* '''Old Chinese Musical Symbols (Flute and Pipa)''' (U+1D290-U+1D2BF)
* '''''Mathematical Alphanumeric Symbols Supplement''' (U+1D380-U+1D3FF)''
* '''Jianzi Format Controls''' (U+1DAE0-U+1DAFF)
* '''Leibnizian Ambiguous Signs''' (U+1DC00-U+1DC3F)<!--proposed to be accepted, 54 characters-->
* '''Eebee Hmong''' (U+1E150-U+1E1FF)
* '''Western Cham''' (U+1E200-U+1E26F)
* '''Loma''' (U+1E300-U+1E41F)
* '''Bagam''' (U+1E420-U+1E4CF)
* '''Pungchen''' (U+1E500-U+1E52F)
* '''''Pungchung''' (U+1E530-U+1E55F)''
* '''''Marchung''' (U+1E560-U+1E59F)''
* '''Brusha''' (U+1E5A0-U+1E5CF)
* '''''Chola''' (U+1E600-U+1E65F)''
* '''Box-Headed''' (U+1E660-U+1E6BF)
* '''Lampung''' (U+1E700-U+1E73F)
* '''Kerinci''' (U+1E740-U+1E76F)
* '''Buginese Supplement''' (U+1E770-U+1E7BF)
* '''''Lontara Bilang-Bilang''' (U+1E7C0-U+1E7DF)''
* '''N'Ko Supplement''' (U+1E960-1E97F)
* '''''Byblos''''' (U+1EB90-U+1EBFF)
* '''Persian Siyaq Numbers''' (U+1EC00-U+1EC7F)
* '''Diwani Siyaq Numbers''' (U+1ECC0-U+1ECFF)
* '''''Extended Pictographic Characters''' (U+1FC00-U+1FFFF)''
* '''CJK Unified Ideographs Components-A''' (U+2FA20-U+2FA9F)
* '''CJK Unified Ideographs Components-B''' (U+2FAA0-U+2FC1F)
== References ==
{{reflist}}
4iahe86xmay5d855pbnfwirudqa5mw6
4656274
4656273
2026-08-04T18:05:48Z
Alexlatham96
377450
/* Code Points Provisionally Assigned */
4656274
wikitext
text/x-wiki
{{pp-protected|small=yes}}
{{Unicode page}}
{{TOC right}}
{{refimprove|date=June 2017}}
This page is about each version specification, and the differences between the versions.
== Unicode 1.0 ==
Unicode 1.0 was the first version of Unicode, released October 1991. It encoded 7,094 new characters.
=== “Blocks” ===
This version of Unicode did not formally group characters in blocks. But in comparison with version 2.0, the following “blocks” were available:
U+0000-U+FFFD
51 Blocks
* '''Basic Latin (formerly called ASCII)''' (U+0000-U+007F), containing 128 characters.
* '''Latin-1 Supplement (formerly called Latin1)''' (U+0080-U+00FF), containing 128 characters.
* '''Latin Extended-A''' '''(formerly called European Latin)''' (U+0100-U+017F), containing 127 characters.
* '''Latin Extended-B''' '''(formerly called Extended Latin)''' (U+0180-U+01FF), containing 113 characters.
* '''IPA Extensions''' '''(formerly called Standard Phonetic)''' (U+0250-U+02AF), containing 89 characters.
* '''Spacing Modifier Letters''' '''(formerly called Modifier Letters)''' (U+02B0-U+02FF), containing 57 characters.
* '''Combining Diacritical Marks''' '''(formerly called Generic Diacritical Marks)''' (U+0300-U+036F), containing 66 characters.
* '''Greek and Coptic''' '''(formerly called Greek)''' (U+0370-U+03FF), containing 112 characters.
* '''Cyrillic''' (U+0400-U+04FF), containing 192 characters.
* '''Armenian''' (U+0530-U+058F), containing 84 characters.
* '''Hebrew''' (U+0590-U+05FF), containing 52 characters.
* '''Arabic''' (U+0600-U+06FF), containing 169 characters.
* '''Devanagari''' (U+0900-U+097F), containing 104 characters.
* '''Bengali''' (U+0980-U+09FF), containing 89 characters.
* '''Gurmukhi''' (U+0A00-U+0A7F), containing 74 characters.
* '''Gujarati''' (U+0A80-U+0AFF), containing 75 characters.
* '''Oriya''' (U+0B00-U+0B7F), containing 78 characters.
* '''Tamil''' (U+0B80-U+0BFF), containing 61 characters.
* '''Telugu''' (U+0C00-U+0C7F), containing 80 characters.
* '''Kannada''' (U+0C80-U+0CFF), containing 80 characters.
* '''Malayalam''' (U+0D00-U+0D7F), containing 78 characters.
* '''Thai''' (U+0E00-U+0E7F), containing 92 characters.
* '''Lao''' (U+0E80-U+0EFF), containing 70 characters.
* '''Tibetan''' (U+1000-U+105F), containing 71 characters.
* '''Georgian''' (U+10A0-U+10FF), containing 78 characters.
* '''General Punctuation''' (U+2000-U+206F), containing 67 characters.
* '''Superscripts and Subscripts''' (U+2070-U+209F), containing 28 characters.
* '''Currency Symbols''' (U+20A0-U+20CF), containing 11 characters.
* '''Combining Marks for Symbols''' '''(formerly called Diacritical Marks for Symbols)''' (U+20D0-U+20FF), containing 18 characters.
* '''Letterlike Symbols''' (U+2100-U+214F), containing 57 characters.
* '''Number Forms''' (U+2150-U+218F), containing 48 characters.
* '''Arrows''' (U+2190-U+21FF), containing 91 characters.
* '''Mathematical Operators''' (U+2200-U+22FF), containing 242 characters.
* '''Miscellaneous Technical''' (U+2300-U+23FF), containing 43 characters.
* '''Control Pictures''' '''(formerly called Pictures for Control Codes)''' (U+2400-U+243F), containing 37 characters.
* '''Optical Character Recognition''' (U+2440-U+245F), containing 11 characters.
* '''Enclosed Alphanumerics''' (U+2460-U+24FF), containing 139 characters.
* '''Box Drawing''' '''(formerly called Form and Chart Components)''' (U+2500-U+257F), containing 128 characters.
* '''Block Elements''' '''(formerly called Blocks)''' (U+2580-U+259F), containing 22 characters.
* '''Geometric Shapes''' (U+25A0-U+25FF), containing 79 characters.
* '''Miscellaneous Symbols''' '''(formerly called Miscellaneous Dingbats)''' (U+2600-U+26FF), containing 106 characters.
* '''Dingbats''' '''(formerly called Zapf Dingbats)''' (U+2700-U+27BF), containing 160 characters.
* '''CJK Symbols and Punctuation''' (U+3000-U+303F), containing 56 characters.
* '''Hiragana''' (U+3040-U+309F), containing 90 characters.
* '''Katakana''' (U+30A0-U+30FF), containing 90 characters.
* '''Bopomofo''' (U+3100-U+312F), containing 40 characters.
* '''Hangul Compatibility Jamo (formerly called Hangul Elements)''' (U+3130-U+318F), containing 94 characters.
* '''Kanbun (formerly called CJK Miscellaneous)''' (U+3190-U+31FF), containing 16 characters.
* '''Enclosed CJK Letters and Months''' '''(formerly called''' '''Enclosed CJK Letters and Ideographs)''' (U+3200-U+32FF), containing 191 characters.
* '''CJK Compatibility''' '''(formerly called CJK Squared Words for U+3300-U+337F and CJK Squared Abbreviations for U+3380-33FF)''' (U+3300-U+33FF), containing 187 characters.
* '''Hangul''' (U+3400-U+3D2D), containing 2,350 characters.
* '''Private Use Area''' (U+E000-U+FDFF), reserved for 5,632 characters.
* '''CJK Compatibility Forms''' '''(formerly called CNS 11643 Compatibility)''' (U+FE30-U+FE4F), containing 28 characters.
* '''Small Form Variants''' '''(formerly called Small Variants)''' (U+FE50-U+FE6F), containing 26 characters.
* '''Arabic Presentation Forms-B''' '''(formerly called Basic Glyphs for Arabic Language)''' (U+FE70-U+FEFF), containing 140 characters.
* '''Halfwidth and Fullwidth Forms''' '''(formerly called Halfwidth and Fullwidth Variants)''' (U+FF00-U+FFEF), containing 216 characters.
* '''Specials''' '''(formerly called Special)''' (U+FFF0-U+FFFF), containing 1 character.
== Unicode 1.0.1 ==
Unicode 1.0.1 was released June 1992. It encoded 28,292 characters, adding 21,204 new characters and removing 6 characters, for a net increase of 21,198 characters.
=== New blocks ===
* '''CJK Unified Ideographs''' (U+4E00-U+9FFF), containing 20,902 Han Ideographs for Chinese, Japanese and Korean, was added.
* '''CJK Compatibility Ideographs''' (U+F900-U+FAFF), containing 302 Han Ideographs for compatibility with existing character sets, was added.
=== Removed characters ===
* Letters Ka and Kha with Ogonek (total 4 characters) were removed from '''Cyrillic'''. (U+04C5-U+04C6 and U+04C9-U+04CA)
* APL Compose Operator and APL Out (total 2 characters) were removed from '''Miscellaneous Technical'''. (U+2300-U+2301)
=== Rearranged characters ===
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
*'''Circled Katakana:''' ''The characters well be arranged in modern order: e.g., A, I, U, E, O, KA, KI'' (U+32D0-U+32FE)
*'''Basic Glyphs For Arabic Language:''' ''The character shapes will be arranged in different order: Isolate, Final, Initial and Medial'' (U+FE80-FEFC)
=== Characters with semantics changed ===
*'''Zero Width Non-Joiner''' [ZWNJ] (U+20DC)
*'''Zero Width Joiner''' [ZWJ] (U+20DD)
== Unicode 1.1 ==
Unicode 1.1 was released June 1993. It encoded 34,168 characters, adding 5,969 new characters and removing 93 characters, for a net increase of 5,876 characters. It finalized the long anticipated Han Unification.
=== New blocks ===
* '''Hangul Jamo''' (U+1100-U+11FF), containing 240 ''jamo'' for the Hangul script, was added.
* '''Latin Extended Additional''' (U+1E00-U+1EFF), containing 245 precomposed characters for transliteration and Vietnamese, was added.
* '''Greek Extended''' (U+1F00-U+1FFF), containing 233 precomposed characters for polytonic Greek, was added.
* '''Hangul Supplementary-A''' (U+3D2E-U+44B7), containing 1,930 precomposed syllables for the Hangul script, was added.
* '''Hangul Supplementary-B''' (U+44B8-U+4DFF), containing 2,376 precomposed syllables for the Hangul script, was added.
* '''Alphabetic Presentation Forms''' (U+FB00-U+FB4F), containing 57 precomposed characters and ligatures, was added.
* '''Arabic Presentation Forms-A''' (U+FB50-U+FDFF), containing 593 combinations of Arabic letters, was added.
* '''Combining Half Marks''' (U+FE20-U+FE2F), containing 4 halves of diacritical marks, was added.
=== Extended blocks ===
* The long S (ſ) (total 1 character) was added to '''Latin Extended-A'''. (U+017F)
* The Hungarian Dz, characters for transliteration purposes and precomposed characters with double grave and inverted breve (total 35 characters) were added to '''Latin Extended-B''' (U+01F1-U+01F5 and U+01FA-U+0217). The block was expanded from (U+0180-U+01FF) to (U+0180-U+024F)
* Diacritics for polytonic Greek and double width diacritics (total 6 characters) were added to '''Combining Diacritical Marks'''. (U+0342-U+0345 and U+0360-U+0361)
* Compatibility character now deprecated, Ano Teleia, and other characters (total 5 characters) were added to '''Greek and Coptic''' (U+0374-U+0375, U+037A, U+037E and U+0387).
* Additional characters for non-Slavic languages (total 38 characters) were added to '''Cyrillic'''. (U+04D0-U+04EB, U+04EE-U+04F5 and U+04F8-U+04F9)
* A ligature of Ech and Yiwn (և) (total 1 character) was added to '''Armenian'''. (U+0587)
* One deprecated compatibility character and several characters for biblical texts (total 25 characters) were added to '''Arabic'''. (U+066D and U+06D6-U+06ED)
* A sign Virama (total 1 character) was added to '''Gurmukhi''' (U+0A4D).
* Letters Candra O and E (total 3 characters) were added to '''Gujarati'''. (U+0A8D, U+0A91 and U+0AC9)
* An Ai Length mark (total 1 character) was added to '''Oriya'''. (U+0B56)
* An undertie, a pair of brackets and six formatting characters now deprecated (total 9 characters) were added to '''General Punctuation'''. (U+203F, U+2045-U+2046 and U+206A-U+206F)
* Some additional symbols and the complete set of APL functional symbols (total 79 characters) were added to '''Miscellaneous Technical'''. (U+2300 and U+232D-U+237A)
* A large circle (◯) (total 1 character) was added to '''Geometric Shapes'''. (U+25EF)
* The ideographic telegraph line feed separator symbol (〷) (total 1 character) was added to '''CJK Symbols and Punctuation'''. (U+3037)
* Four Katakana letters not in use since 1945 (total 4 characters) were added to '''Katakana'''. (U+30F7-U+30FA)
* Ideographic telegraph symbols for the twelve months (total 12 characters) were added to '''Enclosed CJK Letters and Months'''. (U+32C0-U+32CB)
* Ideographic telegraph symbols for hours and days and six additional measure units (total 62 characters) were added to '''CJK Compatibility'''. (U+3358-U+3376 and U+33E0-U+33FE)
* Some more space (total 2,304 characters) was added to the '''Private Use Area'''.
* Seven halfwidth geometric shapes (total 7 characters) were added to '''Halfwidth and Fullwidth Forms'''. (U+FFE8-U+FFEE)
=== Removed blocks ===
* '''Tibetan''', containing 71 letters for the Tibetan script, was removed from the Unicode standard.
=== Removed characters ===
* A total of 10 characters were removed from '''Greek and Coptic'''. (U+0370-U+0372, U+03D7-U+03D9, U+03DB, U+03DD, U+03DF, and U+03E1)
* Point Varika (total 1 character) was removed from ''Hebrew''. (U+05F5)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Thai'''. (U+0E70-U+0E74)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Lao'''. (U+0EF0-U+0EF4)
* An Ideographic Ditto Mark (total 1 character) was removed from '''CJK Symbols and Punctuation''' (U+3004) and merged with CJK Unified Ideograph-4EDD.
=== Rearranged characters ===
* Greek character U+03F3 was changed from Spacing Tonos to Letter Yot.
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
== Unicode 2.0 ==
Unicode 2.0 was released July 1996. It encoded 38,885 characters, adding 11,373 new characters and removing 6,656 characters, for a net increase of 4,717 characters. This was the first Unicode version to reserve blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Hangul Syllables''' (U+AC00-U+D7AF), containing 11,172 precomposed syllables for the Hangul script, was added.
* '''High Surrogates''' (U+D800-U+DB7F), setting aside 896 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''High Private Use Surrogates''' (U+DB80-U+DBFF), setting aside 128 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Low Surrogates''' (U+DC00-U+DFFF), setting aside 1,024 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Supplementary Private Use Area-A''' (U+F0000-U+FFFFF), reserving 65,534 characters for private use, was added.
* '''Supplementary Private Use Area-B''' (U+100000-U+10FFFF), reserving 65,534 characters for private use, was added.
=== Reinstated blocks ===
* '''Tibetan''' (U+0F00-U+0FFF), now containing 168 characters for the Tibetan script including religious signs, was readded.
=== Removed blocks ===
* '''Hangul''', containing 2,350 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-A''', containing 1,930 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-B''', containing 2,376 precomposed syllables for the Hangul script, was removed from the Unicode standard.
=== Extended blocks ===
* Cantillation marks for use in religious texts (total 31 characters) were added to '''Hebrew'''. (U+0591-U+05A1, U+05A3-U+05AF and U+05C4)
* A long S with Dot Above (total 1 character) was added to '''Latin Extended Additional'''. (U+1E9B)
* A Vietnamese Dong sign (total 1 character) was added to '''Currency Symbols'''. (U+20AB)
== Unicode 2.1 ==
Unicode 2.1 was released May 1998. It encoded 38,887 characters, adding only 2 new characters.
=== Extended blocks ===
* A Euro sign (total 1 character) was added to '''Currency Symbols'''. (U+20AC)
* An Object Replacement Character (total 1 character) was added to '''Specials'''. (U+FFFC)
== Unicode 3.0 ==
Unicode 3.0 was released September 1999. It was a big update and encoded 49,194 characters, adding 10,307 new characters.
=== New blocks ===
* '''Syriac''' (U+0700-U+074F), containing 71 characters used for writing in Syriac script, was added.
* '''Thaana''' (U+0780-U+07BF), containing 49 characters used for writing in Thaana script, was added.
* '''Sinhala''' (U+0D80-U+0DFF), containing 80 characters for the Sinhala script, was added.
* '''Myanmar''' (U+1000-U+109F), containing 78 characters for the Burmese script, was added.
* '''Ethiopic''' (U+1200-U+137F), containing 345 syllables and punctuation marks for the Ethiopic script, was added.
* '''Cherokee''' (U+13A0-U+13FF), containing 85 syllables for the Cherokee script, was added.
* '''Unified Canadian Aboriginal Syllabics''' (U+1400-U+167F), containing 630 syllables and punctuation marks for writing in indigenous languages of Canada, was added.
* '''Ogham''' (U+1680-U+169F), containing 29 characters for the ancient Ogham script, was added.
* '''Runic''' (U+16A0-U+16FF), containing 81 characters for the Germanic runes, was added.
* '''Khmer''' (U+1780-U+17FF), containing 103 characters for the Khmer script, was added.
* '''Mongolian''' (U+1800-U+18AF), containing 155 characters for the classical Mongolian script, was added.
* '''Braille Patterns''' (U+2800-U+28FF), containing 256 Braille letters, was added.
* '''CJK Radicals Supplement''' (U+2E80-U+2EFF), containing 115 non-Kangxi radicals, was added.
* '''Kangxi Radicals''' (U+2F00-U+2FDF), containing 214 radicals from the Kangxi dictionary, was added.
* '''Ideographic Description Characters''' (U+2FF0-U+2FFF), containing 12 characters used to describe a Han ideograph not available in the font, was added.
* '''Bopomofo Extended''' (U+31A0-U+31BF), containing 24 characters used for phonetic transcription of minority languages of Taiwan, was added.
* '''CJK Unified Ideographs Extension A''' (U+3400-U+4DBF), containing 6,582 additional Han Ideographs, was added.
* '''Yi Syllables''' (U+A000-U+A48F), containing 1,165 syllables of the modern Yi script, was added.
* '''Yi Radicals''' (U+A490-U+A4CF), containing 50 radicals of Yi Syllables, was added.
=== Extended blocks ===
* Additional precomposed characters, letters and capital letters of lowercase-only letters (total 30 characters) were added to '''Latin Extended-B'''. (U+01F6-U+01F9, U+0218-U+021F and U+0222-U+0233)
* Extensions for disordered speech (total 5 characters) were added to '''IPA Extensions'''. (U+02A9-U+02AD)
* Some additional modifier letters (total 6 characters) were added to '''Spacing Modifier Letters'''. (U+02DF and U+02EA-U+02EE)
* Additional combining diacritics for IPA (total 10 characters) were added to '''Combining Diacritical Marks'''. (U+0346-U+034E and U+0362)
* Lowercase versions of archaic letters and the Kai symbol (total 5 characters) were added to '''Greek and Coptic'''. (U+03D7, U+03DB, U+03DD, U+03DF and U+03E1)
* Nonstandard letters for Macedonian, combining numeral signs and three letters for Kildin Sami (total 12 characters) were added to '''Cyrillic'''. (U+0400, U+040D, U+0450, U+045D, U+0488-U+0489, U+048C-U+048F and U+04EC-U+04ED)
* A Hyphen (total 1 character) was added to '''Armenian'''. (U+058A)
* Combining hamza and maddah and nine additional Arabic characters (total 12 characters) were added to '''Arabic'''. (U+0653-U+0655, U+06B8-U+06B9, U+06BF, U+06CF and U+06FA-U+06FE)
* Additional letters and religious symbols (total 25 characters) were added to '''Tibetan'''. (U+0F6A, U+0F96, U+0FAE-U+0FB0, U+0FB8, U+0FBA-U+0FBC, U+0FBE-U+0FCC and U+0FCF)
* A narrow no-break space and 6 additional punctuation marks (total 7 characters) were added to '''General Punctuation'''. (U+202F and U+2048-U+204D)
* The Kip, Tugrik and Drachma sign (total 3 characters) were added to '''Currency Symbols'''. (U+20AD-U+20AF)
* An enclosing screen and an enclosing key (total 2 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E2-U+20E3)
* The information symbol and a rotated Q (total 2 characters) were added to '''Letterlike Symbols'''. (U+2139-U+213A)
* A mirrored Roman capital numeral hundred (Ↄ) (total 1 character) was added to '''Number Forms'''. (U+2183)
* Some additional arrows (total 9 characters) were added to '''Arrows'''. (U+21EB-U+21F3)
* Some additional technical symbols, including common keys on a 101 keyboard (total 33 characters) were added to '''Miscellaneous Technical'''. (U+2301, U+237B and U+237D-U+239A)
* Two additional control pictures (total 2 characters) were added to '''Control Pictures'''. (U+2425-U+2426)
* Squares and circles with quadrants (total 8 characters) were added to '''Geometric Shapes'''. (U+25F0-U+25F7)
* Two Syriac crosses and a signature mark (total 3 characters) were added to '''Miscellaneous Symbols'''. (U+2619 and U+2670-U+2671)
* Three Hangzhou numerals and a variation indicator (total 4 characters) were added to '''CJK Symbols and Punctuation'''. (U+3038-U+303A and U+303E)
* A ligature Yod with Hiriq (יִ) (total 1 character) was added to '''Alphabetic Presentation Forms'''. (U+FB1D)
* Three additional control characters for ruby markup (total 3 characters) were added to '''Specials'''. (U+FFF9-U+FFFB)
== Unicode 3.1 ==
Unicode 3.1 was released March 2001. It encoded 94,140 characters, adding 44,946 new characters, and mainly focused on blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Old Italic''' (U+10300-U+1032F), containing 35 letters for the Etruscan script, was added.
* '''Gothic''' (U+10330-U+1034F), containing 27 letters for the Gothic script, was added.
* '''Deseret''' (U+10400-U+1044F), containing 76 letters for the constructed Deseret script, was added.
* '''Byzantine Musical Symbols''' (U+1D000-U+1D0FF), containing 246 symbols for musical notation in Byzantine, was added.
* '''Musical Symbols''' (U+1D100-U+1D1FF), containing 219 characters for current musical notation, was added.
* '''Mathematical Alphanumeric Symbols''' (U+1D400-U+1D7FF), containing 991 Latin and Greek letters in serif, sans-serif, bold, italic, double-struck, script and Fraktur/Blackletter, was added.
* '''CJK Unified Ideographs Extension B''' (U+20000-U+2A6DF), containing 42,711 additional Chinese Ideographs, was added.
* '''CJK Compatibility Ideographs Supplement''' (U+2F800-U+2FA1F), containing 542 additional Chinese Ideographs for compatibility purposes, was added.
* '''Tags''', containing 97 language tags, was added. (U+E0000-U+E007F)
=== Extended noncharacters ===
* The Noncharacters range: U+FDD0..U+FDEF were added to '''Arabic Presentation Forms-A'''.
=== Extended blocks ===
* The capital Theta symbol and the Lunate Epsilon symbol (total 2 characters) were added to '''Greek and Coptic'''. (U+03F4-U+03F5)
=== Characters and Scripts Under Investigation or Rejected ===
* Khmer Sign Laak Was Rejected. (U+17DD) From '''Khmer.'''
* Georgian Letter U-Brjuu Was Rejected. From '''Georgian.'''
== Unicode 3.2 ==
Unicode 3.2 was released March 2002. It encoded 95,156 characters, adding 1,016 new characters.
=== New blocks ===
* '''Cyrillic Supplementary (now Cyrillic Supplement)''' (U+0500-U+052F), containing 16 characters used for the Komi language, was added.
* '''Tagalog''' (U+1700-U+171F), containing 20 characters for the Baybayin script, was added.
* '''Hanunoo''' (U+1720-U+173F), containing 23 characters and punctuation for the Hanunó'o script, was added.
* '''Buhid''' (U+1740-U+175F), containing 20 characters for the Buhid script, was added.
* '''Tagbanwa''' (U+1760-U+177F), containing 18 characters for the Tagbanwa script, was added.
* '''Miscellaneous Mathematical Symbols-A''' (U+27C0-U+27EF), containing 28 symbols used in math notation, was added.
* '''Supplemental Arrows-A''' (U+27F0-U+27FF), containing 16 additional arrows, was added.
* '''Supplemental Arrows-B''' (U+2900-U+297F), containing 128 special arrows, was added.
* '''Miscellaneous Mathematical Symbols-B''' (U+2980-U+29FF), containing 128 additional mathematical symbols, was added.
* '''Supplemental Mathematical Operators''' (U+2A00-U+2AFF), containing 256 additional mathematical operators, was added.
* '''Katakana Phonetic Extensions''' (U+31F0-U+31FF), containing 16 Katakana letters used for Ainu, was added.
* '''Variation Selectors''' (U+FE00-U+FE0F), containing 16 symbols used for indicating variations, was added.
=== Extended blocks ===
* A capital letter N with Long Right Leg (total 1 character) was added to '''Latin Extended-B'''. (U+0220)
* The combining grapheme joiner and combining Latin letters used in medieval texts (total 14 characters) were added to '''Combining Diacritical Marks'''. (U+034F and U+0363-U+036F)
* The Qoppa and a reversed lunate epsilon symbol (total 3 characters) were added to '''Greek and Coptic'''. (U+03D8-U+03D9 and U+03F6)
* Four additional letters used for the Kildin Sami language (total 8 characters) were added to '''Cyrillic'''. (U+048A-U+048B, U+04C5-U+04C6, U+04C9-U+04CA and U+04CD-U+04CE)
* A dotless Beh and a dotless Qaf (total 2 characters) were added to '''Arabic'''. (U+066E-U+066F)
* A Letter for Addu dialect (total 1 character) was added to '''Thaana'''. (U+07B1)
* The letters Yn and Elifi (total 2 characters) were added to '''Georgian'''. (U+10F7-U+10F8)
* Some additional punctuation marks and control characters (total 12 characters) were added to '''General Punctuation'''. (U+2047, U+204E-U+2052, U+2057 and U+205F-U+2063)
* A superscript letter I (total 1 character) was added to '''Superscripts and Subscripts'''. (U+2071)
* German Penny and Peso sign (total 2 characters) were added to '''Currency Symbols'''. (U+20B0-U+20B1)
* Some additional combining characters (total 7 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E4-U+20EA)
* Some double-struck and reversed/turned letters (total 15 characters) were added to '''Letterlike Symbols'''. (U+213D-U+214B)
* Some additional arrows (total 12 characters) were added to '''Arrows'''. (U+21F4-U+21FF)
* Some additional mathematical operators (total 14 characters) were added to '''Mathematical Operators'''. (U+22F2-U+22FF)
* Variable-width and additional symbols (total 53 characters) were added to '''Miscellaneous Technical'''. (U+237C and U+239B-U+23CE)
* Black and double circled numerals (total 20 characters) were added to '''Enclosed Alphanumerics'''. U+24EB-U+24FE)
* Quadrant elements (total 10 characters) were added to '''Block Elements'''. (U+2596-U+259F)
* Some additional triangles and squares (total 8 characters) were added to '''Geometric Shapes'''. (U+25F8-U+25FF)
* Shogi pieces ,recycling symbols, dices and dotted circles (total 24 characters) were added to '''Miscellaneous Symbols'''. (U+2616-U+2617, U+2672-U+267D and U+2680-U+2689)
* Additional parenthesis (total 14 characters) were added to '''Dingbats'''. (U+2768-U+2775)
* Three additional marks (total 3 characters) were added to '''CJK Symbols and Punctuation'''. (U+303B-U+303D)
* A digraph and two additional characters (total 3 characters) were added to '''Hiragana'''. (U+3095-U+3096 and U+309F)
* A digraph and a double hyphen (total 2 characters) were added to '''Katakana'''. (U+30A0 and U+30FF)
* Additional circled numerals (total 30 characters) were added to '''Enclosed CJK Letters and Months'''. (U+3251-U+325F and U+32B1-U+32BF
* Five missing radicals (total 5 characters) were added to '''Yi Radicals'''. (U+A4A2-U+A4A3, U+A4B4, U+A4C1, U+A4C5)
* Additional compatibility characters (total 59 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA30-U+FA6A)
* A Rial sign (total 1 character) was added to '''Arabic Presentation Forms-A'''. (U+FDFC)
* Two sesame dots (total 2 characters) were added to '''CJK Compatibility Forms'''. (U+FE45-U+FE46)
* A tail fragment (total 1 character) was added to '''Arabic Presentation Forms-B'''. (U+FE73)
* A pair of double parenthesis (total 2 characters) was added to '''Halfwidth and Fullwidth Forms'''. (U+FF5F-U+FF60)
== Unicode 4.0 ==
Unicode 4.0 was released April 2003. It encoded 96,382 characters, adding 1,226 new characters.
=== New blocks ===
* '''Limbu''', containing 66 characters for the Limbu abugida, was added.
* '''Tai Le''', containing 35 letters for the Tai Le script, was added.
* '''Khmer Symbols''', containing 32 symbols for the lunar calendar, was added.
* '''Phonetic Extensions''', containing 108 letters used in phonetic transcription, was added.
* '''Miscellaneous Symbols and Arrows''', containing 14 additional arrows, was added.
* '''Yijing Hexagram Symbols''', containing 64 hexagrams, was added.
* '''Linear B Syllabary''', containing 88 syllables of the ancient Linear B script, was added.
* '''Linear B Ideograms''', containing 123 ideograms of the ancient Linear B script, was added.
* '''Aegean Numbers''', containing 57 numerals used in the Aegean area, was added.
* '''Ugaritic''', containing 31 characters used in Ugaritic cuneiform, was added.
* '''Shavian''', containing 48 letters used for the artificial Shavian script, was added.
* '''Osmanya''', containing 40 characters used in the artificial Osmanya script, was added.
* '''Cypriot Syllabary''', containing 55 characters formerly used on Cyprus, was added.
* '''Tai Xuan Jing Symbols''', containing 87 symbols of Tai Xuan Jing, was added.
* '''Variation Selectors Supplement''', containing 240 additional variation selectors, was added.
=== Extended blocks ===
* Letters with curl used in Sinology (total 4 characters) were added to '''Latin Extended-B'''.
* Former IPA letters (total 2 characters) were added to '''IPA Extensions'''.
* Some additional characters (total 17 characters) were added to '''Spacing Modifier Letters'''.
* Additional combining double-width diacritics and diacritics corresponding to their spacing equivalent (total 11 characters) were added to '''Combining Diacritical Marks'''.
* The archaic letters Sho and San and the capital Lunate Sigma (total 5 characters) were added to '''Greek and Coptic'''.
* Some additional markers, biblical signs, and letters with inverted V (total 19 characters) were added to '''Arabic'''.
* Letters used for foreign words from Persian and Sogdian (total 6 characters) were added to '''Syriac'''.
* The short A (ऄ) (total 1 character) was added to '''Devanagari'''.
* The Avagraha sign (ঽ) (total 1 character) was added to '''Bengali'''.
* The Adak Bindi and Visarga signs (total 2 characters) were added to '''Gurmukhi'''.
* The vocalic l and ll and the Rupee sign (total 5 characters) were added to '''Gujarati'''.
* The letters Va and Wa (total 2 characters) were added to '''Oriya'''.
* Additional signs for date and finance environments (total 8 characters) were added to '''Tamil'''.
* The Nukta and Avagraha signs (total 2 characters) were added to '''Kannada'''.
* Some symbols and signs (total 11 characters) were added to '''Khmer'''.
* An inverted undertie and a swung dash (total 2 characters) were added to '''General Punctuation'''.
* The facsimile sign (℻) (total 1 character) was added to '''Letterlike Symbols'''.
* The eject symbol and a vertical line (total 2 characters) were added to '''Miscellaneous Technical'''.
* A black circled digit zero (⓿) (total 1 character) was added to '''Enclosed Alphanumerics'''.
* Monograms and diagrams, flags, warning and weather symbols and a cup of tea (total 12 characters) were added to '''Miscellaneous Symbols'''.
* Additional parenthesized and circled Korean characters and supplemental signs (total 9 characters) were added to '''Enclosed CJK Letters and Months'''.
* Additional measure units (total 7 characters) were added to '''CJK Compatibility'''.
* An additional Arabic sign (﷽) (total 1 character) was added to '''Arabic Presentation Forms-A'''.
* A pair of vertical parenthesis (total 2 characters) was added to '''CJK Compatibility Forms'''.
* The letters Oi and Ew (total 4 characters) were added to '''Deseret'''.
* A small script l (ℓ) (total 1 character) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 4.1 ==
Unicode 4.1 was released March 31, 2005. It encoded 97,655 characters, adding 1,273 new characters.
=== New blocks ===
* '''Arabic Supplement''', containing 30 characters for various languages written with the Arabic script, was added.
* '''Ethiopic Supplement''', containing 26 characters and signs for Sebatbeit, was added.
* '''New Tai Lue''', containing 80 characters for the New Tai Lue script, was added.
* '''Buginese''', containing 30 characters for the Lontara script, was added.
* '''Phonetic Extensions Supplement''', containing 64 additional letters for phonetic transcription, was added.
* '''Combining Diacritical Marks Supplement''', containing 4 additional diacritics, was added.
* '''Glagolitic''', containing 94 characters for the Glagolitic script, was added.
* '''Coptic''', containing 114 characters for the Coptic script, was added.
* '''Georgian Supplement''', containing 38 Nuskhuri letters, was added.
* '''Tifinagh''', containing 55 characters for the Tifinagh script, was added.
* '''Ethiopic Extended''', containing 79 additional Ethiopic syllables, was added.
* '''Supplemental Punctuation''', containing 26 additional punctuation marks, was added.
* '''CJK Strokes''', containing 16 strokes for Han Ideographs, was added.
* '''Modifier Tone Letters''', containing 23 letters for Chinese tones, was added.
* '''Syloti Nagri''', containing 44 characters for the Syloti Nagri abugida, was added.
* '''Vertical Forms''', containing 10 punctuation marks suited for vertical text, was added.
* '''Ancient Greek Numbers''', containing 75 numerals and signs used in Ancient Greek, was added.
* '''Old Persian''', containing 50 characters for Old Persian cuneiform, was added.
* '''Kharoshthi''', containing 65 characters for the Kharoshthi abugida, was added.
* '''Ancient Greek Musical Notation''', containing 70 musical signs used in Ancient Greek, was added.
=== Extended blocks ===
* Letters for Sencoten, digraphs, letters with swash tail and other additions (total 11 characters) were added to '''Latin Extended-B'''.
* Additional diacritics for transliteration (total 5 characters) were added to '''Combining Diacritical Marks'''.
* Rho with stroke, reversed and dotted Lunate Sigma (total 4 characters) were added to '''Greek and Coptic'''.
* Ghe with descender (Ӷ) (total 2 characters) was added to '''Cyrillic'''.
* An additional biblical mark and some punctuation marks (total 4 characters) were added to '''Hebrew'''.
* Additional biblical marks, punctuation marks and the Afghani sign (total 8 characters) were added to '''Arabic'''.
* A glottal stop (ॽ) (total 1 character) was added to '''Devanagari'''.
* The Khanda Ta letter (ৎ) (total 1 character) was added to '''Bengali'''.
* The letter Sha and the digit zero (total 2 characters) were added to '''Tamil'''.
* Two marks used in Bhutan (total 2 characters) were added to '''Tibetan'''.
* Two letters and a modifier letter (total 3 characters) were added to '''Georgian'''.
* Some additional syllables (total 11 characters) were added to '''Ethiopic'''.
* Additional phonetic symbols (total 20 characters) were added to '''Phonetic Extensions'''.
* A flower and dot punctuation marks (total 9 characters) were added to '''General Punctuation'''.
* Additional subscript letters (total 5 characters) were added to '''Superscripts and Subscripts'''.
* The Guarani, Austral, Hryvnia and Cedi signs (total 4 characters) were added to '''Currency Symbols'''.
* A combining long double solidus (total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* The per sign and a double-struck letter Pi (total 2 characters) were added to '''Letterlike Symbols'''.
* Metrical and electrical signs (total 11 characters) were added to '''Miscellaneous Technical'''.
* Additional gender and map symbols (total 30 characters) were added to '''Miscellaneous Symbols'''.
* Some additional mathematical symbols (total 7 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional arrows and squares (total 6 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* A circled Hangul character (㉾) (total 1 character) was added to '''Enclosed CJK Letters and Months'''.
* Additional Han Ideographs (total 22 characters) were added to '''CJK Unified Ideographs'''.
* Additional Compatibility Ideographs (total 106 characters) were added to '''CJK Compatibility Ideographs'''.
* Italic dotless small i and j (total 2 characters) were added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.0 ==
Unicode 5.0 was released July 14, 2006. It encoded 99,024 characters, adding 1,369 new characters.
=== New blocks ===
* '''N'Ko''', containing 59 characters for the N'Ko script, was added.
* '''Balinese''', containing 121 characters and musical signs for the Balinese abugida, was added.
* '''Latin Extended-C''', containing 17 letters for various languages, was added.
* '''Latin Extended-D''', containing 2 characters for UPA, was added.
* '''Phags-pa''', containing 56 characters for the Phags-pa script, was added.
* '''Phoenician''', containing 27 letters and numerals for the Phoenician script, was added.
* '''Cuneiform''', containing 879 signs for Sumero-Akkadian Cuneiform, was added.
* '''Cuneiform Numbers and Punctuation''', containing 103 numerals and punctuation signs for Sumero-Akkadian Cuneiform, was added.
* '''Counting Rod Numerals''', containing 18 numerals used with counting rods, was added.
=== Extended blocks ===
* Various letters used mainly for aboriginal languages (total 14 characters) were added to '''Latin Extended-B'''.
* Lowercase lunate sigma symbols (total 3 characters) were added to '''Greek and Coptic'''.
* Lowercase palochka and 3 letters used in Nivkh (total 7 characters) were added to '''Cyrillic'''.
* Two letters used in Khanty and other languages (total 4 characters) were added to '''Cyrillic Supplement'''.
* A specific point meant for Vav (total 1 character) was added to '''Hebrew'''.
* Four letters used in Sindhi (total 4 characters) were added to '''Devanagari'''.
* Four letters used in Sanskrit (total 4 characters) were added to '''Kannada'''.
* Additional IPA diacritics (total 9 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Four combining arrows (total 4 characters) were added to '''Combining Diacritical Marks for Symbols'''.
* A danish symbol and a lowercase turned F (total 2 characters) were added to '''Letterlike Symbols'''.
* A lowercase reversed C (ↄ) (total 1 character) was added to '''Number Forms'''.
* Vertical parenthesis, geometric forms and electrical symbols (total 12 characters) were added to '''Miscellaneous Technical'''.
* A neuter symbol (⚲) (total 1 character) was added to '''Miscellaneous Symbols'''.
* Four additional mathematical symbols (total 4 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional squares, pentagons and hexagons (total 11 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Four additional tone letters used in Chinantec (total 4 characters) were added to '''Modifier Tone Letters'''.
* Bold Digamma (𝟊/'''Ϝ''') (total 2 characters) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.1 ==
Unicode 5.1 was released April 4, 2008. It encoded 100,648 characters, adding 1,624 new characters.
=== New blocks ===
* '''Sundanese''', containing 55 letters for Sundanese script, was added.
* '''Lepcha''', containing 74 letters for Lepcha script, was added.
* '''Ol Chiki''', containing 48 letters for Ol Chiki script, was added.
* '''Cyrillic Extended-A''', containing 32 letters for combining Cyrillic letters, was added.
* '''Vai''', containing 300 letters for Vai script, was added.
* '''Cyrillic Extended-B''', containing 78 letters for additional Cyrillic characters, was added.
* '''Saurashtra''', containing 81 letters for Saurashtra script, was added.
* '''Kayah Li''', containing 48 letters for Kayah languages, was added.
* '''Rejang''', containing 37 letters for Rejang script, was added.
* '''Cham''', containing 83 letters for Cham script, was added.
* '''Ancient Symbols''', containing 12 characters for weights and measures and other Ancient symbols, was added.
* '''Phaistos Disc''', containing 46 hieroglyphs for Phaistos, was added.
* '''Lycian''', containing 29 letters for Lycian script, was added.
* '''Carian''', containing 49 letters for Carian script, was added.
* '''Lydian''', containing 27 letters for Lydian script, was added.
* '''Mahjong Tiles''', containing 44 mahjong tiles, was added.
* '''Domino Tiles''', containing 100 domino tiles, was added.
=== Extended blocks ===
* Archaic letters and capital kai symbol (total 7 characters) were added to '''Greek and Coptic'''.
* Combining Pokrytie (total 1 character) was added to '''Cyrillic'''.
* Mordvin, Kurdish, Aleut and Chuvash letters (total 16 characters) were added to '''Cyrillic Supplement'''.
* Radix symbols, Letterlike, punctuation, Koranic annotation signs and additions for early Persian and Azerbaijani (total 15 characters) were added to '''Arabic'''.
* Additional letters in Torwali, Burushaski and early Persian (total 18 characters) were added to '''Arabic Supplement'''.
* High spacing dot and candra a (total 2 characters) were added to '''Devanagari'''.
* Udaat and yakash signs (total 2 characters) were added to '''Gurmukhi'''.
* Vocalic rr, l and ll (total 3 characters) were added to '''Oriya'''.
* Om symbol (ௐ) (total 1 character) was added to '''Tamil'''.
* Avagraha, additional phonetic letters, vocalic l and ll, fractional signs and tuumu (total 13 characters) were added to '''Telugu'''.
* Avagraha, vocalic rr, l and ll, Malayalam numerics and fractions and chillu letters (total 17 characters) were added to '''Malayalam'''.
* Letters for Balti and various symbols (total 6 characters) were added to '''Tibetan'''.
* Characters for various languages (total 78 characters) were added to '''Myanmar'''.
* Manchu Ali Gali lha (ᢪ) (total 1 character) was added to '''Mongolian'''.
* Miscellaneous combining marks (total 28 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Medievalist latin letters and miscellaneous letters (total 10 characters) were added to '''Latin Extended Additional'''.
* Invisible plus (+) (total 1 character) was added to '''General Punctuation'''.
* Combining asterisk above ( ⃰)(total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* Symbol for Samaritan Source (⅏) (total 1 character) was added to '''Letterlike Symbols'''.
* Archaic Roman Numerals (total 4 characters) were added to '''Number Forms'''.
* Outlined white star and other signs (total 15 characters) were added to '''Miscellaneous Symbols'''.
* Long division and additional mathematical brackets (total 5 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Miscellaneous signs (total 51 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Additional latin letters (total 12 characters) were added to '''Latin Extended-C'''.
* Additional punctuation (total 23 characters) were added to '''Supplemental Punctuation'''.
* Letter ih (ㄭ) (total 1 character) was added to '''Bopomofo'''.
* Other strokes (total 20 characters) were added to '''CJK Strokes'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Africanist tone letters (total 5 characters) were added to '''Modifier Tone Letters'''.
* Miscellaneous letters and symbols (total 112 characters) were added to '''Latin Extended-D'''.
* Continuous macrons for Coptic (total 3 characters) were added to '''Combining Half Marks'''.
* Musical symbol multiple measure rest (𝄩) (total 1 character) was added to '''Musical Symbols'''.
== Unicode 5.2 ==
Unicode 5.2 was released in October 1, 2009. It encoded 107,296 characters, adding 6,648 new characters.
=== New blocks ===
* '''Samaritan''', containing 61 letters for Samaritan script, was added.
* '''Unified Canadian Aboriginal Syllabics Extended''', containing 70 syllables for various cree languages, was added.
* '''Tai Tham''', containing 127 letters for Tai Tham script, was added.
* '''Vedic Extensions''', containing 35 characters for tone marks and signs, was added.
* '''Lisu''', containing 48 letters for Lisu (Fraser) script, was added.
* '''Bamum''', containing 88 letters for Bamum script, was added.
* '''Common Indic Number Forms''', containing 10 fractions and marks, was added.
* '''Devanagari Extended''', containing 28 additional marks, was added.
* '''Hangul Jamo Extended-A''', containing 29 characters for additional old initial consonants in hangul jamo, was added.
* '''Javanese''', containing 91 letters for Javanese script, was added.
* '''Myanmar Extended-A''', containing 28 letters for Khamti Shan in Myanmar, was added.
* '''Tai Viet''', containing 72 letters for Tai Viet script, was added.
* '''Meetei Mayek''', containing 56 letters for Meetei Mayek script, was added.
* '''Hangul Jamo Extended-B''', containing 72 characters for additional old medieval vowels and final consonants in hangul jamo, was added.
* '''Imperial Aramaic''', containing 31 characters for Old Aramaic, was added.
* '''Old South Arabian''', containing 32 letters and numbers for South Arabian, was added.
* '''Avestan''', containing 61 characters for Avestan script, was added.
* '''Inscriptional Parthian''', containing 30 characters for Inscriptional Parthian script, was added.
* '''Inscriptional Pahlavi''', containing 27 characters for Inscriptional Pahlavi script, was added.
* '''Old Turkic''', containing 73 characters for Orkhon script, was added.
* '''Rumi Numeral Symbols''', containing 31 numeric characters used in Fez, Morocco, and elsewhere in North Africa and the Iberian peninsula, between the tenth and seventeenth centuries, was added.
* '''Kaithi''', containing 66 letters for Kaithi script, was added.
* '''Egyptian Hieroglyphs''', containing 1,071 hieroglyphs for Egyptian, was added.
* '''Enclosed Alphanumeric Supplement''', containing 63 additional circled, parenthesized and squared alphanumerics, was added.
* '''Enclosed Ideographic Supplement''', containing 44 squared and tortoised shell bracketed ideographs, was added.
* '''CJK Unified Ideographs Extension C''', containing 4,149 additional Chinese Ideographs, was added.
=== Extended blocks ===
* Abhaz letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Inverted Candrabinbu and additional signs and letters (total 5 characters) were added to '''Devanagari'''.
* Ganda Mark (৻) (total 1 character) was added to '''Bengali'''.
* Religious svasti signs (total 4 characters) were added to '''Tibetan'''.
* Extensions for Khamti Shan and Alton and Phake (total 4 characters) were added to '''Myanmar'''.
* Additional old initial consonants, medival vowels, and old final consonants (total 16 characters) were added to '''Hangul Jamo'''.
* Hyphen and additional syllables (total 10 characters) were added to '''Unified Canadian Aboriginal Syllabics'''.
* Letter Sua and Tham Digit One (total 3 characters) were added to '''New Tai Lue'''.
* Combing Almost Equal to Below ( ᷽) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* The Live Tournosis, Spesmillo and Tenge signs (total 3 characters) were added to '''Currency Symbols'''.
* Additional vulgar fractions from ARIB STD B24 (total 4 characters) were added to '''Number Forms'''.
* Decimal exponent symbol (⏨) from ARIB STD B24 (total 1 characters) was added to '''Miscellaneous Technical'''.
* A soccer ball and symbols from ARIB STD B24 (total 59 characters) were added to '''Miscellaneous Symbols'''.
* Heavy exclamation mark symbol (❗) from ARIB STD B24 (total 1 character) was added to '''Dingbats'''.
* Traffic sign, dictionary and map symbols from ARIB STD B24 (total 5 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Capital letter turned alpha and additions for shona (total 3 characters) were added to '''Latin Extended-C'''.
* Cryptogrammic letters and combining marks (total 7 characters) were added to '''Coptic'''.
* Word separator middle dot used in Avestan (⸱) (total 1 character) was added to '''Supplemental Punctuation'''.
* Circled ideographs and numbers on black squares from ARIB STD B24 (total 12 characters) were added to '''Enclosed CJK Letters and Months'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Miscellaneous additions for compatibility (total 3 characters) were added to '''CJK Compatibility Ideographs'''.
* Number two and three (total 2 characters) were added to '''Phoenician'''.
== Unicode 6.0 ==
Unicode 6.0 was released in October 11, 2010. It encoded 109,384 characters, adding 2,088 new characters.
=== New blocks ===
* '''Mandaic''', containing 29 letters for Mandaic script, was added.
* '''Batak''', containing 56 letters for Batak script, was added.
* '''Ethiopic Extended-A''', containing 32 letters for Gamo-Gofa-Dawro, Basketo and Gumuz Ethiophic syllables, was added.
* '''Brahmi''', containing 108 characters for ancient Brahmi abugida, was added.
* '''Bamum Supplement''', containing 761 letters for additional Bamum script, was added.
* '''Kana Supplement''', containing 2 characters for archaic katakana, was added.
* '''Playing Cards''', containing 59 playing cards, was added.
* '''Miscellaneous Symbols and Pictographs''', containing 529 additional symbols, was added.
* '''Emoticons''', containing 63 faces, cat faces and gesture symbols, was added.
* '''Transport and Map Symbols''', containing 70 transportation, traffic signs and other symbols, was added.
* '''Alchemical Symbols''', containing 116 symbols for elements, was added.
* '''CJK Unified Ideographs Extension D''', containing 222 miscellaneous Han ideographs, was added.
=== Extended blocks ===
* Azerbaijani letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Kashmiri Yeh and Wavy hamza below (total 2 characters) were added to '''Arabic'''.
* Dependent vowel signs and letters used in Kashmiri and Bihari (total 10 characters) were added to '''Devanagari'''.
* Fraction signs (total 6 characters) were added to '''Oriya'''.
* Letters used in scholarly only and letter dot reph (total 3 characters) were added to '''Malayalam'''.
* Leading and Trailing Mchan Rtags (total 6 characters) were added to '''Tibetan'''.
* Additional combining marks (total 2 characters) were added to '''Ethiopic'''.
* Combining Double Inverted Breve Below (᷼) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* Miscellaneous subscript letters (total 8 characters) were added to '''Superscripts and Subscripts'''.
* Indian Rupee Sign (₹) (total 1 character) was added to '''Currency Symbols'''.
* Pointing double triangle and additional mechanical symbols (total 11 characters) were added to '''Miscellaneous Technical'''.
* Ophiucisus, astronomical symbol for uranus and pentagrams (total 6 characters) were added to '''Miscellaneous Symbols'''.
* Additional heavy punctation marks, raised fist, raised hand, sparkles, heavy arithmetic symbols and curly loops (total 16 characters) were added to '''Dingbats'''.
* Squared logicals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Separator mark and consonant joiner (total 2 characters) were added to '''Tifinagh'''.
* Bopomofo for Hmu and Ge (total 3 characters) were added to '''Bopomofo Extended'''.
* Reversed Tse (total 2 characters) were added to '''Cyrillic Extended-B'''.
* Additional letters (total 15 characters) were added to '''Latin Extended-D'''.
* Pedagogical symbols (total 16 characters) were added to '''Arabic Presentation Forms-A'''.
* Additional squared, black circled and squared letters and regional indicator letters (total 107 characters) were added to '''Enclosed Alphanumeric Supplement'''.
* Squared katakana, squared ideographs and circled advantage and accept (total 13 characters) were added to '''Enclosed Ideographic Supplement'''.
== Unicode 6.1 ==
Unicode 6.1 was released in January 31, 2012. It encoded 110,116 characters, adding 732 new characters.
=== New blocks ===
* '''Arabic Extended-A''' (U+08A0-U+08FF), containing 39 characters, was added.
* '''Sundanese Supplement''' (U+1CC0-U+1CCF), containing 8 characters, was added.
* '''Meetei Mayek Extensions''' (U+AAE0-U+AAFF), containing 23 characters, was added.
* '''Meroitic Hieroglyphs''' (U+10980-U+1099F), containing 32 characters, was added.
* '''Meroitic Cursive''' (U+109A0-U+109FF), containing 26 characters, was added.
* '''Sora Sompeng''' (U+110D0-U+110FF), containing 35 characters, was added.
* '''Chakma''' (U+11100-U+1114F), containing 67 characters, was added.
* '''Sharada''' (U+11180-U+111DF), containing 83 characters, was added.
* '''Takri''' (U+11680-U+116CF), containing 66 characters, was added.
* '''Miao''' (U+16F00-U+16F9F), containing 133 characters, was added.
* '''Arabic Mathematical Alphabetic Symbols''' (U+1EE00-U+1EEFF), containing 143 characters, was added.
=== Extended blocks ===
* An Armenian Dram sign (total 1 character) was added to '''Armenian'''. (U+058F)
* A sign Samvat (total 1 character) was added to '''Arabic'''. (U+0604)
* An Abbreviation mark (total 1 character) was added to '''Gujarati'''. (U+0AF0)
* Letters for Khmu (total 2 characters) were added to '''Lao'''. (U+0EDE-U+0EDF)
* Capital letter Yn, letter Aen, Hard and Labial sign (total 5 characters) were added to '''Georgian'''. (U+10C7, U+10CD and U+10FD-U+10FF)
* Letters and signs for Old Sundanese (total 9 characters) were added to '''Sundanese'''. (U+1BAB-U+1BAD and U+1BBA-U+1BBF)
* Sign Rotated Ardhavisarga, Candra Above, Jihvamuliya and Uphadhmaniya (total 4 characters) were added to '''Vedic Extensions'''. (U+1CF3-U+1CF6)
* Mathematical diagonals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''. (U+27CB and U+27CD)
* A letter Bohairic Khei (total 2 characters) were added to '''Coptic'''. (U+2CF2-U+2CF3)
* Small letters Yn and Aen (total 2 characters) were added to '''Georgian Supplement'''. (U+2D27 and U+2D2D)
* Letters Ye and Yo (total 2 characters) were added to '''Tifinagh'''. (U+2D66-U+2D67)
* (total 10 characters) were added to '''Supplemental Punctuation'''. (U+2E32-U+2E3B)
* An additional ideograph for Kanji (total 1 character) was added to '''CJK Unified Ideographs'''. (U+9FCC)
* Combining letter for Slavonic (total 9 characters) were added to '''Cyrillic Extended-B'''. (U+A674-U+A67B and U+A69F)
* Letter C with Bar, capital letter H with Hook and modifier letters for extended IPA (total 5 characters) were added to '''Latin Extended-D'''. (U+A792-U+A793, U+A7AA and U+A7F8-U+A7F9)
* Some additional ideographs for Korea (total 2 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA2E-U+FA2F)
* Symbols for Canadian legal use (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F16A-U+1F16B)
* Typikon symbols (total 4 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F540-U+1F543)
* (total 13 characters) were added to '''Emoticons'''. (U+1F600, U+1F611, U+1F615, U+1F617, U+1F619, U+1F61B, U+1F61F, U+1F626-U+1F627, U+1F62C, U+1F62E-U+1F62F and U+1F634)
== Unicode 6.2 ==
Unicode 6.2 was released in September 26, 2012. It encoded 110,117 characters, adding only 1 new character.
=== Extended blocks ===
* A Turkish Lira sign (total 1 character) was added to '''Currency Symbols'''. (U+20BA)
== Unicode 6.3 ==
Unicode 6.3 was released in September 30, 2013. It encoded 110,122 characters, adding only 5 new characters.
=== Extended blocks ===
* A Letter mark (total 1 character) was added to '''Arabic'''. (U+061C)
* Isolate directional format characters (total 4 characters) were added to '''General Punctuation'''. (U+2066-U+2069)
== Unicode 7.0 ==
Unicode 7.0 was released in June 16, 2014. It encoded 112,956 characters, adding 2,834 new characters.
=== New blocks ===
* '''Combining Diacritical Marks Extended''' (U+1AB0-U+1AFF), containing 15 marks, was added.
* '''Myanmar Extended-B''' (U+A9E0-U+A9FF), containing 31 letters, was added.
* '''Latin Extended-E''' (U+AB30-U+AB6F), containing 50 letters, was added.
* '''Coptic Epact Numbers''' (U+102E0-U+102FF), containing 28 numbers, was added.
* '''Old Permic''' (U+10350-U+1037F), containing 43 letters, was added.
* '''Elbasan''' (U+10500-U+1052F), containing 50 letters, was added.
* '''Caucasian Albanian''' (U+10530-U+1056F), containing 53 letters and marks, was added.
* '''Linear A''' (U+10600-U+1077F), containing 341 signs, was added.
* '''Palmyrene''' (U+10860-U+1087F), containing 32 letters, was added.
* '''Nabataean''' (U+10880-U+108AF), containing 40 letters and numbers, was added.
* '''Old North Arabian''' (U+10A80-U+10A9F), containing 32 letters and numbers, was added.
* '''Manichaean''' (U+10AC0-U+10AFF), containing 51 characters, was added.
* '''Psalter Pahlavi''' (U+10B80-U+10BAF), containing 29 characters, was added.
* '''Mahajani''' (U+11150-U+1117F), containing 39 letters and signs, was added.
* '''Sinhala Archaic Numbers''' (U+111E0-U+111FF), containing 20 numbers, was added.
* '''Khojki''' (U+11200-U+1124F), containing 61 characters, was added.
* '''Khudawadi''' (U+112B0-U+112FF), containing 69 characters, was added.
* '''Grantha''' (U+11300-U+1137F), containing 83 characters, was added.
* '''Tirhuta''' (U+11480-U+114DF), containing 82 characters, was added.
* '''Siddham''' (U+11580-U+115FF), containing 72 characters, was added.
* '''Modi''' (U+11600-U+1165F), containing 79 characters, was added.
* '''Warang Citi''' (U+118A0-U+118FF), containing 84 letters and numbers, was added.
* '''Pau Cin Hau''' (U+11AC0-U+11AFF), containing 57 characters, was added.
* '''Mro''' (U+16A40-U+16A6F), containing 43 characters, was added.
* '''Bassa Vah''' (U+16AD0-U+16AFF), containing 36 characters, was added.
* '''Pahawh Hmong''' (U+16B00-U+16B8F), containing 127 letters and signs, was added.
* '''Duployan''' (U+1BC00-U+1BC9F), containing 143 characters, was added.
* '''Shorthand Format Controls''' (U+1BCA0-U+1BCAF), containing 4 format characters, was added.
* '''Mende Kikakui''' (U+1E800-U+1E8DF), containing 213 syllables and numbers, was added.
* '''Ornamental Dingbats''' (U+1F650-U+1F67F), containing 48 pictographic characters, was added.
* '''Geometric Shapes Extended''' (U+1F780-U+1F7FF), containing 85 pictographic characters, was added.
* '''Supplemental Arrows-C''' (U+1F800-U+1F8FF), containing 148 pictographic characters, was added.
=== Extended blocks ===
* A capital letter Yot (total 1 character) was added to '''Greek and Coptic'''. (U+037F)
* Letters for Orok, Komi and Khanty (total 8 characters) were added to '''Cyrillic Supplement'''. (U+0528-U+052F)
* An Eternity sign (total 2 characters) were added to '''Armenian'''. (U+058D-U+058E)
* A Number Mark Above (total 1 character) was added to '''Arabic'''. (U+0605)
* Letters for African, Philippine, Turkic, Berber, Belarusian, Palula and Shina languages (total 8 characters) were added to '''Arabic Extended-A'''. (U+08A1, U+08AD-U+08B2 and U+08FF)
* A letter for Marwari (total 1 character) was added to '''Devanagari'''. (U+0978)
* A sign Anji (total 1 character) was added to '''Bengali'''. (U+0980)
* Sign Candrabindu and letter Llla (total 2 characters) were added to '''Telugu'''. (U+0C00 and U+0C34)
* A Sign Candrabindu (total 1 character) was added to '''Kannada'''. (U+0C81)
* A Sign Candrabindu (total 1 character) was added to '''Malayalam'''. (U+0D01)
* Lith Numerals (total 10 characters) were added to '''Sinhala'''. (U+0DE6-U+0DEF)
* Additional Old English runes (total 8 characters) were added to '''Runic'''. (U+16F1-U+16F8)
* Letters Gyan and Tra (total 2 characters) were added to '''Limbu'''. (U+191D-U+191E)
* Signs for Jaiminiya Sama Veda (total 2 characters) were added to '''Vedic Extensions'''. (U+1CF8-U+1CF9)
* Marks for Germanic and American lexicology (total 15 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DE7-U+1DF5)
* Nordic Mark, Manat and Ruble sign (total 3 characters) were added to '''Currency Symbols'''. (U+20BB-U+20BD)
* Playback symbols from Webdings font (total 7 characters) were added to '''Miscellaneous Technical'''. (U+23F4-U+23FA)
* A Scissors symbol from Wingdings 2 font (total 1 character) was added to '''Dingbats'''. (U+2700)
* Arrows for Lithuanian dialectology and symbols from Wingdings 3 font (total 115 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2B4D-U+2B4F, U+2B5A-U+2B5F, U+2B60-U+2B73, U+2B76-U+2B95, U+2B98-U+2BB9, U+2BBD-U+2BC8 and U+2BCA-U+2BD1)
* (total 7 characters) were added to '''Supplemental Punctuation'''. (U+2E3C-U+2E42)
* Early Cyrillic letters and letters for Lithuanian dialectology (total 6 characters) were added to '''Cyrillic Extended-B'''. (U+A698-U+A69D)
* Letters for European, American and African orthography (total 18 characters) were added to '''Latin Extended-D'''. (U+A794-U+A79F, U+A7AB-U+A7AD, U+A7B0-U+A7B1 and U+A7F7)
* Tone marks for Tai Laing and letters for Shwe Palaung (total 4 characters) were added to '''Myanmar Extended-A'''. (U+AA7C-U+AA7F)
* Combining phonetic marks (total 7 characters) were added to '''Combining Half Marks'''. (U+FE27-U+FE2D)
* Additional mathematical symbols (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018B-U+1018C)
* A Greek Tau Rho symbol (total 1 character) was added to '''Ancient Symbols'''. (U+101A0)
* A letter Ess (total 1 character) was added to '''Old Italic'''. (U+1031F)
* A Number Joiner (total 1 character) was added to '''Brahmi'''. (U+1107F)
* Sutra mark and sign Ekam (total 2 characters) were added to '''Sharada'''. (U+111CD and U+111DA)
* Additional cuneiform signs (total 42 characters) were added to '''Cuneiform'''. (U+1236F-U+12398)
* Additional numbers, vulgar fractions and a punctuation mark (total 13 characters) were added to '''Cuneiform Numbers and Punctuation'''. (U+12463-U+1246E and U+12474)
* Red Joker, Fool and trumps (total 23 characters) were added to '''Playing Cards'''. (U+1F0BF and U+1F0E0-U+1F0F5)
* Dingbat normal and negative sans-serif digit zero (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10B-U+1F10C)
* Symbols from Webdings, Wingdings 1 and 2 font (total 209 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F321-U+1F32C, U+1F336, U+1F37D, U+1F394-U+1F39F, U+1F3C5, U+1F3CB-U+1F3CE, U+1F3D4-U+1F3DF, U+1F3F1-U+1F3F7, U+1F43F, U+1F441, U+1F4F8, U+1F4FD-U+1F4FE, U+1F53E-U+1F53F, U+1F544-U+1F54A, U+1F568-U+1F579, U+1F57B-U+1F5A3 and U+1F5A5-U+1F5FA)
* Slightly frowning and smiling faces emoji (total 2 characters) were added to '''Emoticons'''. (U+1F641-U+1F642)
* Symbols from Webdings and Wingdings 2 font (total 27 characters) were added to '''Transport and Map Symbols'''. (U+1F6C6-U+1F6CF, U+1F6E0-U+1F6EC and U+1F6F0-U+1F6F3)
== Unicode 8.0 ==
Unicode 8.0 was released in June 17, 2015. It encoded 120,672 characters, adding 7,716 new characters.
=== New blocks ===
* '''Cherokee Supplement''' (U+AB70-U+ABBF), containing 80 lowercase letters, was added.
* '''Hatran''' (U+108E0-U+108FF), containing 26 letters, was added.
* '''Old Hungarian''' (U+10C80-U+10CFF), containing 108 letters, was added.
* '''Multani''' (U+11280-U+112AF), containing 38 letters, was added.
* '''Ahom''' (U+11700-U+1173F), containing 57 letters, was added.
* '''Early Dynastic Cuneiform''' (U+12480-U+1254F), containing 196 characters, was added.
* '''Anatolian Hieroglyphs''' (U+14400-U+1467F), containing 583 characters, was added.
* '''Sutton SignWriting''' (U+1D800-U+1DAAF), containing 672 signs, was added.
* '''Supplemental Symbols and Pictographs''' (U+1F900-U+1F9FF), containing 15 pictographic characters, was added.
* '''CJK Unified Ideographs Extension E''' (U+2B820-U+2CEAF), containing 5762 characters, was added.
=== Extended blocks ===
* Letters for Arwi (total 3 characters) were added to '''Arabic Extended-A'''. (U+08B3-U+08B4 and U+08E3)
* A letter for Avestan transliteration (total 1 character) was added to '''Gujarati'''. (U+0AF9)
* A letter for Andhra Pradesh (total 1 character) was added to '''Telugu'''. (U+0C5A)
* An archaic letter II (total 1 character) was added to '''Malayalam'''. (U+0D5F)
* A letter Mv and small letters (total 7 characters) were added to '''Cherokee'''. (U+13F5 and U+13F8-U+13FD)
* A Georgian Lari sign (total 1 character) was added to '''Currency Symbols'''. (U+20BE)
* Turned digits (total 2 characters) were added to '''Number Forms'''. (U+218A-U+218B)
* Two headed arrows with triangle arrowheads (total 4 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BEC-U+2BEF)
* Some additional ideographs (total 9 characters) were added to '''CJK Unified Ideographs'''. (U+9FCD-U+9FD5)
* A combining letter Ef (total 1 character) was added to '''Cyrillic Extended-B'''. (U+A69E)
* Sinological dot, phonetic extension for African languages, letters for American and Gabonese orthography (total 7 characters) were added to '''Latin Extended-D'''. (U+A78F and U+A7B2-U+A7B7)
* Sign Siddham and letter Jain Om (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FC-U+A8FD)
* Letters for Yakut transliteration (total 4 characters) were added to '''Latin Extended-E'''. (U+AB60-U+AB63)
* A combining mark for Church Slavonic (total 2 characters) were added to '''Combining Half Marks'''. (U+FE2E-U+FE2F)
* Numerals and vulgar fractions (total 64 characters) were added to '''Meroitic Cursive'''. (U+109BC-U+109BD, U+109C0-U+109CF and U+109D2-U+109FF)
* Sandhi mark, diacritical marks for Kashmiri, sign Siddham and punctuation marks (total 9 characters) were added to '''Sharada'''. (U+111C9-U+111CC and U+111DB-U+111DF)
* Combining Anusvara Above and letter Om (total 2 characters) were added to '''Grantha'''. (U+11300 and U+11350)
* Section marks and alternate letters (total 20 characters) were added to '''Siddham'''. (U+115CA-U+115DD)
* An additional sign (total 1 character) was added to '''Cuneiform'''. (U+12399)
* East-Slavic musical symbols (total 11 characters) were added to '''Musical Symbols'''. (U+1D1DE-U+1D1E8)
* (total 24 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F32D-U+1F32F, U+1F37E-U+1F37F, U+1F3CF-U+1F3D3, U+1F3F8-U+1F3FF, U+1F4FF and U+1F54B-U+1F54F)
* Upside Down Face and Face With Rolling Eyes emoji (total 2 characters) were added to '''Emoticons'''. (U+1F643-U+1F644)
* A Place of Worship emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D0)
== Unicode 9.0 ==
Unicode 9.0, was released in June 21, 2016. It encoded 128,172 characters, adding 7,500 new characters.
=== New blocks ===
* '''Cyrillic Extended-C''' (U+1C80-U+1C8F), containing 9 letters, was added.
* '''Osage''' (U+104B0-U+104FF), containing 72 letters, was added.
* '''Newa''' (U+11400-U+1147F), containing 92 letters, was added.
* '''Mongolian Supplement''' (U+11660-U+1167F), containing 13 letters, was added.
* '''Bhaiksuki''' (U+11C00-U+11C6F), containing 97 letters, was added.
* '''Marchen''' (U+11C70-U+11CBF), containing 68 letters, was added.
* '''Ideographic Symbols and Punctuation''' (U+16FE0-U+16FFF), containing 1 letter, was added.
* '''Tangut''' (U+17000-U+187FF), containing 6125 letters, was added.
* '''Tangut Components''' (U+18800-U+18AFF), containing 755 letters, was added.
* '''Glagolitic Supplement''' (U+1E000-U+1E02F), containing 38 letters, was added.
* '''Adlam''' (U+1E900-U+1E95F), containing 87 letters, was added.
=== Extended blocks ===
* Letters for Bravanese, Warsh and Quranic marks used in Pakistan (total 23 characters) were added to '''Arabic Extended-A'''. (U+08B6-U+08BD and U+08D4-U+08E2)
* A sign Spacing Candrabindu (total 1 character) were added to '''Kannada'''. (U+0C80)
* Sign Para, Chillu letters and vulgar fractions (total 14 characters) were added to '''Malayalam'''. (U+0D4F, U+0D54-U+0D56, U+0D58-U+0D5E and U+0D76-U+0D78)
* A diacritical mark for Newa (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFB)
* Power symbols (total 4 characters) were added to '''Miscellaneous Technical'''. (U+23FB-U+23FE)
* Punctuation marks for Church Slavonic (total 2 characters) were added to '''Supplemental Punctuation'''. (U+2E43-U+2E44)
* A letter for Unifon (total 1 character) was added to '''Latin Extended-D'''. (U+A7AE)
* A sign Candrabindu (total 1 character) was added to '''Saurashtra'''. (U+A8C5)
* Indiction sign and a currency symbol (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018D-U+1018E)
* A sign Sukun (total 1 character) was added to '''Khojki'''. (U+1123E)
* Japanese TV symbols (total 18 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F19B-U+1F1AC)
* A Japanese TV symbol (total 1 character) was added to '''Enclosed Ideographic Supplement'''. (U+1F23B)
* A dancing man and Black Heart emoji (total 2 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F57A and U+1F5A4)
* Octagonal Sign, Shopping Trolley, scooters and a Canoe emoji (total 5 characters) were added to '''Transport and Map Symbols'''. (U+1F6D1-U+1F6D2 and U+1F6F4-U+1F6F6)
* (total 67 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F919-U+1F91E, U+1F920-U+1F927, U+1F930, U+1F933-U+1F93E, U+1F940-U+1F94B, U+1F950-U+1F95E and U+1F985-U+1F991)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|0030 FE00
|
|short diagonal stroke form # DIGIT ZERO
|-
|1000 FE00
|
|dotted form # MYANMAR LETTER KA
|-
|1002 FE00
|
|dotted form # MYANMAR LETTER GA
|-
|1004 FE00
|
|dotted form # MYANMAR LETTER NGA
|-
|1010 FE00
|
|dotted form # MYANMAR LETTER TA
|-
|1011 FE00
|
|dotted form # MYANMAR LETTER THA
|-
|1015 FE00
|
|dotted form # MYANMAR LETTER PA
|-
|1019 FE00
|
|dotted form # MYANMAR LETTER MA
|-
|101A FE00
|
|dotted form # MYANMAR LETTER YA
|-
|101C FE00
|
|dotted form # MYANMAR LETTER LA
|-
|101D FE00
|
|dotted form # MYANMAR LETTER WA
|-
|1022 FE00
|
|dotted form # MYANMAR LETTER SHAN A
|-
|1031 FE00
|
|dotted form # MYANMAR VOWEL SIGN E
|-
|1075 FE00
|
|dotted form # MYANMAR LETTER SHAN KA
|-
|1078 FE00
|
|dotted form # MYANMAR LETTER SHAN CA
|-
|107A FE00
|
|dotted form # MYANMAR LETTER SHAN NYA
|-
|1080 FE00
|
|dotted form # MYANMAR LETTER SHAN THA
|-
|2205 FE00
|
|zero with long diagonal stroke overlay form # EMPTY SET
|-
|AA60 FE00
|
|dotted form # MYANMAR LETTER KHAMTI GA
|-
|AA61 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CA
|-
|AA62 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CHA
|-
|AA63 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JA
|-
|AA64 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JHA
|-
|AA65 FE00
|
|dotted form # MYANMAR LETTER KHAMTI NYA
|-
|AA66 FE00
|
|dotted form # MYANMAR LETTER KHAMTI TTA
|-
|AA6B FE00
|
|dotted form # MYANMAR LETTER KHAMTI NA
|-
|AA6C FE00
|
|dotted form # MYANMAR LETTER KHAMTI SA
|-
|AA6F FE00
|
|dotted form # MYANMAR LETTER KHAMTI FA
|-
|AA7A FE00
|
|dotted form # MYANMAR LETTER AITON RA
|-
|…
|
|278 additional emoji variation sequences
|}
== Unicode 10.0 ==
Unicode 10.0, was released in June 20, 2017. It encoded 136,690 characters, adding 8,518 new characters.
=== New blocks ===
* '''Syriac Supplement''' (U+0860-U+086F), containing 11 characters, was added.
* '''Zanabazar Square''' (U+11A00-U+11A4F), containing 72 characters, was added.
* '''Soyombo''' (U+11A50-U+11AAF), containing 80 characters, was added.
* '''Masaram Gondi''' (U+11D00-U+11D5F), containing 75 characters, was added.
* '''Kana Extended-A''' (U+1B100-U+1B12F), containing 31 characters, was added.
* '''Nushu''' (U+1B170-U+1B2FF), containing 396 characters, was added.
* '''CJK Unified Ideographs Extension F''' (U+2CEB0-U+2EBEF), containing 7,473 characters, was added.
=== Extended blocks ===
* A Vedic Anusvara and Abbreviation mark (total 2 characters) were added to '''Bengali'''. (U+09FC-U+09FD)
* Letters for Arabic transliteration (total 6 characters) were added to '''Gujarati'''. (U+0AFA-U+0AFF)
* A combining Anusvara Above and Viramas (total 3 characters) were added to '''Malayalam'''. (U+0D00 and U+0D3B-U+0D3C)
* A sign Atikrama (total 1 character) was added to '''Vedic Extensions'''. (U+1CF7)
* Combining diacritical marks for Church Slavonic (total 4 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DF6-U+1DF9)
* A Bitcoin sign (total 1 character) was added to '''Currency Symbols'''. (U+20BF)
* An Observe Eye symbol (total 1 character) was added to '''Miscellaneous Technical'''. (U+23FF)
* A Group mark (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2BD2)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E45-U+2E49)
* A letter O with Dot Above (total 1 character) was added to '''Bopomofo'''. (U+312E)
* Ideographs for Slavonic transliteration (total 21 characters) were added to '''CJK Unified Ideographs'''. (U+9FD6-U+9FEA)
* Letters for North Italic (total 3 characters) were added to '''Old Italic'''. (U+1032D-U+1032F)
* An Iteration mark for Nushu (total 1 character) was added to '''Ideographic Symbols and Punctuation'''. (U+16FE1)
* Letters for Hentaigana (total 254 characters) were added to '''Kana Supplement'''. (U+1B002-U+1B0FF)
* Symbols for Chinese Folk religion (total 6 characters) were added to '''Enclosed Ideographic Supplement'''. (U+1F260-U+1F265)
* Stupa, Pagoda, Sled and Flying Saucer emoji (total 4 characters) were added to '''Transport and Map Symbols'''. (U+1F6D3-U+1F6D4 and U+1F6F7-U+1F6F8)
* (total 66 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F900-U+1F90B, U+1F91F, U+1F928-U+1F92F, U+1F931-U+1F932, U+1F94C, U+1F95F-U+1F96B, U+1F992-U+1F997 and U+1F9D0-U+1F9E6)
== Unicode 11.0 ==
Unicode 11.0, was released in June 5, 2018. It encoded 137,374 characters, adding 684 new characters.
=== New blocks ===
* '''Georgian Extended''' (U+1C90-U+1CBF), containing 46 characters, was added.
* '''Hanifi Rohingya''' (U+10D00-U+10D3F), containing 50 characters, was added.
* '''Old Sogdian''' (U+10F00-U+10F2F), containing 40 characters, was added.
* '''Sogdian''' (U+10F30-U+10F6F), containing 42 characters, was added.
* '''Dogra''' (U+11800-U+1184F), containing 60 characters, was added.
* '''Gunjala Gondi''' (U+11D60-U+11DAF), containing 63 characters, was added.
* '''Makasar''' (U+11EE0-U+11EFF), containing 25 characters, was added.
* '''Medefaidrin''' (U+16E40-U+16E9F), containing 91 characters, was added.
* '''Mayan Numerals''' (U+1D2E0-U+1D2FF), containing 20 characters, was added.
* '''Indic Siyaq Numbers''' (U+1EC70-U+1ECBF), containing 68 characters, was added.
* '''Chess Symbols''' (U+1FA00-U+1FA6F), containing 14 characters, was added.
=== Extended blocks ===
* Small letters Turned Ayb and Yi with Stroke (total 2 characters) were added to '''Armenian'''. (U+0560 and U+0588)
* A triangle Yod (total 1 character) were added to '''Hebrew'''. (U+05EF)
* A Dantayalan and currency symbols (total 3 characters) were added to '''N'Ko'''. (U+07FD-U+07FF)
* A Small Low Waw (total 1 character) was added to '''Arabic Extended-A'''. (U+08D3)
* A Sandhi mark (total 1 character) was added to '''Bengali'''. (U+09FE)
* An Abbreviation mark (total 1 character) was added to '''Gurmukhi'''. (U+0A76)
* A combining Anusvara Above (total 1 character) was added to '''Telugu'''. (U+0C04)
* A sign Siddham (total 1 character) was added to '''Kannada'''. (U+0C84)
* A letter for Buryat (total 1 character) was added to '''Mongolian'''. (U+1878)
* Symbols for chess notation, astrological and half star symbols (total 43 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BBA-U+2BBC, U+2BD3-U+2BEB and 2BF0-U+2BFE)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E4A-U+2E4E)
* A letter NN (total 1 character) was added to '''Bopomofo'''. (U+312F)
* Some ideographs for Kanji (total 5 characters) were added to '''CJK Unified Ideographs'''. (U+9FEB-U+9FEF)
* A small capital Q and a letter for Mazahua (total 3 characters) were added to '''Latin Extended-D'''. (U+A7AF and U+A7B8-U+A7B9)
* Letter and vowel sign Ay (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FE-U+A8FF)
* Letters Ttta, Vha and a vulgar fraction (total 3 characters) were added to '''Kharoshthi'''. (U+10A34-U+10A35 and U+10A48)
* A Number Sign Above (total 1 character) was added to '''Kaithi'''. (U+110CD)
* Letter Lhaa, vowel sign Aa and Ei (total 3 characters) were added to '''Chakma'''. (U+11144-U+11146)
* A combining Bindu Below (total 1 character) was added to '''Grantha'''. (U+1133B)
* A Sandhi mark (total 1 character) was added to '''Newa'''. (U+1145E)
* An alternate letter Ba (total 1 character) was added to '''Ahom'''. (U+1171A)
* A mark Pluta (total 1 character) was added to '''Soyombo'''. (U+11A9D)
* Additional ideographs (total 5 characters) were added to '''Tangut'''. (U+187ED-U+187F1)
* Tally marks (total 7 characters) were added to '''Counting Rod Numerals'''. (U+1D372-U+1D378)
* A Copyleft symbol (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F12F)
* A Skateboard emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6F9)
* Normal and negative circled shapes (total 4 characters) were added to '''Geometric Shapes Extended'''. (U+1F7D5-U+1F7D8)
* (total 65 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F94D-U+1F94F, U+1F96C-U+1F970, U+1F973-U+1F976, U+1F97A, U+1F97C-U+1F97F, U+1F998-U+1F99F, U+1F9A0-U+1F9A2, U+1F9B0-U+1F9B9, U+1F9C1-U+1F9C2 and U+1F9E7-U+1F9FF)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|FF10 FE00
|
|short diagonal stroke form # FULLWIDTH DIGIT ZERO
|}
== Unicode 12.0 ==
Unicode 12.0 was released on March 5, 2019. It encoded 137,928 characters, adding 554 new characters.
=== New blocks ===
* '''Elymaic''' (U+10FE0-U+10FFF), containing 23 characters, was added.
* '''Nandinagari''' (U+119A0-U+119FF), containing 65 characters, was added.
* '''Tamil Supplement''' (U+11FC0-U+11FFF), containing 51 characters, was added.
* '''Egyptian Hieroglyph Format Controls''' (U+13430-U+1343F), containing 9 characters, was added.
* '''Small Kana Extension''' (U+1B130-U+1B16F), containing 7 characters, was added.
* '''Nyiakeng Puachue Hmong''' (U+1E100-U+1E14F), containing 71 characters, was added.
* '''Wancho''' (U+1E2C0-U+1E2FF), containing 59 characters, was added.
* '''Ottoman Siyaq Numbers''' (U+1ED00-U+1ED4F), containing 61 characters, was added.
* '''Symbols and Pictographs Extended-A''' (U+1FA70-U+1FAFF), containing 16 characters, was added.
=== Extended blocks ===
* A sign Siddham (total 1 character) was added to '''Telugu'''. (U+0C77)
* Letters for Pail and Sanskrit (total 15 characters) were added to '''Lao'''. (U+0E86, U+0E89, U+0E8C, U+0E8E-U+0E93, U+0E98, U+0EA0, U+0EA8-U+0EA9, U+0EAC and U+0EBA)
* A sign Double Anusvara Antargomukha (total 1 character) was added to '''Vedic Extensions'''. (U+1CFA)
* An astrological symbol and Hellschreiber Pause symbol (total 2 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BC9 and U+2BFF)
* A Cornish Verse Divider (total 1 character) was added to '''Supplemental Punctuation'''. (U+2E4F)
* Egyptological letters, Anglicana W and letters for early Pinyin (total 11 characters) were added to '''Latin Extended-D'''. (U+A7BA-U+A7BF and U+A7C2-U+A7C6)
*Sinological phonetic letters (total 2 characters) were added to '''Latin Extended-E'''. (U+AB66-U+AB67)
* A Vedic Anusvara (total 1 character) was added to '''Newa'''. (U+1145F)
* An archaic letter Kha (total 1 character) was added to '''Takri'''. (U+116B8)
* Sign Jihvamuliya and Uphadhmaniya (total 2 characters) were added to '''Soyombo'''. (U+11A84-U+11A85)
* Letters for various Yi and Miao languages (total 16 characters) were added to '''Miao'''. (U+16F45-U+16F4A, U+16F4F and U+16F7F-U+16F87)
* Marks for Ancient Chinese texts (total 2 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE2-U+16FE3)
* Some additional ideographs (total 6 characters) were added to '''Tangut'''. (U+187F2-U+187F7)
* A Nasalization mark (total 1 character) was added to '''Adlam'''. (U+1E94B)
* A Spanish and Portuguese register mark (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F16C)
* Hindu Temple and Auto Rickshaw emoji (total 2 characters) were added to '''Transport and Map Symbols'''. (U+1F6D5 and U+1F6FA)
* Large colored circles and boxes (total 12 characters) were added to '''Geometric Shapes Extended'''. (U+1F7E0-U+1F7EB)
* (total 31 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90D-U+1F90F, U+1F93F, U+1F971, U+1F97B, U+1F9A5-U+1F9AA, U+1F9AE-U+1F9AF, U+1F9BA-U+1F9BF, U+1F9C3-U+1F9CA and U+1F9CD-U+1F9CF)
* Heterodox chess symbols (total 84 characters) were added to '''Chess Symbols'''. (U+1FA00-U+1FA53)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Spacing Modifier Letters
|02EA, 02EB
|2
|-
|Vedic Extensions
|1CF2..1CF3
|2
|-
|Currency Symbols
|20A9
|1
|-
|CJK Symbols and Punctuation
|3001, 3002
|2
|-
|Bopomofo
|3105..312F
|43
|-
|Bopomofo Extended
|31A0..31BA
|27
|-
|CJK Unified Ideographs Extension A
|37C3, 3B9D, 3CFD, 3FE0, 44EC, 4A76
|6
|-
|CJK Unified Ideographs
|5344, 55B9, 6ABC, 6FF9, 809E, 80BC, 80E9, 8132, 8159, 841C, 891D, 8C6C, 915E, 9FD4
|14
|-
|Phags-pa
|A840..A877
|56
|-
|Halfwidth and Fullwidth Forms
|FF01, FF0C, FF0E, FF1A, FF1B, FF1F
|6
|-
|CJK Unified Ideographs Extension B
|200DD, 20164, 20BBF, 20C02, 20CED, 21D4C, 2278B, 23AB8, 2459B, 24A7D, 24FB9, 25ED7, 2677C, 26B4C, 26C21, 26CBE, 26E3D, 28834, 289A1, 289C0, 28A0F, 28B46
|22
|-
|CJK Unified Ideographs Extension C
|2A8FB, 2A917, 2AA30
|3
|-
|CJK Unified Ideographs Extension E
|2BA52, 2BD77, 2C494, 2C72F, 2C734, 2CB38
|6
|-
|CJK Unified Ideographs Extension F
|2D23B, 2E83A
|2
|-
! colspan="2" |Total
!192
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|3001 FE00
|
|corner-justified form # IDEOGRAPHIC COMMA
|-
|3001 FE01
|
|centered form # IDEOGRAPHIC COMMA
|-
|3002 FE00
|
|corner-justified form # IDEOGRAPHIC FULL STOP
|-
|3002 FE01
|
|centered form # IDEOGRAPHIC FULL STOP
|-
|FF01 FE00
|
|corner-justified form # FULLWIDTH EXCLAMATION MARK
|-
|FF01 FE01
|
|centered form # FULLWIDTH EXCLAMATION MARK
|-
|FF0C FE00
|
|corner-justified form # FULLWIDTH COMMA
|-
|FF0C FE01
|
|centered form # FULLWIDTH COMMA
|-
|FF0E FE00
|
|corner-justified form # FULLWIDTH FULL STOP
|-
|FF0E FE01
|
|centered form # FULLWIDTH FULL STOP
|-
|FF1A FE00
|
|corner-justified form # FULLWIDTH COLON
|-
|FF1A FE01
|
|centered form # FULLWIDTH COLON
|-
|FF1B FE00
|
|corner-justified form # FULLWIDTH SEMICOLON
|-
|FF1B FE01
|
|centered form # FULLWIDTH SEMICOLON
|-
|FF1F FE00
|
|corner-justified form # FULLWIDTH QUESTION MARK
|-
|FF1F FE01
|
|centered form # FULLWIDTH QUESTION MARK
|}
== Unicode 12.1 ==
Unicode 12.1 was released on May 7, 2019. It encoded 137,929 characters, adding only 1 new character.
=== Extended blocks ===
* A square era name Reiwa (total 1 character) was added to '''Enclosed CJK Letters and Months'''. (U+32FF)
== Unicode 13.0 ==
Unicode 13.0 was released on March 10, 2020. It encoded 143,859 characters, adding 5,930 new characters.
=== New blocks ===
* '''Yezidi''' (U+10E80-U+10EBF), containing 47 characters, was added.
* '''Chorasmian''' (U+10FB0-U+10FDF), containing 28 characters, was added.
* '''Dives Akuru''' (U+11900-U+1195F), containing 72 characters, was added.
* '''Lisu Supplement''' (U+11FB0-U+11FBF), containing 1 character, was added.
* '''Khitan Small Script''' (U+18B00-U+18CFF), containing 470 characters, was added.
* '''Tangut Supplement''' (U+18D00-U+18D08), containing 9 characters, was added.
* '''Symbols for Legacy Computing''' (U+1FB00-U+1FBFF), containing 212 characters, was added.
* '''CJK Unified Ideographs Extension G''' (U+30000-U+3134F), containing 4939 characters, was added.
=== Extended blocks ===
* Letters for African languages and Punjabi (total 10 characters) were added to '''Arabic Extended-A'''. (U+08BE-U+08C7)
* A sign Overline (total 1 character) was added to '''Oriya'''. (U+0B55)
* A Vedic Anusvara (total 1 character) was added to '''Malayalam'''. (U+0D04)
* A sign Candrabindu (total 1 character) was added to '''Sinhala'''. (U+0D81)
* Combining diacritical marks for Scottish phonology (total 2 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1ABF-U+1AC0)
* A Japanese symbol for Type A Electronics (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B97)
* Cross patties and a Tironian sign Capita Et (total 3 characters) were added to '''Supplemental Punctuation'''. (U+2E50-U+2E52)
* Letters for Taiwan and Cantonese language (total 5 characters) were added to '''Bopomofo Extended'''. (U+31BB-U+31BF)
* Some disunified ideographs (total 10 characters) were added to '''CJK Unified Ideographs Extension A'''. (U+4DB6-4DBF)
* Some ideographs for China (total 13 characters) were added to '''CJK Unified Ideographs'''. (U+9FF0-U+9FFC)
* Letters for Gaulish (total 6 characters) were added to '''Latin Extended-D'''. (U+A7C7-U+A7CA and U+A7F5-U+A7F6)
* An alternate sign Nasanta (total 1 character) was added to '''Syloti Nagri'''. (U+A82C)
* Letter R With Midle Tilde and modifier letters for Scottish phonology (total 4 characters) were added to '''Latin Extended-E'''. (U+AB68-U+AB6B)
* A symbol Ascia (total 1 character) was added to '''Ancient Symbols'''. (U+1019C)
* A letter for Pali (total 1 character) was added to '''Chakma'''. (U+11147)
* A vowel sign Prishthamatra E and Inverted Candrabindu (total 2 characters) were added to '''Sharada'''. (U+111CE and U+111CF)
* Double comma, sign Jihvamuliya and Uphadhmaniya (total 3 characters) were added to '''Newa'''. (U+1145A and U+11460-U+11461)
* Khitan Small Script Filler and reading marks for Vietnamese (total 3 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE4 and U+16FF0-U+16FF1)
* Some additional components (total 13 characters) were added to '''Tangut Components'''. (U+18AF3-U+18AFF)
* Creative Commons license symbols and Mask Work symbol (total 7 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10D-U+1F10F, U+1F16D-1F16F and U+1F1AD)
* Hut, Elevator, Pickup Truck and Roller Skate emoji (total 4 characters) were added to '''Transportation and Map Symbols'''. (U+1F6D6-U+1F6D7 and U+1F6FB-U+1F6FC)
* Arrows for legacy computing (total 2 characters) were added to '''Supplemental Arrows-C'''. (U+1F8B0-U+1F8B1)
* (total 10 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90C, U+1F972, U+1F977-U+1F978, U+1F9A3-U+1F9A4, U+1F9AB-U+1F9AD and U+1F9CB)
* (total 41 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA74, U+1FA83-U+1FA86, U+1FA96-U+1FAA8, U+1FAB0-U+1FAB6, U+1FAC0-U+1FAC2 and U+1FAD0-U+1FAD6)
* Gongche charaters for Kunqu Opera (total 7 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6D7-U+2A6DD)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Tagalog
|1700..170C, 170E..1714
|20
|-
|Mongolian
|1834, 1871, 1878
|3
|-
|Sundanese
|1BAB
|1
|-
|Currency Symbols
|20BF
|1
|-
|CJK Radicals Supplement
|2E80..2E99, 2E9B..2EF3
|115
|-
|Kangxi Radicals
|2F00..2FD5
|214
|-
|CJK Unified Ideographs Extension A
|3472, 38C7, 3DB8, 3FE0, 440B, 46E9
|6
|-
|CJK Unified Ideographs
|53FD, 6146, 6711, 671C, 6721, 6725, 6BD2, 7B9A, 87CE, 8956, 93BF, 9B97
|12
|-
|Latin Extended-D
|A764..A765
|2
|-
|Phags-pa
|A86D
|1
|-
|Tangut
|175F6, 17F0D, 17F8A, 17FA5, 180D6, 18139, 18147, 184F1, 18736
|9
|-
|Tangut Components
|18843, 18856, 1888C, 1890A, 18915, 1893B
|6
|-
|Adlam
|1E900..1E94A, 1E950..1E959, 1E95E..1E95F
|71
|-
|Miscellaneous Symbols and Pictographs
|1F3B1
|1
|-
|Supplemental Symbols and Pictographs
|1F995..1F998, 1F99B..1F99E, 1F9B0..1F9B3, 1F9E7
|13
|-
|CJK Unified Ideographs Extension B
|20219, 21249, 21827, 22C3A, 2327B, 23496, 2355E, 2363B, 236ED, 23839, 23FD5, 24261, 24726, 248F2, 2548E, 26657, 26C9E, 26FE1, 27334, 27C0E, 27CEF, 2A38C
|22
|-
|CJK Unified Ideographs Extension C
|2AED5, 2AEF3, 2AF76, 2B09F, 2B1C3, 2B1E5
|6
|-
|CJK Unified Ideographs Extension E
|2B83C, 2B8D9..2B8DA, 2B96F, 2BBD7, 2BD61, 2BE4A, 2BF1D, 2BF9D, 2C0B8, 2C142, 2C176, 2C316, 2C3FB, 2C402, 2C7AC, 2C82C, 2C83A, 2C9A1, 2CC88, 2CD68
|21
|-
|CJK Unified Ideographs Extension F
|2DC09, 2DE4A, 2EB7E, 2EB89
|4
|-
|CJK Compatibility Ideographs Supplement
|2F83B, 2F878, 2F8D6..2F8D7, 2F8DA, 2F8F0, 2F984, 2FA02
|8
|-
! colspan="2" |Total
!536
|}
== Unicode 14.0 ==
Unicode 14.0 was released on September 14, 2021. It encoded 144,697 characters, adding 838 new characters.
=== New blocks ===
* '''Arabic Extended-B''' (U+0870-U+089F), containing 41 characters, was added.
* '''Vithkuqi''' (U+10570-U+105BF), containing 70 characters, was added.
* '''Latin Extended-F''' (U+10780-U+107BF), containing 57 characters, was added.
* '''Old Uyghur''' (U+10F70-U+10FAF), containing 26 characters, was added.
* '''Unified Canadian Aboriginal Syllabics Extended-A''' (U+11AB0-U+11ABF), containing 16 characters, was added.
* '''Cypro-Minoan''' (U+12F90-U+12FFF), containing 99 characters, was added.
* '''Tangsa''' (U+16A70-U+16ACF), containing 89 characters, was added.
* '''Kana Extended-B''' (U+1AFF0-U+1AFFF), containing 13 characters, was added.
* '''Znamenny Musical Notation''' (U+1CF00-U+1CFFF), containing 185 characters, was added.
* '''Latin Extended-G''' (U+1DF00-U+1DFFF), containing 31 characters, was added.
* '''Toto''' (U+1E290-U+1E2BF), containing 31 characters, was added.
* '''Ethiopic Extended-B''' (U+1E7E0-U+1E7FF), containing 28 characters, was added.
=== Extended blocks ===
* An End of Text punctuation mark (total 1 character) was added to '''Arabic'''. (U+061D)
* Letters for Balti and Quranic orthography (total 12 characters) were added to '''Arabic Extended-A'''. (U+08B5 and U+08C8-U+08D2)
* A sign Nukta and letter Nakaara Pollu (total 2 characters) were added to '''Telugu'''. (U+0C3C and U+0C5D)
* A letter Nakaara Pollu (total 1 character) was added to '''Kannada'''. (U+0CDD)
* A letter Ra, sign Pamudpod and archaic letter Ra (total 3 characters) were added to '''Tagalog'''. (U+170D, U+1715 and U+171F)
* A fourth Free variation selector (total 1 character) was added to '''Mongolian'''. (U+180F)
* Combining diacritical marks for extended IPA (total 14 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1AC1-U+1ACE)
* An archaic ligature Jnya and punctuation marks (total 3 characters) were added to '''Balinese'''. (U+1B4C and U+1B7D-U+1B7E)
* A combining Dot Below Left (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFA)
* A Kyrgyz Som sign (total 1 character) was added to '''Currency Symbols'''. (U+20C0)
* A letter Caudate Chrivi (total 2 characters) were added to '''Glagolitic'''. (U+2C2F and U+2C5F)
* Medieval and phonetic punctuation marks (total 11 characters) were added to '''Supplemental Punctuation'''. (U+2E53-U+2E5D)
* Some ideographs for Macao (total 3 characters) were added to '''CJK Unified Ideographs'''. (U+9FFD-U+9FFF)
* Archaic European letters, modifier letters for Sokuon and Chatino orthography (total 13 characters) were added to '''Latin Extended-D'''. (U+A7C0-U+A7C1, U+A7D0-U+A7D1, U+A7D3, U+A7D5, U+A7D6-U+A7D9 and U+A7F2-U+A7F4)
* A modifier letter Wasla Above and honorifics (total 20 characters) were added to '''Arabic Presentation Forms-A'''. (U+FBC2, U+FD40-U+FD4F, U+FDCF and U+FDFE-U+FDFF)
* Letters for Old Tamil (total 6 characters) were added to '''Brahmi'''. (U+11070-U+11075)
* A vowel sign Vocalic R (total 1 character) was added to '''Khaiti'''. (U+110C2)
* An Abbreviation sign (total 1 character) was added to '''Takri'''. (U+116B9)
* Letters for Tai Ahom (total 7 characters) were added to '''Ahom'''. (U+11740-U+11746) The block was expanded from (U+11700-U+1173F) to (U+11700-U+1174F)
* Kana archaic letters (total 4 characters) were added to '''Kana Extended-A'''. (U+1B11F-U+1B122)
* Accidental symbols for Iranian classical music (total 2 characters) were added to '''Musical Symbols'''. (U+1D1E9-U+1D1EA)
* Playground Slide, Wheel and Ring Buoy emoji (total 3 characters) were added to '''Transportation and Map Symbols'''. (U+1F6DD-U+1F6DF)
* A Heavy Equals Sign emoji (total 1 character) was added to '''Geometric Shapes Extended'''. (U+1F7F0)
* A Troll and Face Holding Back Tears emoji (total 2 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F979 and U+1F9CC)
* (total 31 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA7B-U+1FA7C, U+1FAA9-U+1FAAC, U+1FAB7-U+1FABA, U+1FAC3-U+1FAC5, U+1FAD7-U+1FAD9, U+1FAE0-U+1FAE7 and U+1FAF0-U+1FAF6)
* Some ideographs for Macao (total 2 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6DE-U+2A6DF)
* Disunified ideographs and a G source ideograph for China, Hong Kong and Vietnam (total 4 characters) were added to '''CJK Unified Ideographs Extension C'''. (U+2B735-U+2B738)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Latin Extended-B
|0184..0185
|2
|-
|Arabic
|0674..0678, 06C5, 06C7, 06FE
|8
|-
|Letterlike Symbols
|210B, 2110, 2112, 211B, 212C, 2130..2131, 2133
|8
|-
|Enclosed Alphanumerics
|2460..24FF
|160
|-
|Dingbats
|2776..2793
|30
|-
|CJK Symbols and Punctuation
|3001..3029, 3030..303D, 303F
|56
|-
|CJK Strokes
|31C0..31E3
|36
|-
|Katakana Phonetic Extensions
|31F0..31FF
|16
|-
|Enclosed CJK Letters and Months
|3200..321E, 3220..32FF
|255
|-
|CJK Compatibiity
|3300..33FF
|256
|-
|CJK Unified Ideographs Extension A
|3777, 3B3F
|2
|-
|CJK Unified Ideographs
|5DD5, 652C, 6AC0
|3
|-
|Arabic Presentation Forms-A
|FBD7..FBD8, FBDD, FBE0..FBE1
|5
|-
|Vertical Forms
|FE10..FE19
|10
|-
|CJK Compatibiity Forms
|FE30..FE4F
|32
|-
|Small Form Variants
|FE50..FE52, FE54..FE66, FE68..FE6B
|26
|-
|Halfwidth and Fullwidth Forms
|FF01..FF9F, FFA1..FFBE, FFC2..FFC7, FFCA..FFCF, FFD2..FFD7, FFDA..FFDC, FFE0..FFE6, FFE8..FFEE
|225
|-
|Egyptian Hieroglyphs
|1300A, 13017, 1302D, 13032, 13034..13035, 13037..13038, 1303A..1303E, 1304E..1304F, 13055, 13057, 13068, 1309A, 130D2, 130D5, 130F6, 130FE, 13192, 1325F, 13267, 1326A, 13281, 13297, 1329E, 132B4, 132C1, 132E6, 13304, 1331F, 13378..1337B, 1337D..1337E, 133F3, 133FA..13403, 1340D, 13417, 1342B
|55
|-
|Mathematical Alphanumeric Symbols
|1D49C, 1D49E..1D49F, 1D4A2, 1D4A5..1D4A6, 1D4A9..1D4AC, 1D4AE..1D4B5
|18
|-
|Enclosed Alphanumeric Supplement
|1F100..1F1AD, 1F1E6..1F1FF
|200
|-
|Enclosed Ideographic Supplement
|1F200..1F202, 1F210..1F23B, 1F240..1F248, 1F250..1F251, 1F260..1F265
|64
|-
|Supplemental Symbols and Pictographs
|1F930
|1
|-
|CJK Unified Ideographs Extension B
|22ADC, 230F2, 25B27, 26F28
|4
|-
! colspan="2" |Total
!1472
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|1D49C FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE00
|
|chancery style # SCRIPT CAPITAL B
|-
|1D49E FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE00
|
|chancery style # SCRIPT CAPITAL E
|-
|2131 FE00
|
|chancery style # SCRIPT CAPITAL F
|-
|1D4A2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE00
|
|chancery style # SCRIPT CAPITAL H
|-
|2110 FE00
|
|chancery style # SCRIPT CAPITAL I
|-
|1D4A5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE00
|
|chancery style # SCRIPT CAPITAL L
|-
|2133 FE00
|
|chancery style # SCRIPT CAPITAL M
|-
|1D4A9 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE00
|
|chancery style # SCRIPT CAPITAL R
|-
|1D4AE FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Z
|-
|1D49C FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE01
|
|roundhand style # SCRIPT CAPITAL B
|-
|1D49E FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE01
|
|roundhand style # SCRIPT CAPITAL E
|-
|2131 FE01
|
|roundhand style # SCRIPT CAPITAL F
|-
|1D4A2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE01
|
|roundhand style # SCRIPT CAPITAL H
|-
|2110 FE01
|
|roundhand style # SCRIPT CAPITAL I
|-
|1D4A5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE01
|
|roundhand style # SCRIPT CAPITAL L
|-
|2133 FE01
|
|roundhand style # SCRIPT CAPITAL M
|-
|1D4A9 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE01
|
|roundhand style # SCRIPT CAPITAL R
|-
|1D4AE FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Z
|}
===Named Sequences===
Here is a table with new named character sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Name
|-
|0915 093C
|DEVANAGARI SEQUENCE FOR LETTER QA
|-
|0916 093C
|DEVANAGARI SEQUENCE FOR LETTER KHHA
|-
|0917 093C
|DEVANAGARI SEQUENCE FOR LETTER GHHA
|-
|091C 093C
|DEVANAGARI SEQUENCE FOR LETTER ZA
|-
|0921 093C
|DEVANAGARI SEQUENCE FOR LETTER DDDHA
|-
|0922 093C
|DEVANAGARI SEQUENCE FOR LETTER RHA
|-
|092B 093C
|DEVANAGARI SEQUENCE FOR LETTER FA
|-
|092F 093C
|DEVANAGARI SEQUENCE FOR LETTER YYA
|-
|09A1 09BC
|BENGALI SEQUENCE FOR LETTER RRA
|-
|09A2 09BC
|BENGALI SEQUENCE FOR LETTER RHA
|-
|09AF 09BC
|BENGALI SEQUENCE FOR LETTER YYA
|-
|0A32 0A3C
|GURMUKHI SEQUENCE FOR LETTER LLA
|-
|0A38 0A3C
|GURMUKHI SEQUENCE FOR LETTER SHA
|-
|0A16 0A3C
|GURMUKHI SEQUENCE FOR LETTER KHHA
|-
|0A17 0A3C
|GURMUKHI SEQUENCE FOR LETTER GHHA
|-
|0A1C 0A3C
|GURMUKHI SEQUENCE FOR LETTER ZA
|-
|0A2B 0A3C
|GURMUKHI SEQUENCE FOR LETTER FA
|-
|0B21 0B3C
|ORIYA SEQUENCE FOR LETTER RRA
|-
|0B22 0B3C
|ORIYA SEQUENCE FOR LETTER RHA
|}
== Unicode 15.0 ==
Unicode 15.0 was released on September 13, 2022. It encoded 149,186 characters, adding 4,489 new characters.
=== New blocks ===
* '''Arabic Extended-C''' (U+10EC0-U+10EFF), containing 3 characters, was added.
* '''Devanagari Extended-A''' (U+11B00-U+11B5F), containing 10 characters, was added.
* '''Kawi''' (U+11F00-U+11F5F), containing 86 characters, was added.
* '''Kaktovik Numerals''' (U+1D2C0-U+1D2DF), containing 20 characters, was added.
* '''Cyrillic Extended-D''' (U+1E030-U+1E08F), containing 63 characters, was added.
* '''Nag Mundari''' (U+1E4D0-U+1E4FF), containing 42 characters, was added.
* '''CJK Unified Ideographs Extension H''' (U+31350-U+323AF), containing 4192 characters, was added.
=== Extended blocks ===
* A Yamakkan (total 1 character) was added to '''Lao'''. (U+0ECE)
* A combining Anusvara Above Right (total 1 character) was added to '''Kannada'''. (U+0CF3)
* Letters Qa, Short I and Vocalic R (total 3 characters) were added to '''Khojki'''. (U+1123F-U+11241)
* An additional hieroglyph to Group V (total 1 character) was added to '''Egyptian Hieroglyphs'''
* Extended format controls (total 29 characters) were added to '''Egyptian Hieroglyph Format Controls'''. (U+13439-U+13455). The block was expanded from (U+13430-U+1343F) to (U+13430-U+1345F)
* Hiragana and Katakana Small Ko (total 2 characters) were added to '''Small Kana Extension'''. (U+1B132 and U+1B155)
* Letters for Malayalam transliteration (total 6 characters) were added to '''Latin Extended-G'''. (U+1DF25-U+1DF2A)
* A Wireless emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6DC)
* A Nine Pointed White Star (total 1 character) was be added to '''Geometric Shapes Extended'''. (U+1F7D9)
* A Lot of Fortune, eclipse symbols and symbols for dwarf planets (total 6 characters) were added to '''Alchemical symbols'''. (U+1F774-U+1F776 and U+1F77B-U+1F77F)
* (total 20 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA75-U+1FA77, U+1FA87-U+1FA88, U+1FAAD-U+1FAAF, U+1FABB-U+1FABF, U+1FACE-U+1FACF, U+1FADA-U+1FADB, U+1FAE8 and U+1FAF7-U+1FAF8)
* A disunified ideograph for Macao (total 1 character) was added to '''CJK Unified Ideographs Extension C'''. (U+2B739)
===Glyph Changes===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|IPA Extensions
|025E, 029A
|2
|-
|United Canadian Aboriginal Syllabics
|144B, 14D1, 1506, 15C0..15C3, 15E8..15EE, 1601, 1604..1607, 160A..160D, 1614..162D, 1630..163F, 1646..1647, 165A
|66
|-
|United Canadian Aboriginal Syllabics Extended
|18DB, 18EC, 18F1..18F2, 18F5
|5
|-
|Sundanese
|1BBF
|1
|-
|Optical Character Recognition
|2447
|1
|-
|CJK Unified Ideographs Extension A
|34DC, 3BF6, 3C43, 48B4, 4DBE
|5
|-
|CJK Unified Ideographs
|585F, 5F50, 6BC0, 7BC9, 833E
|5
|-
|Cyrillic Extended-B
|A66E
|1
|-
|Old Turkic
|10C47
|1
|-
|Egyptian Hieroglyphs
|various (new standardized variation sequences)
|94
|-
|Khitan Small Script
|18CCA
|1
|-
|Wancho (font update)
|1E2C0..1E2F9, 1E2FF
|59
|-
|Alchemical Symbols (font update)
|1F700..1F773
|116
|-
|CJK Unified Ideographs Extension B
|20048, 20A1C, 2143F, 21A5F, 21C08, 21FBA, 22ACF, 23392, 238A7, 23D8F, 23F4E, 25D20, 26E30, 27B48, 27C4F, 28633, 28B02, 28E9A, 29760, 2A60F
|20
|-
|CJK Unified Ideographs Extension C
|2B249
|1
|-
|CJK Unified Ideographs Extension E
|2BB37, 2BD7D, 2C151, 2C1E0, 2C2D6, 2C5CA, 2C810, 2CD34
|8
|-
|CJK Unified Ideographs Extension F
|2CF4E, 2D25D, 2D3EC, 2D6A7, 2D7BA, 2D979, 2DA74, 2DA97, 2DC13, 2DDC0, 2DF10, 2DF78, 2E05A, 2E0AE, 2E516, 2E640, 2E680, 2EA63
|18
|-
|CJK Compatibility Ideographs Supplement
|2F804, 2F805, 2F833, 2F835, 2F84C, 2F84F, 2F852, 2F855, 2F887, 2F88B, 2F899, 2F8A0, 2F8A6, 2F8A7, 2F8AD, 2F8B1, 2F8B4, 2F8B7, 2F8BA, 2F8D0, 2F8E0..2F8E2, 2F8E5, 2F8E6, 2F8FE, 2F900, 2F901, 2F907, 2F912, 2F922, 2F926, 2F936, 2F938, 2F94E, 2F959, 2F95F, 2F96C, 2F99F, 2F9B8, 2F9BA, 2F9D3, 2F9DB, 2F9DC, 2F9E8, 2F9EA, 2F9EE, 2FA00, 2FA0D, 2FA1B
|50
|-
|CJK Unified Ideographs Extension G
|302FC, 30723, 30A6D, 30CF7, 30DBF, 31006, 3105D
|7
|-
! colspan="2" |Total
!461
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|13091 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027
|-
|13092 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027A
|-
|13093 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D028
|-
|130A9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D047
|-
|1310F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F016
|-
|13117 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F023
|-
|1311C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F028
|-
|13121 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F032
|-
|13127 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F037A
|-
|13139 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13139 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13183 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH H005
|-
|13187 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH H008
|-
|131A0 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131A0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131B1 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B1 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B8 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M009
|-
|131B9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M010
|-
|131BA FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M010A
|-
|131CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M017
|-
|131EE FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131EE FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131F8 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N010
|-
|131F9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131F9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131FA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N012
|-
|131FA FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N012
|-
|13216 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH N035
|-
|13257 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O006
|-
|1327B FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH O029
|-
|1327F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O031
|-
|1327F FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O031
|-
|13285 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O036
|-
|1328C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O039
|-
|132A4 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132A4 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132AA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Q003
|-
|132CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH R024
|-
|132DC FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S010
|-
|132E7 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E7 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E9 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S020
|-
|132F8 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S033
|-
|132FD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S037
|-
|13302 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S042
|-
|13303 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S043
|-
|13307 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T001
|-
|13308 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T002
|-
|13310 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008
|-
|13311 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008A
|-
|13312 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13312 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13313 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13313 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13314 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T010
|-
|13314 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T010
|-
|1331B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331B FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T016A
|-
|13321 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13321 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13322 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13322 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13331 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T035
|-
|13331 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T035
|-
|1333B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U007
|-
|1333C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U008
|-
|1334A FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U022
|-
|13361 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U042
|-
|13373 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V007A
|-
|13377 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V010
|-
|13378 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V011
|-
|1337D FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V012A
|-
|13385 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V019
|-
|13399 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V026
|-
|1339A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V027
|-
|133AF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W001
|-
|133B0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W002
|-
|133BF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W014
|-
|133D3 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH X004A
|-
|133DD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH Y002
|-
|133F2 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z007
|-
|133F5 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z010
|-
|133F6 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z011
|-
|13403 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z015I
|-
|13416 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA008
|-
|13419 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|1341A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA012
|-
|13423 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA021
|-
|1342C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA030
|-
|1342E FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA032
|-
|13443 FE00
|
|expanded # EGYPTIAN HIEROGLYPH LOST SIGN
|-
|13444 FE00
|
|expanded # EGYPTIAN HIEROGLYPH HALF LOST SIGN
|-
|13445 FE00
|
|expanded # EGYPTIAN HIEROGLYPH TALL LOST SIGN
|-
|13446 FE00
|
|expanded # EGYPTIAN HIEROGLYPH WIDE LOST SIGN
|}
== Unicode 15.1 ==
Unicode 15.1 was released on September 12th, 2023. It encoded 149,813 characters, adding 627 new characters.
=== New Blocks ===
* '''CJK Unified Ideographs Extension I''' (U+2EBF0-U+2EE5F), containing 622 characters, was added.
=== Extended Blocks ===
* 4 Ideographic characters were added to '''Ideographic Description Characters'''. (U+2FFC-U+2FFF)
* An Ideographic subtraction (total 1 character) was added to '''CJK Strokes'''. (U+31EF)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|CJK Unified Ideographs Extension A
|357E, 358B..358E, 3599..359D, 35AF..35B0, 35B2..35B3, 35DF..35E1, 35EF, 360F, 3612, 3F94, 44D5, 48EE
|5
|-
|CJK Unified Ideographs
|5098, 512D, 517A, 5391, 54DB, 551C, 551F, 55B8, 55ED, 56AB, 591E, 594A, 5B2E, 5DFC..5DFD, 5EE4, 609E, 65B0, 65B3, 65D5, 65F2, 67B2, 6AB6, 6AEC, 6C69, 6FC2, 6FD3, 7019, 7361, 74BD, 7934, 820B, 826E, 83BB, 8412, 8456, 848A, 896F, 8E34, 8FD7, 9166, 9855, 985E, 9C4D
|5
|-
|Latin Extended-D
|A798
|1
|-
|Latin Extended-E
|AB5A
|1
|-
|Tangut
|17105, 172A4, 17BD1..17BD3, 17EF9, 18136
|59
|-
|Alchemical Symbols
|1F741, 1F747, 1F74C, 1F74F, 1F756, 1F758, 1F763, 1F768, 1F76D, 1F76E
|116
|-
|CJK Unified Ideographs Extension B
|20302, 2087A, 20C00, 230B7, 2339E, 236EF, 237C3, 23B87, 23CC0, 23CD9, 23E5E, 2486F, 249D6, 249E8, 24D6A, 2585E, 25D89, 26A5A..26A5B, 26A73, 26A82..26A83, 26A90, 26AA6, 26AA8, 26AD8, 27350, 279F8, 284A3, 28BBA, 29516, 29530
|20
|-
|CJK Unified Ideographs Extension C
|2A741, 2AB63, 2ACD8, 2AF6F, 2B173, 2B490
|1
|-
|CJK Unified Ideographs Extension E
|2BC2E, 2BF45, 2C04C, 2C13A, 2C43C, 2C43E, 2C816
|8
|-
|CJK Unified Ideographs Extension F
|2D1CC..2D1CD, 2D1DD, 2D1E4, 2D1F7, 2D203, 2D256, 2D266, 2D2A2, 2D2AC, 2D2DA
|18
|-
|CJK Unified Ideographs Extension G
|301D4, 301D9, 301E4, 301E8, 301FF..30200, 30205, 3020C, 30211, 30215..30217, 30220, 30234..30235, 30237
|7
|-
|CJK Unified Ideographs Extension H
|314B7, 31542, 31569, 31C7F, 31D5A, 31F68
|7
|-
! colspan="2" |Total
!164
|}
== Unicode 16.0 ==
Unicode 16.0 was released on September 10th, 2024. It encoded 154,998 characters, adding 5185 new characters.
=== New Blocks ===
* '''Todhri''' (U+105C0-U+105FF), containing 52 characters, was added.
* '''Garay''' (U+10D40-U+10D8F), containing 69 characters, was added.
* '''Tulu-Tigalari''' (U+11380-U+113FF), containing 80 characters, was added.
* '''Myanmar Extended-C''' (U+116D0-U+116FF), containing 20 characters, was added.
* '''Sunuwar''' (U+11BC0-U+11BFF), containing 44 characters, was added.
* '''Egyptian Hieroglyphs Extended-A''' (U+13460-U+143FF), containing 3995 characters, was added.
* '''Gurung Khema''' (U+16100-U+1613F), containing 58 characters, was added.
* '''Kirat Rai''' (U+16D40-U+16D7F), containing 58 characters, was added.
* '''Symbols for Legacy Computing Supplement''' (U+1CC00-U+1CEBF), containing 686 characters, was added.
* '''Ol Onal''' (U+1E5D0-U+1E5FF), containing 44 characters, was added.
=== Extended Blocks ===
* A combining diacritical mark for Jawi (total 1 character) was added to '''Arabic Extended-B'''. (U+0897)
* Inverted letters and a punctuation mark (total 3 characters) was added to '''Balinese'''. (U+1B4E-U+1B4F and U+1B7F)
* A letter Tje (total 2 characters) was added to '''Cyrillic Extended-C'''. (U+1C89-U+1C8A)
* Legacy computing symbols for Delete (total 3 characters) was added to '''Control Pictures'''. (U+2427-U+2429)
* CJK strokes HXG and SZP (total 2 characters) was added to '''CJK Strokes'''. (U+31E4-U+31E5)
* A capital Rams Horn, an S with Diagonal Stroke, Lamda Letters, and letters for Wakashan and Salishan Languages (total 6 characters) was added to '''Latin Extended-D'''. (U+A7CB-U+A7CD, U+A7DA-U+A7DC)
* A combining Alef overlay and letters with two dots vertically below (total 4 characters) was added to '''Arabic Extended-C'''. (U+10EC2-U+10EC4 and U+10EFC)
* A sign Nukta (total 1 character) was added to '''Kawi'''. (U+11F5A)
* A blank character (total 1 character) was added to '''Khitan Small Script'''. (U+18CFF)
* A rightwards arrow with hook, and arrows for legacy computing and arrows for Egyptology (total 12 characters) was added to '''Supplemental Arrows-C'''. (U+1F8B2-U+1F8BB, U+1F8C0-U+1F8C1)
* A Harp, Shovel, Leafless Tree, Fingerprint, Root Vegetable, Splatter, and Face with Bags Under Eyes (total 7 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA89, U+1FA8F, U+1FABE, U+1FAC6, U+1FADC, U+1FADF, and U+1FAE9)
* Graphic shapes for legacy computing (total 37 characters) was added to '''Symbols for Legacy Computing'''. (U+1FBCB-U+1FBEF)
== Unicode 17.0 ==
Unicode 17.0 was released on September 9th, 2025. It encoded 159,801 characters, adding 4,083 new characters.
=== New Blocks ===
* '''Sidetic''' (U+10940-U+1095F), containing 26 characters, was added.
* '''Sharada Supplement''' (U+11B60-U+11B7F), containing 8 characters, was added.
* '''Tolong Siki''' (U+11DB0-U+11DEF), containing 54 characters, was added.
* '''Beria Erfe''' (U+16EA0-U+16EDF), containing 50 characters, was added.
* '''Tangut Components Supplement''' (U+18D80-U+18DFF), containing 115 characters, was added.
* '''Miscellaneous Symbols Supplement''' (U+1CEC0-U+1CEFF), containing 34 characters, was added.
* '''Tai Yo''' (U+1E6C0-U+1E6FF), containing 55 characters, was added.
* '''CJK Unified Ideographs Extension J''' (U+323B0-U+3347F), containing 4298 characters, was added.
=== Extended Blocks ===
* A Noon with Ring Above (total 1 character) was added to '''Arabic Extended-B'''. (U+088F)
* An archaic ligature Shrii (total 1 character) was added to '''Telugu'''. (U+0C5C)
* An archaic ligature Shrii (total 1 character) was added to '''Kannada'''. (U+0CDC)
* Compound tone and harrington diacritics (total 26 characters) was to '''Combining Diacritical Marks Extended'''. (U+1ACF-U+1ADD, U+1AE0-U+1AEB)
* Saudi Riyal Sign (total 1 character) was added to '''Currency Symbols'''. (U+20C1)
* Equal Sign with Infinity Above (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B96)
* 2 capital letters for Middle English, Latin pharyngeal voiced fricative, and Modifier Letter Capital S (total 5 characters) was added to '''Latin Extended-D'''. (U+A7CE-U+A7CF, U+A7D2, U+A7D4, U+A7F1)
* Arabic Ligature Rahmatu Allaahi Alayh and Arabic Honorifics (total 25 characters) was added to '''Arabic Presentation Forms-A'''. (U+FBC3-U+FBD2, U+FD90, U+FD91, U+FDC8-U+FDCE)
* A Small Yeh Barree with Two Dots Below, Thin Noon, Biblical End of Verse, Yeh with Four Dots Below, Honorifics, Double Vertical Bar Below, and Small Low Noon (total 14 characters) was added to '''Arabic Extended-C'''. (U+10EC5-U+10EC7, U+10ED0-U+10ED8, U+10EFA-U+10EFB)
* Chinese Simplified and Traditional Er and Yangqin Slow Signs Two, Three, and Four (total 5 characters) was added to '''Ideographic Symbols and Punctuation'''. (U+16FF2-U+16FF6)
* Some additional ideographs (total 8 characters) was added to '''Tangut'''. (U+187F8-U+187FF)
* Additional ideographs (total 22 characters) was added to '''Tangut Supplement'''. (U+18D09-U+18D1E)
* Nine symbols (total 9 characters) was added to '''Symbols for Legacy Computing Supplement'''. (U+1CCFA-U+1CCFC, U+1CEBA-1CEBF)
* A Landslide (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D8)
* Historical asteroid symbols (total 4 characters) was added to '''Alchemical Symbols'''. (U+1F777-U+1F77A)
* Chemical symbols (total 9 characters) was added to '''Supplemental Arrows-C'''. (U+1F8D0-U+1F8D8)
* White and Black Chess Ferz and Alfil (total 4 characters) was added to '''Chess Symbols'''. (U+1FA54-U+1FA57)
* A trombone, treasure chest, hairy creature, orca, distorted face, and fight cloud (total 6 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA8A, U+1FA8E, U+1FAC8, U+1FACD, U+1FAEA, and U+1FAEF)
* An alarm bell symbol (total 1 character) was added to '''Symbols for Legacy Computing'''. (U+1FBFA)
* Additional ideographs (total 6 characters) was added to '''CJK Unified Ideographs Extension C'''. (U+2B73A-U+2B73F)
* Additional ideographs (total 12 characters) was added to '''CJK Unified Ideographs Extension E'''. (U+2CEA2-U+2CEAD)
== Unicode 18.0 ==
Unicode 18.0 will be released around September 2026. In August 2025, only 61 characters were accepted, but more were accepted in November 2025.
=== New Blocks ===
*'''Bengali Supplement''' (U+11DF0-U+11DFF), containing 2 characters, will be added.
* '''Archaic Cuneiform Numerals''' (U+12550-U+1268F), containing 311 characters, will be added.
* '''Jurchen''' (U+18E00-U+1919F), containing 914 characters, will be added.
* '''Jurchen Radicals''' (U+191A0-U+191DF), containing 51 characters, will be added.
* '''Musical Symbols Supplement''' (U+1D250-U+1D28F), containing 50 characters, will be added.
* '''Miscellaneous Symbols and Arrows Extended''' (U+1DB00-U+1DBFF), containing 29 characters, will be added.
* '''Seal Script''' (U+3D000-U+3FC3F), containing 11328 characters, will be added.
=== Extended Blocks ===
* Modifier letters Eh, Ini, and Yi (total 3 characters) will be added to '''Armenian'''. (U+0558, U+058B-U+058C)
* Hebrew Point Sheva Na Mudgash and Hebrew Point Dagesh Hazaq Mudgash (total 2 characters) will be added to '''Hebrew'''. (U+05C8-U+05C9)
* Signs for dot above and double dot above (total 2 characters) will be added to '''Oriya'''. (U+0B53-U+0B54)
* Alternate positioned IPA diacritics and diacritics for Chao and Khoe (total 7 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1ADE-U+1ADF, U+1AEC-U+1AF0)
* Latin subscript small letter w, y, and z and Modifier letter high and low vertical line (total 4 characters) will be added to '''Superscripts and Subscripts'''. (U+208F, U+209D-U+209F)
* Rufiyaa Sign, UAE Dirham Sign, and Omani Rial (total 3 characters) will be added to '''Currency Symbols'''. (U+20C2-U+20C4)
* Two Wiggly Exclamation Marks and Two Parenthesis with Middle Ring (total 4 characters) will be added to '''Supplemental Punctuation'''. (U+2E60-U+2E63)
* Latin capital letter closed omega and Latin capital letter r with long leg and (total 2 characters) will be added to '''Latin Extended-D'''. (U+A7DD and U+A7E2)
* Latin capital letter script r and script r with ring (total 2 characters) will be added to '''Latin Extended-E'''. (U+AB6C-U+AB6D)
* Latin modifier letters for clicks (total 5 characters) will be added to '''Latin Extended-F'''. (U+107BB-U+107BF)
* Arabic Crown Letters, Quranic Characters, and Arabic Crown (total 39 characters) will be added to '''Arabic Extended-C'''. (U+10EC9-U+10ECF, U+10ED9-U+10EEE, U+10EF0-U+10EF9)
* Devanagari Letter Alternate Ddda (total 1 character) will be added to '''Devanagari Extended-A'''. (U+11B0A)
* Extended Cuneiform Numeric Signs (total 12 characters) will be added to '''Cuneiform Numbers and Punctuation'''. (U+1246F, U+12475-U+1247F)
* Jurchen Small Script characters (total 5 characters) will be added to '''Khitan Small Script'''. (U+18CD6-U+18CDA)
* Two additional ideographs (total 2 characters) will be added to '''Tangut Supplement'''. (U+18D1F-U+18D20)
* Hiragana Digraph Koto, Katakana Diagraphs Toki, Tote, and Yori, letters alternate Ne, and Wi (total 6 characters) will be added to '''Kana Extended-A'''. (U+1B123-U+1B128)
* Katakana letter small archaic Ye (total 1 character) will be added to '''Small Kana Extension'''. (U+1B168)
* Leibnizian alchemical symbols, Leibnizian cossic characters, and Leibnizian mathematical signs and symbols (total 19 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED2-U+1CED4, U+1CEDD-U+1CEDF, U+1CEF1-U+1CEFD)
* Stein Zimmerman Symbols, Digit Slash Symbols, and other Symbols (total 23 characters) will be added to '''Musical Symbols'''. (U+1D127-U+1D128, U+1D1EB-U+1D1FF)
* Mathematical italic long s with descender s (U+1D6A6) will be added to '''Mathematical Alphanumeric Symbols'''.
* Affricate ligatures, letters with palatal hook, barred letters, RFE letters, Initial Teaching Alphabet, English Phonotypic Alphabet, Leibnizian cossic characters, and modifier letters (total 151 characters) will be added to '''Latin Extended-G'''. (U+1DF1F-U+1DF24, U+1DF2B-U+1DF81, U+1DF90-U+1DF96, U+1DFCD-U+1DFFF)
* A Tomobiki symbol (total 1 character) will be added to '''Enclosed Alphanumeric Supplement'''. (U+1F1AE)
* A lighthouse (total 1 character) will be added to '''Transport and Map Symbols'''. (U+1F6D9)
* A black circle with white vertical bar, and Extended Geometric Shapes (total 17 characters) will be added to '''Geometric Shapes Extended'''. (U+1F7DA-U+1F7DB, U+1F7F1-U+1F7FF)
* A meteor, eraser, net with handle, monarch butterfly, pickle, cracking face, leftwards thumb sign, and rightwards thumb sign (total 8 characters) will be added to '''Symbols and Pictographs Extended-A'''. (U+1FA8B-1FA8D, U+1FACC, U+1FADD, U+1FAEB, U+1FAF9-1FAFA)
* An additional ideograph (total 1 character) will be added to '''CJK Unified Ideographs Extension D'''. (U+2B81E)
== Code Points Provisionally Assigned==
This is a section where you can add any upcoming Unicode characters that have been [https://www.unicode.org/alloc/Pipeline.html#codepoint_reservation provisionally assigned for mature proposals] (but not yet accepted) for a future update of The Unicode Standard.
=== New Blocks ===
* '''Arabic Extended-D''' (U+10D90-U+10E5F), containing 3 characters, will be added.
* '''Sirmauri''' (U+11850-U+1188F), containing 55 characters, will be added.
* '''Leke''' (U+11B80-U+11BBF), containing 55 characters, will be added.
* '''Proto-Cuneiform''' (U+12690-U+12ECF), containing 1392 characters, will be added.
* '''Chisoi''' (U+16D80-U+16DAF), containing 40 characters, will be added.
* '''Mwangwego''' (U+16E00-U+16E3F), containing 64 characters, will be added.
* '''Shaaldaa''' (U+1C800-U+1CB2F), containing 804 characters, will be added.
=== Extended Blocks ===
* Telugu Sign Spacing Candrabindu (total 1 character) will be added to '''Telugu'''. (U+0C70)
* Kannada Signs Ardhanusvara and Combining Anusvara Above (total 1 character) will be added to '''Kannada'''. (U+0CF0 and U+0CF4)
* Mongolian Letter Manchu Alternative Ue (total 1 character) will be added to '''Mongolian'''. (U+1879)
* Combining Grave-Acute-Macron, Combining inverted lazy s Above, and Combining comma Above and acute (total 3 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1AF1-U+1AF3)
* Cyrillic small letter Yeru with connecting bar (total 1 character) will be added to '''Cyrillic Extended-C'''. (U+1C8B)
* Belarusian Ruble sign and Ruble sign with double vertical stem (total 2 characters) will be added to '''Currency Symbols'''. (U+20C5, U+20CF)
<!--* Combining Long Triple Solidus Overlay and Combining Saltire Overlay (total 2 characters) will be added to '''Combining Diacritical Marks for Symbols'''. (U+20F1-U+20F2)-->
<!--* Latin capital and small letter i with oblique stroke (total 2 characters) will be added to '''Latin Extended-D'''. (U+AB6E)-->
* Latin capital letter u with left hook (total 1 character) will be added to '''Latin Extended-E'''. (U+AB6E)
* Arabic Dotless Half-Yeh and Half-Yeh (total 2 characters) will be added to '''Arabic Extended-C'''. (U+10EC0-U+10EC1)<!--also Arabic Dotless Half-Jeem and Astronomical Kaf (U+10EC8, U+10EEF), up to 4 characters-->
<!--Brahmi minimizing virama (total 1 character) will be added to '''Brahmi'''. (U+1107E)-->
* Tulu-Tigalari letter combining anusvara above and letter archaic II (total 2 characters) will be added to '''Tulu-Tigalari'''. (U+113CB, U+113DA<!--planned to move to 113DB, with signs om pushpika with tail and shrii pushpika with tail added at U+113D9-U+113DA, up to 4 characters-->
<!--* Newa Letter Heavy Ya (total 1 character) will be added to '''Newa'''. (U+11462)-->
* Dogra Signs Candrabindu and Avaragha (total 2 characters) will be added to '''Dogra'''. (U+1183C-U+1183D)
* Devanagari Jivamuliya and Upadhmaniya (total 2 characters) will be added to '''Devanagari Extended-A'''. (U+11B0B-U+11B0C)
* Alchemical Symbol for Calx-2 and Alchemical Symbol for Retort-2 (total 2 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED1, U+1CED5)
<!--* Musical Symbol down arrowhead breath mark (total 1 character) will be added to '''Musical Symbols Supplement'''. (U+1D282)-->
<!--* Leibnizian letterlike symbols and miscellaneous mathematical symbols (total 15 characters) will be added to '''Miscellaneous Symbols and Arrows Extended'''. (U+1DB1D-U+1DB2B)-->
* Small w with palatal hook, small n and r with double middle tilde, small capital i with retroflex hook, small open q, x with stroke, small wavy y, schwa with right hook, Romance dialectology symbols, zh ligature, Albanian letter edhe, Modifier letter capital y, and modifier letter accents (total 17 characters) will be added to '''Latin Extended-G'''. (U+1DF82-U+1DF8F, U+1DF97-U+1DF9A, U+1DFC4-U+1DFCD)<!---also Albanian Frashëri letters, characters up to 26-->
<!--*Arabic Astronomical zero and five astronomical symbols (total 6 characters) will be added to Arabic Mathematical Alphabetic Symbols (U+1EEE0-U+1EEE5)-->
==Roadmap Blocks==
This is a section where proportional maps of proposed allocations to Unicode and ISO/IEC 10646 are presented. Italic indicates scripts for which detailed proposals have not yet been written.<ref>[https://unicode.org/roadmaps/smp/]</ref>
* '''Northern Palaeohispanic''' (U+10200-U+1023F)
* '''Southern Palaeohispanic''' (U+10240-U+1027F)
* '''''Shavian Quikscript''' (U+103E0-U+103FF)''
* '''Combining Diacritical Marks Extended-A''' (U+107C0-U+107FF)
* '''Proto-Sinaitic''' (U+108B0-U+108DF)
* '''''Numidian''' (U+10960-U+1097F)''
* '''Balti''' (U+10AA0-U+10ABF)
* '''Book Pahlavi''' (U+10BB0-U+10BDF)
* '''Baburi''' (U+10BE0-U+10BFF)
* '''Arabic Extended-D''' (U+10D90-U+10E5F)
* '''Landa''' (U+11250-U+1127F)
* '''Tani Lipi''' (U+114E0-U+114FF)
* '''Ranjana''' (U+11500-U+1157F)
* '''Zou''' (U+11750-U+117AF)
* '''Pyu''' (U+117B0-U+117FF)
* '''Vateluttu''' (U+11960-U+1199F)
* '''Balti-B''' (U+11CC0-U+11CFF)
* '''Tocharian''' (U+11E00-U+11E6F)
* '''Khotanese''' (U+11E70-U+11ECF)
* '''Pallava''' (U+11F60-U+11FAF)
* '''''Egyptian Hieroglyphs Extended-B''' (U+14680-U+151FF)''
* '''Mayan Hieroglyphs''' (U+15500-U+15AFF)
* '''Kore Sebeli''' (U+15B00-U+15B6F)<!--proposed to be accepted, 93 characters-->
* '''Mandombe''' (U+15B80-U+15FFF)
* '''Kurukh Banna''' (U+16140-U+1618F)
* '''Moon''' (U+161A0-U+161FF)
* '''Blissymbols''' (U+16200-U+167FF)
* '''Woleai''' (U+16B90-U+16BFF)
* '''Kpelle''' (U+16C00-U+16C7F)
* '''Tikamuli''' (U+16C80-U+16CBF)
* '''Tangsa (Khimhun)''' (U+16CD0-U+16CFF)
* '''Afaka''' (U+16D00-U+16D3F)
* '''Kulitan''' (U+16DD0-U+16DFF)
* '''''Bopomofo Extended-A''' (U+16FA0-U+16FAF)''
* '''Kanbun Extended-A''' (U+16FB0-U+16FDF)
* '''Khitan Large Script''' (U+19200-U+199FF)
* '''Pau Cin Hau Syllabary''' (U+19E00-U+1A2FF)
* '''Eskaya''' (U+1A300-U+1A75F)
* '''Rejang Extended''' (U+1A760-U+1A77F)
* '''''Kaida''''' (U+1A780-U+1A7FF)
* '''Naxi Dongba''' (U+1A800-U+1ACFF)
* '''''Naxi Geba''' (U+1AD00-U+1AFCF)''
* '''''Kana Extended-C''' (U+1AFD0-U+1AFEF)''
* '''Shuishu Logograms''' (U+1B300-U+1B5FF)
* '''Lisu Syllabic Script''' (U+1B600-U+1B9FF)
* '''Indus''' (U+1BA00-U+1BB8F)
* '''Pitman Shorthand''' (U+1BCB0-U+1BCFF)
* '''Proto-Elamite''' (U+1BE00-U+1C37F)
* '''Linear Elamite''' (U+1C380-U+1C4FF)
* '''Ndiko Jonam''' (U+1CB30-U+1CB7F)<!--proposed to be accepted, 60 characters-->
* '''N<nowiki>'</nowiki>ti''' (U+1CB80-U+1CBAF)<!--proposed to be accepted, 47 characters-->
* '''Old Chinese Musical Symbols (Flute and Pipa)''' (U+1D290-U+1D2BF)
* '''''Mathematical Alphanumeric Symbols Supplement''' (U+1D380-U+1D3FF)''
* '''Jianzi Format Controls''' (U+1DAE0-U+1DAFF)
* '''Leibnizian Ambiguous Signs''' (U+1DC00-U+1DC3F)<!--proposed to be accepted, 54 characters-->
* '''Eebee Hmong''' (U+1E150-U+1E1FF)
* '''Western Cham''' (U+1E200-U+1E26F)
* '''Loma''' (U+1E300-U+1E41F)
* '''Bagam''' (U+1E420-U+1E4CF)
* '''Pungchen''' (U+1E500-U+1E52F)
* '''''Pungchung''' (U+1E530-U+1E55F)''
* '''''Marchung''' (U+1E560-U+1E59F)''
* '''Brusha''' (U+1E5A0-U+1E5CF)
* '''''Chola''' (U+1E600-U+1E65F)''
* '''Box-Headed''' (U+1E660-U+1E6BF)
* '''Lampung''' (U+1E700-U+1E73F)
* '''Kerinci''' (U+1E740-U+1E76F)
* '''Buginese Supplement''' (U+1E770-U+1E7BF)
* '''''Lontara Bilang-Bilang''' (U+1E7C0-U+1E7DF)''
* '''N'Ko Supplement''' (U+1E960-1E97F)
* '''''Byblos''''' (U+1EB90-U+1EBFF)
* '''Persian Siyaq Numbers''' (U+1EC00-U+1EC7F)
* '''Diwani Siyaq Numbers''' (U+1ECC0-U+1ECFF)
* '''''Extended Pictographic Characters''' (U+1FC00-U+1FFFF)''
* '''CJK Unified Ideographs Components-A''' (U+2FA20-U+2FA9F)
* '''CJK Unified Ideographs Components-B''' (U+2FAA0-U+2FC1F)
== References ==
{{reflist}}
lyxch5h2ep2tt7fb2vm9371kjq5m5mw
4656275
4656274
2026-08-04T18:11:21Z
Alexlatham96
377450
/* Code Points Provisionally Assigned */ update
4656275
wikitext
text/x-wiki
{{pp-protected|small=yes}}
{{Unicode page}}
{{TOC right}}
{{refimprove|date=June 2017}}
This page is about each version specification, and the differences between the versions.
== Unicode 1.0 ==
Unicode 1.0 was the first version of Unicode, released October 1991. It encoded 7,094 new characters.
=== “Blocks” ===
This version of Unicode did not formally group characters in blocks. But in comparison with version 2.0, the following “blocks” were available:
U+0000-U+FFFD
51 Blocks
* '''Basic Latin (formerly called ASCII)''' (U+0000-U+007F), containing 128 characters.
* '''Latin-1 Supplement (formerly called Latin1)''' (U+0080-U+00FF), containing 128 characters.
* '''Latin Extended-A''' '''(formerly called European Latin)''' (U+0100-U+017F), containing 127 characters.
* '''Latin Extended-B''' '''(formerly called Extended Latin)''' (U+0180-U+01FF), containing 113 characters.
* '''IPA Extensions''' '''(formerly called Standard Phonetic)''' (U+0250-U+02AF), containing 89 characters.
* '''Spacing Modifier Letters''' '''(formerly called Modifier Letters)''' (U+02B0-U+02FF), containing 57 characters.
* '''Combining Diacritical Marks''' '''(formerly called Generic Diacritical Marks)''' (U+0300-U+036F), containing 66 characters.
* '''Greek and Coptic''' '''(formerly called Greek)''' (U+0370-U+03FF), containing 112 characters.
* '''Cyrillic''' (U+0400-U+04FF), containing 192 characters.
* '''Armenian''' (U+0530-U+058F), containing 84 characters.
* '''Hebrew''' (U+0590-U+05FF), containing 52 characters.
* '''Arabic''' (U+0600-U+06FF), containing 169 characters.
* '''Devanagari''' (U+0900-U+097F), containing 104 characters.
* '''Bengali''' (U+0980-U+09FF), containing 89 characters.
* '''Gurmukhi''' (U+0A00-U+0A7F), containing 74 characters.
* '''Gujarati''' (U+0A80-U+0AFF), containing 75 characters.
* '''Oriya''' (U+0B00-U+0B7F), containing 78 characters.
* '''Tamil''' (U+0B80-U+0BFF), containing 61 characters.
* '''Telugu''' (U+0C00-U+0C7F), containing 80 characters.
* '''Kannada''' (U+0C80-U+0CFF), containing 80 characters.
* '''Malayalam''' (U+0D00-U+0D7F), containing 78 characters.
* '''Thai''' (U+0E00-U+0E7F), containing 92 characters.
* '''Lao''' (U+0E80-U+0EFF), containing 70 characters.
* '''Tibetan''' (U+1000-U+105F), containing 71 characters.
* '''Georgian''' (U+10A0-U+10FF), containing 78 characters.
* '''General Punctuation''' (U+2000-U+206F), containing 67 characters.
* '''Superscripts and Subscripts''' (U+2070-U+209F), containing 28 characters.
* '''Currency Symbols''' (U+20A0-U+20CF), containing 11 characters.
* '''Combining Marks for Symbols''' '''(formerly called Diacritical Marks for Symbols)''' (U+20D0-U+20FF), containing 18 characters.
* '''Letterlike Symbols''' (U+2100-U+214F), containing 57 characters.
* '''Number Forms''' (U+2150-U+218F), containing 48 characters.
* '''Arrows''' (U+2190-U+21FF), containing 91 characters.
* '''Mathematical Operators''' (U+2200-U+22FF), containing 242 characters.
* '''Miscellaneous Technical''' (U+2300-U+23FF), containing 43 characters.
* '''Control Pictures''' '''(formerly called Pictures for Control Codes)''' (U+2400-U+243F), containing 37 characters.
* '''Optical Character Recognition''' (U+2440-U+245F), containing 11 characters.
* '''Enclosed Alphanumerics''' (U+2460-U+24FF), containing 139 characters.
* '''Box Drawing''' '''(formerly called Form and Chart Components)''' (U+2500-U+257F), containing 128 characters.
* '''Block Elements''' '''(formerly called Blocks)''' (U+2580-U+259F), containing 22 characters.
* '''Geometric Shapes''' (U+25A0-U+25FF), containing 79 characters.
* '''Miscellaneous Symbols''' '''(formerly called Miscellaneous Dingbats)''' (U+2600-U+26FF), containing 106 characters.
* '''Dingbats''' '''(formerly called Zapf Dingbats)''' (U+2700-U+27BF), containing 160 characters.
* '''CJK Symbols and Punctuation''' (U+3000-U+303F), containing 56 characters.
* '''Hiragana''' (U+3040-U+309F), containing 90 characters.
* '''Katakana''' (U+30A0-U+30FF), containing 90 characters.
* '''Bopomofo''' (U+3100-U+312F), containing 40 characters.
* '''Hangul Compatibility Jamo (formerly called Hangul Elements)''' (U+3130-U+318F), containing 94 characters.
* '''Kanbun (formerly called CJK Miscellaneous)''' (U+3190-U+31FF), containing 16 characters.
* '''Enclosed CJK Letters and Months''' '''(formerly called''' '''Enclosed CJK Letters and Ideographs)''' (U+3200-U+32FF), containing 191 characters.
* '''CJK Compatibility''' '''(formerly called CJK Squared Words for U+3300-U+337F and CJK Squared Abbreviations for U+3380-33FF)''' (U+3300-U+33FF), containing 187 characters.
* '''Hangul''' (U+3400-U+3D2D), containing 2,350 characters.
* '''Private Use Area''' (U+E000-U+FDFF), reserved for 5,632 characters.
* '''CJK Compatibility Forms''' '''(formerly called CNS 11643 Compatibility)''' (U+FE30-U+FE4F), containing 28 characters.
* '''Small Form Variants''' '''(formerly called Small Variants)''' (U+FE50-U+FE6F), containing 26 characters.
* '''Arabic Presentation Forms-B''' '''(formerly called Basic Glyphs for Arabic Language)''' (U+FE70-U+FEFF), containing 140 characters.
* '''Halfwidth and Fullwidth Forms''' '''(formerly called Halfwidth and Fullwidth Variants)''' (U+FF00-U+FFEF), containing 216 characters.
* '''Specials''' '''(formerly called Special)''' (U+FFF0-U+FFFF), containing 1 character.
== Unicode 1.0.1 ==
Unicode 1.0.1 was released June 1992. It encoded 28,292 characters, adding 21,204 new characters and removing 6 characters, for a net increase of 21,198 characters.
=== New blocks ===
* '''CJK Unified Ideographs''' (U+4E00-U+9FFF), containing 20,902 Han Ideographs for Chinese, Japanese and Korean, was added.
* '''CJK Compatibility Ideographs''' (U+F900-U+FAFF), containing 302 Han Ideographs for compatibility with existing character sets, was added.
=== Removed characters ===
* Letters Ka and Kha with Ogonek (total 4 characters) were removed from '''Cyrillic'''. (U+04C5-U+04C6 and U+04C9-U+04CA)
* APL Compose Operator and APL Out (total 2 characters) were removed from '''Miscellaneous Technical'''. (U+2300-U+2301)
=== Rearranged characters ===
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
*'''Circled Katakana:''' ''The characters well be arranged in modern order: e.g., A, I, U, E, O, KA, KI'' (U+32D0-U+32FE)
*'''Basic Glyphs For Arabic Language:''' ''The character shapes will be arranged in different order: Isolate, Final, Initial and Medial'' (U+FE80-FEFC)
=== Characters with semantics changed ===
*'''Zero Width Non-Joiner''' [ZWNJ] (U+20DC)
*'''Zero Width Joiner''' [ZWJ] (U+20DD)
== Unicode 1.1 ==
Unicode 1.1 was released June 1993. It encoded 34,168 characters, adding 5,969 new characters and removing 93 characters, for a net increase of 5,876 characters. It finalized the long anticipated Han Unification.
=== New blocks ===
* '''Hangul Jamo''' (U+1100-U+11FF), containing 240 ''jamo'' for the Hangul script, was added.
* '''Latin Extended Additional''' (U+1E00-U+1EFF), containing 245 precomposed characters for transliteration and Vietnamese, was added.
* '''Greek Extended''' (U+1F00-U+1FFF), containing 233 precomposed characters for polytonic Greek, was added.
* '''Hangul Supplementary-A''' (U+3D2E-U+44B7), containing 1,930 precomposed syllables for the Hangul script, was added.
* '''Hangul Supplementary-B''' (U+44B8-U+4DFF), containing 2,376 precomposed syllables for the Hangul script, was added.
* '''Alphabetic Presentation Forms''' (U+FB00-U+FB4F), containing 57 precomposed characters and ligatures, was added.
* '''Arabic Presentation Forms-A''' (U+FB50-U+FDFF), containing 593 combinations of Arabic letters, was added.
* '''Combining Half Marks''' (U+FE20-U+FE2F), containing 4 halves of diacritical marks, was added.
=== Extended blocks ===
* The long S (ſ) (total 1 character) was added to '''Latin Extended-A'''. (U+017F)
* The Hungarian Dz, characters for transliteration purposes and precomposed characters with double grave and inverted breve (total 35 characters) were added to '''Latin Extended-B''' (U+01F1-U+01F5 and U+01FA-U+0217). The block was expanded from (U+0180-U+01FF) to (U+0180-U+024F)
* Diacritics for polytonic Greek and double width diacritics (total 6 characters) were added to '''Combining Diacritical Marks'''. (U+0342-U+0345 and U+0360-U+0361)
* Compatibility character now deprecated, Ano Teleia, and other characters (total 5 characters) were added to '''Greek and Coptic''' (U+0374-U+0375, U+037A, U+037E and U+0387).
* Additional characters for non-Slavic languages (total 38 characters) were added to '''Cyrillic'''. (U+04D0-U+04EB, U+04EE-U+04F5 and U+04F8-U+04F9)
* A ligature of Ech and Yiwn (և) (total 1 character) was added to '''Armenian'''. (U+0587)
* One deprecated compatibility character and several characters for biblical texts (total 25 characters) were added to '''Arabic'''. (U+066D and U+06D6-U+06ED)
* A sign Virama (total 1 character) was added to '''Gurmukhi''' (U+0A4D).
* Letters Candra O and E (total 3 characters) were added to '''Gujarati'''. (U+0A8D, U+0A91 and U+0AC9)
* An Ai Length mark (total 1 character) was added to '''Oriya'''. (U+0B56)
* An undertie, a pair of brackets and six formatting characters now deprecated (total 9 characters) were added to '''General Punctuation'''. (U+203F, U+2045-U+2046 and U+206A-U+206F)
* Some additional symbols and the complete set of APL functional symbols (total 79 characters) were added to '''Miscellaneous Technical'''. (U+2300 and U+232D-U+237A)
* A large circle (◯) (total 1 character) was added to '''Geometric Shapes'''. (U+25EF)
* The ideographic telegraph line feed separator symbol (〷) (total 1 character) was added to '''CJK Symbols and Punctuation'''. (U+3037)
* Four Katakana letters not in use since 1945 (total 4 characters) were added to '''Katakana'''. (U+30F7-U+30FA)
* Ideographic telegraph symbols for the twelve months (total 12 characters) were added to '''Enclosed CJK Letters and Months'''. (U+32C0-U+32CB)
* Ideographic telegraph symbols for hours and days and six additional measure units (total 62 characters) were added to '''CJK Compatibility'''. (U+3358-U+3376 and U+33E0-U+33FE)
* Some more space (total 2,304 characters) was added to the '''Private Use Area'''.
* Seven halfwidth geometric shapes (total 7 characters) were added to '''Halfwidth and Fullwidth Forms'''. (U+FFE8-U+FFEE)
=== Removed blocks ===
* '''Tibetan''', containing 71 letters for the Tibetan script, was removed from the Unicode standard.
=== Removed characters ===
* A total of 10 characters were removed from '''Greek and Coptic'''. (U+0370-U+0372, U+03D7-U+03D9, U+03DB, U+03DD, U+03DF, and U+03E1)
* Point Varika (total 1 character) was removed from ''Hebrew''. (U+05F5)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Thai'''. (U+0E70-U+0E74)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Lao'''. (U+0EF0-U+0EF4)
* An Ideographic Ditto Mark (total 1 character) was removed from '''CJK Symbols and Punctuation''' (U+3004) and merged with CJK Unified Ideograph-4EDD.
=== Rearranged characters ===
* Greek character U+03F3 was changed from Spacing Tonos to Letter Yot.
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
== Unicode 2.0 ==
Unicode 2.0 was released July 1996. It encoded 38,885 characters, adding 11,373 new characters and removing 6,656 characters, for a net increase of 4,717 characters. This was the first Unicode version to reserve blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Hangul Syllables''' (U+AC00-U+D7AF), containing 11,172 precomposed syllables for the Hangul script, was added.
* '''High Surrogates''' (U+D800-U+DB7F), setting aside 896 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''High Private Use Surrogates''' (U+DB80-U+DBFF), setting aside 128 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Low Surrogates''' (U+DC00-U+DFFF), setting aside 1,024 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Supplementary Private Use Area-A''' (U+F0000-U+FFFFF), reserving 65,534 characters for private use, was added.
* '''Supplementary Private Use Area-B''' (U+100000-U+10FFFF), reserving 65,534 characters for private use, was added.
=== Reinstated blocks ===
* '''Tibetan''' (U+0F00-U+0FFF), now containing 168 characters for the Tibetan script including religious signs, was readded.
=== Removed blocks ===
* '''Hangul''', containing 2,350 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-A''', containing 1,930 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-B''', containing 2,376 precomposed syllables for the Hangul script, was removed from the Unicode standard.
=== Extended blocks ===
* Cantillation marks for use in religious texts (total 31 characters) were added to '''Hebrew'''. (U+0591-U+05A1, U+05A3-U+05AF and U+05C4)
* A long S with Dot Above (total 1 character) was added to '''Latin Extended Additional'''. (U+1E9B)
* A Vietnamese Dong sign (total 1 character) was added to '''Currency Symbols'''. (U+20AB)
== Unicode 2.1 ==
Unicode 2.1 was released May 1998. It encoded 38,887 characters, adding only 2 new characters.
=== Extended blocks ===
* A Euro sign (total 1 character) was added to '''Currency Symbols'''. (U+20AC)
* An Object Replacement Character (total 1 character) was added to '''Specials'''. (U+FFFC)
== Unicode 3.0 ==
Unicode 3.0 was released September 1999. It was a big update and encoded 49,194 characters, adding 10,307 new characters.
=== New blocks ===
* '''Syriac''' (U+0700-U+074F), containing 71 characters used for writing in Syriac script, was added.
* '''Thaana''' (U+0780-U+07BF), containing 49 characters used for writing in Thaana script, was added.
* '''Sinhala''' (U+0D80-U+0DFF), containing 80 characters for the Sinhala script, was added.
* '''Myanmar''' (U+1000-U+109F), containing 78 characters for the Burmese script, was added.
* '''Ethiopic''' (U+1200-U+137F), containing 345 syllables and punctuation marks for the Ethiopic script, was added.
* '''Cherokee''' (U+13A0-U+13FF), containing 85 syllables for the Cherokee script, was added.
* '''Unified Canadian Aboriginal Syllabics''' (U+1400-U+167F), containing 630 syllables and punctuation marks for writing in indigenous languages of Canada, was added.
* '''Ogham''' (U+1680-U+169F), containing 29 characters for the ancient Ogham script, was added.
* '''Runic''' (U+16A0-U+16FF), containing 81 characters for the Germanic runes, was added.
* '''Khmer''' (U+1780-U+17FF), containing 103 characters for the Khmer script, was added.
* '''Mongolian''' (U+1800-U+18AF), containing 155 characters for the classical Mongolian script, was added.
* '''Braille Patterns''' (U+2800-U+28FF), containing 256 Braille letters, was added.
* '''CJK Radicals Supplement''' (U+2E80-U+2EFF), containing 115 non-Kangxi radicals, was added.
* '''Kangxi Radicals''' (U+2F00-U+2FDF), containing 214 radicals from the Kangxi dictionary, was added.
* '''Ideographic Description Characters''' (U+2FF0-U+2FFF), containing 12 characters used to describe a Han ideograph not available in the font, was added.
* '''Bopomofo Extended''' (U+31A0-U+31BF), containing 24 characters used for phonetic transcription of minority languages of Taiwan, was added.
* '''CJK Unified Ideographs Extension A''' (U+3400-U+4DBF), containing 6,582 additional Han Ideographs, was added.
* '''Yi Syllables''' (U+A000-U+A48F), containing 1,165 syllables of the modern Yi script, was added.
* '''Yi Radicals''' (U+A490-U+A4CF), containing 50 radicals of Yi Syllables, was added.
=== Extended blocks ===
* Additional precomposed characters, letters and capital letters of lowercase-only letters (total 30 characters) were added to '''Latin Extended-B'''. (U+01F6-U+01F9, U+0218-U+021F and U+0222-U+0233)
* Extensions for disordered speech (total 5 characters) were added to '''IPA Extensions'''. (U+02A9-U+02AD)
* Some additional modifier letters (total 6 characters) were added to '''Spacing Modifier Letters'''. (U+02DF and U+02EA-U+02EE)
* Additional combining diacritics for IPA (total 10 characters) were added to '''Combining Diacritical Marks'''. (U+0346-U+034E and U+0362)
* Lowercase versions of archaic letters and the Kai symbol (total 5 characters) were added to '''Greek and Coptic'''. (U+03D7, U+03DB, U+03DD, U+03DF and U+03E1)
* Nonstandard letters for Macedonian, combining numeral signs and three letters for Kildin Sami (total 12 characters) were added to '''Cyrillic'''. (U+0400, U+040D, U+0450, U+045D, U+0488-U+0489, U+048C-U+048F and U+04EC-U+04ED)
* A Hyphen (total 1 character) was added to '''Armenian'''. (U+058A)
* Combining hamza and maddah and nine additional Arabic characters (total 12 characters) were added to '''Arabic'''. (U+0653-U+0655, U+06B8-U+06B9, U+06BF, U+06CF and U+06FA-U+06FE)
* Additional letters and religious symbols (total 25 characters) were added to '''Tibetan'''. (U+0F6A, U+0F96, U+0FAE-U+0FB0, U+0FB8, U+0FBA-U+0FBC, U+0FBE-U+0FCC and U+0FCF)
* A narrow no-break space and 6 additional punctuation marks (total 7 characters) were added to '''General Punctuation'''. (U+202F and U+2048-U+204D)
* The Kip, Tugrik and Drachma sign (total 3 characters) were added to '''Currency Symbols'''. (U+20AD-U+20AF)
* An enclosing screen and an enclosing key (total 2 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E2-U+20E3)
* The information symbol and a rotated Q (total 2 characters) were added to '''Letterlike Symbols'''. (U+2139-U+213A)
* A mirrored Roman capital numeral hundred (Ↄ) (total 1 character) was added to '''Number Forms'''. (U+2183)
* Some additional arrows (total 9 characters) were added to '''Arrows'''. (U+21EB-U+21F3)
* Some additional technical symbols, including common keys on a 101 keyboard (total 33 characters) were added to '''Miscellaneous Technical'''. (U+2301, U+237B and U+237D-U+239A)
* Two additional control pictures (total 2 characters) were added to '''Control Pictures'''. (U+2425-U+2426)
* Squares and circles with quadrants (total 8 characters) were added to '''Geometric Shapes'''. (U+25F0-U+25F7)
* Two Syriac crosses and a signature mark (total 3 characters) were added to '''Miscellaneous Symbols'''. (U+2619 and U+2670-U+2671)
* Three Hangzhou numerals and a variation indicator (total 4 characters) were added to '''CJK Symbols and Punctuation'''. (U+3038-U+303A and U+303E)
* A ligature Yod with Hiriq (יִ) (total 1 character) was added to '''Alphabetic Presentation Forms'''. (U+FB1D)
* Three additional control characters for ruby markup (total 3 characters) were added to '''Specials'''. (U+FFF9-U+FFFB)
== Unicode 3.1 ==
Unicode 3.1 was released March 2001. It encoded 94,140 characters, adding 44,946 new characters, and mainly focused on blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Old Italic''' (U+10300-U+1032F), containing 35 letters for the Etruscan script, was added.
* '''Gothic''' (U+10330-U+1034F), containing 27 letters for the Gothic script, was added.
* '''Deseret''' (U+10400-U+1044F), containing 76 letters for the constructed Deseret script, was added.
* '''Byzantine Musical Symbols''' (U+1D000-U+1D0FF), containing 246 symbols for musical notation in Byzantine, was added.
* '''Musical Symbols''' (U+1D100-U+1D1FF), containing 219 characters for current musical notation, was added.
* '''Mathematical Alphanumeric Symbols''' (U+1D400-U+1D7FF), containing 991 Latin and Greek letters in serif, sans-serif, bold, italic, double-struck, script and Fraktur/Blackletter, was added.
* '''CJK Unified Ideographs Extension B''' (U+20000-U+2A6DF), containing 42,711 additional Chinese Ideographs, was added.
* '''CJK Compatibility Ideographs Supplement''' (U+2F800-U+2FA1F), containing 542 additional Chinese Ideographs for compatibility purposes, was added.
* '''Tags''', containing 97 language tags, was added. (U+E0000-U+E007F)
=== Extended noncharacters ===
* The Noncharacters range: U+FDD0..U+FDEF were added to '''Arabic Presentation Forms-A'''.
=== Extended blocks ===
* The capital Theta symbol and the Lunate Epsilon symbol (total 2 characters) were added to '''Greek and Coptic'''. (U+03F4-U+03F5)
=== Characters and Scripts Under Investigation or Rejected ===
* Khmer Sign Laak Was Rejected. (U+17DD) From '''Khmer.'''
* Georgian Letter U-Brjuu Was Rejected. From '''Georgian.'''
== Unicode 3.2 ==
Unicode 3.2 was released March 2002. It encoded 95,156 characters, adding 1,016 new characters.
=== New blocks ===
* '''Cyrillic Supplementary (now Cyrillic Supplement)''' (U+0500-U+052F), containing 16 characters used for the Komi language, was added.
* '''Tagalog''' (U+1700-U+171F), containing 20 characters for the Baybayin script, was added.
* '''Hanunoo''' (U+1720-U+173F), containing 23 characters and punctuation for the Hanunó'o script, was added.
* '''Buhid''' (U+1740-U+175F), containing 20 characters for the Buhid script, was added.
* '''Tagbanwa''' (U+1760-U+177F), containing 18 characters for the Tagbanwa script, was added.
* '''Miscellaneous Mathematical Symbols-A''' (U+27C0-U+27EF), containing 28 symbols used in math notation, was added.
* '''Supplemental Arrows-A''' (U+27F0-U+27FF), containing 16 additional arrows, was added.
* '''Supplemental Arrows-B''' (U+2900-U+297F), containing 128 special arrows, was added.
* '''Miscellaneous Mathematical Symbols-B''' (U+2980-U+29FF), containing 128 additional mathematical symbols, was added.
* '''Supplemental Mathematical Operators''' (U+2A00-U+2AFF), containing 256 additional mathematical operators, was added.
* '''Katakana Phonetic Extensions''' (U+31F0-U+31FF), containing 16 Katakana letters used for Ainu, was added.
* '''Variation Selectors''' (U+FE00-U+FE0F), containing 16 symbols used for indicating variations, was added.
=== Extended blocks ===
* A capital letter N with Long Right Leg (total 1 character) was added to '''Latin Extended-B'''. (U+0220)
* The combining grapheme joiner and combining Latin letters used in medieval texts (total 14 characters) were added to '''Combining Diacritical Marks'''. (U+034F and U+0363-U+036F)
* The Qoppa and a reversed lunate epsilon symbol (total 3 characters) were added to '''Greek and Coptic'''. (U+03D8-U+03D9 and U+03F6)
* Four additional letters used for the Kildin Sami language (total 8 characters) were added to '''Cyrillic'''. (U+048A-U+048B, U+04C5-U+04C6, U+04C9-U+04CA and U+04CD-U+04CE)
* A dotless Beh and a dotless Qaf (total 2 characters) were added to '''Arabic'''. (U+066E-U+066F)
* A Letter for Addu dialect (total 1 character) was added to '''Thaana'''. (U+07B1)
* The letters Yn and Elifi (total 2 characters) were added to '''Georgian'''. (U+10F7-U+10F8)
* Some additional punctuation marks and control characters (total 12 characters) were added to '''General Punctuation'''. (U+2047, U+204E-U+2052, U+2057 and U+205F-U+2063)
* A superscript letter I (total 1 character) was added to '''Superscripts and Subscripts'''. (U+2071)
* German Penny and Peso sign (total 2 characters) were added to '''Currency Symbols'''. (U+20B0-U+20B1)
* Some additional combining characters (total 7 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E4-U+20EA)
* Some double-struck and reversed/turned letters (total 15 characters) were added to '''Letterlike Symbols'''. (U+213D-U+214B)
* Some additional arrows (total 12 characters) were added to '''Arrows'''. (U+21F4-U+21FF)
* Some additional mathematical operators (total 14 characters) were added to '''Mathematical Operators'''. (U+22F2-U+22FF)
* Variable-width and additional symbols (total 53 characters) were added to '''Miscellaneous Technical'''. (U+237C and U+239B-U+23CE)
* Black and double circled numerals (total 20 characters) were added to '''Enclosed Alphanumerics'''. U+24EB-U+24FE)
* Quadrant elements (total 10 characters) were added to '''Block Elements'''. (U+2596-U+259F)
* Some additional triangles and squares (total 8 characters) were added to '''Geometric Shapes'''. (U+25F8-U+25FF)
* Shogi pieces ,recycling symbols, dices and dotted circles (total 24 characters) were added to '''Miscellaneous Symbols'''. (U+2616-U+2617, U+2672-U+267D and U+2680-U+2689)
* Additional parenthesis (total 14 characters) were added to '''Dingbats'''. (U+2768-U+2775)
* Three additional marks (total 3 characters) were added to '''CJK Symbols and Punctuation'''. (U+303B-U+303D)
* A digraph and two additional characters (total 3 characters) were added to '''Hiragana'''. (U+3095-U+3096 and U+309F)
* A digraph and a double hyphen (total 2 characters) were added to '''Katakana'''. (U+30A0 and U+30FF)
* Additional circled numerals (total 30 characters) were added to '''Enclosed CJK Letters and Months'''. (U+3251-U+325F and U+32B1-U+32BF
* Five missing radicals (total 5 characters) were added to '''Yi Radicals'''. (U+A4A2-U+A4A3, U+A4B4, U+A4C1, U+A4C5)
* Additional compatibility characters (total 59 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA30-U+FA6A)
* A Rial sign (total 1 character) was added to '''Arabic Presentation Forms-A'''. (U+FDFC)
* Two sesame dots (total 2 characters) were added to '''CJK Compatibility Forms'''. (U+FE45-U+FE46)
* A tail fragment (total 1 character) was added to '''Arabic Presentation Forms-B'''. (U+FE73)
* A pair of double parenthesis (total 2 characters) was added to '''Halfwidth and Fullwidth Forms'''. (U+FF5F-U+FF60)
== Unicode 4.0 ==
Unicode 4.0 was released April 2003. It encoded 96,382 characters, adding 1,226 new characters.
=== New blocks ===
* '''Limbu''', containing 66 characters for the Limbu abugida, was added.
* '''Tai Le''', containing 35 letters for the Tai Le script, was added.
* '''Khmer Symbols''', containing 32 symbols for the lunar calendar, was added.
* '''Phonetic Extensions''', containing 108 letters used in phonetic transcription, was added.
* '''Miscellaneous Symbols and Arrows''', containing 14 additional arrows, was added.
* '''Yijing Hexagram Symbols''', containing 64 hexagrams, was added.
* '''Linear B Syllabary''', containing 88 syllables of the ancient Linear B script, was added.
* '''Linear B Ideograms''', containing 123 ideograms of the ancient Linear B script, was added.
* '''Aegean Numbers''', containing 57 numerals used in the Aegean area, was added.
* '''Ugaritic''', containing 31 characters used in Ugaritic cuneiform, was added.
* '''Shavian''', containing 48 letters used for the artificial Shavian script, was added.
* '''Osmanya''', containing 40 characters used in the artificial Osmanya script, was added.
* '''Cypriot Syllabary''', containing 55 characters formerly used on Cyprus, was added.
* '''Tai Xuan Jing Symbols''', containing 87 symbols of Tai Xuan Jing, was added.
* '''Variation Selectors Supplement''', containing 240 additional variation selectors, was added.
=== Extended blocks ===
* Letters with curl used in Sinology (total 4 characters) were added to '''Latin Extended-B'''.
* Former IPA letters (total 2 characters) were added to '''IPA Extensions'''.
* Some additional characters (total 17 characters) were added to '''Spacing Modifier Letters'''.
* Additional combining double-width diacritics and diacritics corresponding to their spacing equivalent (total 11 characters) were added to '''Combining Diacritical Marks'''.
* The archaic letters Sho and San and the capital Lunate Sigma (total 5 characters) were added to '''Greek and Coptic'''.
* Some additional markers, biblical signs, and letters with inverted V (total 19 characters) were added to '''Arabic'''.
* Letters used for foreign words from Persian and Sogdian (total 6 characters) were added to '''Syriac'''.
* The short A (ऄ) (total 1 character) was added to '''Devanagari'''.
* The Avagraha sign (ঽ) (total 1 character) was added to '''Bengali'''.
* The Adak Bindi and Visarga signs (total 2 characters) were added to '''Gurmukhi'''.
* The vocalic l and ll and the Rupee sign (total 5 characters) were added to '''Gujarati'''.
* The letters Va and Wa (total 2 characters) were added to '''Oriya'''.
* Additional signs for date and finance environments (total 8 characters) were added to '''Tamil'''.
* The Nukta and Avagraha signs (total 2 characters) were added to '''Kannada'''.
* Some symbols and signs (total 11 characters) were added to '''Khmer'''.
* An inverted undertie and a swung dash (total 2 characters) were added to '''General Punctuation'''.
* The facsimile sign (℻) (total 1 character) was added to '''Letterlike Symbols'''.
* The eject symbol and a vertical line (total 2 characters) were added to '''Miscellaneous Technical'''.
* A black circled digit zero (⓿) (total 1 character) was added to '''Enclosed Alphanumerics'''.
* Monograms and diagrams, flags, warning and weather symbols and a cup of tea (total 12 characters) were added to '''Miscellaneous Symbols'''.
* Additional parenthesized and circled Korean characters and supplemental signs (total 9 characters) were added to '''Enclosed CJK Letters and Months'''.
* Additional measure units (total 7 characters) were added to '''CJK Compatibility'''.
* An additional Arabic sign (﷽) (total 1 character) was added to '''Arabic Presentation Forms-A'''.
* A pair of vertical parenthesis (total 2 characters) was added to '''CJK Compatibility Forms'''.
* The letters Oi and Ew (total 4 characters) were added to '''Deseret'''.
* A small script l (ℓ) (total 1 character) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 4.1 ==
Unicode 4.1 was released March 31, 2005. It encoded 97,655 characters, adding 1,273 new characters.
=== New blocks ===
* '''Arabic Supplement''', containing 30 characters for various languages written with the Arabic script, was added.
* '''Ethiopic Supplement''', containing 26 characters and signs for Sebatbeit, was added.
* '''New Tai Lue''', containing 80 characters for the New Tai Lue script, was added.
* '''Buginese''', containing 30 characters for the Lontara script, was added.
* '''Phonetic Extensions Supplement''', containing 64 additional letters for phonetic transcription, was added.
* '''Combining Diacritical Marks Supplement''', containing 4 additional diacritics, was added.
* '''Glagolitic''', containing 94 characters for the Glagolitic script, was added.
* '''Coptic''', containing 114 characters for the Coptic script, was added.
* '''Georgian Supplement''', containing 38 Nuskhuri letters, was added.
* '''Tifinagh''', containing 55 characters for the Tifinagh script, was added.
* '''Ethiopic Extended''', containing 79 additional Ethiopic syllables, was added.
* '''Supplemental Punctuation''', containing 26 additional punctuation marks, was added.
* '''CJK Strokes''', containing 16 strokes for Han Ideographs, was added.
* '''Modifier Tone Letters''', containing 23 letters for Chinese tones, was added.
* '''Syloti Nagri''', containing 44 characters for the Syloti Nagri abugida, was added.
* '''Vertical Forms''', containing 10 punctuation marks suited for vertical text, was added.
* '''Ancient Greek Numbers''', containing 75 numerals and signs used in Ancient Greek, was added.
* '''Old Persian''', containing 50 characters for Old Persian cuneiform, was added.
* '''Kharoshthi''', containing 65 characters for the Kharoshthi abugida, was added.
* '''Ancient Greek Musical Notation''', containing 70 musical signs used in Ancient Greek, was added.
=== Extended blocks ===
* Letters for Sencoten, digraphs, letters with swash tail and other additions (total 11 characters) were added to '''Latin Extended-B'''.
* Additional diacritics for transliteration (total 5 characters) were added to '''Combining Diacritical Marks'''.
* Rho with stroke, reversed and dotted Lunate Sigma (total 4 characters) were added to '''Greek and Coptic'''.
* Ghe with descender (Ӷ) (total 2 characters) was added to '''Cyrillic'''.
* An additional biblical mark and some punctuation marks (total 4 characters) were added to '''Hebrew'''.
* Additional biblical marks, punctuation marks and the Afghani sign (total 8 characters) were added to '''Arabic'''.
* A glottal stop (ॽ) (total 1 character) was added to '''Devanagari'''.
* The Khanda Ta letter (ৎ) (total 1 character) was added to '''Bengali'''.
* The letter Sha and the digit zero (total 2 characters) were added to '''Tamil'''.
* Two marks used in Bhutan (total 2 characters) were added to '''Tibetan'''.
* Two letters and a modifier letter (total 3 characters) were added to '''Georgian'''.
* Some additional syllables (total 11 characters) were added to '''Ethiopic'''.
* Additional phonetic symbols (total 20 characters) were added to '''Phonetic Extensions'''.
* A flower and dot punctuation marks (total 9 characters) were added to '''General Punctuation'''.
* Additional subscript letters (total 5 characters) were added to '''Superscripts and Subscripts'''.
* The Guarani, Austral, Hryvnia and Cedi signs (total 4 characters) were added to '''Currency Symbols'''.
* A combining long double solidus (total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* The per sign and a double-struck letter Pi (total 2 characters) were added to '''Letterlike Symbols'''.
* Metrical and electrical signs (total 11 characters) were added to '''Miscellaneous Technical'''.
* Additional gender and map symbols (total 30 characters) were added to '''Miscellaneous Symbols'''.
* Some additional mathematical symbols (total 7 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional arrows and squares (total 6 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* A circled Hangul character (㉾) (total 1 character) was added to '''Enclosed CJK Letters and Months'''.
* Additional Han Ideographs (total 22 characters) were added to '''CJK Unified Ideographs'''.
* Additional Compatibility Ideographs (total 106 characters) were added to '''CJK Compatibility Ideographs'''.
* Italic dotless small i and j (total 2 characters) were added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.0 ==
Unicode 5.0 was released July 14, 2006. It encoded 99,024 characters, adding 1,369 new characters.
=== New blocks ===
* '''N'Ko''', containing 59 characters for the N'Ko script, was added.
* '''Balinese''', containing 121 characters and musical signs for the Balinese abugida, was added.
* '''Latin Extended-C''', containing 17 letters for various languages, was added.
* '''Latin Extended-D''', containing 2 characters for UPA, was added.
* '''Phags-pa''', containing 56 characters for the Phags-pa script, was added.
* '''Phoenician''', containing 27 letters and numerals for the Phoenician script, was added.
* '''Cuneiform''', containing 879 signs for Sumero-Akkadian Cuneiform, was added.
* '''Cuneiform Numbers and Punctuation''', containing 103 numerals and punctuation signs for Sumero-Akkadian Cuneiform, was added.
* '''Counting Rod Numerals''', containing 18 numerals used with counting rods, was added.
=== Extended blocks ===
* Various letters used mainly for aboriginal languages (total 14 characters) were added to '''Latin Extended-B'''.
* Lowercase lunate sigma symbols (total 3 characters) were added to '''Greek and Coptic'''.
* Lowercase palochka and 3 letters used in Nivkh (total 7 characters) were added to '''Cyrillic'''.
* Two letters used in Khanty and other languages (total 4 characters) were added to '''Cyrillic Supplement'''.
* A specific point meant for Vav (total 1 character) was added to '''Hebrew'''.
* Four letters used in Sindhi (total 4 characters) were added to '''Devanagari'''.
* Four letters used in Sanskrit (total 4 characters) were added to '''Kannada'''.
* Additional IPA diacritics (total 9 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Four combining arrows (total 4 characters) were added to '''Combining Diacritical Marks for Symbols'''.
* A danish symbol and a lowercase turned F (total 2 characters) were added to '''Letterlike Symbols'''.
* A lowercase reversed C (ↄ) (total 1 character) was added to '''Number Forms'''.
* Vertical parenthesis, geometric forms and electrical symbols (total 12 characters) were added to '''Miscellaneous Technical'''.
* A neuter symbol (⚲) (total 1 character) was added to '''Miscellaneous Symbols'''.
* Four additional mathematical symbols (total 4 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional squares, pentagons and hexagons (total 11 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Four additional tone letters used in Chinantec (total 4 characters) were added to '''Modifier Tone Letters'''.
* Bold Digamma (𝟊/'''Ϝ''') (total 2 characters) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.1 ==
Unicode 5.1 was released April 4, 2008. It encoded 100,648 characters, adding 1,624 new characters.
=== New blocks ===
* '''Sundanese''', containing 55 letters for Sundanese script, was added.
* '''Lepcha''', containing 74 letters for Lepcha script, was added.
* '''Ol Chiki''', containing 48 letters for Ol Chiki script, was added.
* '''Cyrillic Extended-A''', containing 32 letters for combining Cyrillic letters, was added.
* '''Vai''', containing 300 letters for Vai script, was added.
* '''Cyrillic Extended-B''', containing 78 letters for additional Cyrillic characters, was added.
* '''Saurashtra''', containing 81 letters for Saurashtra script, was added.
* '''Kayah Li''', containing 48 letters for Kayah languages, was added.
* '''Rejang''', containing 37 letters for Rejang script, was added.
* '''Cham''', containing 83 letters for Cham script, was added.
* '''Ancient Symbols''', containing 12 characters for weights and measures and other Ancient symbols, was added.
* '''Phaistos Disc''', containing 46 hieroglyphs for Phaistos, was added.
* '''Lycian''', containing 29 letters for Lycian script, was added.
* '''Carian''', containing 49 letters for Carian script, was added.
* '''Lydian''', containing 27 letters for Lydian script, was added.
* '''Mahjong Tiles''', containing 44 mahjong tiles, was added.
* '''Domino Tiles''', containing 100 domino tiles, was added.
=== Extended blocks ===
* Archaic letters and capital kai symbol (total 7 characters) were added to '''Greek and Coptic'''.
* Combining Pokrytie (total 1 character) was added to '''Cyrillic'''.
* Mordvin, Kurdish, Aleut and Chuvash letters (total 16 characters) were added to '''Cyrillic Supplement'''.
* Radix symbols, Letterlike, punctuation, Koranic annotation signs and additions for early Persian and Azerbaijani (total 15 characters) were added to '''Arabic'''.
* Additional letters in Torwali, Burushaski and early Persian (total 18 characters) were added to '''Arabic Supplement'''.
* High spacing dot and candra a (total 2 characters) were added to '''Devanagari'''.
* Udaat and yakash signs (total 2 characters) were added to '''Gurmukhi'''.
* Vocalic rr, l and ll (total 3 characters) were added to '''Oriya'''.
* Om symbol (ௐ) (total 1 character) was added to '''Tamil'''.
* Avagraha, additional phonetic letters, vocalic l and ll, fractional signs and tuumu (total 13 characters) were added to '''Telugu'''.
* Avagraha, vocalic rr, l and ll, Malayalam numerics and fractions and chillu letters (total 17 characters) were added to '''Malayalam'''.
* Letters for Balti and various symbols (total 6 characters) were added to '''Tibetan'''.
* Characters for various languages (total 78 characters) were added to '''Myanmar'''.
* Manchu Ali Gali lha (ᢪ) (total 1 character) was added to '''Mongolian'''.
* Miscellaneous combining marks (total 28 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Medievalist latin letters and miscellaneous letters (total 10 characters) were added to '''Latin Extended Additional'''.
* Invisible plus (+) (total 1 character) was added to '''General Punctuation'''.
* Combining asterisk above ( ⃰)(total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* Symbol for Samaritan Source (⅏) (total 1 character) was added to '''Letterlike Symbols'''.
* Archaic Roman Numerals (total 4 characters) were added to '''Number Forms'''.
* Outlined white star and other signs (total 15 characters) were added to '''Miscellaneous Symbols'''.
* Long division and additional mathematical brackets (total 5 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Miscellaneous signs (total 51 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Additional latin letters (total 12 characters) were added to '''Latin Extended-C'''.
* Additional punctuation (total 23 characters) were added to '''Supplemental Punctuation'''.
* Letter ih (ㄭ) (total 1 character) was added to '''Bopomofo'''.
* Other strokes (total 20 characters) were added to '''CJK Strokes'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Africanist tone letters (total 5 characters) were added to '''Modifier Tone Letters'''.
* Miscellaneous letters and symbols (total 112 characters) were added to '''Latin Extended-D'''.
* Continuous macrons for Coptic (total 3 characters) were added to '''Combining Half Marks'''.
* Musical symbol multiple measure rest (𝄩) (total 1 character) was added to '''Musical Symbols'''.
== Unicode 5.2 ==
Unicode 5.2 was released in October 1, 2009. It encoded 107,296 characters, adding 6,648 new characters.
=== New blocks ===
* '''Samaritan''', containing 61 letters for Samaritan script, was added.
* '''Unified Canadian Aboriginal Syllabics Extended''', containing 70 syllables for various cree languages, was added.
* '''Tai Tham''', containing 127 letters for Tai Tham script, was added.
* '''Vedic Extensions''', containing 35 characters for tone marks and signs, was added.
* '''Lisu''', containing 48 letters for Lisu (Fraser) script, was added.
* '''Bamum''', containing 88 letters for Bamum script, was added.
* '''Common Indic Number Forms''', containing 10 fractions and marks, was added.
* '''Devanagari Extended''', containing 28 additional marks, was added.
* '''Hangul Jamo Extended-A''', containing 29 characters for additional old initial consonants in hangul jamo, was added.
* '''Javanese''', containing 91 letters for Javanese script, was added.
* '''Myanmar Extended-A''', containing 28 letters for Khamti Shan in Myanmar, was added.
* '''Tai Viet''', containing 72 letters for Tai Viet script, was added.
* '''Meetei Mayek''', containing 56 letters for Meetei Mayek script, was added.
* '''Hangul Jamo Extended-B''', containing 72 characters for additional old medieval vowels and final consonants in hangul jamo, was added.
* '''Imperial Aramaic''', containing 31 characters for Old Aramaic, was added.
* '''Old South Arabian''', containing 32 letters and numbers for South Arabian, was added.
* '''Avestan''', containing 61 characters for Avestan script, was added.
* '''Inscriptional Parthian''', containing 30 characters for Inscriptional Parthian script, was added.
* '''Inscriptional Pahlavi''', containing 27 characters for Inscriptional Pahlavi script, was added.
* '''Old Turkic''', containing 73 characters for Orkhon script, was added.
* '''Rumi Numeral Symbols''', containing 31 numeric characters used in Fez, Morocco, and elsewhere in North Africa and the Iberian peninsula, between the tenth and seventeenth centuries, was added.
* '''Kaithi''', containing 66 letters for Kaithi script, was added.
* '''Egyptian Hieroglyphs''', containing 1,071 hieroglyphs for Egyptian, was added.
* '''Enclosed Alphanumeric Supplement''', containing 63 additional circled, parenthesized and squared alphanumerics, was added.
* '''Enclosed Ideographic Supplement''', containing 44 squared and tortoised shell bracketed ideographs, was added.
* '''CJK Unified Ideographs Extension C''', containing 4,149 additional Chinese Ideographs, was added.
=== Extended blocks ===
* Abhaz letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Inverted Candrabinbu and additional signs and letters (total 5 characters) were added to '''Devanagari'''.
* Ganda Mark (৻) (total 1 character) was added to '''Bengali'''.
* Religious svasti signs (total 4 characters) were added to '''Tibetan'''.
* Extensions for Khamti Shan and Alton and Phake (total 4 characters) were added to '''Myanmar'''.
* Additional old initial consonants, medival vowels, and old final consonants (total 16 characters) were added to '''Hangul Jamo'''.
* Hyphen and additional syllables (total 10 characters) were added to '''Unified Canadian Aboriginal Syllabics'''.
* Letter Sua and Tham Digit One (total 3 characters) were added to '''New Tai Lue'''.
* Combing Almost Equal to Below ( ᷽) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* The Live Tournosis, Spesmillo and Tenge signs (total 3 characters) were added to '''Currency Symbols'''.
* Additional vulgar fractions from ARIB STD B24 (total 4 characters) were added to '''Number Forms'''.
* Decimal exponent symbol (⏨) from ARIB STD B24 (total 1 characters) was added to '''Miscellaneous Technical'''.
* A soccer ball and symbols from ARIB STD B24 (total 59 characters) were added to '''Miscellaneous Symbols'''.
* Heavy exclamation mark symbol (❗) from ARIB STD B24 (total 1 character) was added to '''Dingbats'''.
* Traffic sign, dictionary and map symbols from ARIB STD B24 (total 5 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Capital letter turned alpha and additions for shona (total 3 characters) were added to '''Latin Extended-C'''.
* Cryptogrammic letters and combining marks (total 7 characters) were added to '''Coptic'''.
* Word separator middle dot used in Avestan (⸱) (total 1 character) was added to '''Supplemental Punctuation'''.
* Circled ideographs and numbers on black squares from ARIB STD B24 (total 12 characters) were added to '''Enclosed CJK Letters and Months'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Miscellaneous additions for compatibility (total 3 characters) were added to '''CJK Compatibility Ideographs'''.
* Number two and three (total 2 characters) were added to '''Phoenician'''.
== Unicode 6.0 ==
Unicode 6.0 was released in October 11, 2010. It encoded 109,384 characters, adding 2,088 new characters.
=== New blocks ===
* '''Mandaic''', containing 29 letters for Mandaic script, was added.
* '''Batak''', containing 56 letters for Batak script, was added.
* '''Ethiopic Extended-A''', containing 32 letters for Gamo-Gofa-Dawro, Basketo and Gumuz Ethiophic syllables, was added.
* '''Brahmi''', containing 108 characters for ancient Brahmi abugida, was added.
* '''Bamum Supplement''', containing 761 letters for additional Bamum script, was added.
* '''Kana Supplement''', containing 2 characters for archaic katakana, was added.
* '''Playing Cards''', containing 59 playing cards, was added.
* '''Miscellaneous Symbols and Pictographs''', containing 529 additional symbols, was added.
* '''Emoticons''', containing 63 faces, cat faces and gesture symbols, was added.
* '''Transport and Map Symbols''', containing 70 transportation, traffic signs and other symbols, was added.
* '''Alchemical Symbols''', containing 116 symbols for elements, was added.
* '''CJK Unified Ideographs Extension D''', containing 222 miscellaneous Han ideographs, was added.
=== Extended blocks ===
* Azerbaijani letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Kashmiri Yeh and Wavy hamza below (total 2 characters) were added to '''Arabic'''.
* Dependent vowel signs and letters used in Kashmiri and Bihari (total 10 characters) were added to '''Devanagari'''.
* Fraction signs (total 6 characters) were added to '''Oriya'''.
* Letters used in scholarly only and letter dot reph (total 3 characters) were added to '''Malayalam'''.
* Leading and Trailing Mchan Rtags (total 6 characters) were added to '''Tibetan'''.
* Additional combining marks (total 2 characters) were added to '''Ethiopic'''.
* Combining Double Inverted Breve Below (᷼) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* Miscellaneous subscript letters (total 8 characters) were added to '''Superscripts and Subscripts'''.
* Indian Rupee Sign (₹) (total 1 character) was added to '''Currency Symbols'''.
* Pointing double triangle and additional mechanical symbols (total 11 characters) were added to '''Miscellaneous Technical'''.
* Ophiucisus, astronomical symbol for uranus and pentagrams (total 6 characters) were added to '''Miscellaneous Symbols'''.
* Additional heavy punctation marks, raised fist, raised hand, sparkles, heavy arithmetic symbols and curly loops (total 16 characters) were added to '''Dingbats'''.
* Squared logicals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Separator mark and consonant joiner (total 2 characters) were added to '''Tifinagh'''.
* Bopomofo for Hmu and Ge (total 3 characters) were added to '''Bopomofo Extended'''.
* Reversed Tse (total 2 characters) were added to '''Cyrillic Extended-B'''.
* Additional letters (total 15 characters) were added to '''Latin Extended-D'''.
* Pedagogical symbols (total 16 characters) were added to '''Arabic Presentation Forms-A'''.
* Additional squared, black circled and squared letters and regional indicator letters (total 107 characters) were added to '''Enclosed Alphanumeric Supplement'''.
* Squared katakana, squared ideographs and circled advantage and accept (total 13 characters) were added to '''Enclosed Ideographic Supplement'''.
== Unicode 6.1 ==
Unicode 6.1 was released in January 31, 2012. It encoded 110,116 characters, adding 732 new characters.
=== New blocks ===
* '''Arabic Extended-A''' (U+08A0-U+08FF), containing 39 characters, was added.
* '''Sundanese Supplement''' (U+1CC0-U+1CCF), containing 8 characters, was added.
* '''Meetei Mayek Extensions''' (U+AAE0-U+AAFF), containing 23 characters, was added.
* '''Meroitic Hieroglyphs''' (U+10980-U+1099F), containing 32 characters, was added.
* '''Meroitic Cursive''' (U+109A0-U+109FF), containing 26 characters, was added.
* '''Sora Sompeng''' (U+110D0-U+110FF), containing 35 characters, was added.
* '''Chakma''' (U+11100-U+1114F), containing 67 characters, was added.
* '''Sharada''' (U+11180-U+111DF), containing 83 characters, was added.
* '''Takri''' (U+11680-U+116CF), containing 66 characters, was added.
* '''Miao''' (U+16F00-U+16F9F), containing 133 characters, was added.
* '''Arabic Mathematical Alphabetic Symbols''' (U+1EE00-U+1EEFF), containing 143 characters, was added.
=== Extended blocks ===
* An Armenian Dram sign (total 1 character) was added to '''Armenian'''. (U+058F)
* A sign Samvat (total 1 character) was added to '''Arabic'''. (U+0604)
* An Abbreviation mark (total 1 character) was added to '''Gujarati'''. (U+0AF0)
* Letters for Khmu (total 2 characters) were added to '''Lao'''. (U+0EDE-U+0EDF)
* Capital letter Yn, letter Aen, Hard and Labial sign (total 5 characters) were added to '''Georgian'''. (U+10C7, U+10CD and U+10FD-U+10FF)
* Letters and signs for Old Sundanese (total 9 characters) were added to '''Sundanese'''. (U+1BAB-U+1BAD and U+1BBA-U+1BBF)
* Sign Rotated Ardhavisarga, Candra Above, Jihvamuliya and Uphadhmaniya (total 4 characters) were added to '''Vedic Extensions'''. (U+1CF3-U+1CF6)
* Mathematical diagonals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''. (U+27CB and U+27CD)
* A letter Bohairic Khei (total 2 characters) were added to '''Coptic'''. (U+2CF2-U+2CF3)
* Small letters Yn and Aen (total 2 characters) were added to '''Georgian Supplement'''. (U+2D27 and U+2D2D)
* Letters Ye and Yo (total 2 characters) were added to '''Tifinagh'''. (U+2D66-U+2D67)
* (total 10 characters) were added to '''Supplemental Punctuation'''. (U+2E32-U+2E3B)
* An additional ideograph for Kanji (total 1 character) was added to '''CJK Unified Ideographs'''. (U+9FCC)
* Combining letter for Slavonic (total 9 characters) were added to '''Cyrillic Extended-B'''. (U+A674-U+A67B and U+A69F)
* Letter C with Bar, capital letter H with Hook and modifier letters for extended IPA (total 5 characters) were added to '''Latin Extended-D'''. (U+A792-U+A793, U+A7AA and U+A7F8-U+A7F9)
* Some additional ideographs for Korea (total 2 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA2E-U+FA2F)
* Symbols for Canadian legal use (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F16A-U+1F16B)
* Typikon symbols (total 4 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F540-U+1F543)
* (total 13 characters) were added to '''Emoticons'''. (U+1F600, U+1F611, U+1F615, U+1F617, U+1F619, U+1F61B, U+1F61F, U+1F626-U+1F627, U+1F62C, U+1F62E-U+1F62F and U+1F634)
== Unicode 6.2 ==
Unicode 6.2 was released in September 26, 2012. It encoded 110,117 characters, adding only 1 new character.
=== Extended blocks ===
* A Turkish Lira sign (total 1 character) was added to '''Currency Symbols'''. (U+20BA)
== Unicode 6.3 ==
Unicode 6.3 was released in September 30, 2013. It encoded 110,122 characters, adding only 5 new characters.
=== Extended blocks ===
* A Letter mark (total 1 character) was added to '''Arabic'''. (U+061C)
* Isolate directional format characters (total 4 characters) were added to '''General Punctuation'''. (U+2066-U+2069)
== Unicode 7.0 ==
Unicode 7.0 was released in June 16, 2014. It encoded 112,956 characters, adding 2,834 new characters.
=== New blocks ===
* '''Combining Diacritical Marks Extended''' (U+1AB0-U+1AFF), containing 15 marks, was added.
* '''Myanmar Extended-B''' (U+A9E0-U+A9FF), containing 31 letters, was added.
* '''Latin Extended-E''' (U+AB30-U+AB6F), containing 50 letters, was added.
* '''Coptic Epact Numbers''' (U+102E0-U+102FF), containing 28 numbers, was added.
* '''Old Permic''' (U+10350-U+1037F), containing 43 letters, was added.
* '''Elbasan''' (U+10500-U+1052F), containing 50 letters, was added.
* '''Caucasian Albanian''' (U+10530-U+1056F), containing 53 letters and marks, was added.
* '''Linear A''' (U+10600-U+1077F), containing 341 signs, was added.
* '''Palmyrene''' (U+10860-U+1087F), containing 32 letters, was added.
* '''Nabataean''' (U+10880-U+108AF), containing 40 letters and numbers, was added.
* '''Old North Arabian''' (U+10A80-U+10A9F), containing 32 letters and numbers, was added.
* '''Manichaean''' (U+10AC0-U+10AFF), containing 51 characters, was added.
* '''Psalter Pahlavi''' (U+10B80-U+10BAF), containing 29 characters, was added.
* '''Mahajani''' (U+11150-U+1117F), containing 39 letters and signs, was added.
* '''Sinhala Archaic Numbers''' (U+111E0-U+111FF), containing 20 numbers, was added.
* '''Khojki''' (U+11200-U+1124F), containing 61 characters, was added.
* '''Khudawadi''' (U+112B0-U+112FF), containing 69 characters, was added.
* '''Grantha''' (U+11300-U+1137F), containing 83 characters, was added.
* '''Tirhuta''' (U+11480-U+114DF), containing 82 characters, was added.
* '''Siddham''' (U+11580-U+115FF), containing 72 characters, was added.
* '''Modi''' (U+11600-U+1165F), containing 79 characters, was added.
* '''Warang Citi''' (U+118A0-U+118FF), containing 84 letters and numbers, was added.
* '''Pau Cin Hau''' (U+11AC0-U+11AFF), containing 57 characters, was added.
* '''Mro''' (U+16A40-U+16A6F), containing 43 characters, was added.
* '''Bassa Vah''' (U+16AD0-U+16AFF), containing 36 characters, was added.
* '''Pahawh Hmong''' (U+16B00-U+16B8F), containing 127 letters and signs, was added.
* '''Duployan''' (U+1BC00-U+1BC9F), containing 143 characters, was added.
* '''Shorthand Format Controls''' (U+1BCA0-U+1BCAF), containing 4 format characters, was added.
* '''Mende Kikakui''' (U+1E800-U+1E8DF), containing 213 syllables and numbers, was added.
* '''Ornamental Dingbats''' (U+1F650-U+1F67F), containing 48 pictographic characters, was added.
* '''Geometric Shapes Extended''' (U+1F780-U+1F7FF), containing 85 pictographic characters, was added.
* '''Supplemental Arrows-C''' (U+1F800-U+1F8FF), containing 148 pictographic characters, was added.
=== Extended blocks ===
* A capital letter Yot (total 1 character) was added to '''Greek and Coptic'''. (U+037F)
* Letters for Orok, Komi and Khanty (total 8 characters) were added to '''Cyrillic Supplement'''. (U+0528-U+052F)
* An Eternity sign (total 2 characters) were added to '''Armenian'''. (U+058D-U+058E)
* A Number Mark Above (total 1 character) was added to '''Arabic'''. (U+0605)
* Letters for African, Philippine, Turkic, Berber, Belarusian, Palula and Shina languages (total 8 characters) were added to '''Arabic Extended-A'''. (U+08A1, U+08AD-U+08B2 and U+08FF)
* A letter for Marwari (total 1 character) was added to '''Devanagari'''. (U+0978)
* A sign Anji (total 1 character) was added to '''Bengali'''. (U+0980)
* Sign Candrabindu and letter Llla (total 2 characters) were added to '''Telugu'''. (U+0C00 and U+0C34)
* A Sign Candrabindu (total 1 character) was added to '''Kannada'''. (U+0C81)
* A Sign Candrabindu (total 1 character) was added to '''Malayalam'''. (U+0D01)
* Lith Numerals (total 10 characters) were added to '''Sinhala'''. (U+0DE6-U+0DEF)
* Additional Old English runes (total 8 characters) were added to '''Runic'''. (U+16F1-U+16F8)
* Letters Gyan and Tra (total 2 characters) were added to '''Limbu'''. (U+191D-U+191E)
* Signs for Jaiminiya Sama Veda (total 2 characters) were added to '''Vedic Extensions'''. (U+1CF8-U+1CF9)
* Marks for Germanic and American lexicology (total 15 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DE7-U+1DF5)
* Nordic Mark, Manat and Ruble sign (total 3 characters) were added to '''Currency Symbols'''. (U+20BB-U+20BD)
* Playback symbols from Webdings font (total 7 characters) were added to '''Miscellaneous Technical'''. (U+23F4-U+23FA)
* A Scissors symbol from Wingdings 2 font (total 1 character) was added to '''Dingbats'''. (U+2700)
* Arrows for Lithuanian dialectology and symbols from Wingdings 3 font (total 115 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2B4D-U+2B4F, U+2B5A-U+2B5F, U+2B60-U+2B73, U+2B76-U+2B95, U+2B98-U+2BB9, U+2BBD-U+2BC8 and U+2BCA-U+2BD1)
* (total 7 characters) were added to '''Supplemental Punctuation'''. (U+2E3C-U+2E42)
* Early Cyrillic letters and letters for Lithuanian dialectology (total 6 characters) were added to '''Cyrillic Extended-B'''. (U+A698-U+A69D)
* Letters for European, American and African orthography (total 18 characters) were added to '''Latin Extended-D'''. (U+A794-U+A79F, U+A7AB-U+A7AD, U+A7B0-U+A7B1 and U+A7F7)
* Tone marks for Tai Laing and letters for Shwe Palaung (total 4 characters) were added to '''Myanmar Extended-A'''. (U+AA7C-U+AA7F)
* Combining phonetic marks (total 7 characters) were added to '''Combining Half Marks'''. (U+FE27-U+FE2D)
* Additional mathematical symbols (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018B-U+1018C)
* A Greek Tau Rho symbol (total 1 character) was added to '''Ancient Symbols'''. (U+101A0)
* A letter Ess (total 1 character) was added to '''Old Italic'''. (U+1031F)
* A Number Joiner (total 1 character) was added to '''Brahmi'''. (U+1107F)
* Sutra mark and sign Ekam (total 2 characters) were added to '''Sharada'''. (U+111CD and U+111DA)
* Additional cuneiform signs (total 42 characters) were added to '''Cuneiform'''. (U+1236F-U+12398)
* Additional numbers, vulgar fractions and a punctuation mark (total 13 characters) were added to '''Cuneiform Numbers and Punctuation'''. (U+12463-U+1246E and U+12474)
* Red Joker, Fool and trumps (total 23 characters) were added to '''Playing Cards'''. (U+1F0BF and U+1F0E0-U+1F0F5)
* Dingbat normal and negative sans-serif digit zero (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10B-U+1F10C)
* Symbols from Webdings, Wingdings 1 and 2 font (total 209 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F321-U+1F32C, U+1F336, U+1F37D, U+1F394-U+1F39F, U+1F3C5, U+1F3CB-U+1F3CE, U+1F3D4-U+1F3DF, U+1F3F1-U+1F3F7, U+1F43F, U+1F441, U+1F4F8, U+1F4FD-U+1F4FE, U+1F53E-U+1F53F, U+1F544-U+1F54A, U+1F568-U+1F579, U+1F57B-U+1F5A3 and U+1F5A5-U+1F5FA)
* Slightly frowning and smiling faces emoji (total 2 characters) were added to '''Emoticons'''. (U+1F641-U+1F642)
* Symbols from Webdings and Wingdings 2 font (total 27 characters) were added to '''Transport and Map Symbols'''. (U+1F6C6-U+1F6CF, U+1F6E0-U+1F6EC and U+1F6F0-U+1F6F3)
== Unicode 8.0 ==
Unicode 8.0 was released in June 17, 2015. It encoded 120,672 characters, adding 7,716 new characters.
=== New blocks ===
* '''Cherokee Supplement''' (U+AB70-U+ABBF), containing 80 lowercase letters, was added.
* '''Hatran''' (U+108E0-U+108FF), containing 26 letters, was added.
* '''Old Hungarian''' (U+10C80-U+10CFF), containing 108 letters, was added.
* '''Multani''' (U+11280-U+112AF), containing 38 letters, was added.
* '''Ahom''' (U+11700-U+1173F), containing 57 letters, was added.
* '''Early Dynastic Cuneiform''' (U+12480-U+1254F), containing 196 characters, was added.
* '''Anatolian Hieroglyphs''' (U+14400-U+1467F), containing 583 characters, was added.
* '''Sutton SignWriting''' (U+1D800-U+1DAAF), containing 672 signs, was added.
* '''Supplemental Symbols and Pictographs''' (U+1F900-U+1F9FF), containing 15 pictographic characters, was added.
* '''CJK Unified Ideographs Extension E''' (U+2B820-U+2CEAF), containing 5762 characters, was added.
=== Extended blocks ===
* Letters for Arwi (total 3 characters) were added to '''Arabic Extended-A'''. (U+08B3-U+08B4 and U+08E3)
* A letter for Avestan transliteration (total 1 character) was added to '''Gujarati'''. (U+0AF9)
* A letter for Andhra Pradesh (total 1 character) was added to '''Telugu'''. (U+0C5A)
* An archaic letter II (total 1 character) was added to '''Malayalam'''. (U+0D5F)
* A letter Mv and small letters (total 7 characters) were added to '''Cherokee'''. (U+13F5 and U+13F8-U+13FD)
* A Georgian Lari sign (total 1 character) was added to '''Currency Symbols'''. (U+20BE)
* Turned digits (total 2 characters) were added to '''Number Forms'''. (U+218A-U+218B)
* Two headed arrows with triangle arrowheads (total 4 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BEC-U+2BEF)
* Some additional ideographs (total 9 characters) were added to '''CJK Unified Ideographs'''. (U+9FCD-U+9FD5)
* A combining letter Ef (total 1 character) was added to '''Cyrillic Extended-B'''. (U+A69E)
* Sinological dot, phonetic extension for African languages, letters for American and Gabonese orthography (total 7 characters) were added to '''Latin Extended-D'''. (U+A78F and U+A7B2-U+A7B7)
* Sign Siddham and letter Jain Om (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FC-U+A8FD)
* Letters for Yakut transliteration (total 4 characters) were added to '''Latin Extended-E'''. (U+AB60-U+AB63)
* A combining mark for Church Slavonic (total 2 characters) were added to '''Combining Half Marks'''. (U+FE2E-U+FE2F)
* Numerals and vulgar fractions (total 64 characters) were added to '''Meroitic Cursive'''. (U+109BC-U+109BD, U+109C0-U+109CF and U+109D2-U+109FF)
* Sandhi mark, diacritical marks for Kashmiri, sign Siddham and punctuation marks (total 9 characters) were added to '''Sharada'''. (U+111C9-U+111CC and U+111DB-U+111DF)
* Combining Anusvara Above and letter Om (total 2 characters) were added to '''Grantha'''. (U+11300 and U+11350)
* Section marks and alternate letters (total 20 characters) were added to '''Siddham'''. (U+115CA-U+115DD)
* An additional sign (total 1 character) was added to '''Cuneiform'''. (U+12399)
* East-Slavic musical symbols (total 11 characters) were added to '''Musical Symbols'''. (U+1D1DE-U+1D1E8)
* (total 24 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F32D-U+1F32F, U+1F37E-U+1F37F, U+1F3CF-U+1F3D3, U+1F3F8-U+1F3FF, U+1F4FF and U+1F54B-U+1F54F)
* Upside Down Face and Face With Rolling Eyes emoji (total 2 characters) were added to '''Emoticons'''. (U+1F643-U+1F644)
* A Place of Worship emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D0)
== Unicode 9.0 ==
Unicode 9.0, was released in June 21, 2016. It encoded 128,172 characters, adding 7,500 new characters.
=== New blocks ===
* '''Cyrillic Extended-C''' (U+1C80-U+1C8F), containing 9 letters, was added.
* '''Osage''' (U+104B0-U+104FF), containing 72 letters, was added.
* '''Newa''' (U+11400-U+1147F), containing 92 letters, was added.
* '''Mongolian Supplement''' (U+11660-U+1167F), containing 13 letters, was added.
* '''Bhaiksuki''' (U+11C00-U+11C6F), containing 97 letters, was added.
* '''Marchen''' (U+11C70-U+11CBF), containing 68 letters, was added.
* '''Ideographic Symbols and Punctuation''' (U+16FE0-U+16FFF), containing 1 letter, was added.
* '''Tangut''' (U+17000-U+187FF), containing 6125 letters, was added.
* '''Tangut Components''' (U+18800-U+18AFF), containing 755 letters, was added.
* '''Glagolitic Supplement''' (U+1E000-U+1E02F), containing 38 letters, was added.
* '''Adlam''' (U+1E900-U+1E95F), containing 87 letters, was added.
=== Extended blocks ===
* Letters for Bravanese, Warsh and Quranic marks used in Pakistan (total 23 characters) were added to '''Arabic Extended-A'''. (U+08B6-U+08BD and U+08D4-U+08E2)
* A sign Spacing Candrabindu (total 1 character) were added to '''Kannada'''. (U+0C80)
* Sign Para, Chillu letters and vulgar fractions (total 14 characters) were added to '''Malayalam'''. (U+0D4F, U+0D54-U+0D56, U+0D58-U+0D5E and U+0D76-U+0D78)
* A diacritical mark for Newa (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFB)
* Power symbols (total 4 characters) were added to '''Miscellaneous Technical'''. (U+23FB-U+23FE)
* Punctuation marks for Church Slavonic (total 2 characters) were added to '''Supplemental Punctuation'''. (U+2E43-U+2E44)
* A letter for Unifon (total 1 character) was added to '''Latin Extended-D'''. (U+A7AE)
* A sign Candrabindu (total 1 character) was added to '''Saurashtra'''. (U+A8C5)
* Indiction sign and a currency symbol (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018D-U+1018E)
* A sign Sukun (total 1 character) was added to '''Khojki'''. (U+1123E)
* Japanese TV symbols (total 18 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F19B-U+1F1AC)
* A Japanese TV symbol (total 1 character) was added to '''Enclosed Ideographic Supplement'''. (U+1F23B)
* A dancing man and Black Heart emoji (total 2 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F57A and U+1F5A4)
* Octagonal Sign, Shopping Trolley, scooters and a Canoe emoji (total 5 characters) were added to '''Transport and Map Symbols'''. (U+1F6D1-U+1F6D2 and U+1F6F4-U+1F6F6)
* (total 67 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F919-U+1F91E, U+1F920-U+1F927, U+1F930, U+1F933-U+1F93E, U+1F940-U+1F94B, U+1F950-U+1F95E and U+1F985-U+1F991)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|0030 FE00
|
|short diagonal stroke form # DIGIT ZERO
|-
|1000 FE00
|
|dotted form # MYANMAR LETTER KA
|-
|1002 FE00
|
|dotted form # MYANMAR LETTER GA
|-
|1004 FE00
|
|dotted form # MYANMAR LETTER NGA
|-
|1010 FE00
|
|dotted form # MYANMAR LETTER TA
|-
|1011 FE00
|
|dotted form # MYANMAR LETTER THA
|-
|1015 FE00
|
|dotted form # MYANMAR LETTER PA
|-
|1019 FE00
|
|dotted form # MYANMAR LETTER MA
|-
|101A FE00
|
|dotted form # MYANMAR LETTER YA
|-
|101C FE00
|
|dotted form # MYANMAR LETTER LA
|-
|101D FE00
|
|dotted form # MYANMAR LETTER WA
|-
|1022 FE00
|
|dotted form # MYANMAR LETTER SHAN A
|-
|1031 FE00
|
|dotted form # MYANMAR VOWEL SIGN E
|-
|1075 FE00
|
|dotted form # MYANMAR LETTER SHAN KA
|-
|1078 FE00
|
|dotted form # MYANMAR LETTER SHAN CA
|-
|107A FE00
|
|dotted form # MYANMAR LETTER SHAN NYA
|-
|1080 FE00
|
|dotted form # MYANMAR LETTER SHAN THA
|-
|2205 FE00
|
|zero with long diagonal stroke overlay form # EMPTY SET
|-
|AA60 FE00
|
|dotted form # MYANMAR LETTER KHAMTI GA
|-
|AA61 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CA
|-
|AA62 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CHA
|-
|AA63 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JA
|-
|AA64 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JHA
|-
|AA65 FE00
|
|dotted form # MYANMAR LETTER KHAMTI NYA
|-
|AA66 FE00
|
|dotted form # MYANMAR LETTER KHAMTI TTA
|-
|AA6B FE00
|
|dotted form # MYANMAR LETTER KHAMTI NA
|-
|AA6C FE00
|
|dotted form # MYANMAR LETTER KHAMTI SA
|-
|AA6F FE00
|
|dotted form # MYANMAR LETTER KHAMTI FA
|-
|AA7A FE00
|
|dotted form # MYANMAR LETTER AITON RA
|-
|…
|
|278 additional emoji variation sequences
|}
== Unicode 10.0 ==
Unicode 10.0, was released in June 20, 2017. It encoded 136,690 characters, adding 8,518 new characters.
=== New blocks ===
* '''Syriac Supplement''' (U+0860-U+086F), containing 11 characters, was added.
* '''Zanabazar Square''' (U+11A00-U+11A4F), containing 72 characters, was added.
* '''Soyombo''' (U+11A50-U+11AAF), containing 80 characters, was added.
* '''Masaram Gondi''' (U+11D00-U+11D5F), containing 75 characters, was added.
* '''Kana Extended-A''' (U+1B100-U+1B12F), containing 31 characters, was added.
* '''Nushu''' (U+1B170-U+1B2FF), containing 396 characters, was added.
* '''CJK Unified Ideographs Extension F''' (U+2CEB0-U+2EBEF), containing 7,473 characters, was added.
=== Extended blocks ===
* A Vedic Anusvara and Abbreviation mark (total 2 characters) were added to '''Bengali'''. (U+09FC-U+09FD)
* Letters for Arabic transliteration (total 6 characters) were added to '''Gujarati'''. (U+0AFA-U+0AFF)
* A combining Anusvara Above and Viramas (total 3 characters) were added to '''Malayalam'''. (U+0D00 and U+0D3B-U+0D3C)
* A sign Atikrama (total 1 character) was added to '''Vedic Extensions'''. (U+1CF7)
* Combining diacritical marks for Church Slavonic (total 4 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DF6-U+1DF9)
* A Bitcoin sign (total 1 character) was added to '''Currency Symbols'''. (U+20BF)
* An Observe Eye symbol (total 1 character) was added to '''Miscellaneous Technical'''. (U+23FF)
* A Group mark (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2BD2)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E45-U+2E49)
* A letter O with Dot Above (total 1 character) was added to '''Bopomofo'''. (U+312E)
* Ideographs for Slavonic transliteration (total 21 characters) were added to '''CJK Unified Ideographs'''. (U+9FD6-U+9FEA)
* Letters for North Italic (total 3 characters) were added to '''Old Italic'''. (U+1032D-U+1032F)
* An Iteration mark for Nushu (total 1 character) was added to '''Ideographic Symbols and Punctuation'''. (U+16FE1)
* Letters for Hentaigana (total 254 characters) were added to '''Kana Supplement'''. (U+1B002-U+1B0FF)
* Symbols for Chinese Folk religion (total 6 characters) were added to '''Enclosed Ideographic Supplement'''. (U+1F260-U+1F265)
* Stupa, Pagoda, Sled and Flying Saucer emoji (total 4 characters) were added to '''Transport and Map Symbols'''. (U+1F6D3-U+1F6D4 and U+1F6F7-U+1F6F8)
* (total 66 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F900-U+1F90B, U+1F91F, U+1F928-U+1F92F, U+1F931-U+1F932, U+1F94C, U+1F95F-U+1F96B, U+1F992-U+1F997 and U+1F9D0-U+1F9E6)
== Unicode 11.0 ==
Unicode 11.0, was released in June 5, 2018. It encoded 137,374 characters, adding 684 new characters.
=== New blocks ===
* '''Georgian Extended''' (U+1C90-U+1CBF), containing 46 characters, was added.
* '''Hanifi Rohingya''' (U+10D00-U+10D3F), containing 50 characters, was added.
* '''Old Sogdian''' (U+10F00-U+10F2F), containing 40 characters, was added.
* '''Sogdian''' (U+10F30-U+10F6F), containing 42 characters, was added.
* '''Dogra''' (U+11800-U+1184F), containing 60 characters, was added.
* '''Gunjala Gondi''' (U+11D60-U+11DAF), containing 63 characters, was added.
* '''Makasar''' (U+11EE0-U+11EFF), containing 25 characters, was added.
* '''Medefaidrin''' (U+16E40-U+16E9F), containing 91 characters, was added.
* '''Mayan Numerals''' (U+1D2E0-U+1D2FF), containing 20 characters, was added.
* '''Indic Siyaq Numbers''' (U+1EC70-U+1ECBF), containing 68 characters, was added.
* '''Chess Symbols''' (U+1FA00-U+1FA6F), containing 14 characters, was added.
=== Extended blocks ===
* Small letters Turned Ayb and Yi with Stroke (total 2 characters) were added to '''Armenian'''. (U+0560 and U+0588)
* A triangle Yod (total 1 character) were added to '''Hebrew'''. (U+05EF)
* A Dantayalan and currency symbols (total 3 characters) were added to '''N'Ko'''. (U+07FD-U+07FF)
* A Small Low Waw (total 1 character) was added to '''Arabic Extended-A'''. (U+08D3)
* A Sandhi mark (total 1 character) was added to '''Bengali'''. (U+09FE)
* An Abbreviation mark (total 1 character) was added to '''Gurmukhi'''. (U+0A76)
* A combining Anusvara Above (total 1 character) was added to '''Telugu'''. (U+0C04)
* A sign Siddham (total 1 character) was added to '''Kannada'''. (U+0C84)
* A letter for Buryat (total 1 character) was added to '''Mongolian'''. (U+1878)
* Symbols for chess notation, astrological and half star symbols (total 43 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BBA-U+2BBC, U+2BD3-U+2BEB and 2BF0-U+2BFE)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E4A-U+2E4E)
* A letter NN (total 1 character) was added to '''Bopomofo'''. (U+312F)
* Some ideographs for Kanji (total 5 characters) were added to '''CJK Unified Ideographs'''. (U+9FEB-U+9FEF)
* A small capital Q and a letter for Mazahua (total 3 characters) were added to '''Latin Extended-D'''. (U+A7AF and U+A7B8-U+A7B9)
* Letter and vowel sign Ay (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FE-U+A8FF)
* Letters Ttta, Vha and a vulgar fraction (total 3 characters) were added to '''Kharoshthi'''. (U+10A34-U+10A35 and U+10A48)
* A Number Sign Above (total 1 character) was added to '''Kaithi'''. (U+110CD)
* Letter Lhaa, vowel sign Aa and Ei (total 3 characters) were added to '''Chakma'''. (U+11144-U+11146)
* A combining Bindu Below (total 1 character) was added to '''Grantha'''. (U+1133B)
* A Sandhi mark (total 1 character) was added to '''Newa'''. (U+1145E)
* An alternate letter Ba (total 1 character) was added to '''Ahom'''. (U+1171A)
* A mark Pluta (total 1 character) was added to '''Soyombo'''. (U+11A9D)
* Additional ideographs (total 5 characters) were added to '''Tangut'''. (U+187ED-U+187F1)
* Tally marks (total 7 characters) were added to '''Counting Rod Numerals'''. (U+1D372-U+1D378)
* A Copyleft symbol (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F12F)
* A Skateboard emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6F9)
* Normal and negative circled shapes (total 4 characters) were added to '''Geometric Shapes Extended'''. (U+1F7D5-U+1F7D8)
* (total 65 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F94D-U+1F94F, U+1F96C-U+1F970, U+1F973-U+1F976, U+1F97A, U+1F97C-U+1F97F, U+1F998-U+1F99F, U+1F9A0-U+1F9A2, U+1F9B0-U+1F9B9, U+1F9C1-U+1F9C2 and U+1F9E7-U+1F9FF)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|FF10 FE00
|
|short diagonal stroke form # FULLWIDTH DIGIT ZERO
|}
== Unicode 12.0 ==
Unicode 12.0 was released on March 5, 2019. It encoded 137,928 characters, adding 554 new characters.
=== New blocks ===
* '''Elymaic''' (U+10FE0-U+10FFF), containing 23 characters, was added.
* '''Nandinagari''' (U+119A0-U+119FF), containing 65 characters, was added.
* '''Tamil Supplement''' (U+11FC0-U+11FFF), containing 51 characters, was added.
* '''Egyptian Hieroglyph Format Controls''' (U+13430-U+1343F), containing 9 characters, was added.
* '''Small Kana Extension''' (U+1B130-U+1B16F), containing 7 characters, was added.
* '''Nyiakeng Puachue Hmong''' (U+1E100-U+1E14F), containing 71 characters, was added.
* '''Wancho''' (U+1E2C0-U+1E2FF), containing 59 characters, was added.
* '''Ottoman Siyaq Numbers''' (U+1ED00-U+1ED4F), containing 61 characters, was added.
* '''Symbols and Pictographs Extended-A''' (U+1FA70-U+1FAFF), containing 16 characters, was added.
=== Extended blocks ===
* A sign Siddham (total 1 character) was added to '''Telugu'''. (U+0C77)
* Letters for Pail and Sanskrit (total 15 characters) were added to '''Lao'''. (U+0E86, U+0E89, U+0E8C, U+0E8E-U+0E93, U+0E98, U+0EA0, U+0EA8-U+0EA9, U+0EAC and U+0EBA)
* A sign Double Anusvara Antargomukha (total 1 character) was added to '''Vedic Extensions'''. (U+1CFA)
* An astrological symbol and Hellschreiber Pause symbol (total 2 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BC9 and U+2BFF)
* A Cornish Verse Divider (total 1 character) was added to '''Supplemental Punctuation'''. (U+2E4F)
* Egyptological letters, Anglicana W and letters for early Pinyin (total 11 characters) were added to '''Latin Extended-D'''. (U+A7BA-U+A7BF and U+A7C2-U+A7C6)
*Sinological phonetic letters (total 2 characters) were added to '''Latin Extended-E'''. (U+AB66-U+AB67)
* A Vedic Anusvara (total 1 character) was added to '''Newa'''. (U+1145F)
* An archaic letter Kha (total 1 character) was added to '''Takri'''. (U+116B8)
* Sign Jihvamuliya and Uphadhmaniya (total 2 characters) were added to '''Soyombo'''. (U+11A84-U+11A85)
* Letters for various Yi and Miao languages (total 16 characters) were added to '''Miao'''. (U+16F45-U+16F4A, U+16F4F and U+16F7F-U+16F87)
* Marks for Ancient Chinese texts (total 2 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE2-U+16FE3)
* Some additional ideographs (total 6 characters) were added to '''Tangut'''. (U+187F2-U+187F7)
* A Nasalization mark (total 1 character) was added to '''Adlam'''. (U+1E94B)
* A Spanish and Portuguese register mark (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F16C)
* Hindu Temple and Auto Rickshaw emoji (total 2 characters) were added to '''Transport and Map Symbols'''. (U+1F6D5 and U+1F6FA)
* Large colored circles and boxes (total 12 characters) were added to '''Geometric Shapes Extended'''. (U+1F7E0-U+1F7EB)
* (total 31 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90D-U+1F90F, U+1F93F, U+1F971, U+1F97B, U+1F9A5-U+1F9AA, U+1F9AE-U+1F9AF, U+1F9BA-U+1F9BF, U+1F9C3-U+1F9CA and U+1F9CD-U+1F9CF)
* Heterodox chess symbols (total 84 characters) were added to '''Chess Symbols'''. (U+1FA00-U+1FA53)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Spacing Modifier Letters
|02EA, 02EB
|2
|-
|Vedic Extensions
|1CF2..1CF3
|2
|-
|Currency Symbols
|20A9
|1
|-
|CJK Symbols and Punctuation
|3001, 3002
|2
|-
|Bopomofo
|3105..312F
|43
|-
|Bopomofo Extended
|31A0..31BA
|27
|-
|CJK Unified Ideographs Extension A
|37C3, 3B9D, 3CFD, 3FE0, 44EC, 4A76
|6
|-
|CJK Unified Ideographs
|5344, 55B9, 6ABC, 6FF9, 809E, 80BC, 80E9, 8132, 8159, 841C, 891D, 8C6C, 915E, 9FD4
|14
|-
|Phags-pa
|A840..A877
|56
|-
|Halfwidth and Fullwidth Forms
|FF01, FF0C, FF0E, FF1A, FF1B, FF1F
|6
|-
|CJK Unified Ideographs Extension B
|200DD, 20164, 20BBF, 20C02, 20CED, 21D4C, 2278B, 23AB8, 2459B, 24A7D, 24FB9, 25ED7, 2677C, 26B4C, 26C21, 26CBE, 26E3D, 28834, 289A1, 289C0, 28A0F, 28B46
|22
|-
|CJK Unified Ideographs Extension C
|2A8FB, 2A917, 2AA30
|3
|-
|CJK Unified Ideographs Extension E
|2BA52, 2BD77, 2C494, 2C72F, 2C734, 2CB38
|6
|-
|CJK Unified Ideographs Extension F
|2D23B, 2E83A
|2
|-
! colspan="2" |Total
!192
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|3001 FE00
|
|corner-justified form # IDEOGRAPHIC COMMA
|-
|3001 FE01
|
|centered form # IDEOGRAPHIC COMMA
|-
|3002 FE00
|
|corner-justified form # IDEOGRAPHIC FULL STOP
|-
|3002 FE01
|
|centered form # IDEOGRAPHIC FULL STOP
|-
|FF01 FE00
|
|corner-justified form # FULLWIDTH EXCLAMATION MARK
|-
|FF01 FE01
|
|centered form # FULLWIDTH EXCLAMATION MARK
|-
|FF0C FE00
|
|corner-justified form # FULLWIDTH COMMA
|-
|FF0C FE01
|
|centered form # FULLWIDTH COMMA
|-
|FF0E FE00
|
|corner-justified form # FULLWIDTH FULL STOP
|-
|FF0E FE01
|
|centered form # FULLWIDTH FULL STOP
|-
|FF1A FE00
|
|corner-justified form # FULLWIDTH COLON
|-
|FF1A FE01
|
|centered form # FULLWIDTH COLON
|-
|FF1B FE00
|
|corner-justified form # FULLWIDTH SEMICOLON
|-
|FF1B FE01
|
|centered form # FULLWIDTH SEMICOLON
|-
|FF1F FE00
|
|corner-justified form # FULLWIDTH QUESTION MARK
|-
|FF1F FE01
|
|centered form # FULLWIDTH QUESTION MARK
|}
== Unicode 12.1 ==
Unicode 12.1 was released on May 7, 2019. It encoded 137,929 characters, adding only 1 new character.
=== Extended blocks ===
* A square era name Reiwa (total 1 character) was added to '''Enclosed CJK Letters and Months'''. (U+32FF)
== Unicode 13.0 ==
Unicode 13.0 was released on March 10, 2020. It encoded 143,859 characters, adding 5,930 new characters.
=== New blocks ===
* '''Yezidi''' (U+10E80-U+10EBF), containing 47 characters, was added.
* '''Chorasmian''' (U+10FB0-U+10FDF), containing 28 characters, was added.
* '''Dives Akuru''' (U+11900-U+1195F), containing 72 characters, was added.
* '''Lisu Supplement''' (U+11FB0-U+11FBF), containing 1 character, was added.
* '''Khitan Small Script''' (U+18B00-U+18CFF), containing 470 characters, was added.
* '''Tangut Supplement''' (U+18D00-U+18D08), containing 9 characters, was added.
* '''Symbols for Legacy Computing''' (U+1FB00-U+1FBFF), containing 212 characters, was added.
* '''CJK Unified Ideographs Extension G''' (U+30000-U+3134F), containing 4939 characters, was added.
=== Extended blocks ===
* Letters for African languages and Punjabi (total 10 characters) were added to '''Arabic Extended-A'''. (U+08BE-U+08C7)
* A sign Overline (total 1 character) was added to '''Oriya'''. (U+0B55)
* A Vedic Anusvara (total 1 character) was added to '''Malayalam'''. (U+0D04)
* A sign Candrabindu (total 1 character) was added to '''Sinhala'''. (U+0D81)
* Combining diacritical marks for Scottish phonology (total 2 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1ABF-U+1AC0)
* A Japanese symbol for Type A Electronics (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B97)
* Cross patties and a Tironian sign Capita Et (total 3 characters) were added to '''Supplemental Punctuation'''. (U+2E50-U+2E52)
* Letters for Taiwan and Cantonese language (total 5 characters) were added to '''Bopomofo Extended'''. (U+31BB-U+31BF)
* Some disunified ideographs (total 10 characters) were added to '''CJK Unified Ideographs Extension A'''. (U+4DB6-4DBF)
* Some ideographs for China (total 13 characters) were added to '''CJK Unified Ideographs'''. (U+9FF0-U+9FFC)
* Letters for Gaulish (total 6 characters) were added to '''Latin Extended-D'''. (U+A7C7-U+A7CA and U+A7F5-U+A7F6)
* An alternate sign Nasanta (total 1 character) was added to '''Syloti Nagri'''. (U+A82C)
* Letter R With Midle Tilde and modifier letters for Scottish phonology (total 4 characters) were added to '''Latin Extended-E'''. (U+AB68-U+AB6B)
* A symbol Ascia (total 1 character) was added to '''Ancient Symbols'''. (U+1019C)
* A letter for Pali (total 1 character) was added to '''Chakma'''. (U+11147)
* A vowel sign Prishthamatra E and Inverted Candrabindu (total 2 characters) were added to '''Sharada'''. (U+111CE and U+111CF)
* Double comma, sign Jihvamuliya and Uphadhmaniya (total 3 characters) were added to '''Newa'''. (U+1145A and U+11460-U+11461)
* Khitan Small Script Filler and reading marks for Vietnamese (total 3 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE4 and U+16FF0-U+16FF1)
* Some additional components (total 13 characters) were added to '''Tangut Components'''. (U+18AF3-U+18AFF)
* Creative Commons license symbols and Mask Work symbol (total 7 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10D-U+1F10F, U+1F16D-1F16F and U+1F1AD)
* Hut, Elevator, Pickup Truck and Roller Skate emoji (total 4 characters) were added to '''Transportation and Map Symbols'''. (U+1F6D6-U+1F6D7 and U+1F6FB-U+1F6FC)
* Arrows for legacy computing (total 2 characters) were added to '''Supplemental Arrows-C'''. (U+1F8B0-U+1F8B1)
* (total 10 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90C, U+1F972, U+1F977-U+1F978, U+1F9A3-U+1F9A4, U+1F9AB-U+1F9AD and U+1F9CB)
* (total 41 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA74, U+1FA83-U+1FA86, U+1FA96-U+1FAA8, U+1FAB0-U+1FAB6, U+1FAC0-U+1FAC2 and U+1FAD0-U+1FAD6)
* Gongche charaters for Kunqu Opera (total 7 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6D7-U+2A6DD)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Tagalog
|1700..170C, 170E..1714
|20
|-
|Mongolian
|1834, 1871, 1878
|3
|-
|Sundanese
|1BAB
|1
|-
|Currency Symbols
|20BF
|1
|-
|CJK Radicals Supplement
|2E80..2E99, 2E9B..2EF3
|115
|-
|Kangxi Radicals
|2F00..2FD5
|214
|-
|CJK Unified Ideographs Extension A
|3472, 38C7, 3DB8, 3FE0, 440B, 46E9
|6
|-
|CJK Unified Ideographs
|53FD, 6146, 6711, 671C, 6721, 6725, 6BD2, 7B9A, 87CE, 8956, 93BF, 9B97
|12
|-
|Latin Extended-D
|A764..A765
|2
|-
|Phags-pa
|A86D
|1
|-
|Tangut
|175F6, 17F0D, 17F8A, 17FA5, 180D6, 18139, 18147, 184F1, 18736
|9
|-
|Tangut Components
|18843, 18856, 1888C, 1890A, 18915, 1893B
|6
|-
|Adlam
|1E900..1E94A, 1E950..1E959, 1E95E..1E95F
|71
|-
|Miscellaneous Symbols and Pictographs
|1F3B1
|1
|-
|Supplemental Symbols and Pictographs
|1F995..1F998, 1F99B..1F99E, 1F9B0..1F9B3, 1F9E7
|13
|-
|CJK Unified Ideographs Extension B
|20219, 21249, 21827, 22C3A, 2327B, 23496, 2355E, 2363B, 236ED, 23839, 23FD5, 24261, 24726, 248F2, 2548E, 26657, 26C9E, 26FE1, 27334, 27C0E, 27CEF, 2A38C
|22
|-
|CJK Unified Ideographs Extension C
|2AED5, 2AEF3, 2AF76, 2B09F, 2B1C3, 2B1E5
|6
|-
|CJK Unified Ideographs Extension E
|2B83C, 2B8D9..2B8DA, 2B96F, 2BBD7, 2BD61, 2BE4A, 2BF1D, 2BF9D, 2C0B8, 2C142, 2C176, 2C316, 2C3FB, 2C402, 2C7AC, 2C82C, 2C83A, 2C9A1, 2CC88, 2CD68
|21
|-
|CJK Unified Ideographs Extension F
|2DC09, 2DE4A, 2EB7E, 2EB89
|4
|-
|CJK Compatibility Ideographs Supplement
|2F83B, 2F878, 2F8D6..2F8D7, 2F8DA, 2F8F0, 2F984, 2FA02
|8
|-
! colspan="2" |Total
!536
|}
== Unicode 14.0 ==
Unicode 14.0 was released on September 14, 2021. It encoded 144,697 characters, adding 838 new characters.
=== New blocks ===
* '''Arabic Extended-B''' (U+0870-U+089F), containing 41 characters, was added.
* '''Vithkuqi''' (U+10570-U+105BF), containing 70 characters, was added.
* '''Latin Extended-F''' (U+10780-U+107BF), containing 57 characters, was added.
* '''Old Uyghur''' (U+10F70-U+10FAF), containing 26 characters, was added.
* '''Unified Canadian Aboriginal Syllabics Extended-A''' (U+11AB0-U+11ABF), containing 16 characters, was added.
* '''Cypro-Minoan''' (U+12F90-U+12FFF), containing 99 characters, was added.
* '''Tangsa''' (U+16A70-U+16ACF), containing 89 characters, was added.
* '''Kana Extended-B''' (U+1AFF0-U+1AFFF), containing 13 characters, was added.
* '''Znamenny Musical Notation''' (U+1CF00-U+1CFFF), containing 185 characters, was added.
* '''Latin Extended-G''' (U+1DF00-U+1DFFF), containing 31 characters, was added.
* '''Toto''' (U+1E290-U+1E2BF), containing 31 characters, was added.
* '''Ethiopic Extended-B''' (U+1E7E0-U+1E7FF), containing 28 characters, was added.
=== Extended blocks ===
* An End of Text punctuation mark (total 1 character) was added to '''Arabic'''. (U+061D)
* Letters for Balti and Quranic orthography (total 12 characters) were added to '''Arabic Extended-A'''. (U+08B5 and U+08C8-U+08D2)
* A sign Nukta and letter Nakaara Pollu (total 2 characters) were added to '''Telugu'''. (U+0C3C and U+0C5D)
* A letter Nakaara Pollu (total 1 character) was added to '''Kannada'''. (U+0CDD)
* A letter Ra, sign Pamudpod and archaic letter Ra (total 3 characters) were added to '''Tagalog'''. (U+170D, U+1715 and U+171F)
* A fourth Free variation selector (total 1 character) was added to '''Mongolian'''. (U+180F)
* Combining diacritical marks for extended IPA (total 14 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1AC1-U+1ACE)
* An archaic ligature Jnya and punctuation marks (total 3 characters) were added to '''Balinese'''. (U+1B4C and U+1B7D-U+1B7E)
* A combining Dot Below Left (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFA)
* A Kyrgyz Som sign (total 1 character) was added to '''Currency Symbols'''. (U+20C0)
* A letter Caudate Chrivi (total 2 characters) were added to '''Glagolitic'''. (U+2C2F and U+2C5F)
* Medieval and phonetic punctuation marks (total 11 characters) were added to '''Supplemental Punctuation'''. (U+2E53-U+2E5D)
* Some ideographs for Macao (total 3 characters) were added to '''CJK Unified Ideographs'''. (U+9FFD-U+9FFF)
* Archaic European letters, modifier letters for Sokuon and Chatino orthography (total 13 characters) were added to '''Latin Extended-D'''. (U+A7C0-U+A7C1, U+A7D0-U+A7D1, U+A7D3, U+A7D5, U+A7D6-U+A7D9 and U+A7F2-U+A7F4)
* A modifier letter Wasla Above and honorifics (total 20 characters) were added to '''Arabic Presentation Forms-A'''. (U+FBC2, U+FD40-U+FD4F, U+FDCF and U+FDFE-U+FDFF)
* Letters for Old Tamil (total 6 characters) were added to '''Brahmi'''. (U+11070-U+11075)
* A vowel sign Vocalic R (total 1 character) was added to '''Khaiti'''. (U+110C2)
* An Abbreviation sign (total 1 character) was added to '''Takri'''. (U+116B9)
* Letters for Tai Ahom (total 7 characters) were added to '''Ahom'''. (U+11740-U+11746) The block was expanded from (U+11700-U+1173F) to (U+11700-U+1174F)
* Kana archaic letters (total 4 characters) were added to '''Kana Extended-A'''. (U+1B11F-U+1B122)
* Accidental symbols for Iranian classical music (total 2 characters) were added to '''Musical Symbols'''. (U+1D1E9-U+1D1EA)
* Playground Slide, Wheel and Ring Buoy emoji (total 3 characters) were added to '''Transportation and Map Symbols'''. (U+1F6DD-U+1F6DF)
* A Heavy Equals Sign emoji (total 1 character) was added to '''Geometric Shapes Extended'''. (U+1F7F0)
* A Troll and Face Holding Back Tears emoji (total 2 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F979 and U+1F9CC)
* (total 31 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA7B-U+1FA7C, U+1FAA9-U+1FAAC, U+1FAB7-U+1FABA, U+1FAC3-U+1FAC5, U+1FAD7-U+1FAD9, U+1FAE0-U+1FAE7 and U+1FAF0-U+1FAF6)
* Some ideographs for Macao (total 2 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6DE-U+2A6DF)
* Disunified ideographs and a G source ideograph for China, Hong Kong and Vietnam (total 4 characters) were added to '''CJK Unified Ideographs Extension C'''. (U+2B735-U+2B738)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Latin Extended-B
|0184..0185
|2
|-
|Arabic
|0674..0678, 06C5, 06C7, 06FE
|8
|-
|Letterlike Symbols
|210B, 2110, 2112, 211B, 212C, 2130..2131, 2133
|8
|-
|Enclosed Alphanumerics
|2460..24FF
|160
|-
|Dingbats
|2776..2793
|30
|-
|CJK Symbols and Punctuation
|3001..3029, 3030..303D, 303F
|56
|-
|CJK Strokes
|31C0..31E3
|36
|-
|Katakana Phonetic Extensions
|31F0..31FF
|16
|-
|Enclosed CJK Letters and Months
|3200..321E, 3220..32FF
|255
|-
|CJK Compatibiity
|3300..33FF
|256
|-
|CJK Unified Ideographs Extension A
|3777, 3B3F
|2
|-
|CJK Unified Ideographs
|5DD5, 652C, 6AC0
|3
|-
|Arabic Presentation Forms-A
|FBD7..FBD8, FBDD, FBE0..FBE1
|5
|-
|Vertical Forms
|FE10..FE19
|10
|-
|CJK Compatibiity Forms
|FE30..FE4F
|32
|-
|Small Form Variants
|FE50..FE52, FE54..FE66, FE68..FE6B
|26
|-
|Halfwidth and Fullwidth Forms
|FF01..FF9F, FFA1..FFBE, FFC2..FFC7, FFCA..FFCF, FFD2..FFD7, FFDA..FFDC, FFE0..FFE6, FFE8..FFEE
|225
|-
|Egyptian Hieroglyphs
|1300A, 13017, 1302D, 13032, 13034..13035, 13037..13038, 1303A..1303E, 1304E..1304F, 13055, 13057, 13068, 1309A, 130D2, 130D5, 130F6, 130FE, 13192, 1325F, 13267, 1326A, 13281, 13297, 1329E, 132B4, 132C1, 132E6, 13304, 1331F, 13378..1337B, 1337D..1337E, 133F3, 133FA..13403, 1340D, 13417, 1342B
|55
|-
|Mathematical Alphanumeric Symbols
|1D49C, 1D49E..1D49F, 1D4A2, 1D4A5..1D4A6, 1D4A9..1D4AC, 1D4AE..1D4B5
|18
|-
|Enclosed Alphanumeric Supplement
|1F100..1F1AD, 1F1E6..1F1FF
|200
|-
|Enclosed Ideographic Supplement
|1F200..1F202, 1F210..1F23B, 1F240..1F248, 1F250..1F251, 1F260..1F265
|64
|-
|Supplemental Symbols and Pictographs
|1F930
|1
|-
|CJK Unified Ideographs Extension B
|22ADC, 230F2, 25B27, 26F28
|4
|-
! colspan="2" |Total
!1472
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|1D49C FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE00
|
|chancery style # SCRIPT CAPITAL B
|-
|1D49E FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE00
|
|chancery style # SCRIPT CAPITAL E
|-
|2131 FE00
|
|chancery style # SCRIPT CAPITAL F
|-
|1D4A2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE00
|
|chancery style # SCRIPT CAPITAL H
|-
|2110 FE00
|
|chancery style # SCRIPT CAPITAL I
|-
|1D4A5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE00
|
|chancery style # SCRIPT CAPITAL L
|-
|2133 FE00
|
|chancery style # SCRIPT CAPITAL M
|-
|1D4A9 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE00
|
|chancery style # SCRIPT CAPITAL R
|-
|1D4AE FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Z
|-
|1D49C FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE01
|
|roundhand style # SCRIPT CAPITAL B
|-
|1D49E FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE01
|
|roundhand style # SCRIPT CAPITAL E
|-
|2131 FE01
|
|roundhand style # SCRIPT CAPITAL F
|-
|1D4A2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE01
|
|roundhand style # SCRIPT CAPITAL H
|-
|2110 FE01
|
|roundhand style # SCRIPT CAPITAL I
|-
|1D4A5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE01
|
|roundhand style # SCRIPT CAPITAL L
|-
|2133 FE01
|
|roundhand style # SCRIPT CAPITAL M
|-
|1D4A9 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE01
|
|roundhand style # SCRIPT CAPITAL R
|-
|1D4AE FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Z
|}
===Named Sequences===
Here is a table with new named character sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Name
|-
|0915 093C
|DEVANAGARI SEQUENCE FOR LETTER QA
|-
|0916 093C
|DEVANAGARI SEQUENCE FOR LETTER KHHA
|-
|0917 093C
|DEVANAGARI SEQUENCE FOR LETTER GHHA
|-
|091C 093C
|DEVANAGARI SEQUENCE FOR LETTER ZA
|-
|0921 093C
|DEVANAGARI SEQUENCE FOR LETTER DDDHA
|-
|0922 093C
|DEVANAGARI SEQUENCE FOR LETTER RHA
|-
|092B 093C
|DEVANAGARI SEQUENCE FOR LETTER FA
|-
|092F 093C
|DEVANAGARI SEQUENCE FOR LETTER YYA
|-
|09A1 09BC
|BENGALI SEQUENCE FOR LETTER RRA
|-
|09A2 09BC
|BENGALI SEQUENCE FOR LETTER RHA
|-
|09AF 09BC
|BENGALI SEQUENCE FOR LETTER YYA
|-
|0A32 0A3C
|GURMUKHI SEQUENCE FOR LETTER LLA
|-
|0A38 0A3C
|GURMUKHI SEQUENCE FOR LETTER SHA
|-
|0A16 0A3C
|GURMUKHI SEQUENCE FOR LETTER KHHA
|-
|0A17 0A3C
|GURMUKHI SEQUENCE FOR LETTER GHHA
|-
|0A1C 0A3C
|GURMUKHI SEQUENCE FOR LETTER ZA
|-
|0A2B 0A3C
|GURMUKHI SEQUENCE FOR LETTER FA
|-
|0B21 0B3C
|ORIYA SEQUENCE FOR LETTER RRA
|-
|0B22 0B3C
|ORIYA SEQUENCE FOR LETTER RHA
|}
== Unicode 15.0 ==
Unicode 15.0 was released on September 13, 2022. It encoded 149,186 characters, adding 4,489 new characters.
=== New blocks ===
* '''Arabic Extended-C''' (U+10EC0-U+10EFF), containing 3 characters, was added.
* '''Devanagari Extended-A''' (U+11B00-U+11B5F), containing 10 characters, was added.
* '''Kawi''' (U+11F00-U+11F5F), containing 86 characters, was added.
* '''Kaktovik Numerals''' (U+1D2C0-U+1D2DF), containing 20 characters, was added.
* '''Cyrillic Extended-D''' (U+1E030-U+1E08F), containing 63 characters, was added.
* '''Nag Mundari''' (U+1E4D0-U+1E4FF), containing 42 characters, was added.
* '''CJK Unified Ideographs Extension H''' (U+31350-U+323AF), containing 4192 characters, was added.
=== Extended blocks ===
* A Yamakkan (total 1 character) was added to '''Lao'''. (U+0ECE)
* A combining Anusvara Above Right (total 1 character) was added to '''Kannada'''. (U+0CF3)
* Letters Qa, Short I and Vocalic R (total 3 characters) were added to '''Khojki'''. (U+1123F-U+11241)
* An additional hieroglyph to Group V (total 1 character) was added to '''Egyptian Hieroglyphs'''
* Extended format controls (total 29 characters) were added to '''Egyptian Hieroglyph Format Controls'''. (U+13439-U+13455). The block was expanded from (U+13430-U+1343F) to (U+13430-U+1345F)
* Hiragana and Katakana Small Ko (total 2 characters) were added to '''Small Kana Extension'''. (U+1B132 and U+1B155)
* Letters for Malayalam transliteration (total 6 characters) were added to '''Latin Extended-G'''. (U+1DF25-U+1DF2A)
* A Wireless emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6DC)
* A Nine Pointed White Star (total 1 character) was be added to '''Geometric Shapes Extended'''. (U+1F7D9)
* A Lot of Fortune, eclipse symbols and symbols for dwarf planets (total 6 characters) were added to '''Alchemical symbols'''. (U+1F774-U+1F776 and U+1F77B-U+1F77F)
* (total 20 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA75-U+1FA77, U+1FA87-U+1FA88, U+1FAAD-U+1FAAF, U+1FABB-U+1FABF, U+1FACE-U+1FACF, U+1FADA-U+1FADB, U+1FAE8 and U+1FAF7-U+1FAF8)
* A disunified ideograph for Macao (total 1 character) was added to '''CJK Unified Ideographs Extension C'''. (U+2B739)
===Glyph Changes===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|IPA Extensions
|025E, 029A
|2
|-
|United Canadian Aboriginal Syllabics
|144B, 14D1, 1506, 15C0..15C3, 15E8..15EE, 1601, 1604..1607, 160A..160D, 1614..162D, 1630..163F, 1646..1647, 165A
|66
|-
|United Canadian Aboriginal Syllabics Extended
|18DB, 18EC, 18F1..18F2, 18F5
|5
|-
|Sundanese
|1BBF
|1
|-
|Optical Character Recognition
|2447
|1
|-
|CJK Unified Ideographs Extension A
|34DC, 3BF6, 3C43, 48B4, 4DBE
|5
|-
|CJK Unified Ideographs
|585F, 5F50, 6BC0, 7BC9, 833E
|5
|-
|Cyrillic Extended-B
|A66E
|1
|-
|Old Turkic
|10C47
|1
|-
|Egyptian Hieroglyphs
|various (new standardized variation sequences)
|94
|-
|Khitan Small Script
|18CCA
|1
|-
|Wancho (font update)
|1E2C0..1E2F9, 1E2FF
|59
|-
|Alchemical Symbols (font update)
|1F700..1F773
|116
|-
|CJK Unified Ideographs Extension B
|20048, 20A1C, 2143F, 21A5F, 21C08, 21FBA, 22ACF, 23392, 238A7, 23D8F, 23F4E, 25D20, 26E30, 27B48, 27C4F, 28633, 28B02, 28E9A, 29760, 2A60F
|20
|-
|CJK Unified Ideographs Extension C
|2B249
|1
|-
|CJK Unified Ideographs Extension E
|2BB37, 2BD7D, 2C151, 2C1E0, 2C2D6, 2C5CA, 2C810, 2CD34
|8
|-
|CJK Unified Ideographs Extension F
|2CF4E, 2D25D, 2D3EC, 2D6A7, 2D7BA, 2D979, 2DA74, 2DA97, 2DC13, 2DDC0, 2DF10, 2DF78, 2E05A, 2E0AE, 2E516, 2E640, 2E680, 2EA63
|18
|-
|CJK Compatibility Ideographs Supplement
|2F804, 2F805, 2F833, 2F835, 2F84C, 2F84F, 2F852, 2F855, 2F887, 2F88B, 2F899, 2F8A0, 2F8A6, 2F8A7, 2F8AD, 2F8B1, 2F8B4, 2F8B7, 2F8BA, 2F8D0, 2F8E0..2F8E2, 2F8E5, 2F8E6, 2F8FE, 2F900, 2F901, 2F907, 2F912, 2F922, 2F926, 2F936, 2F938, 2F94E, 2F959, 2F95F, 2F96C, 2F99F, 2F9B8, 2F9BA, 2F9D3, 2F9DB, 2F9DC, 2F9E8, 2F9EA, 2F9EE, 2FA00, 2FA0D, 2FA1B
|50
|-
|CJK Unified Ideographs Extension G
|302FC, 30723, 30A6D, 30CF7, 30DBF, 31006, 3105D
|7
|-
! colspan="2" |Total
!461
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|13091 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027
|-
|13092 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027A
|-
|13093 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D028
|-
|130A9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D047
|-
|1310F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F016
|-
|13117 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F023
|-
|1311C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F028
|-
|13121 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F032
|-
|13127 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F037A
|-
|13139 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13139 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13183 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH H005
|-
|13187 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH H008
|-
|131A0 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131A0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131B1 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B1 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B8 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M009
|-
|131B9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M010
|-
|131BA FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M010A
|-
|131CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M017
|-
|131EE FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131EE FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131F8 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N010
|-
|131F9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131F9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131FA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N012
|-
|131FA FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N012
|-
|13216 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH N035
|-
|13257 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O006
|-
|1327B FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH O029
|-
|1327F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O031
|-
|1327F FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O031
|-
|13285 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O036
|-
|1328C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O039
|-
|132A4 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132A4 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132AA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Q003
|-
|132CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH R024
|-
|132DC FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S010
|-
|132E7 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E7 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E9 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S020
|-
|132F8 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S033
|-
|132FD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S037
|-
|13302 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S042
|-
|13303 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S043
|-
|13307 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T001
|-
|13308 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T002
|-
|13310 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008
|-
|13311 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008A
|-
|13312 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13312 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13313 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13313 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13314 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T010
|-
|13314 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T010
|-
|1331B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331B FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T016A
|-
|13321 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13321 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13322 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13322 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13331 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T035
|-
|13331 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T035
|-
|1333B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U007
|-
|1333C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U008
|-
|1334A FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U022
|-
|13361 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U042
|-
|13373 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V007A
|-
|13377 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V010
|-
|13378 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V011
|-
|1337D FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V012A
|-
|13385 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V019
|-
|13399 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V026
|-
|1339A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V027
|-
|133AF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W001
|-
|133B0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W002
|-
|133BF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W014
|-
|133D3 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH X004A
|-
|133DD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH Y002
|-
|133F2 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z007
|-
|133F5 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z010
|-
|133F6 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z011
|-
|13403 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z015I
|-
|13416 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA008
|-
|13419 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|1341A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA012
|-
|13423 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA021
|-
|1342C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA030
|-
|1342E FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA032
|-
|13443 FE00
|
|expanded # EGYPTIAN HIEROGLYPH LOST SIGN
|-
|13444 FE00
|
|expanded # EGYPTIAN HIEROGLYPH HALF LOST SIGN
|-
|13445 FE00
|
|expanded # EGYPTIAN HIEROGLYPH TALL LOST SIGN
|-
|13446 FE00
|
|expanded # EGYPTIAN HIEROGLYPH WIDE LOST SIGN
|}
== Unicode 15.1 ==
Unicode 15.1 was released on September 12th, 2023. It encoded 149,813 characters, adding 627 new characters.
=== New Blocks ===
* '''CJK Unified Ideographs Extension I''' (U+2EBF0-U+2EE5F), containing 622 characters, was added.
=== Extended Blocks ===
* 4 Ideographic characters were added to '''Ideographic Description Characters'''. (U+2FFC-U+2FFF)
* An Ideographic subtraction (total 1 character) was added to '''CJK Strokes'''. (U+31EF)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|CJK Unified Ideographs Extension A
|357E, 358B..358E, 3599..359D, 35AF..35B0, 35B2..35B3, 35DF..35E1, 35EF, 360F, 3612, 3F94, 44D5, 48EE
|5
|-
|CJK Unified Ideographs
|5098, 512D, 517A, 5391, 54DB, 551C, 551F, 55B8, 55ED, 56AB, 591E, 594A, 5B2E, 5DFC..5DFD, 5EE4, 609E, 65B0, 65B3, 65D5, 65F2, 67B2, 6AB6, 6AEC, 6C69, 6FC2, 6FD3, 7019, 7361, 74BD, 7934, 820B, 826E, 83BB, 8412, 8456, 848A, 896F, 8E34, 8FD7, 9166, 9855, 985E, 9C4D
|5
|-
|Latin Extended-D
|A798
|1
|-
|Latin Extended-E
|AB5A
|1
|-
|Tangut
|17105, 172A4, 17BD1..17BD3, 17EF9, 18136
|59
|-
|Alchemical Symbols
|1F741, 1F747, 1F74C, 1F74F, 1F756, 1F758, 1F763, 1F768, 1F76D, 1F76E
|116
|-
|CJK Unified Ideographs Extension B
|20302, 2087A, 20C00, 230B7, 2339E, 236EF, 237C3, 23B87, 23CC0, 23CD9, 23E5E, 2486F, 249D6, 249E8, 24D6A, 2585E, 25D89, 26A5A..26A5B, 26A73, 26A82..26A83, 26A90, 26AA6, 26AA8, 26AD8, 27350, 279F8, 284A3, 28BBA, 29516, 29530
|20
|-
|CJK Unified Ideographs Extension C
|2A741, 2AB63, 2ACD8, 2AF6F, 2B173, 2B490
|1
|-
|CJK Unified Ideographs Extension E
|2BC2E, 2BF45, 2C04C, 2C13A, 2C43C, 2C43E, 2C816
|8
|-
|CJK Unified Ideographs Extension F
|2D1CC..2D1CD, 2D1DD, 2D1E4, 2D1F7, 2D203, 2D256, 2D266, 2D2A2, 2D2AC, 2D2DA
|18
|-
|CJK Unified Ideographs Extension G
|301D4, 301D9, 301E4, 301E8, 301FF..30200, 30205, 3020C, 30211, 30215..30217, 30220, 30234..30235, 30237
|7
|-
|CJK Unified Ideographs Extension H
|314B7, 31542, 31569, 31C7F, 31D5A, 31F68
|7
|-
! colspan="2" |Total
!164
|}
== Unicode 16.0 ==
Unicode 16.0 was released on September 10th, 2024. It encoded 154,998 characters, adding 5185 new characters.
=== New Blocks ===
* '''Todhri''' (U+105C0-U+105FF), containing 52 characters, was added.
* '''Garay''' (U+10D40-U+10D8F), containing 69 characters, was added.
* '''Tulu-Tigalari''' (U+11380-U+113FF), containing 80 characters, was added.
* '''Myanmar Extended-C''' (U+116D0-U+116FF), containing 20 characters, was added.
* '''Sunuwar''' (U+11BC0-U+11BFF), containing 44 characters, was added.
* '''Egyptian Hieroglyphs Extended-A''' (U+13460-U+143FF), containing 3995 characters, was added.
* '''Gurung Khema''' (U+16100-U+1613F), containing 58 characters, was added.
* '''Kirat Rai''' (U+16D40-U+16D7F), containing 58 characters, was added.
* '''Symbols for Legacy Computing Supplement''' (U+1CC00-U+1CEBF), containing 686 characters, was added.
* '''Ol Onal''' (U+1E5D0-U+1E5FF), containing 44 characters, was added.
=== Extended Blocks ===
* A combining diacritical mark for Jawi (total 1 character) was added to '''Arabic Extended-B'''. (U+0897)
* Inverted letters and a punctuation mark (total 3 characters) was added to '''Balinese'''. (U+1B4E-U+1B4F and U+1B7F)
* A letter Tje (total 2 characters) was added to '''Cyrillic Extended-C'''. (U+1C89-U+1C8A)
* Legacy computing symbols for Delete (total 3 characters) was added to '''Control Pictures'''. (U+2427-U+2429)
* CJK strokes HXG and SZP (total 2 characters) was added to '''CJK Strokes'''. (U+31E4-U+31E5)
* A capital Rams Horn, an S with Diagonal Stroke, Lamda Letters, and letters for Wakashan and Salishan Languages (total 6 characters) was added to '''Latin Extended-D'''. (U+A7CB-U+A7CD, U+A7DA-U+A7DC)
* A combining Alef overlay and letters with two dots vertically below (total 4 characters) was added to '''Arabic Extended-C'''. (U+10EC2-U+10EC4 and U+10EFC)
* A sign Nukta (total 1 character) was added to '''Kawi'''. (U+11F5A)
* A blank character (total 1 character) was added to '''Khitan Small Script'''. (U+18CFF)
* A rightwards arrow with hook, and arrows for legacy computing and arrows for Egyptology (total 12 characters) was added to '''Supplemental Arrows-C'''. (U+1F8B2-U+1F8BB, U+1F8C0-U+1F8C1)
* A Harp, Shovel, Leafless Tree, Fingerprint, Root Vegetable, Splatter, and Face with Bags Under Eyes (total 7 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA89, U+1FA8F, U+1FABE, U+1FAC6, U+1FADC, U+1FADF, and U+1FAE9)
* Graphic shapes for legacy computing (total 37 characters) was added to '''Symbols for Legacy Computing'''. (U+1FBCB-U+1FBEF)
== Unicode 17.0 ==
Unicode 17.0 was released on September 9th, 2025. It encoded 159,801 characters, adding 4,083 new characters.
=== New Blocks ===
* '''Sidetic''' (U+10940-U+1095F), containing 26 characters, was added.
* '''Sharada Supplement''' (U+11B60-U+11B7F), containing 8 characters, was added.
* '''Tolong Siki''' (U+11DB0-U+11DEF), containing 54 characters, was added.
* '''Beria Erfe''' (U+16EA0-U+16EDF), containing 50 characters, was added.
* '''Tangut Components Supplement''' (U+18D80-U+18DFF), containing 115 characters, was added.
* '''Miscellaneous Symbols Supplement''' (U+1CEC0-U+1CEFF), containing 34 characters, was added.
* '''Tai Yo''' (U+1E6C0-U+1E6FF), containing 55 characters, was added.
* '''CJK Unified Ideographs Extension J''' (U+323B0-U+3347F), containing 4298 characters, was added.
=== Extended Blocks ===
* A Noon with Ring Above (total 1 character) was added to '''Arabic Extended-B'''. (U+088F)
* An archaic ligature Shrii (total 1 character) was added to '''Telugu'''. (U+0C5C)
* An archaic ligature Shrii (total 1 character) was added to '''Kannada'''. (U+0CDC)
* Compound tone and harrington diacritics (total 26 characters) was to '''Combining Diacritical Marks Extended'''. (U+1ACF-U+1ADD, U+1AE0-U+1AEB)
* Saudi Riyal Sign (total 1 character) was added to '''Currency Symbols'''. (U+20C1)
* Equal Sign with Infinity Above (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B96)
* 2 capital letters for Middle English, Latin pharyngeal voiced fricative, and Modifier Letter Capital S (total 5 characters) was added to '''Latin Extended-D'''. (U+A7CE-U+A7CF, U+A7D2, U+A7D4, U+A7F1)
* Arabic Ligature Rahmatu Allaahi Alayh and Arabic Honorifics (total 25 characters) was added to '''Arabic Presentation Forms-A'''. (U+FBC3-U+FBD2, U+FD90, U+FD91, U+FDC8-U+FDCE)
* A Small Yeh Barree with Two Dots Below, Thin Noon, Biblical End of Verse, Yeh with Four Dots Below, Honorifics, Double Vertical Bar Below, and Small Low Noon (total 14 characters) was added to '''Arabic Extended-C'''. (U+10EC5-U+10EC7, U+10ED0-U+10ED8, U+10EFA-U+10EFB)
* Chinese Simplified and Traditional Er and Yangqin Slow Signs Two, Three, and Four (total 5 characters) was added to '''Ideographic Symbols and Punctuation'''. (U+16FF2-U+16FF6)
* Some additional ideographs (total 8 characters) was added to '''Tangut'''. (U+187F8-U+187FF)
* Additional ideographs (total 22 characters) was added to '''Tangut Supplement'''. (U+18D09-U+18D1E)
* Nine symbols (total 9 characters) was added to '''Symbols for Legacy Computing Supplement'''. (U+1CCFA-U+1CCFC, U+1CEBA-1CEBF)
* A Landslide (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D8)
* Historical asteroid symbols (total 4 characters) was added to '''Alchemical Symbols'''. (U+1F777-U+1F77A)
* Chemical symbols (total 9 characters) was added to '''Supplemental Arrows-C'''. (U+1F8D0-U+1F8D8)
* White and Black Chess Ferz and Alfil (total 4 characters) was added to '''Chess Symbols'''. (U+1FA54-U+1FA57)
* A trombone, treasure chest, hairy creature, orca, distorted face, and fight cloud (total 6 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA8A, U+1FA8E, U+1FAC8, U+1FACD, U+1FAEA, and U+1FAEF)
* An alarm bell symbol (total 1 character) was added to '''Symbols for Legacy Computing'''. (U+1FBFA)
* Additional ideographs (total 6 characters) was added to '''CJK Unified Ideographs Extension C'''. (U+2B73A-U+2B73F)
* Additional ideographs (total 12 characters) was added to '''CJK Unified Ideographs Extension E'''. (U+2CEA2-U+2CEAD)
== Unicode 18.0 ==
Unicode 18.0 will be released around September 2026. In August 2025, only 61 characters were accepted, but more were accepted in November 2025.
=== New Blocks ===
*'''Bengali Supplement''' (U+11DF0-U+11DFF), containing 2 characters, will be added.
* '''Archaic Cuneiform Numerals''' (U+12550-U+1268F), containing 311 characters, will be added.
* '''Jurchen''' (U+18E00-U+1919F), containing 914 characters, will be added.
* '''Jurchen Radicals''' (U+191A0-U+191DF), containing 51 characters, will be added.
* '''Musical Symbols Supplement''' (U+1D250-U+1D28F), containing 50 characters, will be added.
* '''Miscellaneous Symbols and Arrows Extended''' (U+1DB00-U+1DBFF), containing 29 characters, will be added.
* '''Seal Script''' (U+3D000-U+3FC3F), containing 11328 characters, will be added.
=== Extended Blocks ===
* Modifier letters Eh, Ini, and Yi (total 3 characters) will be added to '''Armenian'''. (U+0558, U+058B-U+058C)
* Hebrew Point Sheva Na Mudgash and Hebrew Point Dagesh Hazaq Mudgash (total 2 characters) will be added to '''Hebrew'''. (U+05C8-U+05C9)
* Signs for dot above and double dot above (total 2 characters) will be added to '''Oriya'''. (U+0B53-U+0B54)
* Alternate positioned IPA diacritics and diacritics for Chao and Khoe (total 7 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1ADE-U+1ADF, U+1AEC-U+1AF0)
* Latin subscript small letter w, y, and z and Modifier letter high and low vertical line (total 4 characters) will be added to '''Superscripts and Subscripts'''. (U+208F, U+209D-U+209F)
* Rufiyaa Sign, UAE Dirham Sign, and Omani Rial (total 3 characters) will be added to '''Currency Symbols'''. (U+20C2-U+20C4)
* Two Wiggly Exclamation Marks and Two Parenthesis with Middle Ring (total 4 characters) will be added to '''Supplemental Punctuation'''. (U+2E60-U+2E63)
* Latin capital letter closed omega and Latin capital letter r with long leg and (total 2 characters) will be added to '''Latin Extended-D'''. (U+A7DD and U+A7E2)
* Latin capital letter script r and script r with ring (total 2 characters) will be added to '''Latin Extended-E'''. (U+AB6C-U+AB6D)
* Latin modifier letters for clicks (total 5 characters) will be added to '''Latin Extended-F'''. (U+107BB-U+107BF)
* Arabic Crown Letters, Quranic Characters, and Arabic Crown (total 39 characters) will be added to '''Arabic Extended-C'''. (U+10EC9-U+10ECF, U+10ED9-U+10EEE, U+10EF0-U+10EF9)
* Devanagari Letter Alternate Ddda (total 1 character) will be added to '''Devanagari Extended-A'''. (U+11B0A)
* Extended Cuneiform Numeric Signs (total 12 characters) will be added to '''Cuneiform Numbers and Punctuation'''. (U+1246F, U+12475-U+1247F)
* Jurchen Small Script characters (total 5 characters) will be added to '''Khitan Small Script'''. (U+18CD6-U+18CDA)
* Two additional ideographs (total 2 characters) will be added to '''Tangut Supplement'''. (U+18D1F-U+18D20)
* Hiragana Digraph Koto, Katakana Diagraphs Toki, Tote, and Yori, letters alternate Ne, and Wi (total 6 characters) will be added to '''Kana Extended-A'''. (U+1B123-U+1B128)
* Katakana letter small archaic Ye (total 1 character) will be added to '''Small Kana Extension'''. (U+1B168)
* Leibnizian alchemical symbols, Leibnizian cossic characters, and Leibnizian mathematical signs and symbols (total 19 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED2-U+1CED4, U+1CEDD-U+1CEDF, U+1CEF1-U+1CEFD)
* Stein Zimmerman Symbols, Digit Slash Symbols, and other Symbols (total 23 characters) will be added to '''Musical Symbols'''. (U+1D127-U+1D128, U+1D1EB-U+1D1FF)
* Mathematical italic long s with descender s (U+1D6A6) will be added to '''Mathematical Alphanumeric Symbols'''.
* Affricate ligatures, letters with palatal hook, barred letters, RFE letters, Initial Teaching Alphabet, English Phonotypic Alphabet, Leibnizian cossic characters, and modifier letters (total 151 characters) will be added to '''Latin Extended-G'''. (U+1DF1F-U+1DF24, U+1DF2B-U+1DF81, U+1DF90-U+1DF96, U+1DFCD-U+1DFFF)
* A Tomobiki symbol (total 1 character) will be added to '''Enclosed Alphanumeric Supplement'''. (U+1F1AE)
* A lighthouse (total 1 character) will be added to '''Transport and Map Symbols'''. (U+1F6D9)
* A black circle with white vertical bar, and Extended Geometric Shapes (total 17 characters) will be added to '''Geometric Shapes Extended'''. (U+1F7DA-U+1F7DB, U+1F7F1-U+1F7FF)
* A meteor, eraser, net with handle, monarch butterfly, pickle, cracking face, leftwards thumb sign, and rightwards thumb sign (total 8 characters) will be added to '''Symbols and Pictographs Extended-A'''. (U+1FA8B-1FA8D, U+1FACC, U+1FADD, U+1FAEB, U+1FAF9-1FAFA)
* An additional ideograph (total 1 character) will be added to '''CJK Unified Ideographs Extension D'''. (U+2B81E)
== Code Points Provisionally Assigned==
This is a section where you can add any upcoming Unicode characters that have been [https://www.unicode.org/alloc/Pipeline.html#codepoint_reservation provisionally assigned for mature proposals] (but not yet accepted) for a future update of The Unicode Standard.
=== New Blocks ===
* '''Arabic Extended-D''' (U+10D90-U+10E5F), containing 3 characters, will be added.
* '''Sirmauri''' (U+11850-U+1188F), containing 55 characters, will be added.
* '''Leke''' (U+11B80-U+11BBF), containing 55 characters, will be added.
* '''Proto-Cuneiform''' (U+12690-U+12ECF), containing 1392 characters, will be added.
* '''Chisoi''' (U+16D80-U+16DAF), containing 40 characters, will be added.
* '''Mwangwego''' (U+16E00-U+16E3F), containing 64 characters, will be added.
* '''Shaaldaa''' (U+1C800-U+1CB2F), containing 804 characters, will be added.
=== Extended Blocks ===
* Telugu Sign Spacing Candrabindu (total 1 character) will be added to '''Telugu'''. (U+0C70)
* Kannada Signs Ardhanusvara and Combining Anusvara Above (total 1 character) will be added to '''Kannada'''. (U+0CF0 and U+0CF4)
* Mongolian Letter Manchu Alternative Ue (total 1 character) will be added to '''Mongolian'''. (U+1879)
* Combining Grave-Acute-Macron, Combining inverted lazy s Above, and Combining comma Above and acute (total 3 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1AF1-U+1AF3)
* Cyrillic small letter Yeru with connecting bar (total 1 character) will be added to '''Cyrillic Extended-C'''. (U+1C8B)
* Belarusian Ruble sign and Ruble sign with double vertical stem (total 2 characters) will be added to '''Currency Symbols'''. (U+20C5, U+20CF)
* Combining Long Triple Solidus Overlay and Combining Saltire Overlay (total 2 characters) will be added to '''Combining Diacritical Marks for Symbols'''. (U+20F1-U+20F2)
* Latin capital and small letter i with oblique stroke (total 2 characters) will be added to '''Latin Extended-D'''. (U+A7De-U+A7DF)
* Latin capital letter u with left hook (total 1 character) will be added to '''Latin Extended-E'''. (U+AB6E)
* Arabic Dotless Half-Yeh, Half-Yeh, Dotless Half-Jeem and Astronomical Kaf (total 4 characters) will be added to '''Arabic Extended-C'''. (U+10EC0-U+10EC1, U+10EC8, U+10EEF)
* Brahmi minimizing virama (total 1 character) will be added to '''Brahmi'''. (U+1107E)
* Tulu-Tigalari letter combining anusvara above, signs om pushpika with tail and shrii pushpika, and letter archaic II (total 5 characters) will be added to '''Tulu-Tigalari'''. (U+113CB, U+113D9-U+113DB)
* Newa Letter Heavy Ya (total 1 character) will be added to '''Newa'''. (U+11462)
* Dogra Signs Candrabindu and Avaragha (total 2 characters) will be added to '''Dogra'''. (U+1183C-U+1183D)
* Devanagari Jivamuliya and Upadhmaniya (total 2 characters) will be added to '''Devanagari Extended-A'''. (U+11B0B-U+11B0C)
* Alchemical Symbol for Calx-2 and Alchemical Symbol for Retort-2 (total 2 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED1, U+1CED5)
* Musical Symbol down arrowhead breath mark (total 1 character) will be added to '''Musical Symbols Supplement'''. (U+1D282)
* Small w with palatal hook, small n and r with double middle tilde, small capital i with retroflex hook, small open q, x with stroke, small wavy y, schwa with right hook, Romance dialectology symbols, zh ligature, Albanian letter edhe, Albanian Frashëri letters, Modifier letter capital y, and modifier letter accents (total 26 characters) will be added to '''Latin Extended-G'''. (U+1DF82-U+1DF8F, U+1DF97-U+1DFA3, U+1DFC4-U+1DFCD)
*Arabic Astronomical zero and five astronomical symbols (total 6 characters) will be added to Arabic Mathematical Alphabetic Symbols (U+1EEE0-U+1EEE5)
==Roadmap Blocks==
This is a section where proportional maps of proposed allocations to Unicode and ISO/IEC 10646 are presented. Italic indicates scripts for which detailed proposals have not yet been written.<ref>[https://unicode.org/roadmaps/smp/]</ref>
* '''Northern Palaeohispanic''' (U+10200-U+1023F)
* '''Southern Palaeohispanic''' (U+10240-U+1027F)
* '''''Shavian Quikscript''' (U+103E0-U+103FF)''
* '''Combining Diacritical Marks Extended-A''' (U+107C0-U+107FF)
* '''Proto-Sinaitic''' (U+108B0-U+108DF)
* '''''Numidian''' (U+10960-U+1097F)''
* '''Balti''' (U+10AA0-U+10ABF)
* '''Book Pahlavi''' (U+10BB0-U+10BDF)
* '''Baburi''' (U+10BE0-U+10BFF)
* '''Arabic Extended-D''' (U+10D90-U+10E5F)
* '''Landa''' (U+11250-U+1127F)
* '''Tani Lipi''' (U+114E0-U+114FF)
* '''Ranjana''' (U+11500-U+1157F)
* '''Zou''' (U+11750-U+117AF)
* '''Pyu''' (U+117B0-U+117FF)
* '''Vateluttu''' (U+11960-U+1199F)
* '''Balti-B''' (U+11CC0-U+11CFF)
* '''Tocharian''' (U+11E00-U+11E6F)
* '''Khotanese''' (U+11E70-U+11ECF)
* '''Pallava''' (U+11F60-U+11FAF)
* '''''Egyptian Hieroglyphs Extended-B''' (U+14680-U+151FF)''
* '''Mayan Hieroglyphs''' (U+15500-U+15AFF)
* '''Kore Sebeli''' (U+15B00-U+15B6F)<!--proposed to be accepted, 93 characters-->
* '''Mandombe''' (U+15B80-U+15FFF)
* '''Kurukh Banna''' (U+16140-U+1618F)
* '''Moon''' (U+161A0-U+161FF)
* '''Blissymbols''' (U+16200-U+167FF)
* '''Woleai''' (U+16B90-U+16BFF)
* '''Kpelle''' (U+16C00-U+16C7F)
* '''Tikamuli''' (U+16C80-U+16CBF)
* '''Tangsa (Khimhun)''' (U+16CD0-U+16CFF)
* '''Afaka''' (U+16D00-U+16D3F)
* '''Kulitan''' (U+16DD0-U+16DFF)
* '''''Bopomofo Extended-A''' (U+16FA0-U+16FAF)''
* '''Kanbun Extended-A''' (U+16FB0-U+16FDF)
* '''Khitan Large Script''' (U+19200-U+199FF)
* '''Pau Cin Hau Syllabary''' (U+19E00-U+1A2FF)
* '''Eskaya''' (U+1A300-U+1A75F)
* '''Rejang Extended''' (U+1A760-U+1A77F)
* '''''Kaida''''' (U+1A780-U+1A7FF)
* '''Naxi Dongba''' (U+1A800-U+1ACFF)
* '''''Naxi Geba''' (U+1AD00-U+1AFCF)''
* '''''Kana Extended-C''' (U+1AFD0-U+1AFEF)''
* '''Shuishu Logograms''' (U+1B300-U+1B5FF)
* '''Lisu Syllabic Script''' (U+1B600-U+1B9FF)
* '''Indus''' (U+1BA00-U+1BB8F)
* '''Pitman Shorthand''' (U+1BCB0-U+1BCFF)
* '''Proto-Elamite''' (U+1BE00-U+1C37F)
* '''Linear Elamite''' (U+1C380-U+1C4FF)
* '''Ndiko Jonam''' (U+1CB30-U+1CB7F)<!--proposed to be accepted, 60 characters-->
* '''N<nowiki>'</nowiki>ti''' (U+1CB80-U+1CBAF)<!--proposed to be accepted, 47 characters-->
* '''Old Chinese Musical Symbols (Flute and Pipa)''' (U+1D290-U+1D2BF)
* '''''Mathematical Alphanumeric Symbols Supplement''' (U+1D380-U+1D3FF)''
* '''Jianzi Format Controls''' (U+1DAE0-U+1DAFF)
* '''Leibnizian Ambiguous Signs''' (U+1DC00-U+1DC3F)<!--proposed to be accepted, 54 characters-->
* '''Eebee Hmong''' (U+1E150-U+1E1FF)
* '''Western Cham''' (U+1E200-U+1E26F)
* '''Loma''' (U+1E300-U+1E41F)
* '''Bagam''' (U+1E420-U+1E4CF)
* '''Pungchen''' (U+1E500-U+1E52F)
* '''''Pungchung''' (U+1E530-U+1E55F)''
* '''''Marchung''' (U+1E560-U+1E59F)''
* '''Brusha''' (U+1E5A0-U+1E5CF)
* '''''Chola''' (U+1E600-U+1E65F)''
* '''Box-Headed''' (U+1E660-U+1E6BF)
* '''Lampung''' (U+1E700-U+1E73F)
* '''Kerinci''' (U+1E740-U+1E76F)
* '''Buginese Supplement''' (U+1E770-U+1E7BF)
* '''''Lontara Bilang-Bilang''' (U+1E7C0-U+1E7DF)''
* '''N'Ko Supplement''' (U+1E960-1E97F)
* '''''Byblos''''' (U+1EB90-U+1EBFF)
* '''Persian Siyaq Numbers''' (U+1EC00-U+1EC7F)
* '''Diwani Siyaq Numbers''' (U+1ECC0-U+1ECFF)
* '''''Extended Pictographic Characters''' (U+1FC00-U+1FFFF)''
* '''CJK Unified Ideographs Components-A''' (U+2FA20-U+2FA9F)
* '''CJK Unified Ideographs Components-B''' (U+2FAA0-U+2FC1F)
== References ==
{{reflist}}
r0n309rsgwi5c4j6709cq9r57iki5e4
4656277
4656275
2026-08-04T18:12:00Z
Alexlatham96
377450
/* Roadmap Blocks */
4656277
wikitext
text/x-wiki
{{pp-protected|small=yes}}
{{Unicode page}}
{{TOC right}}
{{refimprove|date=June 2017}}
This page is about each version specification, and the differences between the versions.
== Unicode 1.0 ==
Unicode 1.0 was the first version of Unicode, released October 1991. It encoded 7,094 new characters.
=== “Blocks” ===
This version of Unicode did not formally group characters in blocks. But in comparison with version 2.0, the following “blocks” were available:
U+0000-U+FFFD
51 Blocks
* '''Basic Latin (formerly called ASCII)''' (U+0000-U+007F), containing 128 characters.
* '''Latin-1 Supplement (formerly called Latin1)''' (U+0080-U+00FF), containing 128 characters.
* '''Latin Extended-A''' '''(formerly called European Latin)''' (U+0100-U+017F), containing 127 characters.
* '''Latin Extended-B''' '''(formerly called Extended Latin)''' (U+0180-U+01FF), containing 113 characters.
* '''IPA Extensions''' '''(formerly called Standard Phonetic)''' (U+0250-U+02AF), containing 89 characters.
* '''Spacing Modifier Letters''' '''(formerly called Modifier Letters)''' (U+02B0-U+02FF), containing 57 characters.
* '''Combining Diacritical Marks''' '''(formerly called Generic Diacritical Marks)''' (U+0300-U+036F), containing 66 characters.
* '''Greek and Coptic''' '''(formerly called Greek)''' (U+0370-U+03FF), containing 112 characters.
* '''Cyrillic''' (U+0400-U+04FF), containing 192 characters.
* '''Armenian''' (U+0530-U+058F), containing 84 characters.
* '''Hebrew''' (U+0590-U+05FF), containing 52 characters.
* '''Arabic''' (U+0600-U+06FF), containing 169 characters.
* '''Devanagari''' (U+0900-U+097F), containing 104 characters.
* '''Bengali''' (U+0980-U+09FF), containing 89 characters.
* '''Gurmukhi''' (U+0A00-U+0A7F), containing 74 characters.
* '''Gujarati''' (U+0A80-U+0AFF), containing 75 characters.
* '''Oriya''' (U+0B00-U+0B7F), containing 78 characters.
* '''Tamil''' (U+0B80-U+0BFF), containing 61 characters.
* '''Telugu''' (U+0C00-U+0C7F), containing 80 characters.
* '''Kannada''' (U+0C80-U+0CFF), containing 80 characters.
* '''Malayalam''' (U+0D00-U+0D7F), containing 78 characters.
* '''Thai''' (U+0E00-U+0E7F), containing 92 characters.
* '''Lao''' (U+0E80-U+0EFF), containing 70 characters.
* '''Tibetan''' (U+1000-U+105F), containing 71 characters.
* '''Georgian''' (U+10A0-U+10FF), containing 78 characters.
* '''General Punctuation''' (U+2000-U+206F), containing 67 characters.
* '''Superscripts and Subscripts''' (U+2070-U+209F), containing 28 characters.
* '''Currency Symbols''' (U+20A0-U+20CF), containing 11 characters.
* '''Combining Marks for Symbols''' '''(formerly called Diacritical Marks for Symbols)''' (U+20D0-U+20FF), containing 18 characters.
* '''Letterlike Symbols''' (U+2100-U+214F), containing 57 characters.
* '''Number Forms''' (U+2150-U+218F), containing 48 characters.
* '''Arrows''' (U+2190-U+21FF), containing 91 characters.
* '''Mathematical Operators''' (U+2200-U+22FF), containing 242 characters.
* '''Miscellaneous Technical''' (U+2300-U+23FF), containing 43 characters.
* '''Control Pictures''' '''(formerly called Pictures for Control Codes)''' (U+2400-U+243F), containing 37 characters.
* '''Optical Character Recognition''' (U+2440-U+245F), containing 11 characters.
* '''Enclosed Alphanumerics''' (U+2460-U+24FF), containing 139 characters.
* '''Box Drawing''' '''(formerly called Form and Chart Components)''' (U+2500-U+257F), containing 128 characters.
* '''Block Elements''' '''(formerly called Blocks)''' (U+2580-U+259F), containing 22 characters.
* '''Geometric Shapes''' (U+25A0-U+25FF), containing 79 characters.
* '''Miscellaneous Symbols''' '''(formerly called Miscellaneous Dingbats)''' (U+2600-U+26FF), containing 106 characters.
* '''Dingbats''' '''(formerly called Zapf Dingbats)''' (U+2700-U+27BF), containing 160 characters.
* '''CJK Symbols and Punctuation''' (U+3000-U+303F), containing 56 characters.
* '''Hiragana''' (U+3040-U+309F), containing 90 characters.
* '''Katakana''' (U+30A0-U+30FF), containing 90 characters.
* '''Bopomofo''' (U+3100-U+312F), containing 40 characters.
* '''Hangul Compatibility Jamo (formerly called Hangul Elements)''' (U+3130-U+318F), containing 94 characters.
* '''Kanbun (formerly called CJK Miscellaneous)''' (U+3190-U+31FF), containing 16 characters.
* '''Enclosed CJK Letters and Months''' '''(formerly called''' '''Enclosed CJK Letters and Ideographs)''' (U+3200-U+32FF), containing 191 characters.
* '''CJK Compatibility''' '''(formerly called CJK Squared Words for U+3300-U+337F and CJK Squared Abbreviations for U+3380-33FF)''' (U+3300-U+33FF), containing 187 characters.
* '''Hangul''' (U+3400-U+3D2D), containing 2,350 characters.
* '''Private Use Area''' (U+E000-U+FDFF), reserved for 5,632 characters.
* '''CJK Compatibility Forms''' '''(formerly called CNS 11643 Compatibility)''' (U+FE30-U+FE4F), containing 28 characters.
* '''Small Form Variants''' '''(formerly called Small Variants)''' (U+FE50-U+FE6F), containing 26 characters.
* '''Arabic Presentation Forms-B''' '''(formerly called Basic Glyphs for Arabic Language)''' (U+FE70-U+FEFF), containing 140 characters.
* '''Halfwidth and Fullwidth Forms''' '''(formerly called Halfwidth and Fullwidth Variants)''' (U+FF00-U+FFEF), containing 216 characters.
* '''Specials''' '''(formerly called Special)''' (U+FFF0-U+FFFF), containing 1 character.
== Unicode 1.0.1 ==
Unicode 1.0.1 was released June 1992. It encoded 28,292 characters, adding 21,204 new characters and removing 6 characters, for a net increase of 21,198 characters.
=== New blocks ===
* '''CJK Unified Ideographs''' (U+4E00-U+9FFF), containing 20,902 Han Ideographs for Chinese, Japanese and Korean, was added.
* '''CJK Compatibility Ideographs''' (U+F900-U+FAFF), containing 302 Han Ideographs for compatibility with existing character sets, was added.
=== Removed characters ===
* Letters Ka and Kha with Ogonek (total 4 characters) were removed from '''Cyrillic'''. (U+04C5-U+04C6 and U+04C9-U+04CA)
* APL Compose Operator and APL Out (total 2 characters) were removed from '''Miscellaneous Technical'''. (U+2300-U+2301)
=== Rearranged characters ===
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
*'''Circled Katakana:''' ''The characters well be arranged in modern order: e.g., A, I, U, E, O, KA, KI'' (U+32D0-U+32FE)
*'''Basic Glyphs For Arabic Language:''' ''The character shapes will be arranged in different order: Isolate, Final, Initial and Medial'' (U+FE80-FEFC)
=== Characters with semantics changed ===
*'''Zero Width Non-Joiner''' [ZWNJ] (U+20DC)
*'''Zero Width Joiner''' [ZWJ] (U+20DD)
== Unicode 1.1 ==
Unicode 1.1 was released June 1993. It encoded 34,168 characters, adding 5,969 new characters and removing 93 characters, for a net increase of 5,876 characters. It finalized the long anticipated Han Unification.
=== New blocks ===
* '''Hangul Jamo''' (U+1100-U+11FF), containing 240 ''jamo'' for the Hangul script, was added.
* '''Latin Extended Additional''' (U+1E00-U+1EFF), containing 245 precomposed characters for transliteration and Vietnamese, was added.
* '''Greek Extended''' (U+1F00-U+1FFF), containing 233 precomposed characters for polytonic Greek, was added.
* '''Hangul Supplementary-A''' (U+3D2E-U+44B7), containing 1,930 precomposed syllables for the Hangul script, was added.
* '''Hangul Supplementary-B''' (U+44B8-U+4DFF), containing 2,376 precomposed syllables for the Hangul script, was added.
* '''Alphabetic Presentation Forms''' (U+FB00-U+FB4F), containing 57 precomposed characters and ligatures, was added.
* '''Arabic Presentation Forms-A''' (U+FB50-U+FDFF), containing 593 combinations of Arabic letters, was added.
* '''Combining Half Marks''' (U+FE20-U+FE2F), containing 4 halves of diacritical marks, was added.
=== Extended blocks ===
* The long S (ſ) (total 1 character) was added to '''Latin Extended-A'''. (U+017F)
* The Hungarian Dz, characters for transliteration purposes and precomposed characters with double grave and inverted breve (total 35 characters) were added to '''Latin Extended-B''' (U+01F1-U+01F5 and U+01FA-U+0217). The block was expanded from (U+0180-U+01FF) to (U+0180-U+024F)
* Diacritics for polytonic Greek and double width diacritics (total 6 characters) were added to '''Combining Diacritical Marks'''. (U+0342-U+0345 and U+0360-U+0361)
* Compatibility character now deprecated, Ano Teleia, and other characters (total 5 characters) were added to '''Greek and Coptic''' (U+0374-U+0375, U+037A, U+037E and U+0387).
* Additional characters for non-Slavic languages (total 38 characters) were added to '''Cyrillic'''. (U+04D0-U+04EB, U+04EE-U+04F5 and U+04F8-U+04F9)
* A ligature of Ech and Yiwn (և) (total 1 character) was added to '''Armenian'''. (U+0587)
* One deprecated compatibility character and several characters for biblical texts (total 25 characters) were added to '''Arabic'''. (U+066D and U+06D6-U+06ED)
* A sign Virama (total 1 character) was added to '''Gurmukhi''' (U+0A4D).
* Letters Candra O and E (total 3 characters) were added to '''Gujarati'''. (U+0A8D, U+0A91 and U+0AC9)
* An Ai Length mark (total 1 character) was added to '''Oriya'''. (U+0B56)
* An undertie, a pair of brackets and six formatting characters now deprecated (total 9 characters) were added to '''General Punctuation'''. (U+203F, U+2045-U+2046 and U+206A-U+206F)
* Some additional symbols and the complete set of APL functional symbols (total 79 characters) were added to '''Miscellaneous Technical'''. (U+2300 and U+232D-U+237A)
* A large circle (◯) (total 1 character) was added to '''Geometric Shapes'''. (U+25EF)
* The ideographic telegraph line feed separator symbol (〷) (total 1 character) was added to '''CJK Symbols and Punctuation'''. (U+3037)
* Four Katakana letters not in use since 1945 (total 4 characters) were added to '''Katakana'''. (U+30F7-U+30FA)
* Ideographic telegraph symbols for the twelve months (total 12 characters) were added to '''Enclosed CJK Letters and Months'''. (U+32C0-U+32CB)
* Ideographic telegraph symbols for hours and days and six additional measure units (total 62 characters) were added to '''CJK Compatibility'''. (U+3358-U+3376 and U+33E0-U+33FE)
* Some more space (total 2,304 characters) was added to the '''Private Use Area'''.
* Seven halfwidth geometric shapes (total 7 characters) were added to '''Halfwidth and Fullwidth Forms'''. (U+FFE8-U+FFEE)
=== Removed blocks ===
* '''Tibetan''', containing 71 letters for the Tibetan script, was removed from the Unicode standard.
=== Removed characters ===
* A total of 10 characters were removed from '''Greek and Coptic'''. (U+0370-U+0372, U+03D7-U+03D9, U+03DB, U+03DD, U+03DF, and U+03E1)
* Point Varika (total 1 character) was removed from ''Hebrew''. (U+05F5)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Thai'''. (U+0E70-U+0E74)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Lao'''. (U+0EF0-U+0EF4)
* An Ideographic Ditto Mark (total 1 character) was removed from '''CJK Symbols and Punctuation''' (U+3004) and merged with CJK Unified Ideograph-4EDD.
=== Rearranged characters ===
* Greek character U+03F3 was changed from Spacing Tonos to Letter Yot.
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
== Unicode 2.0 ==
Unicode 2.0 was released July 1996. It encoded 38,885 characters, adding 11,373 new characters and removing 6,656 characters, for a net increase of 4,717 characters. This was the first Unicode version to reserve blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Hangul Syllables''' (U+AC00-U+D7AF), containing 11,172 precomposed syllables for the Hangul script, was added.
* '''High Surrogates''' (U+D800-U+DB7F), setting aside 896 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''High Private Use Surrogates''' (U+DB80-U+DBFF), setting aside 128 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Low Surrogates''' (U+DC00-U+DFFF), setting aside 1,024 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Supplementary Private Use Area-A''' (U+F0000-U+FFFFF), reserving 65,534 characters for private use, was added.
* '''Supplementary Private Use Area-B''' (U+100000-U+10FFFF), reserving 65,534 characters for private use, was added.
=== Reinstated blocks ===
* '''Tibetan''' (U+0F00-U+0FFF), now containing 168 characters for the Tibetan script including religious signs, was readded.
=== Removed blocks ===
* '''Hangul''', containing 2,350 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-A''', containing 1,930 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-B''', containing 2,376 precomposed syllables for the Hangul script, was removed from the Unicode standard.
=== Extended blocks ===
* Cantillation marks for use in religious texts (total 31 characters) were added to '''Hebrew'''. (U+0591-U+05A1, U+05A3-U+05AF and U+05C4)
* A long S with Dot Above (total 1 character) was added to '''Latin Extended Additional'''. (U+1E9B)
* A Vietnamese Dong sign (total 1 character) was added to '''Currency Symbols'''. (U+20AB)
== Unicode 2.1 ==
Unicode 2.1 was released May 1998. It encoded 38,887 characters, adding only 2 new characters.
=== Extended blocks ===
* A Euro sign (total 1 character) was added to '''Currency Symbols'''. (U+20AC)
* An Object Replacement Character (total 1 character) was added to '''Specials'''. (U+FFFC)
== Unicode 3.0 ==
Unicode 3.0 was released September 1999. It was a big update and encoded 49,194 characters, adding 10,307 new characters.
=== New blocks ===
* '''Syriac''' (U+0700-U+074F), containing 71 characters used for writing in Syriac script, was added.
* '''Thaana''' (U+0780-U+07BF), containing 49 characters used for writing in Thaana script, was added.
* '''Sinhala''' (U+0D80-U+0DFF), containing 80 characters for the Sinhala script, was added.
* '''Myanmar''' (U+1000-U+109F), containing 78 characters for the Burmese script, was added.
* '''Ethiopic''' (U+1200-U+137F), containing 345 syllables and punctuation marks for the Ethiopic script, was added.
* '''Cherokee''' (U+13A0-U+13FF), containing 85 syllables for the Cherokee script, was added.
* '''Unified Canadian Aboriginal Syllabics''' (U+1400-U+167F), containing 630 syllables and punctuation marks for writing in indigenous languages of Canada, was added.
* '''Ogham''' (U+1680-U+169F), containing 29 characters for the ancient Ogham script, was added.
* '''Runic''' (U+16A0-U+16FF), containing 81 characters for the Germanic runes, was added.
* '''Khmer''' (U+1780-U+17FF), containing 103 characters for the Khmer script, was added.
* '''Mongolian''' (U+1800-U+18AF), containing 155 characters for the classical Mongolian script, was added.
* '''Braille Patterns''' (U+2800-U+28FF), containing 256 Braille letters, was added.
* '''CJK Radicals Supplement''' (U+2E80-U+2EFF), containing 115 non-Kangxi radicals, was added.
* '''Kangxi Radicals''' (U+2F00-U+2FDF), containing 214 radicals from the Kangxi dictionary, was added.
* '''Ideographic Description Characters''' (U+2FF0-U+2FFF), containing 12 characters used to describe a Han ideograph not available in the font, was added.
* '''Bopomofo Extended''' (U+31A0-U+31BF), containing 24 characters used for phonetic transcription of minority languages of Taiwan, was added.
* '''CJK Unified Ideographs Extension A''' (U+3400-U+4DBF), containing 6,582 additional Han Ideographs, was added.
* '''Yi Syllables''' (U+A000-U+A48F), containing 1,165 syllables of the modern Yi script, was added.
* '''Yi Radicals''' (U+A490-U+A4CF), containing 50 radicals of Yi Syllables, was added.
=== Extended blocks ===
* Additional precomposed characters, letters and capital letters of lowercase-only letters (total 30 characters) were added to '''Latin Extended-B'''. (U+01F6-U+01F9, U+0218-U+021F and U+0222-U+0233)
* Extensions for disordered speech (total 5 characters) were added to '''IPA Extensions'''. (U+02A9-U+02AD)
* Some additional modifier letters (total 6 characters) were added to '''Spacing Modifier Letters'''. (U+02DF and U+02EA-U+02EE)
* Additional combining diacritics for IPA (total 10 characters) were added to '''Combining Diacritical Marks'''. (U+0346-U+034E and U+0362)
* Lowercase versions of archaic letters and the Kai symbol (total 5 characters) were added to '''Greek and Coptic'''. (U+03D7, U+03DB, U+03DD, U+03DF and U+03E1)
* Nonstandard letters for Macedonian, combining numeral signs and three letters for Kildin Sami (total 12 characters) were added to '''Cyrillic'''. (U+0400, U+040D, U+0450, U+045D, U+0488-U+0489, U+048C-U+048F and U+04EC-U+04ED)
* A Hyphen (total 1 character) was added to '''Armenian'''. (U+058A)
* Combining hamza and maddah and nine additional Arabic characters (total 12 characters) were added to '''Arabic'''. (U+0653-U+0655, U+06B8-U+06B9, U+06BF, U+06CF and U+06FA-U+06FE)
* Additional letters and religious symbols (total 25 characters) were added to '''Tibetan'''. (U+0F6A, U+0F96, U+0FAE-U+0FB0, U+0FB8, U+0FBA-U+0FBC, U+0FBE-U+0FCC and U+0FCF)
* A narrow no-break space and 6 additional punctuation marks (total 7 characters) were added to '''General Punctuation'''. (U+202F and U+2048-U+204D)
* The Kip, Tugrik and Drachma sign (total 3 characters) were added to '''Currency Symbols'''. (U+20AD-U+20AF)
* An enclosing screen and an enclosing key (total 2 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E2-U+20E3)
* The information symbol and a rotated Q (total 2 characters) were added to '''Letterlike Symbols'''. (U+2139-U+213A)
* A mirrored Roman capital numeral hundred (Ↄ) (total 1 character) was added to '''Number Forms'''. (U+2183)
* Some additional arrows (total 9 characters) were added to '''Arrows'''. (U+21EB-U+21F3)
* Some additional technical symbols, including common keys on a 101 keyboard (total 33 characters) were added to '''Miscellaneous Technical'''. (U+2301, U+237B and U+237D-U+239A)
* Two additional control pictures (total 2 characters) were added to '''Control Pictures'''. (U+2425-U+2426)
* Squares and circles with quadrants (total 8 characters) were added to '''Geometric Shapes'''. (U+25F0-U+25F7)
* Two Syriac crosses and a signature mark (total 3 characters) were added to '''Miscellaneous Symbols'''. (U+2619 and U+2670-U+2671)
* Three Hangzhou numerals and a variation indicator (total 4 characters) were added to '''CJK Symbols and Punctuation'''. (U+3038-U+303A and U+303E)
* A ligature Yod with Hiriq (יִ) (total 1 character) was added to '''Alphabetic Presentation Forms'''. (U+FB1D)
* Three additional control characters for ruby markup (total 3 characters) were added to '''Specials'''. (U+FFF9-U+FFFB)
== Unicode 3.1 ==
Unicode 3.1 was released March 2001. It encoded 94,140 characters, adding 44,946 new characters, and mainly focused on blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Old Italic''' (U+10300-U+1032F), containing 35 letters for the Etruscan script, was added.
* '''Gothic''' (U+10330-U+1034F), containing 27 letters for the Gothic script, was added.
* '''Deseret''' (U+10400-U+1044F), containing 76 letters for the constructed Deseret script, was added.
* '''Byzantine Musical Symbols''' (U+1D000-U+1D0FF), containing 246 symbols for musical notation in Byzantine, was added.
* '''Musical Symbols''' (U+1D100-U+1D1FF), containing 219 characters for current musical notation, was added.
* '''Mathematical Alphanumeric Symbols''' (U+1D400-U+1D7FF), containing 991 Latin and Greek letters in serif, sans-serif, bold, italic, double-struck, script and Fraktur/Blackletter, was added.
* '''CJK Unified Ideographs Extension B''' (U+20000-U+2A6DF), containing 42,711 additional Chinese Ideographs, was added.
* '''CJK Compatibility Ideographs Supplement''' (U+2F800-U+2FA1F), containing 542 additional Chinese Ideographs for compatibility purposes, was added.
* '''Tags''', containing 97 language tags, was added. (U+E0000-U+E007F)
=== Extended noncharacters ===
* The Noncharacters range: U+FDD0..U+FDEF were added to '''Arabic Presentation Forms-A'''.
=== Extended blocks ===
* The capital Theta symbol and the Lunate Epsilon symbol (total 2 characters) were added to '''Greek and Coptic'''. (U+03F4-U+03F5)
=== Characters and Scripts Under Investigation or Rejected ===
* Khmer Sign Laak Was Rejected. (U+17DD) From '''Khmer.'''
* Georgian Letter U-Brjuu Was Rejected. From '''Georgian.'''
== Unicode 3.2 ==
Unicode 3.2 was released March 2002. It encoded 95,156 characters, adding 1,016 new characters.
=== New blocks ===
* '''Cyrillic Supplementary (now Cyrillic Supplement)''' (U+0500-U+052F), containing 16 characters used for the Komi language, was added.
* '''Tagalog''' (U+1700-U+171F), containing 20 characters for the Baybayin script, was added.
* '''Hanunoo''' (U+1720-U+173F), containing 23 characters and punctuation for the Hanunó'o script, was added.
* '''Buhid''' (U+1740-U+175F), containing 20 characters for the Buhid script, was added.
* '''Tagbanwa''' (U+1760-U+177F), containing 18 characters for the Tagbanwa script, was added.
* '''Miscellaneous Mathematical Symbols-A''' (U+27C0-U+27EF), containing 28 symbols used in math notation, was added.
* '''Supplemental Arrows-A''' (U+27F0-U+27FF), containing 16 additional arrows, was added.
* '''Supplemental Arrows-B''' (U+2900-U+297F), containing 128 special arrows, was added.
* '''Miscellaneous Mathematical Symbols-B''' (U+2980-U+29FF), containing 128 additional mathematical symbols, was added.
* '''Supplemental Mathematical Operators''' (U+2A00-U+2AFF), containing 256 additional mathematical operators, was added.
* '''Katakana Phonetic Extensions''' (U+31F0-U+31FF), containing 16 Katakana letters used for Ainu, was added.
* '''Variation Selectors''' (U+FE00-U+FE0F), containing 16 symbols used for indicating variations, was added.
=== Extended blocks ===
* A capital letter N with Long Right Leg (total 1 character) was added to '''Latin Extended-B'''. (U+0220)
* The combining grapheme joiner and combining Latin letters used in medieval texts (total 14 characters) were added to '''Combining Diacritical Marks'''. (U+034F and U+0363-U+036F)
* The Qoppa and a reversed lunate epsilon symbol (total 3 characters) were added to '''Greek and Coptic'''. (U+03D8-U+03D9 and U+03F6)
* Four additional letters used for the Kildin Sami language (total 8 characters) were added to '''Cyrillic'''. (U+048A-U+048B, U+04C5-U+04C6, U+04C9-U+04CA and U+04CD-U+04CE)
* A dotless Beh and a dotless Qaf (total 2 characters) were added to '''Arabic'''. (U+066E-U+066F)
* A Letter for Addu dialect (total 1 character) was added to '''Thaana'''. (U+07B1)
* The letters Yn and Elifi (total 2 characters) were added to '''Georgian'''. (U+10F7-U+10F8)
* Some additional punctuation marks and control characters (total 12 characters) were added to '''General Punctuation'''. (U+2047, U+204E-U+2052, U+2057 and U+205F-U+2063)
* A superscript letter I (total 1 character) was added to '''Superscripts and Subscripts'''. (U+2071)
* German Penny and Peso sign (total 2 characters) were added to '''Currency Symbols'''. (U+20B0-U+20B1)
* Some additional combining characters (total 7 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E4-U+20EA)
* Some double-struck and reversed/turned letters (total 15 characters) were added to '''Letterlike Symbols'''. (U+213D-U+214B)
* Some additional arrows (total 12 characters) were added to '''Arrows'''. (U+21F4-U+21FF)
* Some additional mathematical operators (total 14 characters) were added to '''Mathematical Operators'''. (U+22F2-U+22FF)
* Variable-width and additional symbols (total 53 characters) were added to '''Miscellaneous Technical'''. (U+237C and U+239B-U+23CE)
* Black and double circled numerals (total 20 characters) were added to '''Enclosed Alphanumerics'''. U+24EB-U+24FE)
* Quadrant elements (total 10 characters) were added to '''Block Elements'''. (U+2596-U+259F)
* Some additional triangles and squares (total 8 characters) were added to '''Geometric Shapes'''. (U+25F8-U+25FF)
* Shogi pieces ,recycling symbols, dices and dotted circles (total 24 characters) were added to '''Miscellaneous Symbols'''. (U+2616-U+2617, U+2672-U+267D and U+2680-U+2689)
* Additional parenthesis (total 14 characters) were added to '''Dingbats'''. (U+2768-U+2775)
* Three additional marks (total 3 characters) were added to '''CJK Symbols and Punctuation'''. (U+303B-U+303D)
* A digraph and two additional characters (total 3 characters) were added to '''Hiragana'''. (U+3095-U+3096 and U+309F)
* A digraph and a double hyphen (total 2 characters) were added to '''Katakana'''. (U+30A0 and U+30FF)
* Additional circled numerals (total 30 characters) were added to '''Enclosed CJK Letters and Months'''. (U+3251-U+325F and U+32B1-U+32BF
* Five missing radicals (total 5 characters) were added to '''Yi Radicals'''. (U+A4A2-U+A4A3, U+A4B4, U+A4C1, U+A4C5)
* Additional compatibility characters (total 59 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA30-U+FA6A)
* A Rial sign (total 1 character) was added to '''Arabic Presentation Forms-A'''. (U+FDFC)
* Two sesame dots (total 2 characters) were added to '''CJK Compatibility Forms'''. (U+FE45-U+FE46)
* A tail fragment (total 1 character) was added to '''Arabic Presentation Forms-B'''. (U+FE73)
* A pair of double parenthesis (total 2 characters) was added to '''Halfwidth and Fullwidth Forms'''. (U+FF5F-U+FF60)
== Unicode 4.0 ==
Unicode 4.0 was released April 2003. It encoded 96,382 characters, adding 1,226 new characters.
=== New blocks ===
* '''Limbu''', containing 66 characters for the Limbu abugida, was added.
* '''Tai Le''', containing 35 letters for the Tai Le script, was added.
* '''Khmer Symbols''', containing 32 symbols for the lunar calendar, was added.
* '''Phonetic Extensions''', containing 108 letters used in phonetic transcription, was added.
* '''Miscellaneous Symbols and Arrows''', containing 14 additional arrows, was added.
* '''Yijing Hexagram Symbols''', containing 64 hexagrams, was added.
* '''Linear B Syllabary''', containing 88 syllables of the ancient Linear B script, was added.
* '''Linear B Ideograms''', containing 123 ideograms of the ancient Linear B script, was added.
* '''Aegean Numbers''', containing 57 numerals used in the Aegean area, was added.
* '''Ugaritic''', containing 31 characters used in Ugaritic cuneiform, was added.
* '''Shavian''', containing 48 letters used for the artificial Shavian script, was added.
* '''Osmanya''', containing 40 characters used in the artificial Osmanya script, was added.
* '''Cypriot Syllabary''', containing 55 characters formerly used on Cyprus, was added.
* '''Tai Xuan Jing Symbols''', containing 87 symbols of Tai Xuan Jing, was added.
* '''Variation Selectors Supplement''', containing 240 additional variation selectors, was added.
=== Extended blocks ===
* Letters with curl used in Sinology (total 4 characters) were added to '''Latin Extended-B'''.
* Former IPA letters (total 2 characters) were added to '''IPA Extensions'''.
* Some additional characters (total 17 characters) were added to '''Spacing Modifier Letters'''.
* Additional combining double-width diacritics and diacritics corresponding to their spacing equivalent (total 11 characters) were added to '''Combining Diacritical Marks'''.
* The archaic letters Sho and San and the capital Lunate Sigma (total 5 characters) were added to '''Greek and Coptic'''.
* Some additional markers, biblical signs, and letters with inverted V (total 19 characters) were added to '''Arabic'''.
* Letters used for foreign words from Persian and Sogdian (total 6 characters) were added to '''Syriac'''.
* The short A (ऄ) (total 1 character) was added to '''Devanagari'''.
* The Avagraha sign (ঽ) (total 1 character) was added to '''Bengali'''.
* The Adak Bindi and Visarga signs (total 2 characters) were added to '''Gurmukhi'''.
* The vocalic l and ll and the Rupee sign (total 5 characters) were added to '''Gujarati'''.
* The letters Va and Wa (total 2 characters) were added to '''Oriya'''.
* Additional signs for date and finance environments (total 8 characters) were added to '''Tamil'''.
* The Nukta and Avagraha signs (total 2 characters) were added to '''Kannada'''.
* Some symbols and signs (total 11 characters) were added to '''Khmer'''.
* An inverted undertie and a swung dash (total 2 characters) were added to '''General Punctuation'''.
* The facsimile sign (℻) (total 1 character) was added to '''Letterlike Symbols'''.
* The eject symbol and a vertical line (total 2 characters) were added to '''Miscellaneous Technical'''.
* A black circled digit zero (⓿) (total 1 character) was added to '''Enclosed Alphanumerics'''.
* Monograms and diagrams, flags, warning and weather symbols and a cup of tea (total 12 characters) were added to '''Miscellaneous Symbols'''.
* Additional parenthesized and circled Korean characters and supplemental signs (total 9 characters) were added to '''Enclosed CJK Letters and Months'''.
* Additional measure units (total 7 characters) were added to '''CJK Compatibility'''.
* An additional Arabic sign (﷽) (total 1 character) was added to '''Arabic Presentation Forms-A'''.
* A pair of vertical parenthesis (total 2 characters) was added to '''CJK Compatibility Forms'''.
* The letters Oi and Ew (total 4 characters) were added to '''Deseret'''.
* A small script l (ℓ) (total 1 character) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 4.1 ==
Unicode 4.1 was released March 31, 2005. It encoded 97,655 characters, adding 1,273 new characters.
=== New blocks ===
* '''Arabic Supplement''', containing 30 characters for various languages written with the Arabic script, was added.
* '''Ethiopic Supplement''', containing 26 characters and signs for Sebatbeit, was added.
* '''New Tai Lue''', containing 80 characters for the New Tai Lue script, was added.
* '''Buginese''', containing 30 characters for the Lontara script, was added.
* '''Phonetic Extensions Supplement''', containing 64 additional letters for phonetic transcription, was added.
* '''Combining Diacritical Marks Supplement''', containing 4 additional diacritics, was added.
* '''Glagolitic''', containing 94 characters for the Glagolitic script, was added.
* '''Coptic''', containing 114 characters for the Coptic script, was added.
* '''Georgian Supplement''', containing 38 Nuskhuri letters, was added.
* '''Tifinagh''', containing 55 characters for the Tifinagh script, was added.
* '''Ethiopic Extended''', containing 79 additional Ethiopic syllables, was added.
* '''Supplemental Punctuation''', containing 26 additional punctuation marks, was added.
* '''CJK Strokes''', containing 16 strokes for Han Ideographs, was added.
* '''Modifier Tone Letters''', containing 23 letters for Chinese tones, was added.
* '''Syloti Nagri''', containing 44 characters for the Syloti Nagri abugida, was added.
* '''Vertical Forms''', containing 10 punctuation marks suited for vertical text, was added.
* '''Ancient Greek Numbers''', containing 75 numerals and signs used in Ancient Greek, was added.
* '''Old Persian''', containing 50 characters for Old Persian cuneiform, was added.
* '''Kharoshthi''', containing 65 characters for the Kharoshthi abugida, was added.
* '''Ancient Greek Musical Notation''', containing 70 musical signs used in Ancient Greek, was added.
=== Extended blocks ===
* Letters for Sencoten, digraphs, letters with swash tail and other additions (total 11 characters) were added to '''Latin Extended-B'''.
* Additional diacritics for transliteration (total 5 characters) were added to '''Combining Diacritical Marks'''.
* Rho with stroke, reversed and dotted Lunate Sigma (total 4 characters) were added to '''Greek and Coptic'''.
* Ghe with descender (Ӷ) (total 2 characters) was added to '''Cyrillic'''.
* An additional biblical mark and some punctuation marks (total 4 characters) were added to '''Hebrew'''.
* Additional biblical marks, punctuation marks and the Afghani sign (total 8 characters) were added to '''Arabic'''.
* A glottal stop (ॽ) (total 1 character) was added to '''Devanagari'''.
* The Khanda Ta letter (ৎ) (total 1 character) was added to '''Bengali'''.
* The letter Sha and the digit zero (total 2 characters) were added to '''Tamil'''.
* Two marks used in Bhutan (total 2 characters) were added to '''Tibetan'''.
* Two letters and a modifier letter (total 3 characters) were added to '''Georgian'''.
* Some additional syllables (total 11 characters) were added to '''Ethiopic'''.
* Additional phonetic symbols (total 20 characters) were added to '''Phonetic Extensions'''.
* A flower and dot punctuation marks (total 9 characters) were added to '''General Punctuation'''.
* Additional subscript letters (total 5 characters) were added to '''Superscripts and Subscripts'''.
* The Guarani, Austral, Hryvnia and Cedi signs (total 4 characters) were added to '''Currency Symbols'''.
* A combining long double solidus (total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* The per sign and a double-struck letter Pi (total 2 characters) were added to '''Letterlike Symbols'''.
* Metrical and electrical signs (total 11 characters) were added to '''Miscellaneous Technical'''.
* Additional gender and map symbols (total 30 characters) were added to '''Miscellaneous Symbols'''.
* Some additional mathematical symbols (total 7 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional arrows and squares (total 6 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* A circled Hangul character (㉾) (total 1 character) was added to '''Enclosed CJK Letters and Months'''.
* Additional Han Ideographs (total 22 characters) were added to '''CJK Unified Ideographs'''.
* Additional Compatibility Ideographs (total 106 characters) were added to '''CJK Compatibility Ideographs'''.
* Italic dotless small i and j (total 2 characters) were added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.0 ==
Unicode 5.0 was released July 14, 2006. It encoded 99,024 characters, adding 1,369 new characters.
=== New blocks ===
* '''N'Ko''', containing 59 characters for the N'Ko script, was added.
* '''Balinese''', containing 121 characters and musical signs for the Balinese abugida, was added.
* '''Latin Extended-C''', containing 17 letters for various languages, was added.
* '''Latin Extended-D''', containing 2 characters for UPA, was added.
* '''Phags-pa''', containing 56 characters for the Phags-pa script, was added.
* '''Phoenician''', containing 27 letters and numerals for the Phoenician script, was added.
* '''Cuneiform''', containing 879 signs for Sumero-Akkadian Cuneiform, was added.
* '''Cuneiform Numbers and Punctuation''', containing 103 numerals and punctuation signs for Sumero-Akkadian Cuneiform, was added.
* '''Counting Rod Numerals''', containing 18 numerals used with counting rods, was added.
=== Extended blocks ===
* Various letters used mainly for aboriginal languages (total 14 characters) were added to '''Latin Extended-B'''.
* Lowercase lunate sigma symbols (total 3 characters) were added to '''Greek and Coptic'''.
* Lowercase palochka and 3 letters used in Nivkh (total 7 characters) were added to '''Cyrillic'''.
* Two letters used in Khanty and other languages (total 4 characters) were added to '''Cyrillic Supplement'''.
* A specific point meant for Vav (total 1 character) was added to '''Hebrew'''.
* Four letters used in Sindhi (total 4 characters) were added to '''Devanagari'''.
* Four letters used in Sanskrit (total 4 characters) were added to '''Kannada'''.
* Additional IPA diacritics (total 9 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Four combining arrows (total 4 characters) were added to '''Combining Diacritical Marks for Symbols'''.
* A danish symbol and a lowercase turned F (total 2 characters) were added to '''Letterlike Symbols'''.
* A lowercase reversed C (ↄ) (total 1 character) was added to '''Number Forms'''.
* Vertical parenthesis, geometric forms and electrical symbols (total 12 characters) were added to '''Miscellaneous Technical'''.
* A neuter symbol (⚲) (total 1 character) was added to '''Miscellaneous Symbols'''.
* Four additional mathematical symbols (total 4 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional squares, pentagons and hexagons (total 11 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Four additional tone letters used in Chinantec (total 4 characters) were added to '''Modifier Tone Letters'''.
* Bold Digamma (𝟊/'''Ϝ''') (total 2 characters) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.1 ==
Unicode 5.1 was released April 4, 2008. It encoded 100,648 characters, adding 1,624 new characters.
=== New blocks ===
* '''Sundanese''', containing 55 letters for Sundanese script, was added.
* '''Lepcha''', containing 74 letters for Lepcha script, was added.
* '''Ol Chiki''', containing 48 letters for Ol Chiki script, was added.
* '''Cyrillic Extended-A''', containing 32 letters for combining Cyrillic letters, was added.
* '''Vai''', containing 300 letters for Vai script, was added.
* '''Cyrillic Extended-B''', containing 78 letters for additional Cyrillic characters, was added.
* '''Saurashtra''', containing 81 letters for Saurashtra script, was added.
* '''Kayah Li''', containing 48 letters for Kayah languages, was added.
* '''Rejang''', containing 37 letters for Rejang script, was added.
* '''Cham''', containing 83 letters for Cham script, was added.
* '''Ancient Symbols''', containing 12 characters for weights and measures and other Ancient symbols, was added.
* '''Phaistos Disc''', containing 46 hieroglyphs for Phaistos, was added.
* '''Lycian''', containing 29 letters for Lycian script, was added.
* '''Carian''', containing 49 letters for Carian script, was added.
* '''Lydian''', containing 27 letters for Lydian script, was added.
* '''Mahjong Tiles''', containing 44 mahjong tiles, was added.
* '''Domino Tiles''', containing 100 domino tiles, was added.
=== Extended blocks ===
* Archaic letters and capital kai symbol (total 7 characters) were added to '''Greek and Coptic'''.
* Combining Pokrytie (total 1 character) was added to '''Cyrillic'''.
* Mordvin, Kurdish, Aleut and Chuvash letters (total 16 characters) were added to '''Cyrillic Supplement'''.
* Radix symbols, Letterlike, punctuation, Koranic annotation signs and additions for early Persian and Azerbaijani (total 15 characters) were added to '''Arabic'''.
* Additional letters in Torwali, Burushaski and early Persian (total 18 characters) were added to '''Arabic Supplement'''.
* High spacing dot and candra a (total 2 characters) were added to '''Devanagari'''.
* Udaat and yakash signs (total 2 characters) were added to '''Gurmukhi'''.
* Vocalic rr, l and ll (total 3 characters) were added to '''Oriya'''.
* Om symbol (ௐ) (total 1 character) was added to '''Tamil'''.
* Avagraha, additional phonetic letters, vocalic l and ll, fractional signs and tuumu (total 13 characters) were added to '''Telugu'''.
* Avagraha, vocalic rr, l and ll, Malayalam numerics and fractions and chillu letters (total 17 characters) were added to '''Malayalam'''.
* Letters for Balti and various symbols (total 6 characters) were added to '''Tibetan'''.
* Characters for various languages (total 78 characters) were added to '''Myanmar'''.
* Manchu Ali Gali lha (ᢪ) (total 1 character) was added to '''Mongolian'''.
* Miscellaneous combining marks (total 28 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Medievalist latin letters and miscellaneous letters (total 10 characters) were added to '''Latin Extended Additional'''.
* Invisible plus (+) (total 1 character) was added to '''General Punctuation'''.
* Combining asterisk above ( ⃰)(total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* Symbol for Samaritan Source (⅏) (total 1 character) was added to '''Letterlike Symbols'''.
* Archaic Roman Numerals (total 4 characters) were added to '''Number Forms'''.
* Outlined white star and other signs (total 15 characters) were added to '''Miscellaneous Symbols'''.
* Long division and additional mathematical brackets (total 5 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Miscellaneous signs (total 51 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Additional latin letters (total 12 characters) were added to '''Latin Extended-C'''.
* Additional punctuation (total 23 characters) were added to '''Supplemental Punctuation'''.
* Letter ih (ㄭ) (total 1 character) was added to '''Bopomofo'''.
* Other strokes (total 20 characters) were added to '''CJK Strokes'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Africanist tone letters (total 5 characters) were added to '''Modifier Tone Letters'''.
* Miscellaneous letters and symbols (total 112 characters) were added to '''Latin Extended-D'''.
* Continuous macrons for Coptic (total 3 characters) were added to '''Combining Half Marks'''.
* Musical symbol multiple measure rest (𝄩) (total 1 character) was added to '''Musical Symbols'''.
== Unicode 5.2 ==
Unicode 5.2 was released in October 1, 2009. It encoded 107,296 characters, adding 6,648 new characters.
=== New blocks ===
* '''Samaritan''', containing 61 letters for Samaritan script, was added.
* '''Unified Canadian Aboriginal Syllabics Extended''', containing 70 syllables for various cree languages, was added.
* '''Tai Tham''', containing 127 letters for Tai Tham script, was added.
* '''Vedic Extensions''', containing 35 characters for tone marks and signs, was added.
* '''Lisu''', containing 48 letters for Lisu (Fraser) script, was added.
* '''Bamum''', containing 88 letters for Bamum script, was added.
* '''Common Indic Number Forms''', containing 10 fractions and marks, was added.
* '''Devanagari Extended''', containing 28 additional marks, was added.
* '''Hangul Jamo Extended-A''', containing 29 characters for additional old initial consonants in hangul jamo, was added.
* '''Javanese''', containing 91 letters for Javanese script, was added.
* '''Myanmar Extended-A''', containing 28 letters for Khamti Shan in Myanmar, was added.
* '''Tai Viet''', containing 72 letters for Tai Viet script, was added.
* '''Meetei Mayek''', containing 56 letters for Meetei Mayek script, was added.
* '''Hangul Jamo Extended-B''', containing 72 characters for additional old medieval vowels and final consonants in hangul jamo, was added.
* '''Imperial Aramaic''', containing 31 characters for Old Aramaic, was added.
* '''Old South Arabian''', containing 32 letters and numbers for South Arabian, was added.
* '''Avestan''', containing 61 characters for Avestan script, was added.
* '''Inscriptional Parthian''', containing 30 characters for Inscriptional Parthian script, was added.
* '''Inscriptional Pahlavi''', containing 27 characters for Inscriptional Pahlavi script, was added.
* '''Old Turkic''', containing 73 characters for Orkhon script, was added.
* '''Rumi Numeral Symbols''', containing 31 numeric characters used in Fez, Morocco, and elsewhere in North Africa and the Iberian peninsula, between the tenth and seventeenth centuries, was added.
* '''Kaithi''', containing 66 letters for Kaithi script, was added.
* '''Egyptian Hieroglyphs''', containing 1,071 hieroglyphs for Egyptian, was added.
* '''Enclosed Alphanumeric Supplement''', containing 63 additional circled, parenthesized and squared alphanumerics, was added.
* '''Enclosed Ideographic Supplement''', containing 44 squared and tortoised shell bracketed ideographs, was added.
* '''CJK Unified Ideographs Extension C''', containing 4,149 additional Chinese Ideographs, was added.
=== Extended blocks ===
* Abhaz letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Inverted Candrabinbu and additional signs and letters (total 5 characters) were added to '''Devanagari'''.
* Ganda Mark (৻) (total 1 character) was added to '''Bengali'''.
* Religious svasti signs (total 4 characters) were added to '''Tibetan'''.
* Extensions for Khamti Shan and Alton and Phake (total 4 characters) were added to '''Myanmar'''.
* Additional old initial consonants, medival vowels, and old final consonants (total 16 characters) were added to '''Hangul Jamo'''.
* Hyphen and additional syllables (total 10 characters) were added to '''Unified Canadian Aboriginal Syllabics'''.
* Letter Sua and Tham Digit One (total 3 characters) were added to '''New Tai Lue'''.
* Combing Almost Equal to Below ( ᷽) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* The Live Tournosis, Spesmillo and Tenge signs (total 3 characters) were added to '''Currency Symbols'''.
* Additional vulgar fractions from ARIB STD B24 (total 4 characters) were added to '''Number Forms'''.
* Decimal exponent symbol (⏨) from ARIB STD B24 (total 1 characters) was added to '''Miscellaneous Technical'''.
* A soccer ball and symbols from ARIB STD B24 (total 59 characters) were added to '''Miscellaneous Symbols'''.
* Heavy exclamation mark symbol (❗) from ARIB STD B24 (total 1 character) was added to '''Dingbats'''.
* Traffic sign, dictionary and map symbols from ARIB STD B24 (total 5 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Capital letter turned alpha and additions for shona (total 3 characters) were added to '''Latin Extended-C'''.
* Cryptogrammic letters and combining marks (total 7 characters) were added to '''Coptic'''.
* Word separator middle dot used in Avestan (⸱) (total 1 character) was added to '''Supplemental Punctuation'''.
* Circled ideographs and numbers on black squares from ARIB STD B24 (total 12 characters) were added to '''Enclosed CJK Letters and Months'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Miscellaneous additions for compatibility (total 3 characters) were added to '''CJK Compatibility Ideographs'''.
* Number two and three (total 2 characters) were added to '''Phoenician'''.
== Unicode 6.0 ==
Unicode 6.0 was released in October 11, 2010. It encoded 109,384 characters, adding 2,088 new characters.
=== New blocks ===
* '''Mandaic''', containing 29 letters for Mandaic script, was added.
* '''Batak''', containing 56 letters for Batak script, was added.
* '''Ethiopic Extended-A''', containing 32 letters for Gamo-Gofa-Dawro, Basketo and Gumuz Ethiophic syllables, was added.
* '''Brahmi''', containing 108 characters for ancient Brahmi abugida, was added.
* '''Bamum Supplement''', containing 761 letters for additional Bamum script, was added.
* '''Kana Supplement''', containing 2 characters for archaic katakana, was added.
* '''Playing Cards''', containing 59 playing cards, was added.
* '''Miscellaneous Symbols and Pictographs''', containing 529 additional symbols, was added.
* '''Emoticons''', containing 63 faces, cat faces and gesture symbols, was added.
* '''Transport and Map Symbols''', containing 70 transportation, traffic signs and other symbols, was added.
* '''Alchemical Symbols''', containing 116 symbols for elements, was added.
* '''CJK Unified Ideographs Extension D''', containing 222 miscellaneous Han ideographs, was added.
=== Extended blocks ===
* Azerbaijani letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Kashmiri Yeh and Wavy hamza below (total 2 characters) were added to '''Arabic'''.
* Dependent vowel signs and letters used in Kashmiri and Bihari (total 10 characters) were added to '''Devanagari'''.
* Fraction signs (total 6 characters) were added to '''Oriya'''.
* Letters used in scholarly only and letter dot reph (total 3 characters) were added to '''Malayalam'''.
* Leading and Trailing Mchan Rtags (total 6 characters) were added to '''Tibetan'''.
* Additional combining marks (total 2 characters) were added to '''Ethiopic'''.
* Combining Double Inverted Breve Below (᷼) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* Miscellaneous subscript letters (total 8 characters) were added to '''Superscripts and Subscripts'''.
* Indian Rupee Sign (₹) (total 1 character) was added to '''Currency Symbols'''.
* Pointing double triangle and additional mechanical symbols (total 11 characters) were added to '''Miscellaneous Technical'''.
* Ophiucisus, astronomical symbol for uranus and pentagrams (total 6 characters) were added to '''Miscellaneous Symbols'''.
* Additional heavy punctation marks, raised fist, raised hand, sparkles, heavy arithmetic symbols and curly loops (total 16 characters) were added to '''Dingbats'''.
* Squared logicals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Separator mark and consonant joiner (total 2 characters) were added to '''Tifinagh'''.
* Bopomofo for Hmu and Ge (total 3 characters) were added to '''Bopomofo Extended'''.
* Reversed Tse (total 2 characters) were added to '''Cyrillic Extended-B'''.
* Additional letters (total 15 characters) were added to '''Latin Extended-D'''.
* Pedagogical symbols (total 16 characters) were added to '''Arabic Presentation Forms-A'''.
* Additional squared, black circled and squared letters and regional indicator letters (total 107 characters) were added to '''Enclosed Alphanumeric Supplement'''.
* Squared katakana, squared ideographs and circled advantage and accept (total 13 characters) were added to '''Enclosed Ideographic Supplement'''.
== Unicode 6.1 ==
Unicode 6.1 was released in January 31, 2012. It encoded 110,116 characters, adding 732 new characters.
=== New blocks ===
* '''Arabic Extended-A''' (U+08A0-U+08FF), containing 39 characters, was added.
* '''Sundanese Supplement''' (U+1CC0-U+1CCF), containing 8 characters, was added.
* '''Meetei Mayek Extensions''' (U+AAE0-U+AAFF), containing 23 characters, was added.
* '''Meroitic Hieroglyphs''' (U+10980-U+1099F), containing 32 characters, was added.
* '''Meroitic Cursive''' (U+109A0-U+109FF), containing 26 characters, was added.
* '''Sora Sompeng''' (U+110D0-U+110FF), containing 35 characters, was added.
* '''Chakma''' (U+11100-U+1114F), containing 67 characters, was added.
* '''Sharada''' (U+11180-U+111DF), containing 83 characters, was added.
* '''Takri''' (U+11680-U+116CF), containing 66 characters, was added.
* '''Miao''' (U+16F00-U+16F9F), containing 133 characters, was added.
* '''Arabic Mathematical Alphabetic Symbols''' (U+1EE00-U+1EEFF), containing 143 characters, was added.
=== Extended blocks ===
* An Armenian Dram sign (total 1 character) was added to '''Armenian'''. (U+058F)
* A sign Samvat (total 1 character) was added to '''Arabic'''. (U+0604)
* An Abbreviation mark (total 1 character) was added to '''Gujarati'''. (U+0AF0)
* Letters for Khmu (total 2 characters) were added to '''Lao'''. (U+0EDE-U+0EDF)
* Capital letter Yn, letter Aen, Hard and Labial sign (total 5 characters) were added to '''Georgian'''. (U+10C7, U+10CD and U+10FD-U+10FF)
* Letters and signs for Old Sundanese (total 9 characters) were added to '''Sundanese'''. (U+1BAB-U+1BAD and U+1BBA-U+1BBF)
* Sign Rotated Ardhavisarga, Candra Above, Jihvamuliya and Uphadhmaniya (total 4 characters) were added to '''Vedic Extensions'''. (U+1CF3-U+1CF6)
* Mathematical diagonals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''. (U+27CB and U+27CD)
* A letter Bohairic Khei (total 2 characters) were added to '''Coptic'''. (U+2CF2-U+2CF3)
* Small letters Yn and Aen (total 2 characters) were added to '''Georgian Supplement'''. (U+2D27 and U+2D2D)
* Letters Ye and Yo (total 2 characters) were added to '''Tifinagh'''. (U+2D66-U+2D67)
* (total 10 characters) were added to '''Supplemental Punctuation'''. (U+2E32-U+2E3B)
* An additional ideograph for Kanji (total 1 character) was added to '''CJK Unified Ideographs'''. (U+9FCC)
* Combining letter for Slavonic (total 9 characters) were added to '''Cyrillic Extended-B'''. (U+A674-U+A67B and U+A69F)
* Letter C with Bar, capital letter H with Hook and modifier letters for extended IPA (total 5 characters) were added to '''Latin Extended-D'''. (U+A792-U+A793, U+A7AA and U+A7F8-U+A7F9)
* Some additional ideographs for Korea (total 2 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA2E-U+FA2F)
* Symbols for Canadian legal use (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F16A-U+1F16B)
* Typikon symbols (total 4 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F540-U+1F543)
* (total 13 characters) were added to '''Emoticons'''. (U+1F600, U+1F611, U+1F615, U+1F617, U+1F619, U+1F61B, U+1F61F, U+1F626-U+1F627, U+1F62C, U+1F62E-U+1F62F and U+1F634)
== Unicode 6.2 ==
Unicode 6.2 was released in September 26, 2012. It encoded 110,117 characters, adding only 1 new character.
=== Extended blocks ===
* A Turkish Lira sign (total 1 character) was added to '''Currency Symbols'''. (U+20BA)
== Unicode 6.3 ==
Unicode 6.3 was released in September 30, 2013. It encoded 110,122 characters, adding only 5 new characters.
=== Extended blocks ===
* A Letter mark (total 1 character) was added to '''Arabic'''. (U+061C)
* Isolate directional format characters (total 4 characters) were added to '''General Punctuation'''. (U+2066-U+2069)
== Unicode 7.0 ==
Unicode 7.0 was released in June 16, 2014. It encoded 112,956 characters, adding 2,834 new characters.
=== New blocks ===
* '''Combining Diacritical Marks Extended''' (U+1AB0-U+1AFF), containing 15 marks, was added.
* '''Myanmar Extended-B''' (U+A9E0-U+A9FF), containing 31 letters, was added.
* '''Latin Extended-E''' (U+AB30-U+AB6F), containing 50 letters, was added.
* '''Coptic Epact Numbers''' (U+102E0-U+102FF), containing 28 numbers, was added.
* '''Old Permic''' (U+10350-U+1037F), containing 43 letters, was added.
* '''Elbasan''' (U+10500-U+1052F), containing 50 letters, was added.
* '''Caucasian Albanian''' (U+10530-U+1056F), containing 53 letters and marks, was added.
* '''Linear A''' (U+10600-U+1077F), containing 341 signs, was added.
* '''Palmyrene''' (U+10860-U+1087F), containing 32 letters, was added.
* '''Nabataean''' (U+10880-U+108AF), containing 40 letters and numbers, was added.
* '''Old North Arabian''' (U+10A80-U+10A9F), containing 32 letters and numbers, was added.
* '''Manichaean''' (U+10AC0-U+10AFF), containing 51 characters, was added.
* '''Psalter Pahlavi''' (U+10B80-U+10BAF), containing 29 characters, was added.
* '''Mahajani''' (U+11150-U+1117F), containing 39 letters and signs, was added.
* '''Sinhala Archaic Numbers''' (U+111E0-U+111FF), containing 20 numbers, was added.
* '''Khojki''' (U+11200-U+1124F), containing 61 characters, was added.
* '''Khudawadi''' (U+112B0-U+112FF), containing 69 characters, was added.
* '''Grantha''' (U+11300-U+1137F), containing 83 characters, was added.
* '''Tirhuta''' (U+11480-U+114DF), containing 82 characters, was added.
* '''Siddham''' (U+11580-U+115FF), containing 72 characters, was added.
* '''Modi''' (U+11600-U+1165F), containing 79 characters, was added.
* '''Warang Citi''' (U+118A0-U+118FF), containing 84 letters and numbers, was added.
* '''Pau Cin Hau''' (U+11AC0-U+11AFF), containing 57 characters, was added.
* '''Mro''' (U+16A40-U+16A6F), containing 43 characters, was added.
* '''Bassa Vah''' (U+16AD0-U+16AFF), containing 36 characters, was added.
* '''Pahawh Hmong''' (U+16B00-U+16B8F), containing 127 letters and signs, was added.
* '''Duployan''' (U+1BC00-U+1BC9F), containing 143 characters, was added.
* '''Shorthand Format Controls''' (U+1BCA0-U+1BCAF), containing 4 format characters, was added.
* '''Mende Kikakui''' (U+1E800-U+1E8DF), containing 213 syllables and numbers, was added.
* '''Ornamental Dingbats''' (U+1F650-U+1F67F), containing 48 pictographic characters, was added.
* '''Geometric Shapes Extended''' (U+1F780-U+1F7FF), containing 85 pictographic characters, was added.
* '''Supplemental Arrows-C''' (U+1F800-U+1F8FF), containing 148 pictographic characters, was added.
=== Extended blocks ===
* A capital letter Yot (total 1 character) was added to '''Greek and Coptic'''. (U+037F)
* Letters for Orok, Komi and Khanty (total 8 characters) were added to '''Cyrillic Supplement'''. (U+0528-U+052F)
* An Eternity sign (total 2 characters) were added to '''Armenian'''. (U+058D-U+058E)
* A Number Mark Above (total 1 character) was added to '''Arabic'''. (U+0605)
* Letters for African, Philippine, Turkic, Berber, Belarusian, Palula and Shina languages (total 8 characters) were added to '''Arabic Extended-A'''. (U+08A1, U+08AD-U+08B2 and U+08FF)
* A letter for Marwari (total 1 character) was added to '''Devanagari'''. (U+0978)
* A sign Anji (total 1 character) was added to '''Bengali'''. (U+0980)
* Sign Candrabindu and letter Llla (total 2 characters) were added to '''Telugu'''. (U+0C00 and U+0C34)
* A Sign Candrabindu (total 1 character) was added to '''Kannada'''. (U+0C81)
* A Sign Candrabindu (total 1 character) was added to '''Malayalam'''. (U+0D01)
* Lith Numerals (total 10 characters) were added to '''Sinhala'''. (U+0DE6-U+0DEF)
* Additional Old English runes (total 8 characters) were added to '''Runic'''. (U+16F1-U+16F8)
* Letters Gyan and Tra (total 2 characters) were added to '''Limbu'''. (U+191D-U+191E)
* Signs for Jaiminiya Sama Veda (total 2 characters) were added to '''Vedic Extensions'''. (U+1CF8-U+1CF9)
* Marks for Germanic and American lexicology (total 15 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DE7-U+1DF5)
* Nordic Mark, Manat and Ruble sign (total 3 characters) were added to '''Currency Symbols'''. (U+20BB-U+20BD)
* Playback symbols from Webdings font (total 7 characters) were added to '''Miscellaneous Technical'''. (U+23F4-U+23FA)
* A Scissors symbol from Wingdings 2 font (total 1 character) was added to '''Dingbats'''. (U+2700)
* Arrows for Lithuanian dialectology and symbols from Wingdings 3 font (total 115 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2B4D-U+2B4F, U+2B5A-U+2B5F, U+2B60-U+2B73, U+2B76-U+2B95, U+2B98-U+2BB9, U+2BBD-U+2BC8 and U+2BCA-U+2BD1)
* (total 7 characters) were added to '''Supplemental Punctuation'''. (U+2E3C-U+2E42)
* Early Cyrillic letters and letters for Lithuanian dialectology (total 6 characters) were added to '''Cyrillic Extended-B'''. (U+A698-U+A69D)
* Letters for European, American and African orthography (total 18 characters) were added to '''Latin Extended-D'''. (U+A794-U+A79F, U+A7AB-U+A7AD, U+A7B0-U+A7B1 and U+A7F7)
* Tone marks for Tai Laing and letters for Shwe Palaung (total 4 characters) were added to '''Myanmar Extended-A'''. (U+AA7C-U+AA7F)
* Combining phonetic marks (total 7 characters) were added to '''Combining Half Marks'''. (U+FE27-U+FE2D)
* Additional mathematical symbols (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018B-U+1018C)
* A Greek Tau Rho symbol (total 1 character) was added to '''Ancient Symbols'''. (U+101A0)
* A letter Ess (total 1 character) was added to '''Old Italic'''. (U+1031F)
* A Number Joiner (total 1 character) was added to '''Brahmi'''. (U+1107F)
* Sutra mark and sign Ekam (total 2 characters) were added to '''Sharada'''. (U+111CD and U+111DA)
* Additional cuneiform signs (total 42 characters) were added to '''Cuneiform'''. (U+1236F-U+12398)
* Additional numbers, vulgar fractions and a punctuation mark (total 13 characters) were added to '''Cuneiform Numbers and Punctuation'''. (U+12463-U+1246E and U+12474)
* Red Joker, Fool and trumps (total 23 characters) were added to '''Playing Cards'''. (U+1F0BF and U+1F0E0-U+1F0F5)
* Dingbat normal and negative sans-serif digit zero (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10B-U+1F10C)
* Symbols from Webdings, Wingdings 1 and 2 font (total 209 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F321-U+1F32C, U+1F336, U+1F37D, U+1F394-U+1F39F, U+1F3C5, U+1F3CB-U+1F3CE, U+1F3D4-U+1F3DF, U+1F3F1-U+1F3F7, U+1F43F, U+1F441, U+1F4F8, U+1F4FD-U+1F4FE, U+1F53E-U+1F53F, U+1F544-U+1F54A, U+1F568-U+1F579, U+1F57B-U+1F5A3 and U+1F5A5-U+1F5FA)
* Slightly frowning and smiling faces emoji (total 2 characters) were added to '''Emoticons'''. (U+1F641-U+1F642)
* Symbols from Webdings and Wingdings 2 font (total 27 characters) were added to '''Transport and Map Symbols'''. (U+1F6C6-U+1F6CF, U+1F6E0-U+1F6EC and U+1F6F0-U+1F6F3)
== Unicode 8.0 ==
Unicode 8.0 was released in June 17, 2015. It encoded 120,672 characters, adding 7,716 new characters.
=== New blocks ===
* '''Cherokee Supplement''' (U+AB70-U+ABBF), containing 80 lowercase letters, was added.
* '''Hatran''' (U+108E0-U+108FF), containing 26 letters, was added.
* '''Old Hungarian''' (U+10C80-U+10CFF), containing 108 letters, was added.
* '''Multani''' (U+11280-U+112AF), containing 38 letters, was added.
* '''Ahom''' (U+11700-U+1173F), containing 57 letters, was added.
* '''Early Dynastic Cuneiform''' (U+12480-U+1254F), containing 196 characters, was added.
* '''Anatolian Hieroglyphs''' (U+14400-U+1467F), containing 583 characters, was added.
* '''Sutton SignWriting''' (U+1D800-U+1DAAF), containing 672 signs, was added.
* '''Supplemental Symbols and Pictographs''' (U+1F900-U+1F9FF), containing 15 pictographic characters, was added.
* '''CJK Unified Ideographs Extension E''' (U+2B820-U+2CEAF), containing 5762 characters, was added.
=== Extended blocks ===
* Letters for Arwi (total 3 characters) were added to '''Arabic Extended-A'''. (U+08B3-U+08B4 and U+08E3)
* A letter for Avestan transliteration (total 1 character) was added to '''Gujarati'''. (U+0AF9)
* A letter for Andhra Pradesh (total 1 character) was added to '''Telugu'''. (U+0C5A)
* An archaic letter II (total 1 character) was added to '''Malayalam'''. (U+0D5F)
* A letter Mv and small letters (total 7 characters) were added to '''Cherokee'''. (U+13F5 and U+13F8-U+13FD)
* A Georgian Lari sign (total 1 character) was added to '''Currency Symbols'''. (U+20BE)
* Turned digits (total 2 characters) were added to '''Number Forms'''. (U+218A-U+218B)
* Two headed arrows with triangle arrowheads (total 4 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BEC-U+2BEF)
* Some additional ideographs (total 9 characters) were added to '''CJK Unified Ideographs'''. (U+9FCD-U+9FD5)
* A combining letter Ef (total 1 character) was added to '''Cyrillic Extended-B'''. (U+A69E)
* Sinological dot, phonetic extension for African languages, letters for American and Gabonese orthography (total 7 characters) were added to '''Latin Extended-D'''. (U+A78F and U+A7B2-U+A7B7)
* Sign Siddham and letter Jain Om (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FC-U+A8FD)
* Letters for Yakut transliteration (total 4 characters) were added to '''Latin Extended-E'''. (U+AB60-U+AB63)
* A combining mark for Church Slavonic (total 2 characters) were added to '''Combining Half Marks'''. (U+FE2E-U+FE2F)
* Numerals and vulgar fractions (total 64 characters) were added to '''Meroitic Cursive'''. (U+109BC-U+109BD, U+109C0-U+109CF and U+109D2-U+109FF)
* Sandhi mark, diacritical marks for Kashmiri, sign Siddham and punctuation marks (total 9 characters) were added to '''Sharada'''. (U+111C9-U+111CC and U+111DB-U+111DF)
* Combining Anusvara Above and letter Om (total 2 characters) were added to '''Grantha'''. (U+11300 and U+11350)
* Section marks and alternate letters (total 20 characters) were added to '''Siddham'''. (U+115CA-U+115DD)
* An additional sign (total 1 character) was added to '''Cuneiform'''. (U+12399)
* East-Slavic musical symbols (total 11 characters) were added to '''Musical Symbols'''. (U+1D1DE-U+1D1E8)
* (total 24 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F32D-U+1F32F, U+1F37E-U+1F37F, U+1F3CF-U+1F3D3, U+1F3F8-U+1F3FF, U+1F4FF and U+1F54B-U+1F54F)
* Upside Down Face and Face With Rolling Eyes emoji (total 2 characters) were added to '''Emoticons'''. (U+1F643-U+1F644)
* A Place of Worship emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D0)
== Unicode 9.0 ==
Unicode 9.0, was released in June 21, 2016. It encoded 128,172 characters, adding 7,500 new characters.
=== New blocks ===
* '''Cyrillic Extended-C''' (U+1C80-U+1C8F), containing 9 letters, was added.
* '''Osage''' (U+104B0-U+104FF), containing 72 letters, was added.
* '''Newa''' (U+11400-U+1147F), containing 92 letters, was added.
* '''Mongolian Supplement''' (U+11660-U+1167F), containing 13 letters, was added.
* '''Bhaiksuki''' (U+11C00-U+11C6F), containing 97 letters, was added.
* '''Marchen''' (U+11C70-U+11CBF), containing 68 letters, was added.
* '''Ideographic Symbols and Punctuation''' (U+16FE0-U+16FFF), containing 1 letter, was added.
* '''Tangut''' (U+17000-U+187FF), containing 6125 letters, was added.
* '''Tangut Components''' (U+18800-U+18AFF), containing 755 letters, was added.
* '''Glagolitic Supplement''' (U+1E000-U+1E02F), containing 38 letters, was added.
* '''Adlam''' (U+1E900-U+1E95F), containing 87 letters, was added.
=== Extended blocks ===
* Letters for Bravanese, Warsh and Quranic marks used in Pakistan (total 23 characters) were added to '''Arabic Extended-A'''. (U+08B6-U+08BD and U+08D4-U+08E2)
* A sign Spacing Candrabindu (total 1 character) were added to '''Kannada'''. (U+0C80)
* Sign Para, Chillu letters and vulgar fractions (total 14 characters) were added to '''Malayalam'''. (U+0D4F, U+0D54-U+0D56, U+0D58-U+0D5E and U+0D76-U+0D78)
* A diacritical mark for Newa (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFB)
* Power symbols (total 4 characters) were added to '''Miscellaneous Technical'''. (U+23FB-U+23FE)
* Punctuation marks for Church Slavonic (total 2 characters) were added to '''Supplemental Punctuation'''. (U+2E43-U+2E44)
* A letter for Unifon (total 1 character) was added to '''Latin Extended-D'''. (U+A7AE)
* A sign Candrabindu (total 1 character) was added to '''Saurashtra'''. (U+A8C5)
* Indiction sign and a currency symbol (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018D-U+1018E)
* A sign Sukun (total 1 character) was added to '''Khojki'''. (U+1123E)
* Japanese TV symbols (total 18 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F19B-U+1F1AC)
* A Japanese TV symbol (total 1 character) was added to '''Enclosed Ideographic Supplement'''. (U+1F23B)
* A dancing man and Black Heart emoji (total 2 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F57A and U+1F5A4)
* Octagonal Sign, Shopping Trolley, scooters and a Canoe emoji (total 5 characters) were added to '''Transport and Map Symbols'''. (U+1F6D1-U+1F6D2 and U+1F6F4-U+1F6F6)
* (total 67 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F919-U+1F91E, U+1F920-U+1F927, U+1F930, U+1F933-U+1F93E, U+1F940-U+1F94B, U+1F950-U+1F95E and U+1F985-U+1F991)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|0030 FE00
|
|short diagonal stroke form # DIGIT ZERO
|-
|1000 FE00
|
|dotted form # MYANMAR LETTER KA
|-
|1002 FE00
|
|dotted form # MYANMAR LETTER GA
|-
|1004 FE00
|
|dotted form # MYANMAR LETTER NGA
|-
|1010 FE00
|
|dotted form # MYANMAR LETTER TA
|-
|1011 FE00
|
|dotted form # MYANMAR LETTER THA
|-
|1015 FE00
|
|dotted form # MYANMAR LETTER PA
|-
|1019 FE00
|
|dotted form # MYANMAR LETTER MA
|-
|101A FE00
|
|dotted form # MYANMAR LETTER YA
|-
|101C FE00
|
|dotted form # MYANMAR LETTER LA
|-
|101D FE00
|
|dotted form # MYANMAR LETTER WA
|-
|1022 FE00
|
|dotted form # MYANMAR LETTER SHAN A
|-
|1031 FE00
|
|dotted form # MYANMAR VOWEL SIGN E
|-
|1075 FE00
|
|dotted form # MYANMAR LETTER SHAN KA
|-
|1078 FE00
|
|dotted form # MYANMAR LETTER SHAN CA
|-
|107A FE00
|
|dotted form # MYANMAR LETTER SHAN NYA
|-
|1080 FE00
|
|dotted form # MYANMAR LETTER SHAN THA
|-
|2205 FE00
|
|zero with long diagonal stroke overlay form # EMPTY SET
|-
|AA60 FE00
|
|dotted form # MYANMAR LETTER KHAMTI GA
|-
|AA61 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CA
|-
|AA62 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CHA
|-
|AA63 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JA
|-
|AA64 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JHA
|-
|AA65 FE00
|
|dotted form # MYANMAR LETTER KHAMTI NYA
|-
|AA66 FE00
|
|dotted form # MYANMAR LETTER KHAMTI TTA
|-
|AA6B FE00
|
|dotted form # MYANMAR LETTER KHAMTI NA
|-
|AA6C FE00
|
|dotted form # MYANMAR LETTER KHAMTI SA
|-
|AA6F FE00
|
|dotted form # MYANMAR LETTER KHAMTI FA
|-
|AA7A FE00
|
|dotted form # MYANMAR LETTER AITON RA
|-
|…
|
|278 additional emoji variation sequences
|}
== Unicode 10.0 ==
Unicode 10.0, was released in June 20, 2017. It encoded 136,690 characters, adding 8,518 new characters.
=== New blocks ===
* '''Syriac Supplement''' (U+0860-U+086F), containing 11 characters, was added.
* '''Zanabazar Square''' (U+11A00-U+11A4F), containing 72 characters, was added.
* '''Soyombo''' (U+11A50-U+11AAF), containing 80 characters, was added.
* '''Masaram Gondi''' (U+11D00-U+11D5F), containing 75 characters, was added.
* '''Kana Extended-A''' (U+1B100-U+1B12F), containing 31 characters, was added.
* '''Nushu''' (U+1B170-U+1B2FF), containing 396 characters, was added.
* '''CJK Unified Ideographs Extension F''' (U+2CEB0-U+2EBEF), containing 7,473 characters, was added.
=== Extended blocks ===
* A Vedic Anusvara and Abbreviation mark (total 2 characters) were added to '''Bengali'''. (U+09FC-U+09FD)
* Letters for Arabic transliteration (total 6 characters) were added to '''Gujarati'''. (U+0AFA-U+0AFF)
* A combining Anusvara Above and Viramas (total 3 characters) were added to '''Malayalam'''. (U+0D00 and U+0D3B-U+0D3C)
* A sign Atikrama (total 1 character) was added to '''Vedic Extensions'''. (U+1CF7)
* Combining diacritical marks for Church Slavonic (total 4 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DF6-U+1DF9)
* A Bitcoin sign (total 1 character) was added to '''Currency Symbols'''. (U+20BF)
* An Observe Eye symbol (total 1 character) was added to '''Miscellaneous Technical'''. (U+23FF)
* A Group mark (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2BD2)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E45-U+2E49)
* A letter O with Dot Above (total 1 character) was added to '''Bopomofo'''. (U+312E)
* Ideographs for Slavonic transliteration (total 21 characters) were added to '''CJK Unified Ideographs'''. (U+9FD6-U+9FEA)
* Letters for North Italic (total 3 characters) were added to '''Old Italic'''. (U+1032D-U+1032F)
* An Iteration mark for Nushu (total 1 character) was added to '''Ideographic Symbols and Punctuation'''. (U+16FE1)
* Letters for Hentaigana (total 254 characters) were added to '''Kana Supplement'''. (U+1B002-U+1B0FF)
* Symbols for Chinese Folk religion (total 6 characters) were added to '''Enclosed Ideographic Supplement'''. (U+1F260-U+1F265)
* Stupa, Pagoda, Sled and Flying Saucer emoji (total 4 characters) were added to '''Transport and Map Symbols'''. (U+1F6D3-U+1F6D4 and U+1F6F7-U+1F6F8)
* (total 66 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F900-U+1F90B, U+1F91F, U+1F928-U+1F92F, U+1F931-U+1F932, U+1F94C, U+1F95F-U+1F96B, U+1F992-U+1F997 and U+1F9D0-U+1F9E6)
== Unicode 11.0 ==
Unicode 11.0, was released in June 5, 2018. It encoded 137,374 characters, adding 684 new characters.
=== New blocks ===
* '''Georgian Extended''' (U+1C90-U+1CBF), containing 46 characters, was added.
* '''Hanifi Rohingya''' (U+10D00-U+10D3F), containing 50 characters, was added.
* '''Old Sogdian''' (U+10F00-U+10F2F), containing 40 characters, was added.
* '''Sogdian''' (U+10F30-U+10F6F), containing 42 characters, was added.
* '''Dogra''' (U+11800-U+1184F), containing 60 characters, was added.
* '''Gunjala Gondi''' (U+11D60-U+11DAF), containing 63 characters, was added.
* '''Makasar''' (U+11EE0-U+11EFF), containing 25 characters, was added.
* '''Medefaidrin''' (U+16E40-U+16E9F), containing 91 characters, was added.
* '''Mayan Numerals''' (U+1D2E0-U+1D2FF), containing 20 characters, was added.
* '''Indic Siyaq Numbers''' (U+1EC70-U+1ECBF), containing 68 characters, was added.
* '''Chess Symbols''' (U+1FA00-U+1FA6F), containing 14 characters, was added.
=== Extended blocks ===
* Small letters Turned Ayb and Yi with Stroke (total 2 characters) were added to '''Armenian'''. (U+0560 and U+0588)
* A triangle Yod (total 1 character) were added to '''Hebrew'''. (U+05EF)
* A Dantayalan and currency symbols (total 3 characters) were added to '''N'Ko'''. (U+07FD-U+07FF)
* A Small Low Waw (total 1 character) was added to '''Arabic Extended-A'''. (U+08D3)
* A Sandhi mark (total 1 character) was added to '''Bengali'''. (U+09FE)
* An Abbreviation mark (total 1 character) was added to '''Gurmukhi'''. (U+0A76)
* A combining Anusvara Above (total 1 character) was added to '''Telugu'''. (U+0C04)
* A sign Siddham (total 1 character) was added to '''Kannada'''. (U+0C84)
* A letter for Buryat (total 1 character) was added to '''Mongolian'''. (U+1878)
* Symbols for chess notation, astrological and half star symbols (total 43 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BBA-U+2BBC, U+2BD3-U+2BEB and 2BF0-U+2BFE)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E4A-U+2E4E)
* A letter NN (total 1 character) was added to '''Bopomofo'''. (U+312F)
* Some ideographs for Kanji (total 5 characters) were added to '''CJK Unified Ideographs'''. (U+9FEB-U+9FEF)
* A small capital Q and a letter for Mazahua (total 3 characters) were added to '''Latin Extended-D'''. (U+A7AF and U+A7B8-U+A7B9)
* Letter and vowel sign Ay (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FE-U+A8FF)
* Letters Ttta, Vha and a vulgar fraction (total 3 characters) were added to '''Kharoshthi'''. (U+10A34-U+10A35 and U+10A48)
* A Number Sign Above (total 1 character) was added to '''Kaithi'''. (U+110CD)
* Letter Lhaa, vowel sign Aa and Ei (total 3 characters) were added to '''Chakma'''. (U+11144-U+11146)
* A combining Bindu Below (total 1 character) was added to '''Grantha'''. (U+1133B)
* A Sandhi mark (total 1 character) was added to '''Newa'''. (U+1145E)
* An alternate letter Ba (total 1 character) was added to '''Ahom'''. (U+1171A)
* A mark Pluta (total 1 character) was added to '''Soyombo'''. (U+11A9D)
* Additional ideographs (total 5 characters) were added to '''Tangut'''. (U+187ED-U+187F1)
* Tally marks (total 7 characters) were added to '''Counting Rod Numerals'''. (U+1D372-U+1D378)
* A Copyleft symbol (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F12F)
* A Skateboard emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6F9)
* Normal and negative circled shapes (total 4 characters) were added to '''Geometric Shapes Extended'''. (U+1F7D5-U+1F7D8)
* (total 65 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F94D-U+1F94F, U+1F96C-U+1F970, U+1F973-U+1F976, U+1F97A, U+1F97C-U+1F97F, U+1F998-U+1F99F, U+1F9A0-U+1F9A2, U+1F9B0-U+1F9B9, U+1F9C1-U+1F9C2 and U+1F9E7-U+1F9FF)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|FF10 FE00
|
|short diagonal stroke form # FULLWIDTH DIGIT ZERO
|}
== Unicode 12.0 ==
Unicode 12.0 was released on March 5, 2019. It encoded 137,928 characters, adding 554 new characters.
=== New blocks ===
* '''Elymaic''' (U+10FE0-U+10FFF), containing 23 characters, was added.
* '''Nandinagari''' (U+119A0-U+119FF), containing 65 characters, was added.
* '''Tamil Supplement''' (U+11FC0-U+11FFF), containing 51 characters, was added.
* '''Egyptian Hieroglyph Format Controls''' (U+13430-U+1343F), containing 9 characters, was added.
* '''Small Kana Extension''' (U+1B130-U+1B16F), containing 7 characters, was added.
* '''Nyiakeng Puachue Hmong''' (U+1E100-U+1E14F), containing 71 characters, was added.
* '''Wancho''' (U+1E2C0-U+1E2FF), containing 59 characters, was added.
* '''Ottoman Siyaq Numbers''' (U+1ED00-U+1ED4F), containing 61 characters, was added.
* '''Symbols and Pictographs Extended-A''' (U+1FA70-U+1FAFF), containing 16 characters, was added.
=== Extended blocks ===
* A sign Siddham (total 1 character) was added to '''Telugu'''. (U+0C77)
* Letters for Pail and Sanskrit (total 15 characters) were added to '''Lao'''. (U+0E86, U+0E89, U+0E8C, U+0E8E-U+0E93, U+0E98, U+0EA0, U+0EA8-U+0EA9, U+0EAC and U+0EBA)
* A sign Double Anusvara Antargomukha (total 1 character) was added to '''Vedic Extensions'''. (U+1CFA)
* An astrological symbol and Hellschreiber Pause symbol (total 2 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BC9 and U+2BFF)
* A Cornish Verse Divider (total 1 character) was added to '''Supplemental Punctuation'''. (U+2E4F)
* Egyptological letters, Anglicana W and letters for early Pinyin (total 11 characters) were added to '''Latin Extended-D'''. (U+A7BA-U+A7BF and U+A7C2-U+A7C6)
*Sinological phonetic letters (total 2 characters) were added to '''Latin Extended-E'''. (U+AB66-U+AB67)
* A Vedic Anusvara (total 1 character) was added to '''Newa'''. (U+1145F)
* An archaic letter Kha (total 1 character) was added to '''Takri'''. (U+116B8)
* Sign Jihvamuliya and Uphadhmaniya (total 2 characters) were added to '''Soyombo'''. (U+11A84-U+11A85)
* Letters for various Yi and Miao languages (total 16 characters) were added to '''Miao'''. (U+16F45-U+16F4A, U+16F4F and U+16F7F-U+16F87)
* Marks for Ancient Chinese texts (total 2 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE2-U+16FE3)
* Some additional ideographs (total 6 characters) were added to '''Tangut'''. (U+187F2-U+187F7)
* A Nasalization mark (total 1 character) was added to '''Adlam'''. (U+1E94B)
* A Spanish and Portuguese register mark (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F16C)
* Hindu Temple and Auto Rickshaw emoji (total 2 characters) were added to '''Transport and Map Symbols'''. (U+1F6D5 and U+1F6FA)
* Large colored circles and boxes (total 12 characters) were added to '''Geometric Shapes Extended'''. (U+1F7E0-U+1F7EB)
* (total 31 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90D-U+1F90F, U+1F93F, U+1F971, U+1F97B, U+1F9A5-U+1F9AA, U+1F9AE-U+1F9AF, U+1F9BA-U+1F9BF, U+1F9C3-U+1F9CA and U+1F9CD-U+1F9CF)
* Heterodox chess symbols (total 84 characters) were added to '''Chess Symbols'''. (U+1FA00-U+1FA53)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Spacing Modifier Letters
|02EA, 02EB
|2
|-
|Vedic Extensions
|1CF2..1CF3
|2
|-
|Currency Symbols
|20A9
|1
|-
|CJK Symbols and Punctuation
|3001, 3002
|2
|-
|Bopomofo
|3105..312F
|43
|-
|Bopomofo Extended
|31A0..31BA
|27
|-
|CJK Unified Ideographs Extension A
|37C3, 3B9D, 3CFD, 3FE0, 44EC, 4A76
|6
|-
|CJK Unified Ideographs
|5344, 55B9, 6ABC, 6FF9, 809E, 80BC, 80E9, 8132, 8159, 841C, 891D, 8C6C, 915E, 9FD4
|14
|-
|Phags-pa
|A840..A877
|56
|-
|Halfwidth and Fullwidth Forms
|FF01, FF0C, FF0E, FF1A, FF1B, FF1F
|6
|-
|CJK Unified Ideographs Extension B
|200DD, 20164, 20BBF, 20C02, 20CED, 21D4C, 2278B, 23AB8, 2459B, 24A7D, 24FB9, 25ED7, 2677C, 26B4C, 26C21, 26CBE, 26E3D, 28834, 289A1, 289C0, 28A0F, 28B46
|22
|-
|CJK Unified Ideographs Extension C
|2A8FB, 2A917, 2AA30
|3
|-
|CJK Unified Ideographs Extension E
|2BA52, 2BD77, 2C494, 2C72F, 2C734, 2CB38
|6
|-
|CJK Unified Ideographs Extension F
|2D23B, 2E83A
|2
|-
! colspan="2" |Total
!192
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|3001 FE00
|
|corner-justified form # IDEOGRAPHIC COMMA
|-
|3001 FE01
|
|centered form # IDEOGRAPHIC COMMA
|-
|3002 FE00
|
|corner-justified form # IDEOGRAPHIC FULL STOP
|-
|3002 FE01
|
|centered form # IDEOGRAPHIC FULL STOP
|-
|FF01 FE00
|
|corner-justified form # FULLWIDTH EXCLAMATION MARK
|-
|FF01 FE01
|
|centered form # FULLWIDTH EXCLAMATION MARK
|-
|FF0C FE00
|
|corner-justified form # FULLWIDTH COMMA
|-
|FF0C FE01
|
|centered form # FULLWIDTH COMMA
|-
|FF0E FE00
|
|corner-justified form # FULLWIDTH FULL STOP
|-
|FF0E FE01
|
|centered form # FULLWIDTH FULL STOP
|-
|FF1A FE00
|
|corner-justified form # FULLWIDTH COLON
|-
|FF1A FE01
|
|centered form # FULLWIDTH COLON
|-
|FF1B FE00
|
|corner-justified form # FULLWIDTH SEMICOLON
|-
|FF1B FE01
|
|centered form # FULLWIDTH SEMICOLON
|-
|FF1F FE00
|
|corner-justified form # FULLWIDTH QUESTION MARK
|-
|FF1F FE01
|
|centered form # FULLWIDTH QUESTION MARK
|}
== Unicode 12.1 ==
Unicode 12.1 was released on May 7, 2019. It encoded 137,929 characters, adding only 1 new character.
=== Extended blocks ===
* A square era name Reiwa (total 1 character) was added to '''Enclosed CJK Letters and Months'''. (U+32FF)
== Unicode 13.0 ==
Unicode 13.0 was released on March 10, 2020. It encoded 143,859 characters, adding 5,930 new characters.
=== New blocks ===
* '''Yezidi''' (U+10E80-U+10EBF), containing 47 characters, was added.
* '''Chorasmian''' (U+10FB0-U+10FDF), containing 28 characters, was added.
* '''Dives Akuru''' (U+11900-U+1195F), containing 72 characters, was added.
* '''Lisu Supplement''' (U+11FB0-U+11FBF), containing 1 character, was added.
* '''Khitan Small Script''' (U+18B00-U+18CFF), containing 470 characters, was added.
* '''Tangut Supplement''' (U+18D00-U+18D08), containing 9 characters, was added.
* '''Symbols for Legacy Computing''' (U+1FB00-U+1FBFF), containing 212 characters, was added.
* '''CJK Unified Ideographs Extension G''' (U+30000-U+3134F), containing 4939 characters, was added.
=== Extended blocks ===
* Letters for African languages and Punjabi (total 10 characters) were added to '''Arabic Extended-A'''. (U+08BE-U+08C7)
* A sign Overline (total 1 character) was added to '''Oriya'''. (U+0B55)
* A Vedic Anusvara (total 1 character) was added to '''Malayalam'''. (U+0D04)
* A sign Candrabindu (total 1 character) was added to '''Sinhala'''. (U+0D81)
* Combining diacritical marks for Scottish phonology (total 2 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1ABF-U+1AC0)
* A Japanese symbol for Type A Electronics (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B97)
* Cross patties and a Tironian sign Capita Et (total 3 characters) were added to '''Supplemental Punctuation'''. (U+2E50-U+2E52)
* Letters for Taiwan and Cantonese language (total 5 characters) were added to '''Bopomofo Extended'''. (U+31BB-U+31BF)
* Some disunified ideographs (total 10 characters) were added to '''CJK Unified Ideographs Extension A'''. (U+4DB6-4DBF)
* Some ideographs for China (total 13 characters) were added to '''CJK Unified Ideographs'''. (U+9FF0-U+9FFC)
* Letters for Gaulish (total 6 characters) were added to '''Latin Extended-D'''. (U+A7C7-U+A7CA and U+A7F5-U+A7F6)
* An alternate sign Nasanta (total 1 character) was added to '''Syloti Nagri'''. (U+A82C)
* Letter R With Midle Tilde and modifier letters for Scottish phonology (total 4 characters) were added to '''Latin Extended-E'''. (U+AB68-U+AB6B)
* A symbol Ascia (total 1 character) was added to '''Ancient Symbols'''. (U+1019C)
* A letter for Pali (total 1 character) was added to '''Chakma'''. (U+11147)
* A vowel sign Prishthamatra E and Inverted Candrabindu (total 2 characters) were added to '''Sharada'''. (U+111CE and U+111CF)
* Double comma, sign Jihvamuliya and Uphadhmaniya (total 3 characters) were added to '''Newa'''. (U+1145A and U+11460-U+11461)
* Khitan Small Script Filler and reading marks for Vietnamese (total 3 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE4 and U+16FF0-U+16FF1)
* Some additional components (total 13 characters) were added to '''Tangut Components'''. (U+18AF3-U+18AFF)
* Creative Commons license symbols and Mask Work symbol (total 7 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10D-U+1F10F, U+1F16D-1F16F and U+1F1AD)
* Hut, Elevator, Pickup Truck and Roller Skate emoji (total 4 characters) were added to '''Transportation and Map Symbols'''. (U+1F6D6-U+1F6D7 and U+1F6FB-U+1F6FC)
* Arrows for legacy computing (total 2 characters) were added to '''Supplemental Arrows-C'''. (U+1F8B0-U+1F8B1)
* (total 10 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90C, U+1F972, U+1F977-U+1F978, U+1F9A3-U+1F9A4, U+1F9AB-U+1F9AD and U+1F9CB)
* (total 41 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA74, U+1FA83-U+1FA86, U+1FA96-U+1FAA8, U+1FAB0-U+1FAB6, U+1FAC0-U+1FAC2 and U+1FAD0-U+1FAD6)
* Gongche charaters for Kunqu Opera (total 7 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6D7-U+2A6DD)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Tagalog
|1700..170C, 170E..1714
|20
|-
|Mongolian
|1834, 1871, 1878
|3
|-
|Sundanese
|1BAB
|1
|-
|Currency Symbols
|20BF
|1
|-
|CJK Radicals Supplement
|2E80..2E99, 2E9B..2EF3
|115
|-
|Kangxi Radicals
|2F00..2FD5
|214
|-
|CJK Unified Ideographs Extension A
|3472, 38C7, 3DB8, 3FE0, 440B, 46E9
|6
|-
|CJK Unified Ideographs
|53FD, 6146, 6711, 671C, 6721, 6725, 6BD2, 7B9A, 87CE, 8956, 93BF, 9B97
|12
|-
|Latin Extended-D
|A764..A765
|2
|-
|Phags-pa
|A86D
|1
|-
|Tangut
|175F6, 17F0D, 17F8A, 17FA5, 180D6, 18139, 18147, 184F1, 18736
|9
|-
|Tangut Components
|18843, 18856, 1888C, 1890A, 18915, 1893B
|6
|-
|Adlam
|1E900..1E94A, 1E950..1E959, 1E95E..1E95F
|71
|-
|Miscellaneous Symbols and Pictographs
|1F3B1
|1
|-
|Supplemental Symbols and Pictographs
|1F995..1F998, 1F99B..1F99E, 1F9B0..1F9B3, 1F9E7
|13
|-
|CJK Unified Ideographs Extension B
|20219, 21249, 21827, 22C3A, 2327B, 23496, 2355E, 2363B, 236ED, 23839, 23FD5, 24261, 24726, 248F2, 2548E, 26657, 26C9E, 26FE1, 27334, 27C0E, 27CEF, 2A38C
|22
|-
|CJK Unified Ideographs Extension C
|2AED5, 2AEF3, 2AF76, 2B09F, 2B1C3, 2B1E5
|6
|-
|CJK Unified Ideographs Extension E
|2B83C, 2B8D9..2B8DA, 2B96F, 2BBD7, 2BD61, 2BE4A, 2BF1D, 2BF9D, 2C0B8, 2C142, 2C176, 2C316, 2C3FB, 2C402, 2C7AC, 2C82C, 2C83A, 2C9A1, 2CC88, 2CD68
|21
|-
|CJK Unified Ideographs Extension F
|2DC09, 2DE4A, 2EB7E, 2EB89
|4
|-
|CJK Compatibility Ideographs Supplement
|2F83B, 2F878, 2F8D6..2F8D7, 2F8DA, 2F8F0, 2F984, 2FA02
|8
|-
! colspan="2" |Total
!536
|}
== Unicode 14.0 ==
Unicode 14.0 was released on September 14, 2021. It encoded 144,697 characters, adding 838 new characters.
=== New blocks ===
* '''Arabic Extended-B''' (U+0870-U+089F), containing 41 characters, was added.
* '''Vithkuqi''' (U+10570-U+105BF), containing 70 characters, was added.
* '''Latin Extended-F''' (U+10780-U+107BF), containing 57 characters, was added.
* '''Old Uyghur''' (U+10F70-U+10FAF), containing 26 characters, was added.
* '''Unified Canadian Aboriginal Syllabics Extended-A''' (U+11AB0-U+11ABF), containing 16 characters, was added.
* '''Cypro-Minoan''' (U+12F90-U+12FFF), containing 99 characters, was added.
* '''Tangsa''' (U+16A70-U+16ACF), containing 89 characters, was added.
* '''Kana Extended-B''' (U+1AFF0-U+1AFFF), containing 13 characters, was added.
* '''Znamenny Musical Notation''' (U+1CF00-U+1CFFF), containing 185 characters, was added.
* '''Latin Extended-G''' (U+1DF00-U+1DFFF), containing 31 characters, was added.
* '''Toto''' (U+1E290-U+1E2BF), containing 31 characters, was added.
* '''Ethiopic Extended-B''' (U+1E7E0-U+1E7FF), containing 28 characters, was added.
=== Extended blocks ===
* An End of Text punctuation mark (total 1 character) was added to '''Arabic'''. (U+061D)
* Letters for Balti and Quranic orthography (total 12 characters) were added to '''Arabic Extended-A'''. (U+08B5 and U+08C8-U+08D2)
* A sign Nukta and letter Nakaara Pollu (total 2 characters) were added to '''Telugu'''. (U+0C3C and U+0C5D)
* A letter Nakaara Pollu (total 1 character) was added to '''Kannada'''. (U+0CDD)
* A letter Ra, sign Pamudpod and archaic letter Ra (total 3 characters) were added to '''Tagalog'''. (U+170D, U+1715 and U+171F)
* A fourth Free variation selector (total 1 character) was added to '''Mongolian'''. (U+180F)
* Combining diacritical marks for extended IPA (total 14 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1AC1-U+1ACE)
* An archaic ligature Jnya and punctuation marks (total 3 characters) were added to '''Balinese'''. (U+1B4C and U+1B7D-U+1B7E)
* A combining Dot Below Left (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFA)
* A Kyrgyz Som sign (total 1 character) was added to '''Currency Symbols'''. (U+20C0)
* A letter Caudate Chrivi (total 2 characters) were added to '''Glagolitic'''. (U+2C2F and U+2C5F)
* Medieval and phonetic punctuation marks (total 11 characters) were added to '''Supplemental Punctuation'''. (U+2E53-U+2E5D)
* Some ideographs for Macao (total 3 characters) were added to '''CJK Unified Ideographs'''. (U+9FFD-U+9FFF)
* Archaic European letters, modifier letters for Sokuon and Chatino orthography (total 13 characters) were added to '''Latin Extended-D'''. (U+A7C0-U+A7C1, U+A7D0-U+A7D1, U+A7D3, U+A7D5, U+A7D6-U+A7D9 and U+A7F2-U+A7F4)
* A modifier letter Wasla Above and honorifics (total 20 characters) were added to '''Arabic Presentation Forms-A'''. (U+FBC2, U+FD40-U+FD4F, U+FDCF and U+FDFE-U+FDFF)
* Letters for Old Tamil (total 6 characters) were added to '''Brahmi'''. (U+11070-U+11075)
* A vowel sign Vocalic R (total 1 character) was added to '''Khaiti'''. (U+110C2)
* An Abbreviation sign (total 1 character) was added to '''Takri'''. (U+116B9)
* Letters for Tai Ahom (total 7 characters) were added to '''Ahom'''. (U+11740-U+11746) The block was expanded from (U+11700-U+1173F) to (U+11700-U+1174F)
* Kana archaic letters (total 4 characters) were added to '''Kana Extended-A'''. (U+1B11F-U+1B122)
* Accidental symbols for Iranian classical music (total 2 characters) were added to '''Musical Symbols'''. (U+1D1E9-U+1D1EA)
* Playground Slide, Wheel and Ring Buoy emoji (total 3 characters) were added to '''Transportation and Map Symbols'''. (U+1F6DD-U+1F6DF)
* A Heavy Equals Sign emoji (total 1 character) was added to '''Geometric Shapes Extended'''. (U+1F7F0)
* A Troll and Face Holding Back Tears emoji (total 2 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F979 and U+1F9CC)
* (total 31 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA7B-U+1FA7C, U+1FAA9-U+1FAAC, U+1FAB7-U+1FABA, U+1FAC3-U+1FAC5, U+1FAD7-U+1FAD9, U+1FAE0-U+1FAE7 and U+1FAF0-U+1FAF6)
* Some ideographs for Macao (total 2 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6DE-U+2A6DF)
* Disunified ideographs and a G source ideograph for China, Hong Kong and Vietnam (total 4 characters) were added to '''CJK Unified Ideographs Extension C'''. (U+2B735-U+2B738)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Latin Extended-B
|0184..0185
|2
|-
|Arabic
|0674..0678, 06C5, 06C7, 06FE
|8
|-
|Letterlike Symbols
|210B, 2110, 2112, 211B, 212C, 2130..2131, 2133
|8
|-
|Enclosed Alphanumerics
|2460..24FF
|160
|-
|Dingbats
|2776..2793
|30
|-
|CJK Symbols and Punctuation
|3001..3029, 3030..303D, 303F
|56
|-
|CJK Strokes
|31C0..31E3
|36
|-
|Katakana Phonetic Extensions
|31F0..31FF
|16
|-
|Enclosed CJK Letters and Months
|3200..321E, 3220..32FF
|255
|-
|CJK Compatibiity
|3300..33FF
|256
|-
|CJK Unified Ideographs Extension A
|3777, 3B3F
|2
|-
|CJK Unified Ideographs
|5DD5, 652C, 6AC0
|3
|-
|Arabic Presentation Forms-A
|FBD7..FBD8, FBDD, FBE0..FBE1
|5
|-
|Vertical Forms
|FE10..FE19
|10
|-
|CJK Compatibiity Forms
|FE30..FE4F
|32
|-
|Small Form Variants
|FE50..FE52, FE54..FE66, FE68..FE6B
|26
|-
|Halfwidth and Fullwidth Forms
|FF01..FF9F, FFA1..FFBE, FFC2..FFC7, FFCA..FFCF, FFD2..FFD7, FFDA..FFDC, FFE0..FFE6, FFE8..FFEE
|225
|-
|Egyptian Hieroglyphs
|1300A, 13017, 1302D, 13032, 13034..13035, 13037..13038, 1303A..1303E, 1304E..1304F, 13055, 13057, 13068, 1309A, 130D2, 130D5, 130F6, 130FE, 13192, 1325F, 13267, 1326A, 13281, 13297, 1329E, 132B4, 132C1, 132E6, 13304, 1331F, 13378..1337B, 1337D..1337E, 133F3, 133FA..13403, 1340D, 13417, 1342B
|55
|-
|Mathematical Alphanumeric Symbols
|1D49C, 1D49E..1D49F, 1D4A2, 1D4A5..1D4A6, 1D4A9..1D4AC, 1D4AE..1D4B5
|18
|-
|Enclosed Alphanumeric Supplement
|1F100..1F1AD, 1F1E6..1F1FF
|200
|-
|Enclosed Ideographic Supplement
|1F200..1F202, 1F210..1F23B, 1F240..1F248, 1F250..1F251, 1F260..1F265
|64
|-
|Supplemental Symbols and Pictographs
|1F930
|1
|-
|CJK Unified Ideographs Extension B
|22ADC, 230F2, 25B27, 26F28
|4
|-
! colspan="2" |Total
!1472
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|1D49C FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE00
|
|chancery style # SCRIPT CAPITAL B
|-
|1D49E FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE00
|
|chancery style # SCRIPT CAPITAL E
|-
|2131 FE00
|
|chancery style # SCRIPT CAPITAL F
|-
|1D4A2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE00
|
|chancery style # SCRIPT CAPITAL H
|-
|2110 FE00
|
|chancery style # SCRIPT CAPITAL I
|-
|1D4A5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE00
|
|chancery style # SCRIPT CAPITAL L
|-
|2133 FE00
|
|chancery style # SCRIPT CAPITAL M
|-
|1D4A9 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE00
|
|chancery style # SCRIPT CAPITAL R
|-
|1D4AE FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Z
|-
|1D49C FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE01
|
|roundhand style # SCRIPT CAPITAL B
|-
|1D49E FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE01
|
|roundhand style # SCRIPT CAPITAL E
|-
|2131 FE01
|
|roundhand style # SCRIPT CAPITAL F
|-
|1D4A2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE01
|
|roundhand style # SCRIPT CAPITAL H
|-
|2110 FE01
|
|roundhand style # SCRIPT CAPITAL I
|-
|1D4A5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE01
|
|roundhand style # SCRIPT CAPITAL L
|-
|2133 FE01
|
|roundhand style # SCRIPT CAPITAL M
|-
|1D4A9 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE01
|
|roundhand style # SCRIPT CAPITAL R
|-
|1D4AE FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Z
|}
===Named Sequences===
Here is a table with new named character sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Name
|-
|0915 093C
|DEVANAGARI SEQUENCE FOR LETTER QA
|-
|0916 093C
|DEVANAGARI SEQUENCE FOR LETTER KHHA
|-
|0917 093C
|DEVANAGARI SEQUENCE FOR LETTER GHHA
|-
|091C 093C
|DEVANAGARI SEQUENCE FOR LETTER ZA
|-
|0921 093C
|DEVANAGARI SEQUENCE FOR LETTER DDDHA
|-
|0922 093C
|DEVANAGARI SEQUENCE FOR LETTER RHA
|-
|092B 093C
|DEVANAGARI SEQUENCE FOR LETTER FA
|-
|092F 093C
|DEVANAGARI SEQUENCE FOR LETTER YYA
|-
|09A1 09BC
|BENGALI SEQUENCE FOR LETTER RRA
|-
|09A2 09BC
|BENGALI SEQUENCE FOR LETTER RHA
|-
|09AF 09BC
|BENGALI SEQUENCE FOR LETTER YYA
|-
|0A32 0A3C
|GURMUKHI SEQUENCE FOR LETTER LLA
|-
|0A38 0A3C
|GURMUKHI SEQUENCE FOR LETTER SHA
|-
|0A16 0A3C
|GURMUKHI SEQUENCE FOR LETTER KHHA
|-
|0A17 0A3C
|GURMUKHI SEQUENCE FOR LETTER GHHA
|-
|0A1C 0A3C
|GURMUKHI SEQUENCE FOR LETTER ZA
|-
|0A2B 0A3C
|GURMUKHI SEQUENCE FOR LETTER FA
|-
|0B21 0B3C
|ORIYA SEQUENCE FOR LETTER RRA
|-
|0B22 0B3C
|ORIYA SEQUENCE FOR LETTER RHA
|}
== Unicode 15.0 ==
Unicode 15.0 was released on September 13, 2022. It encoded 149,186 characters, adding 4,489 new characters.
=== New blocks ===
* '''Arabic Extended-C''' (U+10EC0-U+10EFF), containing 3 characters, was added.
* '''Devanagari Extended-A''' (U+11B00-U+11B5F), containing 10 characters, was added.
* '''Kawi''' (U+11F00-U+11F5F), containing 86 characters, was added.
* '''Kaktovik Numerals''' (U+1D2C0-U+1D2DF), containing 20 characters, was added.
* '''Cyrillic Extended-D''' (U+1E030-U+1E08F), containing 63 characters, was added.
* '''Nag Mundari''' (U+1E4D0-U+1E4FF), containing 42 characters, was added.
* '''CJK Unified Ideographs Extension H''' (U+31350-U+323AF), containing 4192 characters, was added.
=== Extended blocks ===
* A Yamakkan (total 1 character) was added to '''Lao'''. (U+0ECE)
* A combining Anusvara Above Right (total 1 character) was added to '''Kannada'''. (U+0CF3)
* Letters Qa, Short I and Vocalic R (total 3 characters) were added to '''Khojki'''. (U+1123F-U+11241)
* An additional hieroglyph to Group V (total 1 character) was added to '''Egyptian Hieroglyphs'''
* Extended format controls (total 29 characters) were added to '''Egyptian Hieroglyph Format Controls'''. (U+13439-U+13455). The block was expanded from (U+13430-U+1343F) to (U+13430-U+1345F)
* Hiragana and Katakana Small Ko (total 2 characters) were added to '''Small Kana Extension'''. (U+1B132 and U+1B155)
* Letters for Malayalam transliteration (total 6 characters) were added to '''Latin Extended-G'''. (U+1DF25-U+1DF2A)
* A Wireless emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6DC)
* A Nine Pointed White Star (total 1 character) was be added to '''Geometric Shapes Extended'''. (U+1F7D9)
* A Lot of Fortune, eclipse symbols and symbols for dwarf planets (total 6 characters) were added to '''Alchemical symbols'''. (U+1F774-U+1F776 and U+1F77B-U+1F77F)
* (total 20 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA75-U+1FA77, U+1FA87-U+1FA88, U+1FAAD-U+1FAAF, U+1FABB-U+1FABF, U+1FACE-U+1FACF, U+1FADA-U+1FADB, U+1FAE8 and U+1FAF7-U+1FAF8)
* A disunified ideograph for Macao (total 1 character) was added to '''CJK Unified Ideographs Extension C'''. (U+2B739)
===Glyph Changes===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|IPA Extensions
|025E, 029A
|2
|-
|United Canadian Aboriginal Syllabics
|144B, 14D1, 1506, 15C0..15C3, 15E8..15EE, 1601, 1604..1607, 160A..160D, 1614..162D, 1630..163F, 1646..1647, 165A
|66
|-
|United Canadian Aboriginal Syllabics Extended
|18DB, 18EC, 18F1..18F2, 18F5
|5
|-
|Sundanese
|1BBF
|1
|-
|Optical Character Recognition
|2447
|1
|-
|CJK Unified Ideographs Extension A
|34DC, 3BF6, 3C43, 48B4, 4DBE
|5
|-
|CJK Unified Ideographs
|585F, 5F50, 6BC0, 7BC9, 833E
|5
|-
|Cyrillic Extended-B
|A66E
|1
|-
|Old Turkic
|10C47
|1
|-
|Egyptian Hieroglyphs
|various (new standardized variation sequences)
|94
|-
|Khitan Small Script
|18CCA
|1
|-
|Wancho (font update)
|1E2C0..1E2F9, 1E2FF
|59
|-
|Alchemical Symbols (font update)
|1F700..1F773
|116
|-
|CJK Unified Ideographs Extension B
|20048, 20A1C, 2143F, 21A5F, 21C08, 21FBA, 22ACF, 23392, 238A7, 23D8F, 23F4E, 25D20, 26E30, 27B48, 27C4F, 28633, 28B02, 28E9A, 29760, 2A60F
|20
|-
|CJK Unified Ideographs Extension C
|2B249
|1
|-
|CJK Unified Ideographs Extension E
|2BB37, 2BD7D, 2C151, 2C1E0, 2C2D6, 2C5CA, 2C810, 2CD34
|8
|-
|CJK Unified Ideographs Extension F
|2CF4E, 2D25D, 2D3EC, 2D6A7, 2D7BA, 2D979, 2DA74, 2DA97, 2DC13, 2DDC0, 2DF10, 2DF78, 2E05A, 2E0AE, 2E516, 2E640, 2E680, 2EA63
|18
|-
|CJK Compatibility Ideographs Supplement
|2F804, 2F805, 2F833, 2F835, 2F84C, 2F84F, 2F852, 2F855, 2F887, 2F88B, 2F899, 2F8A0, 2F8A6, 2F8A7, 2F8AD, 2F8B1, 2F8B4, 2F8B7, 2F8BA, 2F8D0, 2F8E0..2F8E2, 2F8E5, 2F8E6, 2F8FE, 2F900, 2F901, 2F907, 2F912, 2F922, 2F926, 2F936, 2F938, 2F94E, 2F959, 2F95F, 2F96C, 2F99F, 2F9B8, 2F9BA, 2F9D3, 2F9DB, 2F9DC, 2F9E8, 2F9EA, 2F9EE, 2FA00, 2FA0D, 2FA1B
|50
|-
|CJK Unified Ideographs Extension G
|302FC, 30723, 30A6D, 30CF7, 30DBF, 31006, 3105D
|7
|-
! colspan="2" |Total
!461
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|13091 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027
|-
|13092 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027A
|-
|13093 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D028
|-
|130A9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D047
|-
|1310F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F016
|-
|13117 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F023
|-
|1311C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F028
|-
|13121 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F032
|-
|13127 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F037A
|-
|13139 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13139 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13183 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH H005
|-
|13187 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH H008
|-
|131A0 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131A0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131B1 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B1 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B8 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M009
|-
|131B9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M010
|-
|131BA FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M010A
|-
|131CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M017
|-
|131EE FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131EE FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131F8 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N010
|-
|131F9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131F9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131FA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N012
|-
|131FA FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N012
|-
|13216 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH N035
|-
|13257 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O006
|-
|1327B FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH O029
|-
|1327F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O031
|-
|1327F FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O031
|-
|13285 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O036
|-
|1328C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O039
|-
|132A4 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132A4 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132AA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Q003
|-
|132CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH R024
|-
|132DC FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S010
|-
|132E7 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E7 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E9 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S020
|-
|132F8 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S033
|-
|132FD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S037
|-
|13302 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S042
|-
|13303 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S043
|-
|13307 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T001
|-
|13308 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T002
|-
|13310 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008
|-
|13311 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008A
|-
|13312 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13312 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13313 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13313 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13314 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T010
|-
|13314 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T010
|-
|1331B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331B FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T016A
|-
|13321 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13321 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13322 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13322 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13331 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T035
|-
|13331 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T035
|-
|1333B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U007
|-
|1333C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U008
|-
|1334A FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U022
|-
|13361 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U042
|-
|13373 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V007A
|-
|13377 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V010
|-
|13378 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V011
|-
|1337D FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V012A
|-
|13385 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V019
|-
|13399 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V026
|-
|1339A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V027
|-
|133AF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W001
|-
|133B0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W002
|-
|133BF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W014
|-
|133D3 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH X004A
|-
|133DD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH Y002
|-
|133F2 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z007
|-
|133F5 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z010
|-
|133F6 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z011
|-
|13403 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z015I
|-
|13416 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA008
|-
|13419 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|1341A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA012
|-
|13423 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA021
|-
|1342C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA030
|-
|1342E FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA032
|-
|13443 FE00
|
|expanded # EGYPTIAN HIEROGLYPH LOST SIGN
|-
|13444 FE00
|
|expanded # EGYPTIAN HIEROGLYPH HALF LOST SIGN
|-
|13445 FE00
|
|expanded # EGYPTIAN HIEROGLYPH TALL LOST SIGN
|-
|13446 FE00
|
|expanded # EGYPTIAN HIEROGLYPH WIDE LOST SIGN
|}
== Unicode 15.1 ==
Unicode 15.1 was released on September 12th, 2023. It encoded 149,813 characters, adding 627 new characters.
=== New Blocks ===
* '''CJK Unified Ideographs Extension I''' (U+2EBF0-U+2EE5F), containing 622 characters, was added.
=== Extended Blocks ===
* 4 Ideographic characters were added to '''Ideographic Description Characters'''. (U+2FFC-U+2FFF)
* An Ideographic subtraction (total 1 character) was added to '''CJK Strokes'''. (U+31EF)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|CJK Unified Ideographs Extension A
|357E, 358B..358E, 3599..359D, 35AF..35B0, 35B2..35B3, 35DF..35E1, 35EF, 360F, 3612, 3F94, 44D5, 48EE
|5
|-
|CJK Unified Ideographs
|5098, 512D, 517A, 5391, 54DB, 551C, 551F, 55B8, 55ED, 56AB, 591E, 594A, 5B2E, 5DFC..5DFD, 5EE4, 609E, 65B0, 65B3, 65D5, 65F2, 67B2, 6AB6, 6AEC, 6C69, 6FC2, 6FD3, 7019, 7361, 74BD, 7934, 820B, 826E, 83BB, 8412, 8456, 848A, 896F, 8E34, 8FD7, 9166, 9855, 985E, 9C4D
|5
|-
|Latin Extended-D
|A798
|1
|-
|Latin Extended-E
|AB5A
|1
|-
|Tangut
|17105, 172A4, 17BD1..17BD3, 17EF9, 18136
|59
|-
|Alchemical Symbols
|1F741, 1F747, 1F74C, 1F74F, 1F756, 1F758, 1F763, 1F768, 1F76D, 1F76E
|116
|-
|CJK Unified Ideographs Extension B
|20302, 2087A, 20C00, 230B7, 2339E, 236EF, 237C3, 23B87, 23CC0, 23CD9, 23E5E, 2486F, 249D6, 249E8, 24D6A, 2585E, 25D89, 26A5A..26A5B, 26A73, 26A82..26A83, 26A90, 26AA6, 26AA8, 26AD8, 27350, 279F8, 284A3, 28BBA, 29516, 29530
|20
|-
|CJK Unified Ideographs Extension C
|2A741, 2AB63, 2ACD8, 2AF6F, 2B173, 2B490
|1
|-
|CJK Unified Ideographs Extension E
|2BC2E, 2BF45, 2C04C, 2C13A, 2C43C, 2C43E, 2C816
|8
|-
|CJK Unified Ideographs Extension F
|2D1CC..2D1CD, 2D1DD, 2D1E4, 2D1F7, 2D203, 2D256, 2D266, 2D2A2, 2D2AC, 2D2DA
|18
|-
|CJK Unified Ideographs Extension G
|301D4, 301D9, 301E4, 301E8, 301FF..30200, 30205, 3020C, 30211, 30215..30217, 30220, 30234..30235, 30237
|7
|-
|CJK Unified Ideographs Extension H
|314B7, 31542, 31569, 31C7F, 31D5A, 31F68
|7
|-
! colspan="2" |Total
!164
|}
== Unicode 16.0 ==
Unicode 16.0 was released on September 10th, 2024. It encoded 154,998 characters, adding 5185 new characters.
=== New Blocks ===
* '''Todhri''' (U+105C0-U+105FF), containing 52 characters, was added.
* '''Garay''' (U+10D40-U+10D8F), containing 69 characters, was added.
* '''Tulu-Tigalari''' (U+11380-U+113FF), containing 80 characters, was added.
* '''Myanmar Extended-C''' (U+116D0-U+116FF), containing 20 characters, was added.
* '''Sunuwar''' (U+11BC0-U+11BFF), containing 44 characters, was added.
* '''Egyptian Hieroglyphs Extended-A''' (U+13460-U+143FF), containing 3995 characters, was added.
* '''Gurung Khema''' (U+16100-U+1613F), containing 58 characters, was added.
* '''Kirat Rai''' (U+16D40-U+16D7F), containing 58 characters, was added.
* '''Symbols for Legacy Computing Supplement''' (U+1CC00-U+1CEBF), containing 686 characters, was added.
* '''Ol Onal''' (U+1E5D0-U+1E5FF), containing 44 characters, was added.
=== Extended Blocks ===
* A combining diacritical mark for Jawi (total 1 character) was added to '''Arabic Extended-B'''. (U+0897)
* Inverted letters and a punctuation mark (total 3 characters) was added to '''Balinese'''. (U+1B4E-U+1B4F and U+1B7F)
* A letter Tje (total 2 characters) was added to '''Cyrillic Extended-C'''. (U+1C89-U+1C8A)
* Legacy computing symbols for Delete (total 3 characters) was added to '''Control Pictures'''. (U+2427-U+2429)
* CJK strokes HXG and SZP (total 2 characters) was added to '''CJK Strokes'''. (U+31E4-U+31E5)
* A capital Rams Horn, an S with Diagonal Stroke, Lamda Letters, and letters for Wakashan and Salishan Languages (total 6 characters) was added to '''Latin Extended-D'''. (U+A7CB-U+A7CD, U+A7DA-U+A7DC)
* A combining Alef overlay and letters with two dots vertically below (total 4 characters) was added to '''Arabic Extended-C'''. (U+10EC2-U+10EC4 and U+10EFC)
* A sign Nukta (total 1 character) was added to '''Kawi'''. (U+11F5A)
* A blank character (total 1 character) was added to '''Khitan Small Script'''. (U+18CFF)
* A rightwards arrow with hook, and arrows for legacy computing and arrows for Egyptology (total 12 characters) was added to '''Supplemental Arrows-C'''. (U+1F8B2-U+1F8BB, U+1F8C0-U+1F8C1)
* A Harp, Shovel, Leafless Tree, Fingerprint, Root Vegetable, Splatter, and Face with Bags Under Eyes (total 7 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA89, U+1FA8F, U+1FABE, U+1FAC6, U+1FADC, U+1FADF, and U+1FAE9)
* Graphic shapes for legacy computing (total 37 characters) was added to '''Symbols for Legacy Computing'''. (U+1FBCB-U+1FBEF)
== Unicode 17.0 ==
Unicode 17.0 was released on September 9th, 2025. It encoded 159,801 characters, adding 4,083 new characters.
=== New Blocks ===
* '''Sidetic''' (U+10940-U+1095F), containing 26 characters, was added.
* '''Sharada Supplement''' (U+11B60-U+11B7F), containing 8 characters, was added.
* '''Tolong Siki''' (U+11DB0-U+11DEF), containing 54 characters, was added.
* '''Beria Erfe''' (U+16EA0-U+16EDF), containing 50 characters, was added.
* '''Tangut Components Supplement''' (U+18D80-U+18DFF), containing 115 characters, was added.
* '''Miscellaneous Symbols Supplement''' (U+1CEC0-U+1CEFF), containing 34 characters, was added.
* '''Tai Yo''' (U+1E6C0-U+1E6FF), containing 55 characters, was added.
* '''CJK Unified Ideographs Extension J''' (U+323B0-U+3347F), containing 4298 characters, was added.
=== Extended Blocks ===
* A Noon with Ring Above (total 1 character) was added to '''Arabic Extended-B'''. (U+088F)
* An archaic ligature Shrii (total 1 character) was added to '''Telugu'''. (U+0C5C)
* An archaic ligature Shrii (total 1 character) was added to '''Kannada'''. (U+0CDC)
* Compound tone and harrington diacritics (total 26 characters) was to '''Combining Diacritical Marks Extended'''. (U+1ACF-U+1ADD, U+1AE0-U+1AEB)
* Saudi Riyal Sign (total 1 character) was added to '''Currency Symbols'''. (U+20C1)
* Equal Sign with Infinity Above (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B96)
* 2 capital letters for Middle English, Latin pharyngeal voiced fricative, and Modifier Letter Capital S (total 5 characters) was added to '''Latin Extended-D'''. (U+A7CE-U+A7CF, U+A7D2, U+A7D4, U+A7F1)
* Arabic Ligature Rahmatu Allaahi Alayh and Arabic Honorifics (total 25 characters) was added to '''Arabic Presentation Forms-A'''. (U+FBC3-U+FBD2, U+FD90, U+FD91, U+FDC8-U+FDCE)
* A Small Yeh Barree with Two Dots Below, Thin Noon, Biblical End of Verse, Yeh with Four Dots Below, Honorifics, Double Vertical Bar Below, and Small Low Noon (total 14 characters) was added to '''Arabic Extended-C'''. (U+10EC5-U+10EC7, U+10ED0-U+10ED8, U+10EFA-U+10EFB)
* Chinese Simplified and Traditional Er and Yangqin Slow Signs Two, Three, and Four (total 5 characters) was added to '''Ideographic Symbols and Punctuation'''. (U+16FF2-U+16FF6)
* Some additional ideographs (total 8 characters) was added to '''Tangut'''. (U+187F8-U+187FF)
* Additional ideographs (total 22 characters) was added to '''Tangut Supplement'''. (U+18D09-U+18D1E)
* Nine symbols (total 9 characters) was added to '''Symbols for Legacy Computing Supplement'''. (U+1CCFA-U+1CCFC, U+1CEBA-1CEBF)
* A Landslide (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D8)
* Historical asteroid symbols (total 4 characters) was added to '''Alchemical Symbols'''. (U+1F777-U+1F77A)
* Chemical symbols (total 9 characters) was added to '''Supplemental Arrows-C'''. (U+1F8D0-U+1F8D8)
* White and Black Chess Ferz and Alfil (total 4 characters) was added to '''Chess Symbols'''. (U+1FA54-U+1FA57)
* A trombone, treasure chest, hairy creature, orca, distorted face, and fight cloud (total 6 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA8A, U+1FA8E, U+1FAC8, U+1FACD, U+1FAEA, and U+1FAEF)
* An alarm bell symbol (total 1 character) was added to '''Symbols for Legacy Computing'''. (U+1FBFA)
* Additional ideographs (total 6 characters) was added to '''CJK Unified Ideographs Extension C'''. (U+2B73A-U+2B73F)
* Additional ideographs (total 12 characters) was added to '''CJK Unified Ideographs Extension E'''. (U+2CEA2-U+2CEAD)
== Unicode 18.0 ==
Unicode 18.0 will be released around September 2026. In August 2025, only 61 characters were accepted, but more were accepted in November 2025.
=== New Blocks ===
*'''Bengali Supplement''' (U+11DF0-U+11DFF), containing 2 characters, will be added.
* '''Archaic Cuneiform Numerals''' (U+12550-U+1268F), containing 311 characters, will be added.
* '''Jurchen''' (U+18E00-U+1919F), containing 914 characters, will be added.
* '''Jurchen Radicals''' (U+191A0-U+191DF), containing 51 characters, will be added.
* '''Musical Symbols Supplement''' (U+1D250-U+1D28F), containing 50 characters, will be added.
* '''Miscellaneous Symbols and Arrows Extended''' (U+1DB00-U+1DBFF), containing 29 characters, will be added.
* '''Seal Script''' (U+3D000-U+3FC3F), containing 11328 characters, will be added.
=== Extended Blocks ===
* Modifier letters Eh, Ini, and Yi (total 3 characters) will be added to '''Armenian'''. (U+0558, U+058B-U+058C)
* Hebrew Point Sheva Na Mudgash and Hebrew Point Dagesh Hazaq Mudgash (total 2 characters) will be added to '''Hebrew'''. (U+05C8-U+05C9)
* Signs for dot above and double dot above (total 2 characters) will be added to '''Oriya'''. (U+0B53-U+0B54)
* Alternate positioned IPA diacritics and diacritics for Chao and Khoe (total 7 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1ADE-U+1ADF, U+1AEC-U+1AF0)
* Latin subscript small letter w, y, and z and Modifier letter high and low vertical line (total 4 characters) will be added to '''Superscripts and Subscripts'''. (U+208F, U+209D-U+209F)
* Rufiyaa Sign, UAE Dirham Sign, and Omani Rial (total 3 characters) will be added to '''Currency Symbols'''. (U+20C2-U+20C4)
* Two Wiggly Exclamation Marks and Two Parenthesis with Middle Ring (total 4 characters) will be added to '''Supplemental Punctuation'''. (U+2E60-U+2E63)
* Latin capital letter closed omega and Latin capital letter r with long leg and (total 2 characters) will be added to '''Latin Extended-D'''. (U+A7DD and U+A7E2)
* Latin capital letter script r and script r with ring (total 2 characters) will be added to '''Latin Extended-E'''. (U+AB6C-U+AB6D)
* Latin modifier letters for clicks (total 5 characters) will be added to '''Latin Extended-F'''. (U+107BB-U+107BF)
* Arabic Crown Letters, Quranic Characters, and Arabic Crown (total 39 characters) will be added to '''Arabic Extended-C'''. (U+10EC9-U+10ECF, U+10ED9-U+10EEE, U+10EF0-U+10EF9)
* Devanagari Letter Alternate Ddda (total 1 character) will be added to '''Devanagari Extended-A'''. (U+11B0A)
* Extended Cuneiform Numeric Signs (total 12 characters) will be added to '''Cuneiform Numbers and Punctuation'''. (U+1246F, U+12475-U+1247F)
* Jurchen Small Script characters (total 5 characters) will be added to '''Khitan Small Script'''. (U+18CD6-U+18CDA)
* Two additional ideographs (total 2 characters) will be added to '''Tangut Supplement'''. (U+18D1F-U+18D20)
* Hiragana Digraph Koto, Katakana Diagraphs Toki, Tote, and Yori, letters alternate Ne, and Wi (total 6 characters) will be added to '''Kana Extended-A'''. (U+1B123-U+1B128)
* Katakana letter small archaic Ye (total 1 character) will be added to '''Small Kana Extension'''. (U+1B168)
* Leibnizian alchemical symbols, Leibnizian cossic characters, and Leibnizian mathematical signs and symbols (total 19 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED2-U+1CED4, U+1CEDD-U+1CEDF, U+1CEF1-U+1CEFD)
* Stein Zimmerman Symbols, Digit Slash Symbols, and other Symbols (total 23 characters) will be added to '''Musical Symbols'''. (U+1D127-U+1D128, U+1D1EB-U+1D1FF)
* Mathematical italic long s with descender s (U+1D6A6) will be added to '''Mathematical Alphanumeric Symbols'''.
* Affricate ligatures, letters with palatal hook, barred letters, RFE letters, Initial Teaching Alphabet, English Phonotypic Alphabet, Leibnizian cossic characters, and modifier letters (total 151 characters) will be added to '''Latin Extended-G'''. (U+1DF1F-U+1DF24, U+1DF2B-U+1DF81, U+1DF90-U+1DF96, U+1DFCD-U+1DFFF)
* A Tomobiki symbol (total 1 character) will be added to '''Enclosed Alphanumeric Supplement'''. (U+1F1AE)
* A lighthouse (total 1 character) will be added to '''Transport and Map Symbols'''. (U+1F6D9)
* A black circle with white vertical bar, and Extended Geometric Shapes (total 17 characters) will be added to '''Geometric Shapes Extended'''. (U+1F7DA-U+1F7DB, U+1F7F1-U+1F7FF)
* A meteor, eraser, net with handle, monarch butterfly, pickle, cracking face, leftwards thumb sign, and rightwards thumb sign (total 8 characters) will be added to '''Symbols and Pictographs Extended-A'''. (U+1FA8B-1FA8D, U+1FACC, U+1FADD, U+1FAEB, U+1FAF9-1FAFA)
* An additional ideograph (total 1 character) will be added to '''CJK Unified Ideographs Extension D'''. (U+2B81E)
== Code Points Provisionally Assigned==
This is a section where you can add any upcoming Unicode characters that have been [https://www.unicode.org/alloc/Pipeline.html#codepoint_reservation provisionally assigned for mature proposals] (but not yet accepted) for a future update of The Unicode Standard.
=== New Blocks ===
* '''Arabic Extended-D''' (U+10D90-U+10E5F), containing 3 characters, will be added.
* '''Sirmauri''' (U+11850-U+1188F), containing 55 characters, will be added.
* '''Leke''' (U+11B80-U+11BBF), containing 55 characters, will be added.
* '''Proto-Cuneiform''' (U+12690-U+12ECF), containing 1392 characters, will be added.
* '''Chisoi''' (U+16D80-U+16DAF), containing 40 characters, will be added.
* '''Mwangwego''' (U+16E00-U+16E3F), containing 64 characters, will be added.
* '''Shaaldaa''' (U+1C800-U+1CB2F), containing 804 characters, will be added.
=== Extended Blocks ===
* Telugu Sign Spacing Candrabindu (total 1 character) will be added to '''Telugu'''. (U+0C70)
* Kannada Signs Ardhanusvara and Combining Anusvara Above (total 1 character) will be added to '''Kannada'''. (U+0CF0 and U+0CF4)
* Mongolian Letter Manchu Alternative Ue (total 1 character) will be added to '''Mongolian'''. (U+1879)
* Combining Grave-Acute-Macron, Combining inverted lazy s Above, and Combining comma Above and acute (total 3 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1AF1-U+1AF3)
* Cyrillic small letter Yeru with connecting bar (total 1 character) will be added to '''Cyrillic Extended-C'''. (U+1C8B)
* Belarusian Ruble sign and Ruble sign with double vertical stem (total 2 characters) will be added to '''Currency Symbols'''. (U+20C5, U+20CF)
* Combining Long Triple Solidus Overlay and Combining Saltire Overlay (total 2 characters) will be added to '''Combining Diacritical Marks for Symbols'''. (U+20F1-U+20F2)
* Latin capital and small letter i with oblique stroke (total 2 characters) will be added to '''Latin Extended-D'''. (U+A7De-U+A7DF)
* Latin capital letter u with left hook (total 1 character) will be added to '''Latin Extended-E'''. (U+AB6E)
* Arabic Dotless Half-Yeh, Half-Yeh, Dotless Half-Jeem and Astronomical Kaf (total 4 characters) will be added to '''Arabic Extended-C'''. (U+10EC0-U+10EC1, U+10EC8, U+10EEF)
* Brahmi minimizing virama (total 1 character) will be added to '''Brahmi'''. (U+1107E)
* Tulu-Tigalari letter combining anusvara above, signs om pushpika with tail and shrii pushpika, and letter archaic II (total 5 characters) will be added to '''Tulu-Tigalari'''. (U+113CB, U+113D9-U+113DB)
* Newa Letter Heavy Ya (total 1 character) will be added to '''Newa'''. (U+11462)
* Dogra Signs Candrabindu and Avaragha (total 2 characters) will be added to '''Dogra'''. (U+1183C-U+1183D)
* Devanagari Jivamuliya and Upadhmaniya (total 2 characters) will be added to '''Devanagari Extended-A'''. (U+11B0B-U+11B0C)
* Alchemical Symbol for Calx-2 and Alchemical Symbol for Retort-2 (total 2 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED1, U+1CED5)
* Musical Symbol down arrowhead breath mark (total 1 character) will be added to '''Musical Symbols Supplement'''. (U+1D282)
* Small w with palatal hook, small n and r with double middle tilde, small capital i with retroflex hook, small open q, x with stroke, small wavy y, schwa with right hook, Romance dialectology symbols, zh ligature, Albanian letter edhe, Albanian Frashëri letters, Modifier letter capital y, and modifier letter accents (total 26 characters) will be added to '''Latin Extended-G'''. (U+1DF82-U+1DF8F, U+1DF97-U+1DFA3, U+1DFC4-U+1DFCD)
*Arabic Astronomical zero and five astronomical symbols (total 6 characters) will be added to Arabic Mathematical Alphabetic Symbols (U+1EEE0-U+1EEE5)
==Roadmap Blocks==
This is a section where proportional maps of proposed allocations to Unicode and ISO/IEC 10646 are presented. Italic indicates scripts for which detailed proposals have not yet been written.<ref>[https://unicode.org/roadmaps/smp/]</ref>
* '''Northern Palaeohispanic''' (U+10200-U+1023F)
* '''Southern Palaeohispanic''' (U+10240-U+1027F)
* '''''Shavian Quikscript''' (U+103E0-U+103FF)''
* '''Combining Diacritical Marks Extended-A''' (U+107C0-U+107FF)
* '''Proto-Sinaitic''' (U+108B0-U+108DF)
* '''''Numidian''' (U+10960-U+1097F)''
* '''Balti''' (U+10AA0-U+10ABF)
* '''Book Pahlavi''' (U+10BB0-U+10BDF)
* '''Baburi''' (U+10BE0-U+10BFF)
* '''Arabic Extended-D''' (U+10D90-U+10E5F)
* '''Landa''' (U+11250-U+1127F)
* '''Tani Lipi''' (U+114E0-U+114FF)
* '''Ranjana''' (U+11500-U+1157F)
* '''Zou''' (U+11750-U+117AF)
* '''Pyu''' (U+117B0-U+117FF)
* '''Vateluttu''' (U+11960-U+1199F)
* '''Balti-B''' (U+11CC0-U+11CFF)
* '''Tocharian''' (U+11E00-U+11E6F)
* '''Khotanese''' (U+11E70-U+11ECF)
* '''Pallava''' (U+11F60-U+11FAF)
* '''''Egyptian Hieroglyphs Extended-B''' (U+14680-U+151FF)''
* '''Mayan Hieroglyphs''' (U+15500-U+15AFF)
* '''Kore Sebeli''' (U+15B00-U+15B6F)<!--proposed to be accepted, 93 characters-->
* '''Mandombe''' (U+15B80-U+15FFF)
* '''Kurukh Banna''' (U+16140-U+1618F)
* '''Moon''' (U+161A0-U+161FF)
* '''Blissymbols''' (U+16200-U+167FF)
* '''Woleai''' (U+16B90-U+16BFF)
* '''Kpelle''' (U+16C00-U+16C7F)
* '''Tikamuli''' (U+16C80-U+16CBF)
* '''Tangsa (Khimhun)''' (U+16CD0-U+16CFF)
* '''Afaka''' (U+16D00-U+16D3F)
* '''Kulitan''' (U+16DD0-U+16DFF)
* '''''Bopomofo Extended-A''' (U+16FA0-U+16FAF)''
* '''Kanbun Extended-A''' (U+16FB0-U+16FDF)
* '''Khitan Large Script''' (U+19200-U+199FF)
* '''Pau Cin Hau Syllabary''' (U+19E00-U+1A2FF)
* '''Eskaya''' (U+1A300-U+1A75F)
* '''Rejang Extended''' (U+1A760-U+1A77F)
* '''''Kaida''''' (U+1A780-U+1A7FF)
* '''Naxi Dongba''' (U+1A800-U+1ACFF)
* '''''Naxi Geba''' (U+1AD00-U+1AFCF)''
* '''''Kana Extended-C''' (U+1AFD0-U+1AFEF)''
* '''Shuishu Logograms''' (U+1B300-U+1B5FF)
* '''Lisu Syllabic Script''' (U+1B600-U+1B9FF)
* '''Indus''' (U+1BA00-U+1BB8F)
* '''Pitman Shorthand''' (U+1BCB0-U+1BCFF)
* '''Proto-Elamite''' (U+1BE00-U+1C37F)
* '''Linear Elamite''' (U+1C380-U+1C4FF)
* '''Ndiko Jonam''' (U+1CB30-U+1CB7F)
* '''N<nowiki>'</nowiki>ti''' (U+1CB80-U+1CBAF)
* '''Old Chinese Musical Symbols (Flute and Pipa)''' (U+1D290-U+1D2BF)
* '''''Mathematical Alphanumeric Symbols Supplement''' (U+1D380-U+1D3FF)''
* '''Jianzi Format Controls''' (U+1DAE0-U+1DAFF)
* '''Eebee Hmong''' (U+1E150-U+1E1FF)
* '''Western Cham''' (U+1E200-U+1E26F)
* '''Loma''' (U+1E300-U+1E41F)
* '''Bagam''' (U+1E420-U+1E4CF)
* '''Pungchen''' (U+1E500-U+1E52F)
* '''''Pungchung''' (U+1E530-U+1E55F)''
* '''''Marchung''' (U+1E560-U+1E59F)''
* '''Brusha''' (U+1E5A0-U+1E5CF)
* '''''Chola''' (U+1E600-U+1E65F)''
* '''Box-Headed''' (U+1E660-U+1E6BF)
* '''Lampung''' (U+1E700-U+1E73F)
* '''Kerinci''' (U+1E740-U+1E76F)
* '''Buginese Supplement''' (U+1E770-U+1E7BF)
* '''''Lontara Bilang-Bilang''' (U+1E7C0-U+1E7DF)''
* '''N'Ko Supplement''' (U+1E960-1E97F)
* '''''Byblos''''' (U+1EB90-U+1EBFF)
* '''Persian Siyaq Numbers''' (U+1EC00-U+1EC7F)
* '''Diwani Siyaq Numbers''' (U+1ECC0-U+1ECFF)
* '''''Extended Pictographic Characters''' (U+1FC00-U+1FFFF)''
== References ==
{{reflist}}
ood28n0d9yljuk1unsrduy113m94qma
4656278
4656277
2026-08-04T18:12:13Z
Alexlatham96
377450
/* New Blocks */
4656278
wikitext
text/x-wiki
{{pp-protected|small=yes}}
{{Unicode page}}
{{TOC right}}
{{refimprove|date=June 2017}}
This page is about each version specification, and the differences between the versions.
== Unicode 1.0 ==
Unicode 1.0 was the first version of Unicode, released October 1991. It encoded 7,094 new characters.
=== “Blocks” ===
This version of Unicode did not formally group characters in blocks. But in comparison with version 2.0, the following “blocks” were available:
U+0000-U+FFFD
51 Blocks
* '''Basic Latin (formerly called ASCII)''' (U+0000-U+007F), containing 128 characters.
* '''Latin-1 Supplement (formerly called Latin1)''' (U+0080-U+00FF), containing 128 characters.
* '''Latin Extended-A''' '''(formerly called European Latin)''' (U+0100-U+017F), containing 127 characters.
* '''Latin Extended-B''' '''(formerly called Extended Latin)''' (U+0180-U+01FF), containing 113 characters.
* '''IPA Extensions''' '''(formerly called Standard Phonetic)''' (U+0250-U+02AF), containing 89 characters.
* '''Spacing Modifier Letters''' '''(formerly called Modifier Letters)''' (U+02B0-U+02FF), containing 57 characters.
* '''Combining Diacritical Marks''' '''(formerly called Generic Diacritical Marks)''' (U+0300-U+036F), containing 66 characters.
* '''Greek and Coptic''' '''(formerly called Greek)''' (U+0370-U+03FF), containing 112 characters.
* '''Cyrillic''' (U+0400-U+04FF), containing 192 characters.
* '''Armenian''' (U+0530-U+058F), containing 84 characters.
* '''Hebrew''' (U+0590-U+05FF), containing 52 characters.
* '''Arabic''' (U+0600-U+06FF), containing 169 characters.
* '''Devanagari''' (U+0900-U+097F), containing 104 characters.
* '''Bengali''' (U+0980-U+09FF), containing 89 characters.
* '''Gurmukhi''' (U+0A00-U+0A7F), containing 74 characters.
* '''Gujarati''' (U+0A80-U+0AFF), containing 75 characters.
* '''Oriya''' (U+0B00-U+0B7F), containing 78 characters.
* '''Tamil''' (U+0B80-U+0BFF), containing 61 characters.
* '''Telugu''' (U+0C00-U+0C7F), containing 80 characters.
* '''Kannada''' (U+0C80-U+0CFF), containing 80 characters.
* '''Malayalam''' (U+0D00-U+0D7F), containing 78 characters.
* '''Thai''' (U+0E00-U+0E7F), containing 92 characters.
* '''Lao''' (U+0E80-U+0EFF), containing 70 characters.
* '''Tibetan''' (U+1000-U+105F), containing 71 characters.
* '''Georgian''' (U+10A0-U+10FF), containing 78 characters.
* '''General Punctuation''' (U+2000-U+206F), containing 67 characters.
* '''Superscripts and Subscripts''' (U+2070-U+209F), containing 28 characters.
* '''Currency Symbols''' (U+20A0-U+20CF), containing 11 characters.
* '''Combining Marks for Symbols''' '''(formerly called Diacritical Marks for Symbols)''' (U+20D0-U+20FF), containing 18 characters.
* '''Letterlike Symbols''' (U+2100-U+214F), containing 57 characters.
* '''Number Forms''' (U+2150-U+218F), containing 48 characters.
* '''Arrows''' (U+2190-U+21FF), containing 91 characters.
* '''Mathematical Operators''' (U+2200-U+22FF), containing 242 characters.
* '''Miscellaneous Technical''' (U+2300-U+23FF), containing 43 characters.
* '''Control Pictures''' '''(formerly called Pictures for Control Codes)''' (U+2400-U+243F), containing 37 characters.
* '''Optical Character Recognition''' (U+2440-U+245F), containing 11 characters.
* '''Enclosed Alphanumerics''' (U+2460-U+24FF), containing 139 characters.
* '''Box Drawing''' '''(formerly called Form and Chart Components)''' (U+2500-U+257F), containing 128 characters.
* '''Block Elements''' '''(formerly called Blocks)''' (U+2580-U+259F), containing 22 characters.
* '''Geometric Shapes''' (U+25A0-U+25FF), containing 79 characters.
* '''Miscellaneous Symbols''' '''(formerly called Miscellaneous Dingbats)''' (U+2600-U+26FF), containing 106 characters.
* '''Dingbats''' '''(formerly called Zapf Dingbats)''' (U+2700-U+27BF), containing 160 characters.
* '''CJK Symbols and Punctuation''' (U+3000-U+303F), containing 56 characters.
* '''Hiragana''' (U+3040-U+309F), containing 90 characters.
* '''Katakana''' (U+30A0-U+30FF), containing 90 characters.
* '''Bopomofo''' (U+3100-U+312F), containing 40 characters.
* '''Hangul Compatibility Jamo (formerly called Hangul Elements)''' (U+3130-U+318F), containing 94 characters.
* '''Kanbun (formerly called CJK Miscellaneous)''' (U+3190-U+31FF), containing 16 characters.
* '''Enclosed CJK Letters and Months''' '''(formerly called''' '''Enclosed CJK Letters and Ideographs)''' (U+3200-U+32FF), containing 191 characters.
* '''CJK Compatibility''' '''(formerly called CJK Squared Words for U+3300-U+337F and CJK Squared Abbreviations for U+3380-33FF)''' (U+3300-U+33FF), containing 187 characters.
* '''Hangul''' (U+3400-U+3D2D), containing 2,350 characters.
* '''Private Use Area''' (U+E000-U+FDFF), reserved for 5,632 characters.
* '''CJK Compatibility Forms''' '''(formerly called CNS 11643 Compatibility)''' (U+FE30-U+FE4F), containing 28 characters.
* '''Small Form Variants''' '''(formerly called Small Variants)''' (U+FE50-U+FE6F), containing 26 characters.
* '''Arabic Presentation Forms-B''' '''(formerly called Basic Glyphs for Arabic Language)''' (U+FE70-U+FEFF), containing 140 characters.
* '''Halfwidth and Fullwidth Forms''' '''(formerly called Halfwidth and Fullwidth Variants)''' (U+FF00-U+FFEF), containing 216 characters.
* '''Specials''' '''(formerly called Special)''' (U+FFF0-U+FFFF), containing 1 character.
== Unicode 1.0.1 ==
Unicode 1.0.1 was released June 1992. It encoded 28,292 characters, adding 21,204 new characters and removing 6 characters, for a net increase of 21,198 characters.
=== New blocks ===
* '''CJK Unified Ideographs''' (U+4E00-U+9FFF), containing 20,902 Han Ideographs for Chinese, Japanese and Korean, was added.
* '''CJK Compatibility Ideographs''' (U+F900-U+FAFF), containing 302 Han Ideographs for compatibility with existing character sets, was added.
=== Removed characters ===
* Letters Ka and Kha with Ogonek (total 4 characters) were removed from '''Cyrillic'''. (U+04C5-U+04C6 and U+04C9-U+04CA)
* APL Compose Operator and APL Out (total 2 characters) were removed from '''Miscellaneous Technical'''. (U+2300-U+2301)
=== Rearranged characters ===
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
*'''Circled Katakana:''' ''The characters well be arranged in modern order: e.g., A, I, U, E, O, KA, KI'' (U+32D0-U+32FE)
*'''Basic Glyphs For Arabic Language:''' ''The character shapes will be arranged in different order: Isolate, Final, Initial and Medial'' (U+FE80-FEFC)
=== Characters with semantics changed ===
*'''Zero Width Non-Joiner''' [ZWNJ] (U+20DC)
*'''Zero Width Joiner''' [ZWJ] (U+20DD)
== Unicode 1.1 ==
Unicode 1.1 was released June 1993. It encoded 34,168 characters, adding 5,969 new characters and removing 93 characters, for a net increase of 5,876 characters. It finalized the long anticipated Han Unification.
=== New blocks ===
* '''Hangul Jamo''' (U+1100-U+11FF), containing 240 ''jamo'' for the Hangul script, was added.
* '''Latin Extended Additional''' (U+1E00-U+1EFF), containing 245 precomposed characters for transliteration and Vietnamese, was added.
* '''Greek Extended''' (U+1F00-U+1FFF), containing 233 precomposed characters for polytonic Greek, was added.
* '''Hangul Supplementary-A''' (U+3D2E-U+44B7), containing 1,930 precomposed syllables for the Hangul script, was added.
* '''Hangul Supplementary-B''' (U+44B8-U+4DFF), containing 2,376 precomposed syllables for the Hangul script, was added.
* '''Alphabetic Presentation Forms''' (U+FB00-U+FB4F), containing 57 precomposed characters and ligatures, was added.
* '''Arabic Presentation Forms-A''' (U+FB50-U+FDFF), containing 593 combinations of Arabic letters, was added.
* '''Combining Half Marks''' (U+FE20-U+FE2F), containing 4 halves of diacritical marks, was added.
=== Extended blocks ===
* The long S (ſ) (total 1 character) was added to '''Latin Extended-A'''. (U+017F)
* The Hungarian Dz, characters for transliteration purposes and precomposed characters with double grave and inverted breve (total 35 characters) were added to '''Latin Extended-B''' (U+01F1-U+01F5 and U+01FA-U+0217). The block was expanded from (U+0180-U+01FF) to (U+0180-U+024F)
* Diacritics for polytonic Greek and double width diacritics (total 6 characters) were added to '''Combining Diacritical Marks'''. (U+0342-U+0345 and U+0360-U+0361)
* Compatibility character now deprecated, Ano Teleia, and other characters (total 5 characters) were added to '''Greek and Coptic''' (U+0374-U+0375, U+037A, U+037E and U+0387).
* Additional characters for non-Slavic languages (total 38 characters) were added to '''Cyrillic'''. (U+04D0-U+04EB, U+04EE-U+04F5 and U+04F8-U+04F9)
* A ligature of Ech and Yiwn (և) (total 1 character) was added to '''Armenian'''. (U+0587)
* One deprecated compatibility character and several characters for biblical texts (total 25 characters) were added to '''Arabic'''. (U+066D and U+06D6-U+06ED)
* A sign Virama (total 1 character) was added to '''Gurmukhi''' (U+0A4D).
* Letters Candra O and E (total 3 characters) were added to '''Gujarati'''. (U+0A8D, U+0A91 and U+0AC9)
* An Ai Length mark (total 1 character) was added to '''Oriya'''. (U+0B56)
* An undertie, a pair of brackets and six formatting characters now deprecated (total 9 characters) were added to '''General Punctuation'''. (U+203F, U+2045-U+2046 and U+206A-U+206F)
* Some additional symbols and the complete set of APL functional symbols (total 79 characters) were added to '''Miscellaneous Technical'''. (U+2300 and U+232D-U+237A)
* A large circle (◯) (total 1 character) was added to '''Geometric Shapes'''. (U+25EF)
* The ideographic telegraph line feed separator symbol (〷) (total 1 character) was added to '''CJK Symbols and Punctuation'''. (U+3037)
* Four Katakana letters not in use since 1945 (total 4 characters) were added to '''Katakana'''. (U+30F7-U+30FA)
* Ideographic telegraph symbols for the twelve months (total 12 characters) were added to '''Enclosed CJK Letters and Months'''. (U+32C0-U+32CB)
* Ideographic telegraph symbols for hours and days and six additional measure units (total 62 characters) were added to '''CJK Compatibility'''. (U+3358-U+3376 and U+33E0-U+33FE)
* Some more space (total 2,304 characters) was added to the '''Private Use Area'''.
* Seven halfwidth geometric shapes (total 7 characters) were added to '''Halfwidth and Fullwidth Forms'''. (U+FFE8-U+FFEE)
=== Removed blocks ===
* '''Tibetan''', containing 71 letters for the Tibetan script, was removed from the Unicode standard.
=== Removed characters ===
* A total of 10 characters were removed from '''Greek and Coptic'''. (U+0370-U+0372, U+03D7-U+03D9, U+03DB, U+03DD, U+03DF, and U+03E1)
* Point Varika (total 1 character) was removed from ''Hebrew''. (U+05F5)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Thai'''. (U+0E70-U+0E74)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Lao'''. (U+0EF0-U+0EF4)
* An Ideographic Ditto Mark (total 1 character) was removed from '''CJK Symbols and Punctuation''' (U+3004) and merged with CJK Unified Ideograph-4EDD.
=== Rearranged characters ===
* Greek character U+03F3 was changed from Spacing Tonos to Letter Yot.
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
== Unicode 2.0 ==
Unicode 2.0 was released July 1996. It encoded 38,885 characters, adding 11,373 new characters and removing 6,656 characters, for a net increase of 4,717 characters. This was the first Unicode version to reserve blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Hangul Syllables''' (U+AC00-U+D7AF), containing 11,172 precomposed syllables for the Hangul script, was added.
* '''High Surrogates''' (U+D800-U+DB7F), setting aside 896 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''High Private Use Surrogates''' (U+DB80-U+DBFF), setting aside 128 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Low Surrogates''' (U+DC00-U+DFFF), setting aside 1,024 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Supplementary Private Use Area-A''' (U+F0000-U+FFFFF), reserving 65,534 characters for private use, was added.
* '''Supplementary Private Use Area-B''' (U+100000-U+10FFFF), reserving 65,534 characters for private use, was added.
=== Reinstated blocks ===
* '''Tibetan''' (U+0F00-U+0FFF), now containing 168 characters for the Tibetan script including religious signs, was readded.
=== Removed blocks ===
* '''Hangul''', containing 2,350 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-A''', containing 1,930 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-B''', containing 2,376 precomposed syllables for the Hangul script, was removed from the Unicode standard.
=== Extended blocks ===
* Cantillation marks for use in religious texts (total 31 characters) were added to '''Hebrew'''. (U+0591-U+05A1, U+05A3-U+05AF and U+05C4)
* A long S with Dot Above (total 1 character) was added to '''Latin Extended Additional'''. (U+1E9B)
* A Vietnamese Dong sign (total 1 character) was added to '''Currency Symbols'''. (U+20AB)
== Unicode 2.1 ==
Unicode 2.1 was released May 1998. It encoded 38,887 characters, adding only 2 new characters.
=== Extended blocks ===
* A Euro sign (total 1 character) was added to '''Currency Symbols'''. (U+20AC)
* An Object Replacement Character (total 1 character) was added to '''Specials'''. (U+FFFC)
== Unicode 3.0 ==
Unicode 3.0 was released September 1999. It was a big update and encoded 49,194 characters, adding 10,307 new characters.
=== New blocks ===
* '''Syriac''' (U+0700-U+074F), containing 71 characters used for writing in Syriac script, was added.
* '''Thaana''' (U+0780-U+07BF), containing 49 characters used for writing in Thaana script, was added.
* '''Sinhala''' (U+0D80-U+0DFF), containing 80 characters for the Sinhala script, was added.
* '''Myanmar''' (U+1000-U+109F), containing 78 characters for the Burmese script, was added.
* '''Ethiopic''' (U+1200-U+137F), containing 345 syllables and punctuation marks for the Ethiopic script, was added.
* '''Cherokee''' (U+13A0-U+13FF), containing 85 syllables for the Cherokee script, was added.
* '''Unified Canadian Aboriginal Syllabics''' (U+1400-U+167F), containing 630 syllables and punctuation marks for writing in indigenous languages of Canada, was added.
* '''Ogham''' (U+1680-U+169F), containing 29 characters for the ancient Ogham script, was added.
* '''Runic''' (U+16A0-U+16FF), containing 81 characters for the Germanic runes, was added.
* '''Khmer''' (U+1780-U+17FF), containing 103 characters for the Khmer script, was added.
* '''Mongolian''' (U+1800-U+18AF), containing 155 characters for the classical Mongolian script, was added.
* '''Braille Patterns''' (U+2800-U+28FF), containing 256 Braille letters, was added.
* '''CJK Radicals Supplement''' (U+2E80-U+2EFF), containing 115 non-Kangxi radicals, was added.
* '''Kangxi Radicals''' (U+2F00-U+2FDF), containing 214 radicals from the Kangxi dictionary, was added.
* '''Ideographic Description Characters''' (U+2FF0-U+2FFF), containing 12 characters used to describe a Han ideograph not available in the font, was added.
* '''Bopomofo Extended''' (U+31A0-U+31BF), containing 24 characters used for phonetic transcription of minority languages of Taiwan, was added.
* '''CJK Unified Ideographs Extension A''' (U+3400-U+4DBF), containing 6,582 additional Han Ideographs, was added.
* '''Yi Syllables''' (U+A000-U+A48F), containing 1,165 syllables of the modern Yi script, was added.
* '''Yi Radicals''' (U+A490-U+A4CF), containing 50 radicals of Yi Syllables, was added.
=== Extended blocks ===
* Additional precomposed characters, letters and capital letters of lowercase-only letters (total 30 characters) were added to '''Latin Extended-B'''. (U+01F6-U+01F9, U+0218-U+021F and U+0222-U+0233)
* Extensions for disordered speech (total 5 characters) were added to '''IPA Extensions'''. (U+02A9-U+02AD)
* Some additional modifier letters (total 6 characters) were added to '''Spacing Modifier Letters'''. (U+02DF and U+02EA-U+02EE)
* Additional combining diacritics for IPA (total 10 characters) were added to '''Combining Diacritical Marks'''. (U+0346-U+034E and U+0362)
* Lowercase versions of archaic letters and the Kai symbol (total 5 characters) were added to '''Greek and Coptic'''. (U+03D7, U+03DB, U+03DD, U+03DF and U+03E1)
* Nonstandard letters for Macedonian, combining numeral signs and three letters for Kildin Sami (total 12 characters) were added to '''Cyrillic'''. (U+0400, U+040D, U+0450, U+045D, U+0488-U+0489, U+048C-U+048F and U+04EC-U+04ED)
* A Hyphen (total 1 character) was added to '''Armenian'''. (U+058A)
* Combining hamza and maddah and nine additional Arabic characters (total 12 characters) were added to '''Arabic'''. (U+0653-U+0655, U+06B8-U+06B9, U+06BF, U+06CF and U+06FA-U+06FE)
* Additional letters and religious symbols (total 25 characters) were added to '''Tibetan'''. (U+0F6A, U+0F96, U+0FAE-U+0FB0, U+0FB8, U+0FBA-U+0FBC, U+0FBE-U+0FCC and U+0FCF)
* A narrow no-break space and 6 additional punctuation marks (total 7 characters) were added to '''General Punctuation'''. (U+202F and U+2048-U+204D)
* The Kip, Tugrik and Drachma sign (total 3 characters) were added to '''Currency Symbols'''. (U+20AD-U+20AF)
* An enclosing screen and an enclosing key (total 2 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E2-U+20E3)
* The information symbol and a rotated Q (total 2 characters) were added to '''Letterlike Symbols'''. (U+2139-U+213A)
* A mirrored Roman capital numeral hundred (Ↄ) (total 1 character) was added to '''Number Forms'''. (U+2183)
* Some additional arrows (total 9 characters) were added to '''Arrows'''. (U+21EB-U+21F3)
* Some additional technical symbols, including common keys on a 101 keyboard (total 33 characters) were added to '''Miscellaneous Technical'''. (U+2301, U+237B and U+237D-U+239A)
* Two additional control pictures (total 2 characters) were added to '''Control Pictures'''. (U+2425-U+2426)
* Squares and circles with quadrants (total 8 characters) were added to '''Geometric Shapes'''. (U+25F0-U+25F7)
* Two Syriac crosses and a signature mark (total 3 characters) were added to '''Miscellaneous Symbols'''. (U+2619 and U+2670-U+2671)
* Three Hangzhou numerals and a variation indicator (total 4 characters) were added to '''CJK Symbols and Punctuation'''. (U+3038-U+303A and U+303E)
* A ligature Yod with Hiriq (יִ) (total 1 character) was added to '''Alphabetic Presentation Forms'''. (U+FB1D)
* Three additional control characters for ruby markup (total 3 characters) were added to '''Specials'''. (U+FFF9-U+FFFB)
== Unicode 3.1 ==
Unicode 3.1 was released March 2001. It encoded 94,140 characters, adding 44,946 new characters, and mainly focused on blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Old Italic''' (U+10300-U+1032F), containing 35 letters for the Etruscan script, was added.
* '''Gothic''' (U+10330-U+1034F), containing 27 letters for the Gothic script, was added.
* '''Deseret''' (U+10400-U+1044F), containing 76 letters for the constructed Deseret script, was added.
* '''Byzantine Musical Symbols''' (U+1D000-U+1D0FF), containing 246 symbols for musical notation in Byzantine, was added.
* '''Musical Symbols''' (U+1D100-U+1D1FF), containing 219 characters for current musical notation, was added.
* '''Mathematical Alphanumeric Symbols''' (U+1D400-U+1D7FF), containing 991 Latin and Greek letters in serif, sans-serif, bold, italic, double-struck, script and Fraktur/Blackletter, was added.
* '''CJK Unified Ideographs Extension B''' (U+20000-U+2A6DF), containing 42,711 additional Chinese Ideographs, was added.
* '''CJK Compatibility Ideographs Supplement''' (U+2F800-U+2FA1F), containing 542 additional Chinese Ideographs for compatibility purposes, was added.
* '''Tags''', containing 97 language tags, was added. (U+E0000-U+E007F)
=== Extended noncharacters ===
* The Noncharacters range: U+FDD0..U+FDEF were added to '''Arabic Presentation Forms-A'''.
=== Extended blocks ===
* The capital Theta symbol and the Lunate Epsilon symbol (total 2 characters) were added to '''Greek and Coptic'''. (U+03F4-U+03F5)
=== Characters and Scripts Under Investigation or Rejected ===
* Khmer Sign Laak Was Rejected. (U+17DD) From '''Khmer.'''
* Georgian Letter U-Brjuu Was Rejected. From '''Georgian.'''
== Unicode 3.2 ==
Unicode 3.2 was released March 2002. It encoded 95,156 characters, adding 1,016 new characters.
=== New blocks ===
* '''Cyrillic Supplementary (now Cyrillic Supplement)''' (U+0500-U+052F), containing 16 characters used for the Komi language, was added.
* '''Tagalog''' (U+1700-U+171F), containing 20 characters for the Baybayin script, was added.
* '''Hanunoo''' (U+1720-U+173F), containing 23 characters and punctuation for the Hanunó'o script, was added.
* '''Buhid''' (U+1740-U+175F), containing 20 characters for the Buhid script, was added.
* '''Tagbanwa''' (U+1760-U+177F), containing 18 characters for the Tagbanwa script, was added.
* '''Miscellaneous Mathematical Symbols-A''' (U+27C0-U+27EF), containing 28 symbols used in math notation, was added.
* '''Supplemental Arrows-A''' (U+27F0-U+27FF), containing 16 additional arrows, was added.
* '''Supplemental Arrows-B''' (U+2900-U+297F), containing 128 special arrows, was added.
* '''Miscellaneous Mathematical Symbols-B''' (U+2980-U+29FF), containing 128 additional mathematical symbols, was added.
* '''Supplemental Mathematical Operators''' (U+2A00-U+2AFF), containing 256 additional mathematical operators, was added.
* '''Katakana Phonetic Extensions''' (U+31F0-U+31FF), containing 16 Katakana letters used for Ainu, was added.
* '''Variation Selectors''' (U+FE00-U+FE0F), containing 16 symbols used for indicating variations, was added.
=== Extended blocks ===
* A capital letter N with Long Right Leg (total 1 character) was added to '''Latin Extended-B'''. (U+0220)
* The combining grapheme joiner and combining Latin letters used in medieval texts (total 14 characters) were added to '''Combining Diacritical Marks'''. (U+034F and U+0363-U+036F)
* The Qoppa and a reversed lunate epsilon symbol (total 3 characters) were added to '''Greek and Coptic'''. (U+03D8-U+03D9 and U+03F6)
* Four additional letters used for the Kildin Sami language (total 8 characters) were added to '''Cyrillic'''. (U+048A-U+048B, U+04C5-U+04C6, U+04C9-U+04CA and U+04CD-U+04CE)
* A dotless Beh and a dotless Qaf (total 2 characters) were added to '''Arabic'''. (U+066E-U+066F)
* A Letter for Addu dialect (total 1 character) was added to '''Thaana'''. (U+07B1)
* The letters Yn and Elifi (total 2 characters) were added to '''Georgian'''. (U+10F7-U+10F8)
* Some additional punctuation marks and control characters (total 12 characters) were added to '''General Punctuation'''. (U+2047, U+204E-U+2052, U+2057 and U+205F-U+2063)
* A superscript letter I (total 1 character) was added to '''Superscripts and Subscripts'''. (U+2071)
* German Penny and Peso sign (total 2 characters) were added to '''Currency Symbols'''. (U+20B0-U+20B1)
* Some additional combining characters (total 7 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E4-U+20EA)
* Some double-struck and reversed/turned letters (total 15 characters) were added to '''Letterlike Symbols'''. (U+213D-U+214B)
* Some additional arrows (total 12 characters) were added to '''Arrows'''. (U+21F4-U+21FF)
* Some additional mathematical operators (total 14 characters) were added to '''Mathematical Operators'''. (U+22F2-U+22FF)
* Variable-width and additional symbols (total 53 characters) were added to '''Miscellaneous Technical'''. (U+237C and U+239B-U+23CE)
* Black and double circled numerals (total 20 characters) were added to '''Enclosed Alphanumerics'''. U+24EB-U+24FE)
* Quadrant elements (total 10 characters) were added to '''Block Elements'''. (U+2596-U+259F)
* Some additional triangles and squares (total 8 characters) were added to '''Geometric Shapes'''. (U+25F8-U+25FF)
* Shogi pieces ,recycling symbols, dices and dotted circles (total 24 characters) were added to '''Miscellaneous Symbols'''. (U+2616-U+2617, U+2672-U+267D and U+2680-U+2689)
* Additional parenthesis (total 14 characters) were added to '''Dingbats'''. (U+2768-U+2775)
* Three additional marks (total 3 characters) were added to '''CJK Symbols and Punctuation'''. (U+303B-U+303D)
* A digraph and two additional characters (total 3 characters) were added to '''Hiragana'''. (U+3095-U+3096 and U+309F)
* A digraph and a double hyphen (total 2 characters) were added to '''Katakana'''. (U+30A0 and U+30FF)
* Additional circled numerals (total 30 characters) were added to '''Enclosed CJK Letters and Months'''. (U+3251-U+325F and U+32B1-U+32BF
* Five missing radicals (total 5 characters) were added to '''Yi Radicals'''. (U+A4A2-U+A4A3, U+A4B4, U+A4C1, U+A4C5)
* Additional compatibility characters (total 59 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA30-U+FA6A)
* A Rial sign (total 1 character) was added to '''Arabic Presentation Forms-A'''. (U+FDFC)
* Two sesame dots (total 2 characters) were added to '''CJK Compatibility Forms'''. (U+FE45-U+FE46)
* A tail fragment (total 1 character) was added to '''Arabic Presentation Forms-B'''. (U+FE73)
* A pair of double parenthesis (total 2 characters) was added to '''Halfwidth and Fullwidth Forms'''. (U+FF5F-U+FF60)
== Unicode 4.0 ==
Unicode 4.0 was released April 2003. It encoded 96,382 characters, adding 1,226 new characters.
=== New blocks ===
* '''Limbu''', containing 66 characters for the Limbu abugida, was added.
* '''Tai Le''', containing 35 letters for the Tai Le script, was added.
* '''Khmer Symbols''', containing 32 symbols for the lunar calendar, was added.
* '''Phonetic Extensions''', containing 108 letters used in phonetic transcription, was added.
* '''Miscellaneous Symbols and Arrows''', containing 14 additional arrows, was added.
* '''Yijing Hexagram Symbols''', containing 64 hexagrams, was added.
* '''Linear B Syllabary''', containing 88 syllables of the ancient Linear B script, was added.
* '''Linear B Ideograms''', containing 123 ideograms of the ancient Linear B script, was added.
* '''Aegean Numbers''', containing 57 numerals used in the Aegean area, was added.
* '''Ugaritic''', containing 31 characters used in Ugaritic cuneiform, was added.
* '''Shavian''', containing 48 letters used for the artificial Shavian script, was added.
* '''Osmanya''', containing 40 characters used in the artificial Osmanya script, was added.
* '''Cypriot Syllabary''', containing 55 characters formerly used on Cyprus, was added.
* '''Tai Xuan Jing Symbols''', containing 87 symbols of Tai Xuan Jing, was added.
* '''Variation Selectors Supplement''', containing 240 additional variation selectors, was added.
=== Extended blocks ===
* Letters with curl used in Sinology (total 4 characters) were added to '''Latin Extended-B'''.
* Former IPA letters (total 2 characters) were added to '''IPA Extensions'''.
* Some additional characters (total 17 characters) were added to '''Spacing Modifier Letters'''.
* Additional combining double-width diacritics and diacritics corresponding to their spacing equivalent (total 11 characters) were added to '''Combining Diacritical Marks'''.
* The archaic letters Sho and San and the capital Lunate Sigma (total 5 characters) were added to '''Greek and Coptic'''.
* Some additional markers, biblical signs, and letters with inverted V (total 19 characters) were added to '''Arabic'''.
* Letters used for foreign words from Persian and Sogdian (total 6 characters) were added to '''Syriac'''.
* The short A (ऄ) (total 1 character) was added to '''Devanagari'''.
* The Avagraha sign (ঽ) (total 1 character) was added to '''Bengali'''.
* The Adak Bindi and Visarga signs (total 2 characters) were added to '''Gurmukhi'''.
* The vocalic l and ll and the Rupee sign (total 5 characters) were added to '''Gujarati'''.
* The letters Va and Wa (total 2 characters) were added to '''Oriya'''.
* Additional signs for date and finance environments (total 8 characters) were added to '''Tamil'''.
* The Nukta and Avagraha signs (total 2 characters) were added to '''Kannada'''.
* Some symbols and signs (total 11 characters) were added to '''Khmer'''.
* An inverted undertie and a swung dash (total 2 characters) were added to '''General Punctuation'''.
* The facsimile sign (℻) (total 1 character) was added to '''Letterlike Symbols'''.
* The eject symbol and a vertical line (total 2 characters) were added to '''Miscellaneous Technical'''.
* A black circled digit zero (⓿) (total 1 character) was added to '''Enclosed Alphanumerics'''.
* Monograms and diagrams, flags, warning and weather symbols and a cup of tea (total 12 characters) were added to '''Miscellaneous Symbols'''.
* Additional parenthesized and circled Korean characters and supplemental signs (total 9 characters) were added to '''Enclosed CJK Letters and Months'''.
* Additional measure units (total 7 characters) were added to '''CJK Compatibility'''.
* An additional Arabic sign (﷽) (total 1 character) was added to '''Arabic Presentation Forms-A'''.
* A pair of vertical parenthesis (total 2 characters) was added to '''CJK Compatibility Forms'''.
* The letters Oi and Ew (total 4 characters) were added to '''Deseret'''.
* A small script l (ℓ) (total 1 character) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 4.1 ==
Unicode 4.1 was released March 31, 2005. It encoded 97,655 characters, adding 1,273 new characters.
=== New blocks ===
* '''Arabic Supplement''', containing 30 characters for various languages written with the Arabic script, was added.
* '''Ethiopic Supplement''', containing 26 characters and signs for Sebatbeit, was added.
* '''New Tai Lue''', containing 80 characters for the New Tai Lue script, was added.
* '''Buginese''', containing 30 characters for the Lontara script, was added.
* '''Phonetic Extensions Supplement''', containing 64 additional letters for phonetic transcription, was added.
* '''Combining Diacritical Marks Supplement''', containing 4 additional diacritics, was added.
* '''Glagolitic''', containing 94 characters for the Glagolitic script, was added.
* '''Coptic''', containing 114 characters for the Coptic script, was added.
* '''Georgian Supplement''', containing 38 Nuskhuri letters, was added.
* '''Tifinagh''', containing 55 characters for the Tifinagh script, was added.
* '''Ethiopic Extended''', containing 79 additional Ethiopic syllables, was added.
* '''Supplemental Punctuation''', containing 26 additional punctuation marks, was added.
* '''CJK Strokes''', containing 16 strokes for Han Ideographs, was added.
* '''Modifier Tone Letters''', containing 23 letters for Chinese tones, was added.
* '''Syloti Nagri''', containing 44 characters for the Syloti Nagri abugida, was added.
* '''Vertical Forms''', containing 10 punctuation marks suited for vertical text, was added.
* '''Ancient Greek Numbers''', containing 75 numerals and signs used in Ancient Greek, was added.
* '''Old Persian''', containing 50 characters for Old Persian cuneiform, was added.
* '''Kharoshthi''', containing 65 characters for the Kharoshthi abugida, was added.
* '''Ancient Greek Musical Notation''', containing 70 musical signs used in Ancient Greek, was added.
=== Extended blocks ===
* Letters for Sencoten, digraphs, letters with swash tail and other additions (total 11 characters) were added to '''Latin Extended-B'''.
* Additional diacritics for transliteration (total 5 characters) were added to '''Combining Diacritical Marks'''.
* Rho with stroke, reversed and dotted Lunate Sigma (total 4 characters) were added to '''Greek and Coptic'''.
* Ghe with descender (Ӷ) (total 2 characters) was added to '''Cyrillic'''.
* An additional biblical mark and some punctuation marks (total 4 characters) were added to '''Hebrew'''.
* Additional biblical marks, punctuation marks and the Afghani sign (total 8 characters) were added to '''Arabic'''.
* A glottal stop (ॽ) (total 1 character) was added to '''Devanagari'''.
* The Khanda Ta letter (ৎ) (total 1 character) was added to '''Bengali'''.
* The letter Sha and the digit zero (total 2 characters) were added to '''Tamil'''.
* Two marks used in Bhutan (total 2 characters) were added to '''Tibetan'''.
* Two letters and a modifier letter (total 3 characters) were added to '''Georgian'''.
* Some additional syllables (total 11 characters) were added to '''Ethiopic'''.
* Additional phonetic symbols (total 20 characters) were added to '''Phonetic Extensions'''.
* A flower and dot punctuation marks (total 9 characters) were added to '''General Punctuation'''.
* Additional subscript letters (total 5 characters) were added to '''Superscripts and Subscripts'''.
* The Guarani, Austral, Hryvnia and Cedi signs (total 4 characters) were added to '''Currency Symbols'''.
* A combining long double solidus (total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* The per sign and a double-struck letter Pi (total 2 characters) were added to '''Letterlike Symbols'''.
* Metrical and electrical signs (total 11 characters) were added to '''Miscellaneous Technical'''.
* Additional gender and map symbols (total 30 characters) were added to '''Miscellaneous Symbols'''.
* Some additional mathematical symbols (total 7 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional arrows and squares (total 6 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* A circled Hangul character (㉾) (total 1 character) was added to '''Enclosed CJK Letters and Months'''.
* Additional Han Ideographs (total 22 characters) were added to '''CJK Unified Ideographs'''.
* Additional Compatibility Ideographs (total 106 characters) were added to '''CJK Compatibility Ideographs'''.
* Italic dotless small i and j (total 2 characters) were added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.0 ==
Unicode 5.0 was released July 14, 2006. It encoded 99,024 characters, adding 1,369 new characters.
=== New blocks ===
* '''N'Ko''', containing 59 characters for the N'Ko script, was added.
* '''Balinese''', containing 121 characters and musical signs for the Balinese abugida, was added.
* '''Latin Extended-C''', containing 17 letters for various languages, was added.
* '''Latin Extended-D''', containing 2 characters for UPA, was added.
* '''Phags-pa''', containing 56 characters for the Phags-pa script, was added.
* '''Phoenician''', containing 27 letters and numerals for the Phoenician script, was added.
* '''Cuneiform''', containing 879 signs for Sumero-Akkadian Cuneiform, was added.
* '''Cuneiform Numbers and Punctuation''', containing 103 numerals and punctuation signs for Sumero-Akkadian Cuneiform, was added.
* '''Counting Rod Numerals''', containing 18 numerals used with counting rods, was added.
=== Extended blocks ===
* Various letters used mainly for aboriginal languages (total 14 characters) were added to '''Latin Extended-B'''.
* Lowercase lunate sigma symbols (total 3 characters) were added to '''Greek and Coptic'''.
* Lowercase palochka and 3 letters used in Nivkh (total 7 characters) were added to '''Cyrillic'''.
* Two letters used in Khanty and other languages (total 4 characters) were added to '''Cyrillic Supplement'''.
* A specific point meant for Vav (total 1 character) was added to '''Hebrew'''.
* Four letters used in Sindhi (total 4 characters) were added to '''Devanagari'''.
* Four letters used in Sanskrit (total 4 characters) were added to '''Kannada'''.
* Additional IPA diacritics (total 9 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Four combining arrows (total 4 characters) were added to '''Combining Diacritical Marks for Symbols'''.
* A danish symbol and a lowercase turned F (total 2 characters) were added to '''Letterlike Symbols'''.
* A lowercase reversed C (ↄ) (total 1 character) was added to '''Number Forms'''.
* Vertical parenthesis, geometric forms and electrical symbols (total 12 characters) were added to '''Miscellaneous Technical'''.
* A neuter symbol (⚲) (total 1 character) was added to '''Miscellaneous Symbols'''.
* Four additional mathematical symbols (total 4 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional squares, pentagons and hexagons (total 11 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Four additional tone letters used in Chinantec (total 4 characters) were added to '''Modifier Tone Letters'''.
* Bold Digamma (𝟊/'''Ϝ''') (total 2 characters) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.1 ==
Unicode 5.1 was released April 4, 2008. It encoded 100,648 characters, adding 1,624 new characters.
=== New blocks ===
* '''Sundanese''', containing 55 letters for Sundanese script, was added.
* '''Lepcha''', containing 74 letters for Lepcha script, was added.
* '''Ol Chiki''', containing 48 letters for Ol Chiki script, was added.
* '''Cyrillic Extended-A''', containing 32 letters for combining Cyrillic letters, was added.
* '''Vai''', containing 300 letters for Vai script, was added.
* '''Cyrillic Extended-B''', containing 78 letters for additional Cyrillic characters, was added.
* '''Saurashtra''', containing 81 letters for Saurashtra script, was added.
* '''Kayah Li''', containing 48 letters for Kayah languages, was added.
* '''Rejang''', containing 37 letters for Rejang script, was added.
* '''Cham''', containing 83 letters for Cham script, was added.
* '''Ancient Symbols''', containing 12 characters for weights and measures and other Ancient symbols, was added.
* '''Phaistos Disc''', containing 46 hieroglyphs for Phaistos, was added.
* '''Lycian''', containing 29 letters for Lycian script, was added.
* '''Carian''', containing 49 letters for Carian script, was added.
* '''Lydian''', containing 27 letters for Lydian script, was added.
* '''Mahjong Tiles''', containing 44 mahjong tiles, was added.
* '''Domino Tiles''', containing 100 domino tiles, was added.
=== Extended blocks ===
* Archaic letters and capital kai symbol (total 7 characters) were added to '''Greek and Coptic'''.
* Combining Pokrytie (total 1 character) was added to '''Cyrillic'''.
* Mordvin, Kurdish, Aleut and Chuvash letters (total 16 characters) were added to '''Cyrillic Supplement'''.
* Radix symbols, Letterlike, punctuation, Koranic annotation signs and additions for early Persian and Azerbaijani (total 15 characters) were added to '''Arabic'''.
* Additional letters in Torwali, Burushaski and early Persian (total 18 characters) were added to '''Arabic Supplement'''.
* High spacing dot and candra a (total 2 characters) were added to '''Devanagari'''.
* Udaat and yakash signs (total 2 characters) were added to '''Gurmukhi'''.
* Vocalic rr, l and ll (total 3 characters) were added to '''Oriya'''.
* Om symbol (ௐ) (total 1 character) was added to '''Tamil'''.
* Avagraha, additional phonetic letters, vocalic l and ll, fractional signs and tuumu (total 13 characters) were added to '''Telugu'''.
* Avagraha, vocalic rr, l and ll, Malayalam numerics and fractions and chillu letters (total 17 characters) were added to '''Malayalam'''.
* Letters for Balti and various symbols (total 6 characters) were added to '''Tibetan'''.
* Characters for various languages (total 78 characters) were added to '''Myanmar'''.
* Manchu Ali Gali lha (ᢪ) (total 1 character) was added to '''Mongolian'''.
* Miscellaneous combining marks (total 28 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Medievalist latin letters and miscellaneous letters (total 10 characters) were added to '''Latin Extended Additional'''.
* Invisible plus (+) (total 1 character) was added to '''General Punctuation'''.
* Combining asterisk above ( ⃰)(total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* Symbol for Samaritan Source (⅏) (total 1 character) was added to '''Letterlike Symbols'''.
* Archaic Roman Numerals (total 4 characters) were added to '''Number Forms'''.
* Outlined white star and other signs (total 15 characters) were added to '''Miscellaneous Symbols'''.
* Long division and additional mathematical brackets (total 5 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Miscellaneous signs (total 51 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Additional latin letters (total 12 characters) were added to '''Latin Extended-C'''.
* Additional punctuation (total 23 characters) were added to '''Supplemental Punctuation'''.
* Letter ih (ㄭ) (total 1 character) was added to '''Bopomofo'''.
* Other strokes (total 20 characters) were added to '''CJK Strokes'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Africanist tone letters (total 5 characters) were added to '''Modifier Tone Letters'''.
* Miscellaneous letters and symbols (total 112 characters) were added to '''Latin Extended-D'''.
* Continuous macrons for Coptic (total 3 characters) were added to '''Combining Half Marks'''.
* Musical symbol multiple measure rest (𝄩) (total 1 character) was added to '''Musical Symbols'''.
== Unicode 5.2 ==
Unicode 5.2 was released in October 1, 2009. It encoded 107,296 characters, adding 6,648 new characters.
=== New blocks ===
* '''Samaritan''', containing 61 letters for Samaritan script, was added.
* '''Unified Canadian Aboriginal Syllabics Extended''', containing 70 syllables for various cree languages, was added.
* '''Tai Tham''', containing 127 letters for Tai Tham script, was added.
* '''Vedic Extensions''', containing 35 characters for tone marks and signs, was added.
* '''Lisu''', containing 48 letters for Lisu (Fraser) script, was added.
* '''Bamum''', containing 88 letters for Bamum script, was added.
* '''Common Indic Number Forms''', containing 10 fractions and marks, was added.
* '''Devanagari Extended''', containing 28 additional marks, was added.
* '''Hangul Jamo Extended-A''', containing 29 characters for additional old initial consonants in hangul jamo, was added.
* '''Javanese''', containing 91 letters for Javanese script, was added.
* '''Myanmar Extended-A''', containing 28 letters for Khamti Shan in Myanmar, was added.
* '''Tai Viet''', containing 72 letters for Tai Viet script, was added.
* '''Meetei Mayek''', containing 56 letters for Meetei Mayek script, was added.
* '''Hangul Jamo Extended-B''', containing 72 characters for additional old medieval vowels and final consonants in hangul jamo, was added.
* '''Imperial Aramaic''', containing 31 characters for Old Aramaic, was added.
* '''Old South Arabian''', containing 32 letters and numbers for South Arabian, was added.
* '''Avestan''', containing 61 characters for Avestan script, was added.
* '''Inscriptional Parthian''', containing 30 characters for Inscriptional Parthian script, was added.
* '''Inscriptional Pahlavi''', containing 27 characters for Inscriptional Pahlavi script, was added.
* '''Old Turkic''', containing 73 characters for Orkhon script, was added.
* '''Rumi Numeral Symbols''', containing 31 numeric characters used in Fez, Morocco, and elsewhere in North Africa and the Iberian peninsula, between the tenth and seventeenth centuries, was added.
* '''Kaithi''', containing 66 letters for Kaithi script, was added.
* '''Egyptian Hieroglyphs''', containing 1,071 hieroglyphs for Egyptian, was added.
* '''Enclosed Alphanumeric Supplement''', containing 63 additional circled, parenthesized and squared alphanumerics, was added.
* '''Enclosed Ideographic Supplement''', containing 44 squared and tortoised shell bracketed ideographs, was added.
* '''CJK Unified Ideographs Extension C''', containing 4,149 additional Chinese Ideographs, was added.
=== Extended blocks ===
* Abhaz letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Inverted Candrabinbu and additional signs and letters (total 5 characters) were added to '''Devanagari'''.
* Ganda Mark (৻) (total 1 character) was added to '''Bengali'''.
* Religious svasti signs (total 4 characters) were added to '''Tibetan'''.
* Extensions for Khamti Shan and Alton and Phake (total 4 characters) were added to '''Myanmar'''.
* Additional old initial consonants, medival vowels, and old final consonants (total 16 characters) were added to '''Hangul Jamo'''.
* Hyphen and additional syllables (total 10 characters) were added to '''Unified Canadian Aboriginal Syllabics'''.
* Letter Sua and Tham Digit One (total 3 characters) were added to '''New Tai Lue'''.
* Combing Almost Equal to Below ( ᷽) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* The Live Tournosis, Spesmillo and Tenge signs (total 3 characters) were added to '''Currency Symbols'''.
* Additional vulgar fractions from ARIB STD B24 (total 4 characters) were added to '''Number Forms'''.
* Decimal exponent symbol (⏨) from ARIB STD B24 (total 1 characters) was added to '''Miscellaneous Technical'''.
* A soccer ball and symbols from ARIB STD B24 (total 59 characters) were added to '''Miscellaneous Symbols'''.
* Heavy exclamation mark symbol (❗) from ARIB STD B24 (total 1 character) was added to '''Dingbats'''.
* Traffic sign, dictionary and map symbols from ARIB STD B24 (total 5 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Capital letter turned alpha and additions for shona (total 3 characters) were added to '''Latin Extended-C'''.
* Cryptogrammic letters and combining marks (total 7 characters) were added to '''Coptic'''.
* Word separator middle dot used in Avestan (⸱) (total 1 character) was added to '''Supplemental Punctuation'''.
* Circled ideographs and numbers on black squares from ARIB STD B24 (total 12 characters) were added to '''Enclosed CJK Letters and Months'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Miscellaneous additions for compatibility (total 3 characters) were added to '''CJK Compatibility Ideographs'''.
* Number two and three (total 2 characters) were added to '''Phoenician'''.
== Unicode 6.0 ==
Unicode 6.0 was released in October 11, 2010. It encoded 109,384 characters, adding 2,088 new characters.
=== New blocks ===
* '''Mandaic''', containing 29 letters for Mandaic script, was added.
* '''Batak''', containing 56 letters for Batak script, was added.
* '''Ethiopic Extended-A''', containing 32 letters for Gamo-Gofa-Dawro, Basketo and Gumuz Ethiophic syllables, was added.
* '''Brahmi''', containing 108 characters for ancient Brahmi abugida, was added.
* '''Bamum Supplement''', containing 761 letters for additional Bamum script, was added.
* '''Kana Supplement''', containing 2 characters for archaic katakana, was added.
* '''Playing Cards''', containing 59 playing cards, was added.
* '''Miscellaneous Symbols and Pictographs''', containing 529 additional symbols, was added.
* '''Emoticons''', containing 63 faces, cat faces and gesture symbols, was added.
* '''Transport and Map Symbols''', containing 70 transportation, traffic signs and other symbols, was added.
* '''Alchemical Symbols''', containing 116 symbols for elements, was added.
* '''CJK Unified Ideographs Extension D''', containing 222 miscellaneous Han ideographs, was added.
=== Extended blocks ===
* Azerbaijani letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Kashmiri Yeh and Wavy hamza below (total 2 characters) were added to '''Arabic'''.
* Dependent vowel signs and letters used in Kashmiri and Bihari (total 10 characters) were added to '''Devanagari'''.
* Fraction signs (total 6 characters) were added to '''Oriya'''.
* Letters used in scholarly only and letter dot reph (total 3 characters) were added to '''Malayalam'''.
* Leading and Trailing Mchan Rtags (total 6 characters) were added to '''Tibetan'''.
* Additional combining marks (total 2 characters) were added to '''Ethiopic'''.
* Combining Double Inverted Breve Below (᷼) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* Miscellaneous subscript letters (total 8 characters) were added to '''Superscripts and Subscripts'''.
* Indian Rupee Sign (₹) (total 1 character) was added to '''Currency Symbols'''.
* Pointing double triangle and additional mechanical symbols (total 11 characters) were added to '''Miscellaneous Technical'''.
* Ophiucisus, astronomical symbol for uranus and pentagrams (total 6 characters) were added to '''Miscellaneous Symbols'''.
* Additional heavy punctation marks, raised fist, raised hand, sparkles, heavy arithmetic symbols and curly loops (total 16 characters) were added to '''Dingbats'''.
* Squared logicals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Separator mark and consonant joiner (total 2 characters) were added to '''Tifinagh'''.
* Bopomofo for Hmu and Ge (total 3 characters) were added to '''Bopomofo Extended'''.
* Reversed Tse (total 2 characters) were added to '''Cyrillic Extended-B'''.
* Additional letters (total 15 characters) were added to '''Latin Extended-D'''.
* Pedagogical symbols (total 16 characters) were added to '''Arabic Presentation Forms-A'''.
* Additional squared, black circled and squared letters and regional indicator letters (total 107 characters) were added to '''Enclosed Alphanumeric Supplement'''.
* Squared katakana, squared ideographs and circled advantage and accept (total 13 characters) were added to '''Enclosed Ideographic Supplement'''.
== Unicode 6.1 ==
Unicode 6.1 was released in January 31, 2012. It encoded 110,116 characters, adding 732 new characters.
=== New blocks ===
* '''Arabic Extended-A''' (U+08A0-U+08FF), containing 39 characters, was added.
* '''Sundanese Supplement''' (U+1CC0-U+1CCF), containing 8 characters, was added.
* '''Meetei Mayek Extensions''' (U+AAE0-U+AAFF), containing 23 characters, was added.
* '''Meroitic Hieroglyphs''' (U+10980-U+1099F), containing 32 characters, was added.
* '''Meroitic Cursive''' (U+109A0-U+109FF), containing 26 characters, was added.
* '''Sora Sompeng''' (U+110D0-U+110FF), containing 35 characters, was added.
* '''Chakma''' (U+11100-U+1114F), containing 67 characters, was added.
* '''Sharada''' (U+11180-U+111DF), containing 83 characters, was added.
* '''Takri''' (U+11680-U+116CF), containing 66 characters, was added.
* '''Miao''' (U+16F00-U+16F9F), containing 133 characters, was added.
* '''Arabic Mathematical Alphabetic Symbols''' (U+1EE00-U+1EEFF), containing 143 characters, was added.
=== Extended blocks ===
* An Armenian Dram sign (total 1 character) was added to '''Armenian'''. (U+058F)
* A sign Samvat (total 1 character) was added to '''Arabic'''. (U+0604)
* An Abbreviation mark (total 1 character) was added to '''Gujarati'''. (U+0AF0)
* Letters for Khmu (total 2 characters) were added to '''Lao'''. (U+0EDE-U+0EDF)
* Capital letter Yn, letter Aen, Hard and Labial sign (total 5 characters) were added to '''Georgian'''. (U+10C7, U+10CD and U+10FD-U+10FF)
* Letters and signs for Old Sundanese (total 9 characters) were added to '''Sundanese'''. (U+1BAB-U+1BAD and U+1BBA-U+1BBF)
* Sign Rotated Ardhavisarga, Candra Above, Jihvamuliya and Uphadhmaniya (total 4 characters) were added to '''Vedic Extensions'''. (U+1CF3-U+1CF6)
* Mathematical diagonals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''. (U+27CB and U+27CD)
* A letter Bohairic Khei (total 2 characters) were added to '''Coptic'''. (U+2CF2-U+2CF3)
* Small letters Yn and Aen (total 2 characters) were added to '''Georgian Supplement'''. (U+2D27 and U+2D2D)
* Letters Ye and Yo (total 2 characters) were added to '''Tifinagh'''. (U+2D66-U+2D67)
* (total 10 characters) were added to '''Supplemental Punctuation'''. (U+2E32-U+2E3B)
* An additional ideograph for Kanji (total 1 character) was added to '''CJK Unified Ideographs'''. (U+9FCC)
* Combining letter for Slavonic (total 9 characters) were added to '''Cyrillic Extended-B'''. (U+A674-U+A67B and U+A69F)
* Letter C with Bar, capital letter H with Hook and modifier letters for extended IPA (total 5 characters) were added to '''Latin Extended-D'''. (U+A792-U+A793, U+A7AA and U+A7F8-U+A7F9)
* Some additional ideographs for Korea (total 2 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA2E-U+FA2F)
* Symbols for Canadian legal use (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F16A-U+1F16B)
* Typikon symbols (total 4 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F540-U+1F543)
* (total 13 characters) were added to '''Emoticons'''. (U+1F600, U+1F611, U+1F615, U+1F617, U+1F619, U+1F61B, U+1F61F, U+1F626-U+1F627, U+1F62C, U+1F62E-U+1F62F and U+1F634)
== Unicode 6.2 ==
Unicode 6.2 was released in September 26, 2012. It encoded 110,117 characters, adding only 1 new character.
=== Extended blocks ===
* A Turkish Lira sign (total 1 character) was added to '''Currency Symbols'''. (U+20BA)
== Unicode 6.3 ==
Unicode 6.3 was released in September 30, 2013. It encoded 110,122 characters, adding only 5 new characters.
=== Extended blocks ===
* A Letter mark (total 1 character) was added to '''Arabic'''. (U+061C)
* Isolate directional format characters (total 4 characters) were added to '''General Punctuation'''. (U+2066-U+2069)
== Unicode 7.0 ==
Unicode 7.0 was released in June 16, 2014. It encoded 112,956 characters, adding 2,834 new characters.
=== New blocks ===
* '''Combining Diacritical Marks Extended''' (U+1AB0-U+1AFF), containing 15 marks, was added.
* '''Myanmar Extended-B''' (U+A9E0-U+A9FF), containing 31 letters, was added.
* '''Latin Extended-E''' (U+AB30-U+AB6F), containing 50 letters, was added.
* '''Coptic Epact Numbers''' (U+102E0-U+102FF), containing 28 numbers, was added.
* '''Old Permic''' (U+10350-U+1037F), containing 43 letters, was added.
* '''Elbasan''' (U+10500-U+1052F), containing 50 letters, was added.
* '''Caucasian Albanian''' (U+10530-U+1056F), containing 53 letters and marks, was added.
* '''Linear A''' (U+10600-U+1077F), containing 341 signs, was added.
* '''Palmyrene''' (U+10860-U+1087F), containing 32 letters, was added.
* '''Nabataean''' (U+10880-U+108AF), containing 40 letters and numbers, was added.
* '''Old North Arabian''' (U+10A80-U+10A9F), containing 32 letters and numbers, was added.
* '''Manichaean''' (U+10AC0-U+10AFF), containing 51 characters, was added.
* '''Psalter Pahlavi''' (U+10B80-U+10BAF), containing 29 characters, was added.
* '''Mahajani''' (U+11150-U+1117F), containing 39 letters and signs, was added.
* '''Sinhala Archaic Numbers''' (U+111E0-U+111FF), containing 20 numbers, was added.
* '''Khojki''' (U+11200-U+1124F), containing 61 characters, was added.
* '''Khudawadi''' (U+112B0-U+112FF), containing 69 characters, was added.
* '''Grantha''' (U+11300-U+1137F), containing 83 characters, was added.
* '''Tirhuta''' (U+11480-U+114DF), containing 82 characters, was added.
* '''Siddham''' (U+11580-U+115FF), containing 72 characters, was added.
* '''Modi''' (U+11600-U+1165F), containing 79 characters, was added.
* '''Warang Citi''' (U+118A0-U+118FF), containing 84 letters and numbers, was added.
* '''Pau Cin Hau''' (U+11AC0-U+11AFF), containing 57 characters, was added.
* '''Mro''' (U+16A40-U+16A6F), containing 43 characters, was added.
* '''Bassa Vah''' (U+16AD0-U+16AFF), containing 36 characters, was added.
* '''Pahawh Hmong''' (U+16B00-U+16B8F), containing 127 letters and signs, was added.
* '''Duployan''' (U+1BC00-U+1BC9F), containing 143 characters, was added.
* '''Shorthand Format Controls''' (U+1BCA0-U+1BCAF), containing 4 format characters, was added.
* '''Mende Kikakui''' (U+1E800-U+1E8DF), containing 213 syllables and numbers, was added.
* '''Ornamental Dingbats''' (U+1F650-U+1F67F), containing 48 pictographic characters, was added.
* '''Geometric Shapes Extended''' (U+1F780-U+1F7FF), containing 85 pictographic characters, was added.
* '''Supplemental Arrows-C''' (U+1F800-U+1F8FF), containing 148 pictographic characters, was added.
=== Extended blocks ===
* A capital letter Yot (total 1 character) was added to '''Greek and Coptic'''. (U+037F)
* Letters for Orok, Komi and Khanty (total 8 characters) were added to '''Cyrillic Supplement'''. (U+0528-U+052F)
* An Eternity sign (total 2 characters) were added to '''Armenian'''. (U+058D-U+058E)
* A Number Mark Above (total 1 character) was added to '''Arabic'''. (U+0605)
* Letters for African, Philippine, Turkic, Berber, Belarusian, Palula and Shina languages (total 8 characters) were added to '''Arabic Extended-A'''. (U+08A1, U+08AD-U+08B2 and U+08FF)
* A letter for Marwari (total 1 character) was added to '''Devanagari'''. (U+0978)
* A sign Anji (total 1 character) was added to '''Bengali'''. (U+0980)
* Sign Candrabindu and letter Llla (total 2 characters) were added to '''Telugu'''. (U+0C00 and U+0C34)
* A Sign Candrabindu (total 1 character) was added to '''Kannada'''. (U+0C81)
* A Sign Candrabindu (total 1 character) was added to '''Malayalam'''. (U+0D01)
* Lith Numerals (total 10 characters) were added to '''Sinhala'''. (U+0DE6-U+0DEF)
* Additional Old English runes (total 8 characters) were added to '''Runic'''. (U+16F1-U+16F8)
* Letters Gyan and Tra (total 2 characters) were added to '''Limbu'''. (U+191D-U+191E)
* Signs for Jaiminiya Sama Veda (total 2 characters) were added to '''Vedic Extensions'''. (U+1CF8-U+1CF9)
* Marks for Germanic and American lexicology (total 15 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DE7-U+1DF5)
* Nordic Mark, Manat and Ruble sign (total 3 characters) were added to '''Currency Symbols'''. (U+20BB-U+20BD)
* Playback symbols from Webdings font (total 7 characters) were added to '''Miscellaneous Technical'''. (U+23F4-U+23FA)
* A Scissors symbol from Wingdings 2 font (total 1 character) was added to '''Dingbats'''. (U+2700)
* Arrows for Lithuanian dialectology and symbols from Wingdings 3 font (total 115 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2B4D-U+2B4F, U+2B5A-U+2B5F, U+2B60-U+2B73, U+2B76-U+2B95, U+2B98-U+2BB9, U+2BBD-U+2BC8 and U+2BCA-U+2BD1)
* (total 7 characters) were added to '''Supplemental Punctuation'''. (U+2E3C-U+2E42)
* Early Cyrillic letters and letters for Lithuanian dialectology (total 6 characters) were added to '''Cyrillic Extended-B'''. (U+A698-U+A69D)
* Letters for European, American and African orthography (total 18 characters) were added to '''Latin Extended-D'''. (U+A794-U+A79F, U+A7AB-U+A7AD, U+A7B0-U+A7B1 and U+A7F7)
* Tone marks for Tai Laing and letters for Shwe Palaung (total 4 characters) were added to '''Myanmar Extended-A'''. (U+AA7C-U+AA7F)
* Combining phonetic marks (total 7 characters) were added to '''Combining Half Marks'''. (U+FE27-U+FE2D)
* Additional mathematical symbols (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018B-U+1018C)
* A Greek Tau Rho symbol (total 1 character) was added to '''Ancient Symbols'''. (U+101A0)
* A letter Ess (total 1 character) was added to '''Old Italic'''. (U+1031F)
* A Number Joiner (total 1 character) was added to '''Brahmi'''. (U+1107F)
* Sutra mark and sign Ekam (total 2 characters) were added to '''Sharada'''. (U+111CD and U+111DA)
* Additional cuneiform signs (total 42 characters) were added to '''Cuneiform'''. (U+1236F-U+12398)
* Additional numbers, vulgar fractions and a punctuation mark (total 13 characters) were added to '''Cuneiform Numbers and Punctuation'''. (U+12463-U+1246E and U+12474)
* Red Joker, Fool and trumps (total 23 characters) were added to '''Playing Cards'''. (U+1F0BF and U+1F0E0-U+1F0F5)
* Dingbat normal and negative sans-serif digit zero (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10B-U+1F10C)
* Symbols from Webdings, Wingdings 1 and 2 font (total 209 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F321-U+1F32C, U+1F336, U+1F37D, U+1F394-U+1F39F, U+1F3C5, U+1F3CB-U+1F3CE, U+1F3D4-U+1F3DF, U+1F3F1-U+1F3F7, U+1F43F, U+1F441, U+1F4F8, U+1F4FD-U+1F4FE, U+1F53E-U+1F53F, U+1F544-U+1F54A, U+1F568-U+1F579, U+1F57B-U+1F5A3 and U+1F5A5-U+1F5FA)
* Slightly frowning and smiling faces emoji (total 2 characters) were added to '''Emoticons'''. (U+1F641-U+1F642)
* Symbols from Webdings and Wingdings 2 font (total 27 characters) were added to '''Transport and Map Symbols'''. (U+1F6C6-U+1F6CF, U+1F6E0-U+1F6EC and U+1F6F0-U+1F6F3)
== Unicode 8.0 ==
Unicode 8.0 was released in June 17, 2015. It encoded 120,672 characters, adding 7,716 new characters.
=== New blocks ===
* '''Cherokee Supplement''' (U+AB70-U+ABBF), containing 80 lowercase letters, was added.
* '''Hatran''' (U+108E0-U+108FF), containing 26 letters, was added.
* '''Old Hungarian''' (U+10C80-U+10CFF), containing 108 letters, was added.
* '''Multani''' (U+11280-U+112AF), containing 38 letters, was added.
* '''Ahom''' (U+11700-U+1173F), containing 57 letters, was added.
* '''Early Dynastic Cuneiform''' (U+12480-U+1254F), containing 196 characters, was added.
* '''Anatolian Hieroglyphs''' (U+14400-U+1467F), containing 583 characters, was added.
* '''Sutton SignWriting''' (U+1D800-U+1DAAF), containing 672 signs, was added.
* '''Supplemental Symbols and Pictographs''' (U+1F900-U+1F9FF), containing 15 pictographic characters, was added.
* '''CJK Unified Ideographs Extension E''' (U+2B820-U+2CEAF), containing 5762 characters, was added.
=== Extended blocks ===
* Letters for Arwi (total 3 characters) were added to '''Arabic Extended-A'''. (U+08B3-U+08B4 and U+08E3)
* A letter for Avestan transliteration (total 1 character) was added to '''Gujarati'''. (U+0AF9)
* A letter for Andhra Pradesh (total 1 character) was added to '''Telugu'''. (U+0C5A)
* An archaic letter II (total 1 character) was added to '''Malayalam'''. (U+0D5F)
* A letter Mv and small letters (total 7 characters) were added to '''Cherokee'''. (U+13F5 and U+13F8-U+13FD)
* A Georgian Lari sign (total 1 character) was added to '''Currency Symbols'''. (U+20BE)
* Turned digits (total 2 characters) were added to '''Number Forms'''. (U+218A-U+218B)
* Two headed arrows with triangle arrowheads (total 4 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BEC-U+2BEF)
* Some additional ideographs (total 9 characters) were added to '''CJK Unified Ideographs'''. (U+9FCD-U+9FD5)
* A combining letter Ef (total 1 character) was added to '''Cyrillic Extended-B'''. (U+A69E)
* Sinological dot, phonetic extension for African languages, letters for American and Gabonese orthography (total 7 characters) were added to '''Latin Extended-D'''. (U+A78F and U+A7B2-U+A7B7)
* Sign Siddham and letter Jain Om (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FC-U+A8FD)
* Letters for Yakut transliteration (total 4 characters) were added to '''Latin Extended-E'''. (U+AB60-U+AB63)
* A combining mark for Church Slavonic (total 2 characters) were added to '''Combining Half Marks'''. (U+FE2E-U+FE2F)
* Numerals and vulgar fractions (total 64 characters) were added to '''Meroitic Cursive'''. (U+109BC-U+109BD, U+109C0-U+109CF and U+109D2-U+109FF)
* Sandhi mark, diacritical marks for Kashmiri, sign Siddham and punctuation marks (total 9 characters) were added to '''Sharada'''. (U+111C9-U+111CC and U+111DB-U+111DF)
* Combining Anusvara Above and letter Om (total 2 characters) were added to '''Grantha'''. (U+11300 and U+11350)
* Section marks and alternate letters (total 20 characters) were added to '''Siddham'''. (U+115CA-U+115DD)
* An additional sign (total 1 character) was added to '''Cuneiform'''. (U+12399)
* East-Slavic musical symbols (total 11 characters) were added to '''Musical Symbols'''. (U+1D1DE-U+1D1E8)
* (total 24 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F32D-U+1F32F, U+1F37E-U+1F37F, U+1F3CF-U+1F3D3, U+1F3F8-U+1F3FF, U+1F4FF and U+1F54B-U+1F54F)
* Upside Down Face and Face With Rolling Eyes emoji (total 2 characters) were added to '''Emoticons'''. (U+1F643-U+1F644)
* A Place of Worship emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D0)
== Unicode 9.0 ==
Unicode 9.0, was released in June 21, 2016. It encoded 128,172 characters, adding 7,500 new characters.
=== New blocks ===
* '''Cyrillic Extended-C''' (U+1C80-U+1C8F), containing 9 letters, was added.
* '''Osage''' (U+104B0-U+104FF), containing 72 letters, was added.
* '''Newa''' (U+11400-U+1147F), containing 92 letters, was added.
* '''Mongolian Supplement''' (U+11660-U+1167F), containing 13 letters, was added.
* '''Bhaiksuki''' (U+11C00-U+11C6F), containing 97 letters, was added.
* '''Marchen''' (U+11C70-U+11CBF), containing 68 letters, was added.
* '''Ideographic Symbols and Punctuation''' (U+16FE0-U+16FFF), containing 1 letter, was added.
* '''Tangut''' (U+17000-U+187FF), containing 6125 letters, was added.
* '''Tangut Components''' (U+18800-U+18AFF), containing 755 letters, was added.
* '''Glagolitic Supplement''' (U+1E000-U+1E02F), containing 38 letters, was added.
* '''Adlam''' (U+1E900-U+1E95F), containing 87 letters, was added.
=== Extended blocks ===
* Letters for Bravanese, Warsh and Quranic marks used in Pakistan (total 23 characters) were added to '''Arabic Extended-A'''. (U+08B6-U+08BD and U+08D4-U+08E2)
* A sign Spacing Candrabindu (total 1 character) were added to '''Kannada'''. (U+0C80)
* Sign Para, Chillu letters and vulgar fractions (total 14 characters) were added to '''Malayalam'''. (U+0D4F, U+0D54-U+0D56, U+0D58-U+0D5E and U+0D76-U+0D78)
* A diacritical mark for Newa (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFB)
* Power symbols (total 4 characters) were added to '''Miscellaneous Technical'''. (U+23FB-U+23FE)
* Punctuation marks for Church Slavonic (total 2 characters) were added to '''Supplemental Punctuation'''. (U+2E43-U+2E44)
* A letter for Unifon (total 1 character) was added to '''Latin Extended-D'''. (U+A7AE)
* A sign Candrabindu (total 1 character) was added to '''Saurashtra'''. (U+A8C5)
* Indiction sign and a currency symbol (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018D-U+1018E)
* A sign Sukun (total 1 character) was added to '''Khojki'''. (U+1123E)
* Japanese TV symbols (total 18 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F19B-U+1F1AC)
* A Japanese TV symbol (total 1 character) was added to '''Enclosed Ideographic Supplement'''. (U+1F23B)
* A dancing man and Black Heart emoji (total 2 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F57A and U+1F5A4)
* Octagonal Sign, Shopping Trolley, scooters and a Canoe emoji (total 5 characters) were added to '''Transport and Map Symbols'''. (U+1F6D1-U+1F6D2 and U+1F6F4-U+1F6F6)
* (total 67 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F919-U+1F91E, U+1F920-U+1F927, U+1F930, U+1F933-U+1F93E, U+1F940-U+1F94B, U+1F950-U+1F95E and U+1F985-U+1F991)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|0030 FE00
|
|short diagonal stroke form # DIGIT ZERO
|-
|1000 FE00
|
|dotted form # MYANMAR LETTER KA
|-
|1002 FE00
|
|dotted form # MYANMAR LETTER GA
|-
|1004 FE00
|
|dotted form # MYANMAR LETTER NGA
|-
|1010 FE00
|
|dotted form # MYANMAR LETTER TA
|-
|1011 FE00
|
|dotted form # MYANMAR LETTER THA
|-
|1015 FE00
|
|dotted form # MYANMAR LETTER PA
|-
|1019 FE00
|
|dotted form # MYANMAR LETTER MA
|-
|101A FE00
|
|dotted form # MYANMAR LETTER YA
|-
|101C FE00
|
|dotted form # MYANMAR LETTER LA
|-
|101D FE00
|
|dotted form # MYANMAR LETTER WA
|-
|1022 FE00
|
|dotted form # MYANMAR LETTER SHAN A
|-
|1031 FE00
|
|dotted form # MYANMAR VOWEL SIGN E
|-
|1075 FE00
|
|dotted form # MYANMAR LETTER SHAN KA
|-
|1078 FE00
|
|dotted form # MYANMAR LETTER SHAN CA
|-
|107A FE00
|
|dotted form # MYANMAR LETTER SHAN NYA
|-
|1080 FE00
|
|dotted form # MYANMAR LETTER SHAN THA
|-
|2205 FE00
|
|zero with long diagonal stroke overlay form # EMPTY SET
|-
|AA60 FE00
|
|dotted form # MYANMAR LETTER KHAMTI GA
|-
|AA61 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CA
|-
|AA62 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CHA
|-
|AA63 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JA
|-
|AA64 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JHA
|-
|AA65 FE00
|
|dotted form # MYANMAR LETTER KHAMTI NYA
|-
|AA66 FE00
|
|dotted form # MYANMAR LETTER KHAMTI TTA
|-
|AA6B FE00
|
|dotted form # MYANMAR LETTER KHAMTI NA
|-
|AA6C FE00
|
|dotted form # MYANMAR LETTER KHAMTI SA
|-
|AA6F FE00
|
|dotted form # MYANMAR LETTER KHAMTI FA
|-
|AA7A FE00
|
|dotted form # MYANMAR LETTER AITON RA
|-
|…
|
|278 additional emoji variation sequences
|}
== Unicode 10.0 ==
Unicode 10.0, was released in June 20, 2017. It encoded 136,690 characters, adding 8,518 new characters.
=== New blocks ===
* '''Syriac Supplement''' (U+0860-U+086F), containing 11 characters, was added.
* '''Zanabazar Square''' (U+11A00-U+11A4F), containing 72 characters, was added.
* '''Soyombo''' (U+11A50-U+11AAF), containing 80 characters, was added.
* '''Masaram Gondi''' (U+11D00-U+11D5F), containing 75 characters, was added.
* '''Kana Extended-A''' (U+1B100-U+1B12F), containing 31 characters, was added.
* '''Nushu''' (U+1B170-U+1B2FF), containing 396 characters, was added.
* '''CJK Unified Ideographs Extension F''' (U+2CEB0-U+2EBEF), containing 7,473 characters, was added.
=== Extended blocks ===
* A Vedic Anusvara and Abbreviation mark (total 2 characters) were added to '''Bengali'''. (U+09FC-U+09FD)
* Letters for Arabic transliteration (total 6 characters) were added to '''Gujarati'''. (U+0AFA-U+0AFF)
* A combining Anusvara Above and Viramas (total 3 characters) were added to '''Malayalam'''. (U+0D00 and U+0D3B-U+0D3C)
* A sign Atikrama (total 1 character) was added to '''Vedic Extensions'''. (U+1CF7)
* Combining diacritical marks for Church Slavonic (total 4 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DF6-U+1DF9)
* A Bitcoin sign (total 1 character) was added to '''Currency Symbols'''. (U+20BF)
* An Observe Eye symbol (total 1 character) was added to '''Miscellaneous Technical'''. (U+23FF)
* A Group mark (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2BD2)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E45-U+2E49)
* A letter O with Dot Above (total 1 character) was added to '''Bopomofo'''. (U+312E)
* Ideographs for Slavonic transliteration (total 21 characters) were added to '''CJK Unified Ideographs'''. (U+9FD6-U+9FEA)
* Letters for North Italic (total 3 characters) were added to '''Old Italic'''. (U+1032D-U+1032F)
* An Iteration mark for Nushu (total 1 character) was added to '''Ideographic Symbols and Punctuation'''. (U+16FE1)
* Letters for Hentaigana (total 254 characters) were added to '''Kana Supplement'''. (U+1B002-U+1B0FF)
* Symbols for Chinese Folk religion (total 6 characters) were added to '''Enclosed Ideographic Supplement'''. (U+1F260-U+1F265)
* Stupa, Pagoda, Sled and Flying Saucer emoji (total 4 characters) were added to '''Transport and Map Symbols'''. (U+1F6D3-U+1F6D4 and U+1F6F7-U+1F6F8)
* (total 66 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F900-U+1F90B, U+1F91F, U+1F928-U+1F92F, U+1F931-U+1F932, U+1F94C, U+1F95F-U+1F96B, U+1F992-U+1F997 and U+1F9D0-U+1F9E6)
== Unicode 11.0 ==
Unicode 11.0, was released in June 5, 2018. It encoded 137,374 characters, adding 684 new characters.
=== New blocks ===
* '''Georgian Extended''' (U+1C90-U+1CBF), containing 46 characters, was added.
* '''Hanifi Rohingya''' (U+10D00-U+10D3F), containing 50 characters, was added.
* '''Old Sogdian''' (U+10F00-U+10F2F), containing 40 characters, was added.
* '''Sogdian''' (U+10F30-U+10F6F), containing 42 characters, was added.
* '''Dogra''' (U+11800-U+1184F), containing 60 characters, was added.
* '''Gunjala Gondi''' (U+11D60-U+11DAF), containing 63 characters, was added.
* '''Makasar''' (U+11EE0-U+11EFF), containing 25 characters, was added.
* '''Medefaidrin''' (U+16E40-U+16E9F), containing 91 characters, was added.
* '''Mayan Numerals''' (U+1D2E0-U+1D2FF), containing 20 characters, was added.
* '''Indic Siyaq Numbers''' (U+1EC70-U+1ECBF), containing 68 characters, was added.
* '''Chess Symbols''' (U+1FA00-U+1FA6F), containing 14 characters, was added.
=== Extended blocks ===
* Small letters Turned Ayb and Yi with Stroke (total 2 characters) were added to '''Armenian'''. (U+0560 and U+0588)
* A triangle Yod (total 1 character) were added to '''Hebrew'''. (U+05EF)
* A Dantayalan and currency symbols (total 3 characters) were added to '''N'Ko'''. (U+07FD-U+07FF)
* A Small Low Waw (total 1 character) was added to '''Arabic Extended-A'''. (U+08D3)
* A Sandhi mark (total 1 character) was added to '''Bengali'''. (U+09FE)
* An Abbreviation mark (total 1 character) was added to '''Gurmukhi'''. (U+0A76)
* A combining Anusvara Above (total 1 character) was added to '''Telugu'''. (U+0C04)
* A sign Siddham (total 1 character) was added to '''Kannada'''. (U+0C84)
* A letter for Buryat (total 1 character) was added to '''Mongolian'''. (U+1878)
* Symbols for chess notation, astrological and half star symbols (total 43 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BBA-U+2BBC, U+2BD3-U+2BEB and 2BF0-U+2BFE)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E4A-U+2E4E)
* A letter NN (total 1 character) was added to '''Bopomofo'''. (U+312F)
* Some ideographs for Kanji (total 5 characters) were added to '''CJK Unified Ideographs'''. (U+9FEB-U+9FEF)
* A small capital Q and a letter for Mazahua (total 3 characters) were added to '''Latin Extended-D'''. (U+A7AF and U+A7B8-U+A7B9)
* Letter and vowel sign Ay (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FE-U+A8FF)
* Letters Ttta, Vha and a vulgar fraction (total 3 characters) were added to '''Kharoshthi'''. (U+10A34-U+10A35 and U+10A48)
* A Number Sign Above (total 1 character) was added to '''Kaithi'''. (U+110CD)
* Letter Lhaa, vowel sign Aa and Ei (total 3 characters) were added to '''Chakma'''. (U+11144-U+11146)
* A combining Bindu Below (total 1 character) was added to '''Grantha'''. (U+1133B)
* A Sandhi mark (total 1 character) was added to '''Newa'''. (U+1145E)
* An alternate letter Ba (total 1 character) was added to '''Ahom'''. (U+1171A)
* A mark Pluta (total 1 character) was added to '''Soyombo'''. (U+11A9D)
* Additional ideographs (total 5 characters) were added to '''Tangut'''. (U+187ED-U+187F1)
* Tally marks (total 7 characters) were added to '''Counting Rod Numerals'''. (U+1D372-U+1D378)
* A Copyleft symbol (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F12F)
* A Skateboard emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6F9)
* Normal and negative circled shapes (total 4 characters) were added to '''Geometric Shapes Extended'''. (U+1F7D5-U+1F7D8)
* (total 65 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F94D-U+1F94F, U+1F96C-U+1F970, U+1F973-U+1F976, U+1F97A, U+1F97C-U+1F97F, U+1F998-U+1F99F, U+1F9A0-U+1F9A2, U+1F9B0-U+1F9B9, U+1F9C1-U+1F9C2 and U+1F9E7-U+1F9FF)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|FF10 FE00
|
|short diagonal stroke form # FULLWIDTH DIGIT ZERO
|}
== Unicode 12.0 ==
Unicode 12.0 was released on March 5, 2019. It encoded 137,928 characters, adding 554 new characters.
=== New blocks ===
* '''Elymaic''' (U+10FE0-U+10FFF), containing 23 characters, was added.
* '''Nandinagari''' (U+119A0-U+119FF), containing 65 characters, was added.
* '''Tamil Supplement''' (U+11FC0-U+11FFF), containing 51 characters, was added.
* '''Egyptian Hieroglyph Format Controls''' (U+13430-U+1343F), containing 9 characters, was added.
* '''Small Kana Extension''' (U+1B130-U+1B16F), containing 7 characters, was added.
* '''Nyiakeng Puachue Hmong''' (U+1E100-U+1E14F), containing 71 characters, was added.
* '''Wancho''' (U+1E2C0-U+1E2FF), containing 59 characters, was added.
* '''Ottoman Siyaq Numbers''' (U+1ED00-U+1ED4F), containing 61 characters, was added.
* '''Symbols and Pictographs Extended-A''' (U+1FA70-U+1FAFF), containing 16 characters, was added.
=== Extended blocks ===
* A sign Siddham (total 1 character) was added to '''Telugu'''. (U+0C77)
* Letters for Pail and Sanskrit (total 15 characters) were added to '''Lao'''. (U+0E86, U+0E89, U+0E8C, U+0E8E-U+0E93, U+0E98, U+0EA0, U+0EA8-U+0EA9, U+0EAC and U+0EBA)
* A sign Double Anusvara Antargomukha (total 1 character) was added to '''Vedic Extensions'''. (U+1CFA)
* An astrological symbol and Hellschreiber Pause symbol (total 2 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BC9 and U+2BFF)
* A Cornish Verse Divider (total 1 character) was added to '''Supplemental Punctuation'''. (U+2E4F)
* Egyptological letters, Anglicana W and letters for early Pinyin (total 11 characters) were added to '''Latin Extended-D'''. (U+A7BA-U+A7BF and U+A7C2-U+A7C6)
*Sinological phonetic letters (total 2 characters) were added to '''Latin Extended-E'''. (U+AB66-U+AB67)
* A Vedic Anusvara (total 1 character) was added to '''Newa'''. (U+1145F)
* An archaic letter Kha (total 1 character) was added to '''Takri'''. (U+116B8)
* Sign Jihvamuliya and Uphadhmaniya (total 2 characters) were added to '''Soyombo'''. (U+11A84-U+11A85)
* Letters for various Yi and Miao languages (total 16 characters) were added to '''Miao'''. (U+16F45-U+16F4A, U+16F4F and U+16F7F-U+16F87)
* Marks for Ancient Chinese texts (total 2 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE2-U+16FE3)
* Some additional ideographs (total 6 characters) were added to '''Tangut'''. (U+187F2-U+187F7)
* A Nasalization mark (total 1 character) was added to '''Adlam'''. (U+1E94B)
* A Spanish and Portuguese register mark (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F16C)
* Hindu Temple and Auto Rickshaw emoji (total 2 characters) were added to '''Transport and Map Symbols'''. (U+1F6D5 and U+1F6FA)
* Large colored circles and boxes (total 12 characters) were added to '''Geometric Shapes Extended'''. (U+1F7E0-U+1F7EB)
* (total 31 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90D-U+1F90F, U+1F93F, U+1F971, U+1F97B, U+1F9A5-U+1F9AA, U+1F9AE-U+1F9AF, U+1F9BA-U+1F9BF, U+1F9C3-U+1F9CA and U+1F9CD-U+1F9CF)
* Heterodox chess symbols (total 84 characters) were added to '''Chess Symbols'''. (U+1FA00-U+1FA53)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Spacing Modifier Letters
|02EA, 02EB
|2
|-
|Vedic Extensions
|1CF2..1CF3
|2
|-
|Currency Symbols
|20A9
|1
|-
|CJK Symbols and Punctuation
|3001, 3002
|2
|-
|Bopomofo
|3105..312F
|43
|-
|Bopomofo Extended
|31A0..31BA
|27
|-
|CJK Unified Ideographs Extension A
|37C3, 3B9D, 3CFD, 3FE0, 44EC, 4A76
|6
|-
|CJK Unified Ideographs
|5344, 55B9, 6ABC, 6FF9, 809E, 80BC, 80E9, 8132, 8159, 841C, 891D, 8C6C, 915E, 9FD4
|14
|-
|Phags-pa
|A840..A877
|56
|-
|Halfwidth and Fullwidth Forms
|FF01, FF0C, FF0E, FF1A, FF1B, FF1F
|6
|-
|CJK Unified Ideographs Extension B
|200DD, 20164, 20BBF, 20C02, 20CED, 21D4C, 2278B, 23AB8, 2459B, 24A7D, 24FB9, 25ED7, 2677C, 26B4C, 26C21, 26CBE, 26E3D, 28834, 289A1, 289C0, 28A0F, 28B46
|22
|-
|CJK Unified Ideographs Extension C
|2A8FB, 2A917, 2AA30
|3
|-
|CJK Unified Ideographs Extension E
|2BA52, 2BD77, 2C494, 2C72F, 2C734, 2CB38
|6
|-
|CJK Unified Ideographs Extension F
|2D23B, 2E83A
|2
|-
! colspan="2" |Total
!192
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|3001 FE00
|
|corner-justified form # IDEOGRAPHIC COMMA
|-
|3001 FE01
|
|centered form # IDEOGRAPHIC COMMA
|-
|3002 FE00
|
|corner-justified form # IDEOGRAPHIC FULL STOP
|-
|3002 FE01
|
|centered form # IDEOGRAPHIC FULL STOP
|-
|FF01 FE00
|
|corner-justified form # FULLWIDTH EXCLAMATION MARK
|-
|FF01 FE01
|
|centered form # FULLWIDTH EXCLAMATION MARK
|-
|FF0C FE00
|
|corner-justified form # FULLWIDTH COMMA
|-
|FF0C FE01
|
|centered form # FULLWIDTH COMMA
|-
|FF0E FE00
|
|corner-justified form # FULLWIDTH FULL STOP
|-
|FF0E FE01
|
|centered form # FULLWIDTH FULL STOP
|-
|FF1A FE00
|
|corner-justified form # FULLWIDTH COLON
|-
|FF1A FE01
|
|centered form # FULLWIDTH COLON
|-
|FF1B FE00
|
|corner-justified form # FULLWIDTH SEMICOLON
|-
|FF1B FE01
|
|centered form # FULLWIDTH SEMICOLON
|-
|FF1F FE00
|
|corner-justified form # FULLWIDTH QUESTION MARK
|-
|FF1F FE01
|
|centered form # FULLWIDTH QUESTION MARK
|}
== Unicode 12.1 ==
Unicode 12.1 was released on May 7, 2019. It encoded 137,929 characters, adding only 1 new character.
=== Extended blocks ===
* A square era name Reiwa (total 1 character) was added to '''Enclosed CJK Letters and Months'''. (U+32FF)
== Unicode 13.0 ==
Unicode 13.0 was released on March 10, 2020. It encoded 143,859 characters, adding 5,930 new characters.
=== New blocks ===
* '''Yezidi''' (U+10E80-U+10EBF), containing 47 characters, was added.
* '''Chorasmian''' (U+10FB0-U+10FDF), containing 28 characters, was added.
* '''Dives Akuru''' (U+11900-U+1195F), containing 72 characters, was added.
* '''Lisu Supplement''' (U+11FB0-U+11FBF), containing 1 character, was added.
* '''Khitan Small Script''' (U+18B00-U+18CFF), containing 470 characters, was added.
* '''Tangut Supplement''' (U+18D00-U+18D08), containing 9 characters, was added.
* '''Symbols for Legacy Computing''' (U+1FB00-U+1FBFF), containing 212 characters, was added.
* '''CJK Unified Ideographs Extension G''' (U+30000-U+3134F), containing 4939 characters, was added.
=== Extended blocks ===
* Letters for African languages and Punjabi (total 10 characters) were added to '''Arabic Extended-A'''. (U+08BE-U+08C7)
* A sign Overline (total 1 character) was added to '''Oriya'''. (U+0B55)
* A Vedic Anusvara (total 1 character) was added to '''Malayalam'''. (U+0D04)
* A sign Candrabindu (total 1 character) was added to '''Sinhala'''. (U+0D81)
* Combining diacritical marks for Scottish phonology (total 2 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1ABF-U+1AC0)
* A Japanese symbol for Type A Electronics (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B97)
* Cross patties and a Tironian sign Capita Et (total 3 characters) were added to '''Supplemental Punctuation'''. (U+2E50-U+2E52)
* Letters for Taiwan and Cantonese language (total 5 characters) were added to '''Bopomofo Extended'''. (U+31BB-U+31BF)
* Some disunified ideographs (total 10 characters) were added to '''CJK Unified Ideographs Extension A'''. (U+4DB6-4DBF)
* Some ideographs for China (total 13 characters) were added to '''CJK Unified Ideographs'''. (U+9FF0-U+9FFC)
* Letters for Gaulish (total 6 characters) were added to '''Latin Extended-D'''. (U+A7C7-U+A7CA and U+A7F5-U+A7F6)
* An alternate sign Nasanta (total 1 character) was added to '''Syloti Nagri'''. (U+A82C)
* Letter R With Midle Tilde and modifier letters for Scottish phonology (total 4 characters) were added to '''Latin Extended-E'''. (U+AB68-U+AB6B)
* A symbol Ascia (total 1 character) was added to '''Ancient Symbols'''. (U+1019C)
* A letter for Pali (total 1 character) was added to '''Chakma'''. (U+11147)
* A vowel sign Prishthamatra E and Inverted Candrabindu (total 2 characters) were added to '''Sharada'''. (U+111CE and U+111CF)
* Double comma, sign Jihvamuliya and Uphadhmaniya (total 3 characters) were added to '''Newa'''. (U+1145A and U+11460-U+11461)
* Khitan Small Script Filler and reading marks for Vietnamese (total 3 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE4 and U+16FF0-U+16FF1)
* Some additional components (total 13 characters) were added to '''Tangut Components'''. (U+18AF3-U+18AFF)
* Creative Commons license symbols and Mask Work symbol (total 7 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10D-U+1F10F, U+1F16D-1F16F and U+1F1AD)
* Hut, Elevator, Pickup Truck and Roller Skate emoji (total 4 characters) were added to '''Transportation and Map Symbols'''. (U+1F6D6-U+1F6D7 and U+1F6FB-U+1F6FC)
* Arrows for legacy computing (total 2 characters) were added to '''Supplemental Arrows-C'''. (U+1F8B0-U+1F8B1)
* (total 10 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90C, U+1F972, U+1F977-U+1F978, U+1F9A3-U+1F9A4, U+1F9AB-U+1F9AD and U+1F9CB)
* (total 41 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA74, U+1FA83-U+1FA86, U+1FA96-U+1FAA8, U+1FAB0-U+1FAB6, U+1FAC0-U+1FAC2 and U+1FAD0-U+1FAD6)
* Gongche charaters for Kunqu Opera (total 7 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6D7-U+2A6DD)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Tagalog
|1700..170C, 170E..1714
|20
|-
|Mongolian
|1834, 1871, 1878
|3
|-
|Sundanese
|1BAB
|1
|-
|Currency Symbols
|20BF
|1
|-
|CJK Radicals Supplement
|2E80..2E99, 2E9B..2EF3
|115
|-
|Kangxi Radicals
|2F00..2FD5
|214
|-
|CJK Unified Ideographs Extension A
|3472, 38C7, 3DB8, 3FE0, 440B, 46E9
|6
|-
|CJK Unified Ideographs
|53FD, 6146, 6711, 671C, 6721, 6725, 6BD2, 7B9A, 87CE, 8956, 93BF, 9B97
|12
|-
|Latin Extended-D
|A764..A765
|2
|-
|Phags-pa
|A86D
|1
|-
|Tangut
|175F6, 17F0D, 17F8A, 17FA5, 180D6, 18139, 18147, 184F1, 18736
|9
|-
|Tangut Components
|18843, 18856, 1888C, 1890A, 18915, 1893B
|6
|-
|Adlam
|1E900..1E94A, 1E950..1E959, 1E95E..1E95F
|71
|-
|Miscellaneous Symbols and Pictographs
|1F3B1
|1
|-
|Supplemental Symbols and Pictographs
|1F995..1F998, 1F99B..1F99E, 1F9B0..1F9B3, 1F9E7
|13
|-
|CJK Unified Ideographs Extension B
|20219, 21249, 21827, 22C3A, 2327B, 23496, 2355E, 2363B, 236ED, 23839, 23FD5, 24261, 24726, 248F2, 2548E, 26657, 26C9E, 26FE1, 27334, 27C0E, 27CEF, 2A38C
|22
|-
|CJK Unified Ideographs Extension C
|2AED5, 2AEF3, 2AF76, 2B09F, 2B1C3, 2B1E5
|6
|-
|CJK Unified Ideographs Extension E
|2B83C, 2B8D9..2B8DA, 2B96F, 2BBD7, 2BD61, 2BE4A, 2BF1D, 2BF9D, 2C0B8, 2C142, 2C176, 2C316, 2C3FB, 2C402, 2C7AC, 2C82C, 2C83A, 2C9A1, 2CC88, 2CD68
|21
|-
|CJK Unified Ideographs Extension F
|2DC09, 2DE4A, 2EB7E, 2EB89
|4
|-
|CJK Compatibility Ideographs Supplement
|2F83B, 2F878, 2F8D6..2F8D7, 2F8DA, 2F8F0, 2F984, 2FA02
|8
|-
! colspan="2" |Total
!536
|}
== Unicode 14.0 ==
Unicode 14.0 was released on September 14, 2021. It encoded 144,697 characters, adding 838 new characters.
=== New blocks ===
* '''Arabic Extended-B''' (U+0870-U+089F), containing 41 characters, was added.
* '''Vithkuqi''' (U+10570-U+105BF), containing 70 characters, was added.
* '''Latin Extended-F''' (U+10780-U+107BF), containing 57 characters, was added.
* '''Old Uyghur''' (U+10F70-U+10FAF), containing 26 characters, was added.
* '''Unified Canadian Aboriginal Syllabics Extended-A''' (U+11AB0-U+11ABF), containing 16 characters, was added.
* '''Cypro-Minoan''' (U+12F90-U+12FFF), containing 99 characters, was added.
* '''Tangsa''' (U+16A70-U+16ACF), containing 89 characters, was added.
* '''Kana Extended-B''' (U+1AFF0-U+1AFFF), containing 13 characters, was added.
* '''Znamenny Musical Notation''' (U+1CF00-U+1CFFF), containing 185 characters, was added.
* '''Latin Extended-G''' (U+1DF00-U+1DFFF), containing 31 characters, was added.
* '''Toto''' (U+1E290-U+1E2BF), containing 31 characters, was added.
* '''Ethiopic Extended-B''' (U+1E7E0-U+1E7FF), containing 28 characters, was added.
=== Extended blocks ===
* An End of Text punctuation mark (total 1 character) was added to '''Arabic'''. (U+061D)
* Letters for Balti and Quranic orthography (total 12 characters) were added to '''Arabic Extended-A'''. (U+08B5 and U+08C8-U+08D2)
* A sign Nukta and letter Nakaara Pollu (total 2 characters) were added to '''Telugu'''. (U+0C3C and U+0C5D)
* A letter Nakaara Pollu (total 1 character) was added to '''Kannada'''. (U+0CDD)
* A letter Ra, sign Pamudpod and archaic letter Ra (total 3 characters) were added to '''Tagalog'''. (U+170D, U+1715 and U+171F)
* A fourth Free variation selector (total 1 character) was added to '''Mongolian'''. (U+180F)
* Combining diacritical marks for extended IPA (total 14 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1AC1-U+1ACE)
* An archaic ligature Jnya and punctuation marks (total 3 characters) were added to '''Balinese'''. (U+1B4C and U+1B7D-U+1B7E)
* A combining Dot Below Left (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFA)
* A Kyrgyz Som sign (total 1 character) was added to '''Currency Symbols'''. (U+20C0)
* A letter Caudate Chrivi (total 2 characters) were added to '''Glagolitic'''. (U+2C2F and U+2C5F)
* Medieval and phonetic punctuation marks (total 11 characters) were added to '''Supplemental Punctuation'''. (U+2E53-U+2E5D)
* Some ideographs for Macao (total 3 characters) were added to '''CJK Unified Ideographs'''. (U+9FFD-U+9FFF)
* Archaic European letters, modifier letters for Sokuon and Chatino orthography (total 13 characters) were added to '''Latin Extended-D'''. (U+A7C0-U+A7C1, U+A7D0-U+A7D1, U+A7D3, U+A7D5, U+A7D6-U+A7D9 and U+A7F2-U+A7F4)
* A modifier letter Wasla Above and honorifics (total 20 characters) were added to '''Arabic Presentation Forms-A'''. (U+FBC2, U+FD40-U+FD4F, U+FDCF and U+FDFE-U+FDFF)
* Letters for Old Tamil (total 6 characters) were added to '''Brahmi'''. (U+11070-U+11075)
* A vowel sign Vocalic R (total 1 character) was added to '''Khaiti'''. (U+110C2)
* An Abbreviation sign (total 1 character) was added to '''Takri'''. (U+116B9)
* Letters for Tai Ahom (total 7 characters) were added to '''Ahom'''. (U+11740-U+11746) The block was expanded from (U+11700-U+1173F) to (U+11700-U+1174F)
* Kana archaic letters (total 4 characters) were added to '''Kana Extended-A'''. (U+1B11F-U+1B122)
* Accidental symbols for Iranian classical music (total 2 characters) were added to '''Musical Symbols'''. (U+1D1E9-U+1D1EA)
* Playground Slide, Wheel and Ring Buoy emoji (total 3 characters) were added to '''Transportation and Map Symbols'''. (U+1F6DD-U+1F6DF)
* A Heavy Equals Sign emoji (total 1 character) was added to '''Geometric Shapes Extended'''. (U+1F7F0)
* A Troll and Face Holding Back Tears emoji (total 2 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F979 and U+1F9CC)
* (total 31 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA7B-U+1FA7C, U+1FAA9-U+1FAAC, U+1FAB7-U+1FABA, U+1FAC3-U+1FAC5, U+1FAD7-U+1FAD9, U+1FAE0-U+1FAE7 and U+1FAF0-U+1FAF6)
* Some ideographs for Macao (total 2 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6DE-U+2A6DF)
* Disunified ideographs and a G source ideograph for China, Hong Kong and Vietnam (total 4 characters) were added to '''CJK Unified Ideographs Extension C'''. (U+2B735-U+2B738)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Latin Extended-B
|0184..0185
|2
|-
|Arabic
|0674..0678, 06C5, 06C7, 06FE
|8
|-
|Letterlike Symbols
|210B, 2110, 2112, 211B, 212C, 2130..2131, 2133
|8
|-
|Enclosed Alphanumerics
|2460..24FF
|160
|-
|Dingbats
|2776..2793
|30
|-
|CJK Symbols and Punctuation
|3001..3029, 3030..303D, 303F
|56
|-
|CJK Strokes
|31C0..31E3
|36
|-
|Katakana Phonetic Extensions
|31F0..31FF
|16
|-
|Enclosed CJK Letters and Months
|3200..321E, 3220..32FF
|255
|-
|CJK Compatibiity
|3300..33FF
|256
|-
|CJK Unified Ideographs Extension A
|3777, 3B3F
|2
|-
|CJK Unified Ideographs
|5DD5, 652C, 6AC0
|3
|-
|Arabic Presentation Forms-A
|FBD7..FBD8, FBDD, FBE0..FBE1
|5
|-
|Vertical Forms
|FE10..FE19
|10
|-
|CJK Compatibiity Forms
|FE30..FE4F
|32
|-
|Small Form Variants
|FE50..FE52, FE54..FE66, FE68..FE6B
|26
|-
|Halfwidth and Fullwidth Forms
|FF01..FF9F, FFA1..FFBE, FFC2..FFC7, FFCA..FFCF, FFD2..FFD7, FFDA..FFDC, FFE0..FFE6, FFE8..FFEE
|225
|-
|Egyptian Hieroglyphs
|1300A, 13017, 1302D, 13032, 13034..13035, 13037..13038, 1303A..1303E, 1304E..1304F, 13055, 13057, 13068, 1309A, 130D2, 130D5, 130F6, 130FE, 13192, 1325F, 13267, 1326A, 13281, 13297, 1329E, 132B4, 132C1, 132E6, 13304, 1331F, 13378..1337B, 1337D..1337E, 133F3, 133FA..13403, 1340D, 13417, 1342B
|55
|-
|Mathematical Alphanumeric Symbols
|1D49C, 1D49E..1D49F, 1D4A2, 1D4A5..1D4A6, 1D4A9..1D4AC, 1D4AE..1D4B5
|18
|-
|Enclosed Alphanumeric Supplement
|1F100..1F1AD, 1F1E6..1F1FF
|200
|-
|Enclosed Ideographic Supplement
|1F200..1F202, 1F210..1F23B, 1F240..1F248, 1F250..1F251, 1F260..1F265
|64
|-
|Supplemental Symbols and Pictographs
|1F930
|1
|-
|CJK Unified Ideographs Extension B
|22ADC, 230F2, 25B27, 26F28
|4
|-
! colspan="2" |Total
!1472
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|1D49C FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE00
|
|chancery style # SCRIPT CAPITAL B
|-
|1D49E FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE00
|
|chancery style # SCRIPT CAPITAL E
|-
|2131 FE00
|
|chancery style # SCRIPT CAPITAL F
|-
|1D4A2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE00
|
|chancery style # SCRIPT CAPITAL H
|-
|2110 FE00
|
|chancery style # SCRIPT CAPITAL I
|-
|1D4A5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE00
|
|chancery style # SCRIPT CAPITAL L
|-
|2133 FE00
|
|chancery style # SCRIPT CAPITAL M
|-
|1D4A9 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE00
|
|chancery style # SCRIPT CAPITAL R
|-
|1D4AE FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Z
|-
|1D49C FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE01
|
|roundhand style # SCRIPT CAPITAL B
|-
|1D49E FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE01
|
|roundhand style # SCRIPT CAPITAL E
|-
|2131 FE01
|
|roundhand style # SCRIPT CAPITAL F
|-
|1D4A2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE01
|
|roundhand style # SCRIPT CAPITAL H
|-
|2110 FE01
|
|roundhand style # SCRIPT CAPITAL I
|-
|1D4A5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE01
|
|roundhand style # SCRIPT CAPITAL L
|-
|2133 FE01
|
|roundhand style # SCRIPT CAPITAL M
|-
|1D4A9 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE01
|
|roundhand style # SCRIPT CAPITAL R
|-
|1D4AE FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Z
|}
===Named Sequences===
Here is a table with new named character sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Name
|-
|0915 093C
|DEVANAGARI SEQUENCE FOR LETTER QA
|-
|0916 093C
|DEVANAGARI SEQUENCE FOR LETTER KHHA
|-
|0917 093C
|DEVANAGARI SEQUENCE FOR LETTER GHHA
|-
|091C 093C
|DEVANAGARI SEQUENCE FOR LETTER ZA
|-
|0921 093C
|DEVANAGARI SEQUENCE FOR LETTER DDDHA
|-
|0922 093C
|DEVANAGARI SEQUENCE FOR LETTER RHA
|-
|092B 093C
|DEVANAGARI SEQUENCE FOR LETTER FA
|-
|092F 093C
|DEVANAGARI SEQUENCE FOR LETTER YYA
|-
|09A1 09BC
|BENGALI SEQUENCE FOR LETTER RRA
|-
|09A2 09BC
|BENGALI SEQUENCE FOR LETTER RHA
|-
|09AF 09BC
|BENGALI SEQUENCE FOR LETTER YYA
|-
|0A32 0A3C
|GURMUKHI SEQUENCE FOR LETTER LLA
|-
|0A38 0A3C
|GURMUKHI SEQUENCE FOR LETTER SHA
|-
|0A16 0A3C
|GURMUKHI SEQUENCE FOR LETTER KHHA
|-
|0A17 0A3C
|GURMUKHI SEQUENCE FOR LETTER GHHA
|-
|0A1C 0A3C
|GURMUKHI SEQUENCE FOR LETTER ZA
|-
|0A2B 0A3C
|GURMUKHI SEQUENCE FOR LETTER FA
|-
|0B21 0B3C
|ORIYA SEQUENCE FOR LETTER RRA
|-
|0B22 0B3C
|ORIYA SEQUENCE FOR LETTER RHA
|}
== Unicode 15.0 ==
Unicode 15.0 was released on September 13, 2022. It encoded 149,186 characters, adding 4,489 new characters.
=== New blocks ===
* '''Arabic Extended-C''' (U+10EC0-U+10EFF), containing 3 characters, was added.
* '''Devanagari Extended-A''' (U+11B00-U+11B5F), containing 10 characters, was added.
* '''Kawi''' (U+11F00-U+11F5F), containing 86 characters, was added.
* '''Kaktovik Numerals''' (U+1D2C0-U+1D2DF), containing 20 characters, was added.
* '''Cyrillic Extended-D''' (U+1E030-U+1E08F), containing 63 characters, was added.
* '''Nag Mundari''' (U+1E4D0-U+1E4FF), containing 42 characters, was added.
* '''CJK Unified Ideographs Extension H''' (U+31350-U+323AF), containing 4192 characters, was added.
=== Extended blocks ===
* A Yamakkan (total 1 character) was added to '''Lao'''. (U+0ECE)
* A combining Anusvara Above Right (total 1 character) was added to '''Kannada'''. (U+0CF3)
* Letters Qa, Short I and Vocalic R (total 3 characters) were added to '''Khojki'''. (U+1123F-U+11241)
* An additional hieroglyph to Group V (total 1 character) was added to '''Egyptian Hieroglyphs'''
* Extended format controls (total 29 characters) were added to '''Egyptian Hieroglyph Format Controls'''. (U+13439-U+13455). The block was expanded from (U+13430-U+1343F) to (U+13430-U+1345F)
* Hiragana and Katakana Small Ko (total 2 characters) were added to '''Small Kana Extension'''. (U+1B132 and U+1B155)
* Letters for Malayalam transliteration (total 6 characters) were added to '''Latin Extended-G'''. (U+1DF25-U+1DF2A)
* A Wireless emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6DC)
* A Nine Pointed White Star (total 1 character) was be added to '''Geometric Shapes Extended'''. (U+1F7D9)
* A Lot of Fortune, eclipse symbols and symbols for dwarf planets (total 6 characters) were added to '''Alchemical symbols'''. (U+1F774-U+1F776 and U+1F77B-U+1F77F)
* (total 20 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA75-U+1FA77, U+1FA87-U+1FA88, U+1FAAD-U+1FAAF, U+1FABB-U+1FABF, U+1FACE-U+1FACF, U+1FADA-U+1FADB, U+1FAE8 and U+1FAF7-U+1FAF8)
* A disunified ideograph for Macao (total 1 character) was added to '''CJK Unified Ideographs Extension C'''. (U+2B739)
===Glyph Changes===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|IPA Extensions
|025E, 029A
|2
|-
|United Canadian Aboriginal Syllabics
|144B, 14D1, 1506, 15C0..15C3, 15E8..15EE, 1601, 1604..1607, 160A..160D, 1614..162D, 1630..163F, 1646..1647, 165A
|66
|-
|United Canadian Aboriginal Syllabics Extended
|18DB, 18EC, 18F1..18F2, 18F5
|5
|-
|Sundanese
|1BBF
|1
|-
|Optical Character Recognition
|2447
|1
|-
|CJK Unified Ideographs Extension A
|34DC, 3BF6, 3C43, 48B4, 4DBE
|5
|-
|CJK Unified Ideographs
|585F, 5F50, 6BC0, 7BC9, 833E
|5
|-
|Cyrillic Extended-B
|A66E
|1
|-
|Old Turkic
|10C47
|1
|-
|Egyptian Hieroglyphs
|various (new standardized variation sequences)
|94
|-
|Khitan Small Script
|18CCA
|1
|-
|Wancho (font update)
|1E2C0..1E2F9, 1E2FF
|59
|-
|Alchemical Symbols (font update)
|1F700..1F773
|116
|-
|CJK Unified Ideographs Extension B
|20048, 20A1C, 2143F, 21A5F, 21C08, 21FBA, 22ACF, 23392, 238A7, 23D8F, 23F4E, 25D20, 26E30, 27B48, 27C4F, 28633, 28B02, 28E9A, 29760, 2A60F
|20
|-
|CJK Unified Ideographs Extension C
|2B249
|1
|-
|CJK Unified Ideographs Extension E
|2BB37, 2BD7D, 2C151, 2C1E0, 2C2D6, 2C5CA, 2C810, 2CD34
|8
|-
|CJK Unified Ideographs Extension F
|2CF4E, 2D25D, 2D3EC, 2D6A7, 2D7BA, 2D979, 2DA74, 2DA97, 2DC13, 2DDC0, 2DF10, 2DF78, 2E05A, 2E0AE, 2E516, 2E640, 2E680, 2EA63
|18
|-
|CJK Compatibility Ideographs Supplement
|2F804, 2F805, 2F833, 2F835, 2F84C, 2F84F, 2F852, 2F855, 2F887, 2F88B, 2F899, 2F8A0, 2F8A6, 2F8A7, 2F8AD, 2F8B1, 2F8B4, 2F8B7, 2F8BA, 2F8D0, 2F8E0..2F8E2, 2F8E5, 2F8E6, 2F8FE, 2F900, 2F901, 2F907, 2F912, 2F922, 2F926, 2F936, 2F938, 2F94E, 2F959, 2F95F, 2F96C, 2F99F, 2F9B8, 2F9BA, 2F9D3, 2F9DB, 2F9DC, 2F9E8, 2F9EA, 2F9EE, 2FA00, 2FA0D, 2FA1B
|50
|-
|CJK Unified Ideographs Extension G
|302FC, 30723, 30A6D, 30CF7, 30DBF, 31006, 3105D
|7
|-
! colspan="2" |Total
!461
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|13091 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027
|-
|13092 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027A
|-
|13093 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D028
|-
|130A9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D047
|-
|1310F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F016
|-
|13117 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F023
|-
|1311C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F028
|-
|13121 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F032
|-
|13127 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F037A
|-
|13139 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13139 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13183 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH H005
|-
|13187 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH H008
|-
|131A0 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131A0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131B1 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B1 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B8 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M009
|-
|131B9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M010
|-
|131BA FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M010A
|-
|131CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M017
|-
|131EE FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131EE FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131F8 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N010
|-
|131F9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131F9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131FA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N012
|-
|131FA FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N012
|-
|13216 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH N035
|-
|13257 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O006
|-
|1327B FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH O029
|-
|1327F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O031
|-
|1327F FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O031
|-
|13285 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O036
|-
|1328C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O039
|-
|132A4 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132A4 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132AA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Q003
|-
|132CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH R024
|-
|132DC FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S010
|-
|132E7 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E7 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E9 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S020
|-
|132F8 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S033
|-
|132FD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S037
|-
|13302 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S042
|-
|13303 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S043
|-
|13307 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T001
|-
|13308 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T002
|-
|13310 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008
|-
|13311 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008A
|-
|13312 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13312 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13313 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13313 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13314 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T010
|-
|13314 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T010
|-
|1331B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331B FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T016A
|-
|13321 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13321 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13322 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13322 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13331 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T035
|-
|13331 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T035
|-
|1333B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U007
|-
|1333C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U008
|-
|1334A FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U022
|-
|13361 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U042
|-
|13373 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V007A
|-
|13377 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V010
|-
|13378 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V011
|-
|1337D FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V012A
|-
|13385 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V019
|-
|13399 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V026
|-
|1339A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V027
|-
|133AF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W001
|-
|133B0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W002
|-
|133BF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W014
|-
|133D3 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH X004A
|-
|133DD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH Y002
|-
|133F2 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z007
|-
|133F5 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z010
|-
|133F6 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z011
|-
|13403 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z015I
|-
|13416 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA008
|-
|13419 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|1341A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA012
|-
|13423 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA021
|-
|1342C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA030
|-
|1342E FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA032
|-
|13443 FE00
|
|expanded # EGYPTIAN HIEROGLYPH LOST SIGN
|-
|13444 FE00
|
|expanded # EGYPTIAN HIEROGLYPH HALF LOST SIGN
|-
|13445 FE00
|
|expanded # EGYPTIAN HIEROGLYPH TALL LOST SIGN
|-
|13446 FE00
|
|expanded # EGYPTIAN HIEROGLYPH WIDE LOST SIGN
|}
== Unicode 15.1 ==
Unicode 15.1 was released on September 12th, 2023. It encoded 149,813 characters, adding 627 new characters.
=== New Blocks ===
* '''CJK Unified Ideographs Extension I''' (U+2EBF0-U+2EE5F), containing 622 characters, was added.
=== Extended Blocks ===
* 4 Ideographic characters were added to '''Ideographic Description Characters'''. (U+2FFC-U+2FFF)
* An Ideographic subtraction (total 1 character) was added to '''CJK Strokes'''. (U+31EF)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|CJK Unified Ideographs Extension A
|357E, 358B..358E, 3599..359D, 35AF..35B0, 35B2..35B3, 35DF..35E1, 35EF, 360F, 3612, 3F94, 44D5, 48EE
|5
|-
|CJK Unified Ideographs
|5098, 512D, 517A, 5391, 54DB, 551C, 551F, 55B8, 55ED, 56AB, 591E, 594A, 5B2E, 5DFC..5DFD, 5EE4, 609E, 65B0, 65B3, 65D5, 65F2, 67B2, 6AB6, 6AEC, 6C69, 6FC2, 6FD3, 7019, 7361, 74BD, 7934, 820B, 826E, 83BB, 8412, 8456, 848A, 896F, 8E34, 8FD7, 9166, 9855, 985E, 9C4D
|5
|-
|Latin Extended-D
|A798
|1
|-
|Latin Extended-E
|AB5A
|1
|-
|Tangut
|17105, 172A4, 17BD1..17BD3, 17EF9, 18136
|59
|-
|Alchemical Symbols
|1F741, 1F747, 1F74C, 1F74F, 1F756, 1F758, 1F763, 1F768, 1F76D, 1F76E
|116
|-
|CJK Unified Ideographs Extension B
|20302, 2087A, 20C00, 230B7, 2339E, 236EF, 237C3, 23B87, 23CC0, 23CD9, 23E5E, 2486F, 249D6, 249E8, 24D6A, 2585E, 25D89, 26A5A..26A5B, 26A73, 26A82..26A83, 26A90, 26AA6, 26AA8, 26AD8, 27350, 279F8, 284A3, 28BBA, 29516, 29530
|20
|-
|CJK Unified Ideographs Extension C
|2A741, 2AB63, 2ACD8, 2AF6F, 2B173, 2B490
|1
|-
|CJK Unified Ideographs Extension E
|2BC2E, 2BF45, 2C04C, 2C13A, 2C43C, 2C43E, 2C816
|8
|-
|CJK Unified Ideographs Extension F
|2D1CC..2D1CD, 2D1DD, 2D1E4, 2D1F7, 2D203, 2D256, 2D266, 2D2A2, 2D2AC, 2D2DA
|18
|-
|CJK Unified Ideographs Extension G
|301D4, 301D9, 301E4, 301E8, 301FF..30200, 30205, 3020C, 30211, 30215..30217, 30220, 30234..30235, 30237
|7
|-
|CJK Unified Ideographs Extension H
|314B7, 31542, 31569, 31C7F, 31D5A, 31F68
|7
|-
! colspan="2" |Total
!164
|}
== Unicode 16.0 ==
Unicode 16.0 was released on September 10th, 2024. It encoded 154,998 characters, adding 5185 new characters.
=== New Blocks ===
* '''Todhri''' (U+105C0-U+105FF), containing 52 characters, was added.
* '''Garay''' (U+10D40-U+10D8F), containing 69 characters, was added.
* '''Tulu-Tigalari''' (U+11380-U+113FF), containing 80 characters, was added.
* '''Myanmar Extended-C''' (U+116D0-U+116FF), containing 20 characters, was added.
* '''Sunuwar''' (U+11BC0-U+11BFF), containing 44 characters, was added.
* '''Egyptian Hieroglyphs Extended-A''' (U+13460-U+143FF), containing 3995 characters, was added.
* '''Gurung Khema''' (U+16100-U+1613F), containing 58 characters, was added.
* '''Kirat Rai''' (U+16D40-U+16D7F), containing 58 characters, was added.
* '''Symbols for Legacy Computing Supplement''' (U+1CC00-U+1CEBF), containing 686 characters, was added.
* '''Ol Onal''' (U+1E5D0-U+1E5FF), containing 44 characters, was added.
=== Extended Blocks ===
* A combining diacritical mark for Jawi (total 1 character) was added to '''Arabic Extended-B'''. (U+0897)
* Inverted letters and a punctuation mark (total 3 characters) was added to '''Balinese'''. (U+1B4E-U+1B4F and U+1B7F)
* A letter Tje (total 2 characters) was added to '''Cyrillic Extended-C'''. (U+1C89-U+1C8A)
* Legacy computing symbols for Delete (total 3 characters) was added to '''Control Pictures'''. (U+2427-U+2429)
* CJK strokes HXG and SZP (total 2 characters) was added to '''CJK Strokes'''. (U+31E4-U+31E5)
* A capital Rams Horn, an S with Diagonal Stroke, Lamda Letters, and letters for Wakashan and Salishan Languages (total 6 characters) was added to '''Latin Extended-D'''. (U+A7CB-U+A7CD, U+A7DA-U+A7DC)
* A combining Alef overlay and letters with two dots vertically below (total 4 characters) was added to '''Arabic Extended-C'''. (U+10EC2-U+10EC4 and U+10EFC)
* A sign Nukta (total 1 character) was added to '''Kawi'''. (U+11F5A)
* A blank character (total 1 character) was added to '''Khitan Small Script'''. (U+18CFF)
* A rightwards arrow with hook, and arrows for legacy computing and arrows for Egyptology (total 12 characters) was added to '''Supplemental Arrows-C'''. (U+1F8B2-U+1F8BB, U+1F8C0-U+1F8C1)
* A Harp, Shovel, Leafless Tree, Fingerprint, Root Vegetable, Splatter, and Face with Bags Under Eyes (total 7 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA89, U+1FA8F, U+1FABE, U+1FAC6, U+1FADC, U+1FADF, and U+1FAE9)
* Graphic shapes for legacy computing (total 37 characters) was added to '''Symbols for Legacy Computing'''. (U+1FBCB-U+1FBEF)
== Unicode 17.0 ==
Unicode 17.0 was released on September 9th, 2025. It encoded 159,801 characters, adding 4,083 new characters.
=== New Blocks ===
* '''Sidetic''' (U+10940-U+1095F), containing 26 characters, was added.
* '''Sharada Supplement''' (U+11B60-U+11B7F), containing 8 characters, was added.
* '''Tolong Siki''' (U+11DB0-U+11DEF), containing 54 characters, was added.
* '''Beria Erfe''' (U+16EA0-U+16EDF), containing 50 characters, was added.
* '''Tangut Components Supplement''' (U+18D80-U+18DFF), containing 115 characters, was added.
* '''Miscellaneous Symbols Supplement''' (U+1CEC0-U+1CEFF), containing 34 characters, was added.
* '''Tai Yo''' (U+1E6C0-U+1E6FF), containing 55 characters, was added.
* '''CJK Unified Ideographs Extension J''' (U+323B0-U+3347F), containing 4298 characters, was added.
=== Extended Blocks ===
* A Noon with Ring Above (total 1 character) was added to '''Arabic Extended-B'''. (U+088F)
* An archaic ligature Shrii (total 1 character) was added to '''Telugu'''. (U+0C5C)
* An archaic ligature Shrii (total 1 character) was added to '''Kannada'''. (U+0CDC)
* Compound tone and harrington diacritics (total 26 characters) was to '''Combining Diacritical Marks Extended'''. (U+1ACF-U+1ADD, U+1AE0-U+1AEB)
* Saudi Riyal Sign (total 1 character) was added to '''Currency Symbols'''. (U+20C1)
* Equal Sign with Infinity Above (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B96)
* 2 capital letters for Middle English, Latin pharyngeal voiced fricative, and Modifier Letter Capital S (total 5 characters) was added to '''Latin Extended-D'''. (U+A7CE-U+A7CF, U+A7D2, U+A7D4, U+A7F1)
* Arabic Ligature Rahmatu Allaahi Alayh and Arabic Honorifics (total 25 characters) was added to '''Arabic Presentation Forms-A'''. (U+FBC3-U+FBD2, U+FD90, U+FD91, U+FDC8-U+FDCE)
* A Small Yeh Barree with Two Dots Below, Thin Noon, Biblical End of Verse, Yeh with Four Dots Below, Honorifics, Double Vertical Bar Below, and Small Low Noon (total 14 characters) was added to '''Arabic Extended-C'''. (U+10EC5-U+10EC7, U+10ED0-U+10ED8, U+10EFA-U+10EFB)
* Chinese Simplified and Traditional Er and Yangqin Slow Signs Two, Three, and Four (total 5 characters) was added to '''Ideographic Symbols and Punctuation'''. (U+16FF2-U+16FF6)
* Some additional ideographs (total 8 characters) was added to '''Tangut'''. (U+187F8-U+187FF)
* Additional ideographs (total 22 characters) was added to '''Tangut Supplement'''. (U+18D09-U+18D1E)
* Nine symbols (total 9 characters) was added to '''Symbols for Legacy Computing Supplement'''. (U+1CCFA-U+1CCFC, U+1CEBA-1CEBF)
* A Landslide (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D8)
* Historical asteroid symbols (total 4 characters) was added to '''Alchemical Symbols'''. (U+1F777-U+1F77A)
* Chemical symbols (total 9 characters) was added to '''Supplemental Arrows-C'''. (U+1F8D0-U+1F8D8)
* White and Black Chess Ferz and Alfil (total 4 characters) was added to '''Chess Symbols'''. (U+1FA54-U+1FA57)
* A trombone, treasure chest, hairy creature, orca, distorted face, and fight cloud (total 6 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA8A, U+1FA8E, U+1FAC8, U+1FACD, U+1FAEA, and U+1FAEF)
* An alarm bell symbol (total 1 character) was added to '''Symbols for Legacy Computing'''. (U+1FBFA)
* Additional ideographs (total 6 characters) was added to '''CJK Unified Ideographs Extension C'''. (U+2B73A-U+2B73F)
* Additional ideographs (total 12 characters) was added to '''CJK Unified Ideographs Extension E'''. (U+2CEA2-U+2CEAD)
== Unicode 18.0 ==
Unicode 18.0 will be released around September 2026. In August 2025, only 61 characters were accepted, but more were accepted in November 2025.
=== New Blocks ===
*'''Bengali Supplement''' (U+11DF0-U+11DFF), containing 2 characters, will be added.
* '''Archaic Cuneiform Numerals''' (U+12550-U+1268F), containing 311 characters, will be added.
* '''Jurchen''' (U+18E00-U+1919F), containing 914 characters, will be added.
* '''Jurchen Radicals''' (U+191A0-U+191DF), containing 51 characters, will be added.
* '''Musical Symbols Supplement''' (U+1D250-U+1D28F), containing 50 characters, will be added.
* '''Miscellaneous Symbols and Arrows Extended''' (U+1DB00-U+1DBFF), containing 29 characters, will be added.
* '''Seal Script''' (U+3D000-U+3FC3F), containing 11328 characters, will be added.
=== Extended Blocks ===
* Modifier letters Eh, Ini, and Yi (total 3 characters) will be added to '''Armenian'''. (U+0558, U+058B-U+058C)
* Hebrew Point Sheva Na Mudgash and Hebrew Point Dagesh Hazaq Mudgash (total 2 characters) will be added to '''Hebrew'''. (U+05C8-U+05C9)
* Signs for dot above and double dot above (total 2 characters) will be added to '''Oriya'''. (U+0B53-U+0B54)
* Alternate positioned IPA diacritics and diacritics for Chao and Khoe (total 7 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1ADE-U+1ADF, U+1AEC-U+1AF0)
* Latin subscript small letter w, y, and z and Modifier letter high and low vertical line (total 4 characters) will be added to '''Superscripts and Subscripts'''. (U+208F, U+209D-U+209F)
* Rufiyaa Sign, UAE Dirham Sign, and Omani Rial (total 3 characters) will be added to '''Currency Symbols'''. (U+20C2-U+20C4)
* Two Wiggly Exclamation Marks and Two Parenthesis with Middle Ring (total 4 characters) will be added to '''Supplemental Punctuation'''. (U+2E60-U+2E63)
* Latin capital letter closed omega and Latin capital letter r with long leg and (total 2 characters) will be added to '''Latin Extended-D'''. (U+A7DD and U+A7E2)
* Latin capital letter script r and script r with ring (total 2 characters) will be added to '''Latin Extended-E'''. (U+AB6C-U+AB6D)
* Latin modifier letters for clicks (total 5 characters) will be added to '''Latin Extended-F'''. (U+107BB-U+107BF)
* Arabic Crown Letters, Quranic Characters, and Arabic Crown (total 39 characters) will be added to '''Arabic Extended-C'''. (U+10EC9-U+10ECF, U+10ED9-U+10EEE, U+10EF0-U+10EF9)
* Devanagari Letter Alternate Ddda (total 1 character) will be added to '''Devanagari Extended-A'''. (U+11B0A)
* Extended Cuneiform Numeric Signs (total 12 characters) will be added to '''Cuneiform Numbers and Punctuation'''. (U+1246F, U+12475-U+1247F)
* Jurchen Small Script characters (total 5 characters) will be added to '''Khitan Small Script'''. (U+18CD6-U+18CDA)
* Two additional ideographs (total 2 characters) will be added to '''Tangut Supplement'''. (U+18D1F-U+18D20)
* Hiragana Digraph Koto, Katakana Diagraphs Toki, Tote, and Yori, letters alternate Ne, and Wi (total 6 characters) will be added to '''Kana Extended-A'''. (U+1B123-U+1B128)
* Katakana letter small archaic Ye (total 1 character) will be added to '''Small Kana Extension'''. (U+1B168)
* Leibnizian alchemical symbols, Leibnizian cossic characters, and Leibnizian mathematical signs and symbols (total 19 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED2-U+1CED4, U+1CEDD-U+1CEDF, U+1CEF1-U+1CEFD)
* Stein Zimmerman Symbols, Digit Slash Symbols, and other Symbols (total 23 characters) will be added to '''Musical Symbols'''. (U+1D127-U+1D128, U+1D1EB-U+1D1FF)
* Mathematical italic long s with descender s (U+1D6A6) will be added to '''Mathematical Alphanumeric Symbols'''.
* Affricate ligatures, letters with palatal hook, barred letters, RFE letters, Initial Teaching Alphabet, English Phonotypic Alphabet, Leibnizian cossic characters, and modifier letters (total 151 characters) will be added to '''Latin Extended-G'''. (U+1DF1F-U+1DF24, U+1DF2B-U+1DF81, U+1DF90-U+1DF96, U+1DFCD-U+1DFFF)
* A Tomobiki symbol (total 1 character) will be added to '''Enclosed Alphanumeric Supplement'''. (U+1F1AE)
* A lighthouse (total 1 character) will be added to '''Transport and Map Symbols'''. (U+1F6D9)
* A black circle with white vertical bar, and Extended Geometric Shapes (total 17 characters) will be added to '''Geometric Shapes Extended'''. (U+1F7DA-U+1F7DB, U+1F7F1-U+1F7FF)
* A meteor, eraser, net with handle, monarch butterfly, pickle, cracking face, leftwards thumb sign, and rightwards thumb sign (total 8 characters) will be added to '''Symbols and Pictographs Extended-A'''. (U+1FA8B-1FA8D, U+1FACC, U+1FADD, U+1FAEB, U+1FAF9-1FAFA)
* An additional ideograph (total 1 character) will be added to '''CJK Unified Ideographs Extension D'''. (U+2B81E)
== Code Points Provisionally Assigned==
This is a section where you can add any upcoming Unicode characters that have been [https://www.unicode.org/alloc/Pipeline.html#codepoint_reservation provisionally assigned for mature proposals] (but not yet accepted) for a future update of The Unicode Standard.
=== New Blocks ===
* '''Arabic Extended-D''' (U+10D90-U+10E5F), containing 3 characters, will be added.
* '''Sirmauri''' (U+11850-U+1188F), containing 55 characters, will be added.
* '''Leke''' (U+11B80-U+11BBF), containing 55 characters, will be added.
* '''Proto-Cuneiform''' (U+12690-U+12ECF), containing 1392 characters, will be added.
* '''Chisoi''' (U+16D80-U+16DAF), containing 40 characters, will be added.
* '''Mwangwego''' (U+16E00-U+16E3F), containing 64 characters, will be added.
* '''Shaaldaa''' (U+1C800-U+1CB2F), containing 804 characters, will be added.
* '''Leibnizian Ambiguous Signs''' (U+1DC00-U+1DC3F)
* '''CJK Unified Ideographs Components-A''' (U+2FA20-U+2FA9F)
* '''CJK Unified Ideographs Components-B''' (U+2FAA0-U+2FC1F)
=== Extended Blocks ===
* Telugu Sign Spacing Candrabindu (total 1 character) will be added to '''Telugu'''. (U+0C70)
* Kannada Signs Ardhanusvara and Combining Anusvara Above (total 1 character) will be added to '''Kannada'''. (U+0CF0 and U+0CF4)
* Mongolian Letter Manchu Alternative Ue (total 1 character) will be added to '''Mongolian'''. (U+1879)
* Combining Grave-Acute-Macron, Combining inverted lazy s Above, and Combining comma Above and acute (total 3 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1AF1-U+1AF3)
* Cyrillic small letter Yeru with connecting bar (total 1 character) will be added to '''Cyrillic Extended-C'''. (U+1C8B)
* Belarusian Ruble sign and Ruble sign with double vertical stem (total 2 characters) will be added to '''Currency Symbols'''. (U+20C5, U+20CF)
* Combining Long Triple Solidus Overlay and Combining Saltire Overlay (total 2 characters) will be added to '''Combining Diacritical Marks for Symbols'''. (U+20F1-U+20F2)
* Latin capital and small letter i with oblique stroke (total 2 characters) will be added to '''Latin Extended-D'''. (U+A7De-U+A7DF)
* Latin capital letter u with left hook (total 1 character) will be added to '''Latin Extended-E'''. (U+AB6E)
* Arabic Dotless Half-Yeh, Half-Yeh, Dotless Half-Jeem and Astronomical Kaf (total 4 characters) will be added to '''Arabic Extended-C'''. (U+10EC0-U+10EC1, U+10EC8, U+10EEF)
* Brahmi minimizing virama (total 1 character) will be added to '''Brahmi'''. (U+1107E)
* Tulu-Tigalari letter combining anusvara above, signs om pushpika with tail and shrii pushpika, and letter archaic II (total 5 characters) will be added to '''Tulu-Tigalari'''. (U+113CB, U+113D9-U+113DB)
* Newa Letter Heavy Ya (total 1 character) will be added to '''Newa'''. (U+11462)
* Dogra Signs Candrabindu and Avaragha (total 2 characters) will be added to '''Dogra'''. (U+1183C-U+1183D)
* Devanagari Jivamuliya and Upadhmaniya (total 2 characters) will be added to '''Devanagari Extended-A'''. (U+11B0B-U+11B0C)
* Alchemical Symbol for Calx-2 and Alchemical Symbol for Retort-2 (total 2 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED1, U+1CED5)
* Musical Symbol down arrowhead breath mark (total 1 character) will be added to '''Musical Symbols Supplement'''. (U+1D282)
* Small w with palatal hook, small n and r with double middle tilde, small capital i with retroflex hook, small open q, x with stroke, small wavy y, schwa with right hook, Romance dialectology symbols, zh ligature, Albanian letter edhe, Albanian Frashëri letters, Modifier letter capital y, and modifier letter accents (total 26 characters) will be added to '''Latin Extended-G'''. (U+1DF82-U+1DF8F, U+1DF97-U+1DFA3, U+1DFC4-U+1DFCD)
*Arabic Astronomical zero and five astronomical symbols (total 6 characters) will be added to Arabic Mathematical Alphabetic Symbols (U+1EEE0-U+1EEE5)
==Roadmap Blocks==
This is a section where proportional maps of proposed allocations to Unicode and ISO/IEC 10646 are presented. Italic indicates scripts for which detailed proposals have not yet been written.<ref>[https://unicode.org/roadmaps/smp/]</ref>
* '''Northern Palaeohispanic''' (U+10200-U+1023F)
* '''Southern Palaeohispanic''' (U+10240-U+1027F)
* '''''Shavian Quikscript''' (U+103E0-U+103FF)''
* '''Combining Diacritical Marks Extended-A''' (U+107C0-U+107FF)
* '''Proto-Sinaitic''' (U+108B0-U+108DF)
* '''''Numidian''' (U+10960-U+1097F)''
* '''Balti''' (U+10AA0-U+10ABF)
* '''Book Pahlavi''' (U+10BB0-U+10BDF)
* '''Baburi''' (U+10BE0-U+10BFF)
* '''Arabic Extended-D''' (U+10D90-U+10E5F)
* '''Landa''' (U+11250-U+1127F)
* '''Tani Lipi''' (U+114E0-U+114FF)
* '''Ranjana''' (U+11500-U+1157F)
* '''Zou''' (U+11750-U+117AF)
* '''Pyu''' (U+117B0-U+117FF)
* '''Vateluttu''' (U+11960-U+1199F)
* '''Balti-B''' (U+11CC0-U+11CFF)
* '''Tocharian''' (U+11E00-U+11E6F)
* '''Khotanese''' (U+11E70-U+11ECF)
* '''Pallava''' (U+11F60-U+11FAF)
* '''''Egyptian Hieroglyphs Extended-B''' (U+14680-U+151FF)''
* '''Mayan Hieroglyphs''' (U+15500-U+15AFF)
* '''Kore Sebeli''' (U+15B00-U+15B6F)<!--proposed to be accepted, 93 characters-->
* '''Mandombe''' (U+15B80-U+15FFF)
* '''Kurukh Banna''' (U+16140-U+1618F)
* '''Moon''' (U+161A0-U+161FF)
* '''Blissymbols''' (U+16200-U+167FF)
* '''Woleai''' (U+16B90-U+16BFF)
* '''Kpelle''' (U+16C00-U+16C7F)
* '''Tikamuli''' (U+16C80-U+16CBF)
* '''Tangsa (Khimhun)''' (U+16CD0-U+16CFF)
* '''Afaka''' (U+16D00-U+16D3F)
* '''Kulitan''' (U+16DD0-U+16DFF)
* '''''Bopomofo Extended-A''' (U+16FA0-U+16FAF)''
* '''Kanbun Extended-A''' (U+16FB0-U+16FDF)
* '''Khitan Large Script''' (U+19200-U+199FF)
* '''Pau Cin Hau Syllabary''' (U+19E00-U+1A2FF)
* '''Eskaya''' (U+1A300-U+1A75F)
* '''Rejang Extended''' (U+1A760-U+1A77F)
* '''''Kaida''''' (U+1A780-U+1A7FF)
* '''Naxi Dongba''' (U+1A800-U+1ACFF)
* '''''Naxi Geba''' (U+1AD00-U+1AFCF)''
* '''''Kana Extended-C''' (U+1AFD0-U+1AFEF)''
* '''Shuishu Logograms''' (U+1B300-U+1B5FF)
* '''Lisu Syllabic Script''' (U+1B600-U+1B9FF)
* '''Indus''' (U+1BA00-U+1BB8F)
* '''Pitman Shorthand''' (U+1BCB0-U+1BCFF)
* '''Proto-Elamite''' (U+1BE00-U+1C37F)
* '''Linear Elamite''' (U+1C380-U+1C4FF)
* '''Ndiko Jonam''' (U+1CB30-U+1CB7F)
* '''N<nowiki>'</nowiki>ti''' (U+1CB80-U+1CBAF)
* '''Old Chinese Musical Symbols (Flute and Pipa)''' (U+1D290-U+1D2BF)
* '''''Mathematical Alphanumeric Symbols Supplement''' (U+1D380-U+1D3FF)''
* '''Jianzi Format Controls''' (U+1DAE0-U+1DAFF)
* '''Eebee Hmong''' (U+1E150-U+1E1FF)
* '''Western Cham''' (U+1E200-U+1E26F)
* '''Loma''' (U+1E300-U+1E41F)
* '''Bagam''' (U+1E420-U+1E4CF)
* '''Pungchen''' (U+1E500-U+1E52F)
* '''''Pungchung''' (U+1E530-U+1E55F)''
* '''''Marchung''' (U+1E560-U+1E59F)''
* '''Brusha''' (U+1E5A0-U+1E5CF)
* '''''Chola''' (U+1E600-U+1E65F)''
* '''Box-Headed''' (U+1E660-U+1E6BF)
* '''Lampung''' (U+1E700-U+1E73F)
* '''Kerinci''' (U+1E740-U+1E76F)
* '''Buginese Supplement''' (U+1E770-U+1E7BF)
* '''''Lontara Bilang-Bilang''' (U+1E7C0-U+1E7DF)''
* '''N'Ko Supplement''' (U+1E960-1E97F)
* '''''Byblos''''' (U+1EB90-U+1EBFF)
* '''Persian Siyaq Numbers''' (U+1EC00-U+1EC7F)
* '''Diwani Siyaq Numbers''' (U+1ECC0-U+1ECFF)
* '''''Extended Pictographic Characters''' (U+1FC00-U+1FFFF)''
== References ==
{{reflist}}
i6a0xc4ty52bpao4lo697kptfkz0zt9
4656281
4656278
2026-08-04T18:32:35Z
Alexlatham96
377450
/* New Blocks */
4656281
wikitext
text/x-wiki
{{pp-protected|small=yes}}
{{Unicode page}}
{{TOC right}}
{{refimprove|date=June 2017}}
This page is about each version specification, and the differences between the versions.
== Unicode 1.0 ==
Unicode 1.0 was the first version of Unicode, released October 1991. It encoded 7,094 new characters.
=== “Blocks” ===
This version of Unicode did not formally group characters in blocks. But in comparison with version 2.0, the following “blocks” were available:
U+0000-U+FFFD
51 Blocks
* '''Basic Latin (formerly called ASCII)''' (U+0000-U+007F), containing 128 characters.
* '''Latin-1 Supplement (formerly called Latin1)''' (U+0080-U+00FF), containing 128 characters.
* '''Latin Extended-A''' '''(formerly called European Latin)''' (U+0100-U+017F), containing 127 characters.
* '''Latin Extended-B''' '''(formerly called Extended Latin)''' (U+0180-U+01FF), containing 113 characters.
* '''IPA Extensions''' '''(formerly called Standard Phonetic)''' (U+0250-U+02AF), containing 89 characters.
* '''Spacing Modifier Letters''' '''(formerly called Modifier Letters)''' (U+02B0-U+02FF), containing 57 characters.
* '''Combining Diacritical Marks''' '''(formerly called Generic Diacritical Marks)''' (U+0300-U+036F), containing 66 characters.
* '''Greek and Coptic''' '''(formerly called Greek)''' (U+0370-U+03FF), containing 112 characters.
* '''Cyrillic''' (U+0400-U+04FF), containing 192 characters.
* '''Armenian''' (U+0530-U+058F), containing 84 characters.
* '''Hebrew''' (U+0590-U+05FF), containing 52 characters.
* '''Arabic''' (U+0600-U+06FF), containing 169 characters.
* '''Devanagari''' (U+0900-U+097F), containing 104 characters.
* '''Bengali''' (U+0980-U+09FF), containing 89 characters.
* '''Gurmukhi''' (U+0A00-U+0A7F), containing 74 characters.
* '''Gujarati''' (U+0A80-U+0AFF), containing 75 characters.
* '''Oriya''' (U+0B00-U+0B7F), containing 78 characters.
* '''Tamil''' (U+0B80-U+0BFF), containing 61 characters.
* '''Telugu''' (U+0C00-U+0C7F), containing 80 characters.
* '''Kannada''' (U+0C80-U+0CFF), containing 80 characters.
* '''Malayalam''' (U+0D00-U+0D7F), containing 78 characters.
* '''Thai''' (U+0E00-U+0E7F), containing 92 characters.
* '''Lao''' (U+0E80-U+0EFF), containing 70 characters.
* '''Tibetan''' (U+1000-U+105F), containing 71 characters.
* '''Georgian''' (U+10A0-U+10FF), containing 78 characters.
* '''General Punctuation''' (U+2000-U+206F), containing 67 characters.
* '''Superscripts and Subscripts''' (U+2070-U+209F), containing 28 characters.
* '''Currency Symbols''' (U+20A0-U+20CF), containing 11 characters.
* '''Combining Marks for Symbols''' '''(formerly called Diacritical Marks for Symbols)''' (U+20D0-U+20FF), containing 18 characters.
* '''Letterlike Symbols''' (U+2100-U+214F), containing 57 characters.
* '''Number Forms''' (U+2150-U+218F), containing 48 characters.
* '''Arrows''' (U+2190-U+21FF), containing 91 characters.
* '''Mathematical Operators''' (U+2200-U+22FF), containing 242 characters.
* '''Miscellaneous Technical''' (U+2300-U+23FF), containing 43 characters.
* '''Control Pictures''' '''(formerly called Pictures for Control Codes)''' (U+2400-U+243F), containing 37 characters.
* '''Optical Character Recognition''' (U+2440-U+245F), containing 11 characters.
* '''Enclosed Alphanumerics''' (U+2460-U+24FF), containing 139 characters.
* '''Box Drawing''' '''(formerly called Form and Chart Components)''' (U+2500-U+257F), containing 128 characters.
* '''Block Elements''' '''(formerly called Blocks)''' (U+2580-U+259F), containing 22 characters.
* '''Geometric Shapes''' (U+25A0-U+25FF), containing 79 characters.
* '''Miscellaneous Symbols''' '''(formerly called Miscellaneous Dingbats)''' (U+2600-U+26FF), containing 106 characters.
* '''Dingbats''' '''(formerly called Zapf Dingbats)''' (U+2700-U+27BF), containing 160 characters.
* '''CJK Symbols and Punctuation''' (U+3000-U+303F), containing 56 characters.
* '''Hiragana''' (U+3040-U+309F), containing 90 characters.
* '''Katakana''' (U+30A0-U+30FF), containing 90 characters.
* '''Bopomofo''' (U+3100-U+312F), containing 40 characters.
* '''Hangul Compatibility Jamo (formerly called Hangul Elements)''' (U+3130-U+318F), containing 94 characters.
* '''Kanbun (formerly called CJK Miscellaneous)''' (U+3190-U+31FF), containing 16 characters.
* '''Enclosed CJK Letters and Months''' '''(formerly called''' '''Enclosed CJK Letters and Ideographs)''' (U+3200-U+32FF), containing 191 characters.
* '''CJK Compatibility''' '''(formerly called CJK Squared Words for U+3300-U+337F and CJK Squared Abbreviations for U+3380-33FF)''' (U+3300-U+33FF), containing 187 characters.
* '''Hangul''' (U+3400-U+3D2D), containing 2,350 characters.
* '''Private Use Area''' (U+E000-U+FDFF), reserved for 5,632 characters.
* '''CJK Compatibility Forms''' '''(formerly called CNS 11643 Compatibility)''' (U+FE30-U+FE4F), containing 28 characters.
* '''Small Form Variants''' '''(formerly called Small Variants)''' (U+FE50-U+FE6F), containing 26 characters.
* '''Arabic Presentation Forms-B''' '''(formerly called Basic Glyphs for Arabic Language)''' (U+FE70-U+FEFF), containing 140 characters.
* '''Halfwidth and Fullwidth Forms''' '''(formerly called Halfwidth and Fullwidth Variants)''' (U+FF00-U+FFEF), containing 216 characters.
* '''Specials''' '''(formerly called Special)''' (U+FFF0-U+FFFF), containing 1 character.
== Unicode 1.0.1 ==
Unicode 1.0.1 was released June 1992. It encoded 28,292 characters, adding 21,204 new characters and removing 6 characters, for a net increase of 21,198 characters.
=== New blocks ===
* '''CJK Unified Ideographs''' (U+4E00-U+9FFF), containing 20,902 Han Ideographs for Chinese, Japanese and Korean, was added.
* '''CJK Compatibility Ideographs''' (U+F900-U+FAFF), containing 302 Han Ideographs for compatibility with existing character sets, was added.
=== Removed characters ===
* Letters Ka and Kha with Ogonek (total 4 characters) were removed from '''Cyrillic'''. (U+04C5-U+04C6 and U+04C9-U+04CA)
* APL Compose Operator and APL Out (total 2 characters) were removed from '''Miscellaneous Technical'''. (U+2300-U+2301)
=== Rearranged characters ===
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
*'''Circled Katakana:''' ''The characters well be arranged in modern order: e.g., A, I, U, E, O, KA, KI'' (U+32D0-U+32FE)
*'''Basic Glyphs For Arabic Language:''' ''The character shapes will be arranged in different order: Isolate, Final, Initial and Medial'' (U+FE80-FEFC)
=== Characters with semantics changed ===
*'''Zero Width Non-Joiner''' [ZWNJ] (U+20DC)
*'''Zero Width Joiner''' [ZWJ] (U+20DD)
== Unicode 1.1 ==
Unicode 1.1 was released June 1993. It encoded 34,168 characters, adding 5,969 new characters and removing 93 characters, for a net increase of 5,876 characters. It finalized the long anticipated Han Unification.
=== New blocks ===
* '''Hangul Jamo''' (U+1100-U+11FF), containing 240 ''jamo'' for the Hangul script, was added.
* '''Latin Extended Additional''' (U+1E00-U+1EFF), containing 245 precomposed characters for transliteration and Vietnamese, was added.
* '''Greek Extended''' (U+1F00-U+1FFF), containing 233 precomposed characters for polytonic Greek, was added.
* '''Hangul Supplementary-A''' (U+3D2E-U+44B7), containing 1,930 precomposed syllables for the Hangul script, was added.
* '''Hangul Supplementary-B''' (U+44B8-U+4DFF), containing 2,376 precomposed syllables for the Hangul script, was added.
* '''Alphabetic Presentation Forms''' (U+FB00-U+FB4F), containing 57 precomposed characters and ligatures, was added.
* '''Arabic Presentation Forms-A''' (U+FB50-U+FDFF), containing 593 combinations of Arabic letters, was added.
* '''Combining Half Marks''' (U+FE20-U+FE2F), containing 4 halves of diacritical marks, was added.
=== Extended blocks ===
* The long S (ſ) (total 1 character) was added to '''Latin Extended-A'''. (U+017F)
* The Hungarian Dz, characters for transliteration purposes and precomposed characters with double grave and inverted breve (total 35 characters) were added to '''Latin Extended-B''' (U+01F1-U+01F5 and U+01FA-U+0217). The block was expanded from (U+0180-U+01FF) to (U+0180-U+024F)
* Diacritics for polytonic Greek and double width diacritics (total 6 characters) were added to '''Combining Diacritical Marks'''. (U+0342-U+0345 and U+0360-U+0361)
* Compatibility character now deprecated, Ano Teleia, and other characters (total 5 characters) were added to '''Greek and Coptic''' (U+0374-U+0375, U+037A, U+037E and U+0387).
* Additional characters for non-Slavic languages (total 38 characters) were added to '''Cyrillic'''. (U+04D0-U+04EB, U+04EE-U+04F5 and U+04F8-U+04F9)
* A ligature of Ech and Yiwn (և) (total 1 character) was added to '''Armenian'''. (U+0587)
* One deprecated compatibility character and several characters for biblical texts (total 25 characters) were added to '''Arabic'''. (U+066D and U+06D6-U+06ED)
* A sign Virama (total 1 character) was added to '''Gurmukhi''' (U+0A4D).
* Letters Candra O and E (total 3 characters) were added to '''Gujarati'''. (U+0A8D, U+0A91 and U+0AC9)
* An Ai Length mark (total 1 character) was added to '''Oriya'''. (U+0B56)
* An undertie, a pair of brackets and six formatting characters now deprecated (total 9 characters) were added to '''General Punctuation'''. (U+203F, U+2045-U+2046 and U+206A-U+206F)
* Some additional symbols and the complete set of APL functional symbols (total 79 characters) were added to '''Miscellaneous Technical'''. (U+2300 and U+232D-U+237A)
* A large circle (◯) (total 1 character) was added to '''Geometric Shapes'''. (U+25EF)
* The ideographic telegraph line feed separator symbol (〷) (total 1 character) was added to '''CJK Symbols and Punctuation'''. (U+3037)
* Four Katakana letters not in use since 1945 (total 4 characters) were added to '''Katakana'''. (U+30F7-U+30FA)
* Ideographic telegraph symbols for the twelve months (total 12 characters) were added to '''Enclosed CJK Letters and Months'''. (U+32C0-U+32CB)
* Ideographic telegraph symbols for hours and days and six additional measure units (total 62 characters) were added to '''CJK Compatibility'''. (U+3358-U+3376 and U+33E0-U+33FE)
* Some more space (total 2,304 characters) was added to the '''Private Use Area'''.
* Seven halfwidth geometric shapes (total 7 characters) were added to '''Halfwidth and Fullwidth Forms'''. (U+FFE8-U+FFEE)
=== Removed blocks ===
* '''Tibetan''', containing 71 letters for the Tibetan script, was removed from the Unicode standard.
=== Removed characters ===
* A total of 10 characters were removed from '''Greek and Coptic'''. (U+0370-U+0372, U+03D7-U+03D9, U+03DB, U+03DD, U+03DF, and U+03E1)
* Point Varika (total 1 character) was removed from ''Hebrew''. (U+05F5)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Thai'''. (U+0E70-U+0E74)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Lao'''. (U+0EF0-U+0EF4)
* An Ideographic Ditto Mark (total 1 character) was removed from '''CJK Symbols and Punctuation''' (U+3004) and merged with CJK Unified Ideograph-4EDD.
=== Rearranged characters ===
* Greek character U+03F3 was changed from Spacing Tonos to Letter Yot.
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
== Unicode 2.0 ==
Unicode 2.0 was released July 1996. It encoded 38,885 characters, adding 11,373 new characters and removing 6,656 characters, for a net increase of 4,717 characters. This was the first Unicode version to reserve blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Hangul Syllables''' (U+AC00-U+D7AF), containing 11,172 precomposed syllables for the Hangul script, was added.
* '''High Surrogates''' (U+D800-U+DB7F), setting aside 896 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''High Private Use Surrogates''' (U+DB80-U+DBFF), setting aside 128 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Low Surrogates''' (U+DC00-U+DFFF), setting aside 1,024 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Supplementary Private Use Area-A''' (U+F0000-U+FFFFF), reserving 65,534 characters for private use, was added.
* '''Supplementary Private Use Area-B''' (U+100000-U+10FFFF), reserving 65,534 characters for private use, was added.
=== Reinstated blocks ===
* '''Tibetan''' (U+0F00-U+0FFF), now containing 168 characters for the Tibetan script including religious signs, was readded.
=== Removed blocks ===
* '''Hangul''', containing 2,350 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-A''', containing 1,930 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-B''', containing 2,376 precomposed syllables for the Hangul script, was removed from the Unicode standard.
=== Extended blocks ===
* Cantillation marks for use in religious texts (total 31 characters) were added to '''Hebrew'''. (U+0591-U+05A1, U+05A3-U+05AF and U+05C4)
* A long S with Dot Above (total 1 character) was added to '''Latin Extended Additional'''. (U+1E9B)
* A Vietnamese Dong sign (total 1 character) was added to '''Currency Symbols'''. (U+20AB)
== Unicode 2.1 ==
Unicode 2.1 was released May 1998. It encoded 38,887 characters, adding only 2 new characters.
=== Extended blocks ===
* A Euro sign (total 1 character) was added to '''Currency Symbols'''. (U+20AC)
* An Object Replacement Character (total 1 character) was added to '''Specials'''. (U+FFFC)
== Unicode 3.0 ==
Unicode 3.0 was released September 1999. It was a big update and encoded 49,194 characters, adding 10,307 new characters.
=== New blocks ===
* '''Syriac''' (U+0700-U+074F), containing 71 characters used for writing in Syriac script, was added.
* '''Thaana''' (U+0780-U+07BF), containing 49 characters used for writing in Thaana script, was added.
* '''Sinhala''' (U+0D80-U+0DFF), containing 80 characters for the Sinhala script, was added.
* '''Myanmar''' (U+1000-U+109F), containing 78 characters for the Burmese script, was added.
* '''Ethiopic''' (U+1200-U+137F), containing 345 syllables and punctuation marks for the Ethiopic script, was added.
* '''Cherokee''' (U+13A0-U+13FF), containing 85 syllables for the Cherokee script, was added.
* '''Unified Canadian Aboriginal Syllabics''' (U+1400-U+167F), containing 630 syllables and punctuation marks for writing in indigenous languages of Canada, was added.
* '''Ogham''' (U+1680-U+169F), containing 29 characters for the ancient Ogham script, was added.
* '''Runic''' (U+16A0-U+16FF), containing 81 characters for the Germanic runes, was added.
* '''Khmer''' (U+1780-U+17FF), containing 103 characters for the Khmer script, was added.
* '''Mongolian''' (U+1800-U+18AF), containing 155 characters for the classical Mongolian script, was added.
* '''Braille Patterns''' (U+2800-U+28FF), containing 256 Braille letters, was added.
* '''CJK Radicals Supplement''' (U+2E80-U+2EFF), containing 115 non-Kangxi radicals, was added.
* '''Kangxi Radicals''' (U+2F00-U+2FDF), containing 214 radicals from the Kangxi dictionary, was added.
* '''Ideographic Description Characters''' (U+2FF0-U+2FFF), containing 12 characters used to describe a Han ideograph not available in the font, was added.
* '''Bopomofo Extended''' (U+31A0-U+31BF), containing 24 characters used for phonetic transcription of minority languages of Taiwan, was added.
* '''CJK Unified Ideographs Extension A''' (U+3400-U+4DBF), containing 6,582 additional Han Ideographs, was added.
* '''Yi Syllables''' (U+A000-U+A48F), containing 1,165 syllables of the modern Yi script, was added.
* '''Yi Radicals''' (U+A490-U+A4CF), containing 50 radicals of Yi Syllables, was added.
=== Extended blocks ===
* Additional precomposed characters, letters and capital letters of lowercase-only letters (total 30 characters) were added to '''Latin Extended-B'''. (U+01F6-U+01F9, U+0218-U+021F and U+0222-U+0233)
* Extensions for disordered speech (total 5 characters) were added to '''IPA Extensions'''. (U+02A9-U+02AD)
* Some additional modifier letters (total 6 characters) were added to '''Spacing Modifier Letters'''. (U+02DF and U+02EA-U+02EE)
* Additional combining diacritics for IPA (total 10 characters) were added to '''Combining Diacritical Marks'''. (U+0346-U+034E and U+0362)
* Lowercase versions of archaic letters and the Kai symbol (total 5 characters) were added to '''Greek and Coptic'''. (U+03D7, U+03DB, U+03DD, U+03DF and U+03E1)
* Nonstandard letters for Macedonian, combining numeral signs and three letters for Kildin Sami (total 12 characters) were added to '''Cyrillic'''. (U+0400, U+040D, U+0450, U+045D, U+0488-U+0489, U+048C-U+048F and U+04EC-U+04ED)
* A Hyphen (total 1 character) was added to '''Armenian'''. (U+058A)
* Combining hamza and maddah and nine additional Arabic characters (total 12 characters) were added to '''Arabic'''. (U+0653-U+0655, U+06B8-U+06B9, U+06BF, U+06CF and U+06FA-U+06FE)
* Additional letters and religious symbols (total 25 characters) were added to '''Tibetan'''. (U+0F6A, U+0F96, U+0FAE-U+0FB0, U+0FB8, U+0FBA-U+0FBC, U+0FBE-U+0FCC and U+0FCF)
* A narrow no-break space and 6 additional punctuation marks (total 7 characters) were added to '''General Punctuation'''. (U+202F and U+2048-U+204D)
* The Kip, Tugrik and Drachma sign (total 3 characters) were added to '''Currency Symbols'''. (U+20AD-U+20AF)
* An enclosing screen and an enclosing key (total 2 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E2-U+20E3)
* The information symbol and a rotated Q (total 2 characters) were added to '''Letterlike Symbols'''. (U+2139-U+213A)
* A mirrored Roman capital numeral hundred (Ↄ) (total 1 character) was added to '''Number Forms'''. (U+2183)
* Some additional arrows (total 9 characters) were added to '''Arrows'''. (U+21EB-U+21F3)
* Some additional technical symbols, including common keys on a 101 keyboard (total 33 characters) were added to '''Miscellaneous Technical'''. (U+2301, U+237B and U+237D-U+239A)
* Two additional control pictures (total 2 characters) were added to '''Control Pictures'''. (U+2425-U+2426)
* Squares and circles with quadrants (total 8 characters) were added to '''Geometric Shapes'''. (U+25F0-U+25F7)
* Two Syriac crosses and a signature mark (total 3 characters) were added to '''Miscellaneous Symbols'''. (U+2619 and U+2670-U+2671)
* Three Hangzhou numerals and a variation indicator (total 4 characters) were added to '''CJK Symbols and Punctuation'''. (U+3038-U+303A and U+303E)
* A ligature Yod with Hiriq (יִ) (total 1 character) was added to '''Alphabetic Presentation Forms'''. (U+FB1D)
* Three additional control characters for ruby markup (total 3 characters) were added to '''Specials'''. (U+FFF9-U+FFFB)
== Unicode 3.1 ==
Unicode 3.1 was released March 2001. It encoded 94,140 characters, adding 44,946 new characters, and mainly focused on blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Old Italic''' (U+10300-U+1032F), containing 35 letters for the Etruscan script, was added.
* '''Gothic''' (U+10330-U+1034F), containing 27 letters for the Gothic script, was added.
* '''Deseret''' (U+10400-U+1044F), containing 76 letters for the constructed Deseret script, was added.
* '''Byzantine Musical Symbols''' (U+1D000-U+1D0FF), containing 246 symbols for musical notation in Byzantine, was added.
* '''Musical Symbols''' (U+1D100-U+1D1FF), containing 219 characters for current musical notation, was added.
* '''Mathematical Alphanumeric Symbols''' (U+1D400-U+1D7FF), containing 991 Latin and Greek letters in serif, sans-serif, bold, italic, double-struck, script and Fraktur/Blackletter, was added.
* '''CJK Unified Ideographs Extension B''' (U+20000-U+2A6DF), containing 42,711 additional Chinese Ideographs, was added.
* '''CJK Compatibility Ideographs Supplement''' (U+2F800-U+2FA1F), containing 542 additional Chinese Ideographs for compatibility purposes, was added.
* '''Tags''', containing 97 language tags, was added. (U+E0000-U+E007F)
=== Extended noncharacters ===
* The Noncharacters range: U+FDD0..U+FDEF were added to '''Arabic Presentation Forms-A'''.
=== Extended blocks ===
* The capital Theta symbol and the Lunate Epsilon symbol (total 2 characters) were added to '''Greek and Coptic'''. (U+03F4-U+03F5)
=== Characters and Scripts Under Investigation or Rejected ===
* Khmer Sign Laak Was Rejected. (U+17DD) From '''Khmer.'''
* Georgian Letter U-Brjuu Was Rejected. From '''Georgian.'''
== Unicode 3.2 ==
Unicode 3.2 was released March 2002. It encoded 95,156 characters, adding 1,016 new characters.
=== New blocks ===
* '''Cyrillic Supplementary (now Cyrillic Supplement)''' (U+0500-U+052F), containing 16 characters used for the Komi language, was added.
* '''Tagalog''' (U+1700-U+171F), containing 20 characters for the Baybayin script, was added.
* '''Hanunoo''' (U+1720-U+173F), containing 23 characters and punctuation for the Hanunó'o script, was added.
* '''Buhid''' (U+1740-U+175F), containing 20 characters for the Buhid script, was added.
* '''Tagbanwa''' (U+1760-U+177F), containing 18 characters for the Tagbanwa script, was added.
* '''Miscellaneous Mathematical Symbols-A''' (U+27C0-U+27EF), containing 28 symbols used in math notation, was added.
* '''Supplemental Arrows-A''' (U+27F0-U+27FF), containing 16 additional arrows, was added.
* '''Supplemental Arrows-B''' (U+2900-U+297F), containing 128 special arrows, was added.
* '''Miscellaneous Mathematical Symbols-B''' (U+2980-U+29FF), containing 128 additional mathematical symbols, was added.
* '''Supplemental Mathematical Operators''' (U+2A00-U+2AFF), containing 256 additional mathematical operators, was added.
* '''Katakana Phonetic Extensions''' (U+31F0-U+31FF), containing 16 Katakana letters used for Ainu, was added.
* '''Variation Selectors''' (U+FE00-U+FE0F), containing 16 symbols used for indicating variations, was added.
=== Extended blocks ===
* A capital letter N with Long Right Leg (total 1 character) was added to '''Latin Extended-B'''. (U+0220)
* The combining grapheme joiner and combining Latin letters used in medieval texts (total 14 characters) were added to '''Combining Diacritical Marks'''. (U+034F and U+0363-U+036F)
* The Qoppa and a reversed lunate epsilon symbol (total 3 characters) were added to '''Greek and Coptic'''. (U+03D8-U+03D9 and U+03F6)
* Four additional letters used for the Kildin Sami language (total 8 characters) were added to '''Cyrillic'''. (U+048A-U+048B, U+04C5-U+04C6, U+04C9-U+04CA and U+04CD-U+04CE)
* A dotless Beh and a dotless Qaf (total 2 characters) were added to '''Arabic'''. (U+066E-U+066F)
* A Letter for Addu dialect (total 1 character) was added to '''Thaana'''. (U+07B1)
* The letters Yn and Elifi (total 2 characters) were added to '''Georgian'''. (U+10F7-U+10F8)
* Some additional punctuation marks and control characters (total 12 characters) were added to '''General Punctuation'''. (U+2047, U+204E-U+2052, U+2057 and U+205F-U+2063)
* A superscript letter I (total 1 character) was added to '''Superscripts and Subscripts'''. (U+2071)
* German Penny and Peso sign (total 2 characters) were added to '''Currency Symbols'''. (U+20B0-U+20B1)
* Some additional combining characters (total 7 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E4-U+20EA)
* Some double-struck and reversed/turned letters (total 15 characters) were added to '''Letterlike Symbols'''. (U+213D-U+214B)
* Some additional arrows (total 12 characters) were added to '''Arrows'''. (U+21F4-U+21FF)
* Some additional mathematical operators (total 14 characters) were added to '''Mathematical Operators'''. (U+22F2-U+22FF)
* Variable-width and additional symbols (total 53 characters) were added to '''Miscellaneous Technical'''. (U+237C and U+239B-U+23CE)
* Black and double circled numerals (total 20 characters) were added to '''Enclosed Alphanumerics'''. U+24EB-U+24FE)
* Quadrant elements (total 10 characters) were added to '''Block Elements'''. (U+2596-U+259F)
* Some additional triangles and squares (total 8 characters) were added to '''Geometric Shapes'''. (U+25F8-U+25FF)
* Shogi pieces ,recycling symbols, dices and dotted circles (total 24 characters) were added to '''Miscellaneous Symbols'''. (U+2616-U+2617, U+2672-U+267D and U+2680-U+2689)
* Additional parenthesis (total 14 characters) were added to '''Dingbats'''. (U+2768-U+2775)
* Three additional marks (total 3 characters) were added to '''CJK Symbols and Punctuation'''. (U+303B-U+303D)
* A digraph and two additional characters (total 3 characters) were added to '''Hiragana'''. (U+3095-U+3096 and U+309F)
* A digraph and a double hyphen (total 2 characters) were added to '''Katakana'''. (U+30A0 and U+30FF)
* Additional circled numerals (total 30 characters) were added to '''Enclosed CJK Letters and Months'''. (U+3251-U+325F and U+32B1-U+32BF
* Five missing radicals (total 5 characters) were added to '''Yi Radicals'''. (U+A4A2-U+A4A3, U+A4B4, U+A4C1, U+A4C5)
* Additional compatibility characters (total 59 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA30-U+FA6A)
* A Rial sign (total 1 character) was added to '''Arabic Presentation Forms-A'''. (U+FDFC)
* Two sesame dots (total 2 characters) were added to '''CJK Compatibility Forms'''. (U+FE45-U+FE46)
* A tail fragment (total 1 character) was added to '''Arabic Presentation Forms-B'''. (U+FE73)
* A pair of double parenthesis (total 2 characters) was added to '''Halfwidth and Fullwidth Forms'''. (U+FF5F-U+FF60)
== Unicode 4.0 ==
Unicode 4.0 was released April 2003. It encoded 96,382 characters, adding 1,226 new characters.
=== New blocks ===
* '''Limbu''', containing 66 characters for the Limbu abugida, was added.
* '''Tai Le''', containing 35 letters for the Tai Le script, was added.
* '''Khmer Symbols''', containing 32 symbols for the lunar calendar, was added.
* '''Phonetic Extensions''', containing 108 letters used in phonetic transcription, was added.
* '''Miscellaneous Symbols and Arrows''', containing 14 additional arrows, was added.
* '''Yijing Hexagram Symbols''', containing 64 hexagrams, was added.
* '''Linear B Syllabary''', containing 88 syllables of the ancient Linear B script, was added.
* '''Linear B Ideograms''', containing 123 ideograms of the ancient Linear B script, was added.
* '''Aegean Numbers''', containing 57 numerals used in the Aegean area, was added.
* '''Ugaritic''', containing 31 characters used in Ugaritic cuneiform, was added.
* '''Shavian''', containing 48 letters used for the artificial Shavian script, was added.
* '''Osmanya''', containing 40 characters used in the artificial Osmanya script, was added.
* '''Cypriot Syllabary''', containing 55 characters formerly used on Cyprus, was added.
* '''Tai Xuan Jing Symbols''', containing 87 symbols of Tai Xuan Jing, was added.
* '''Variation Selectors Supplement''', containing 240 additional variation selectors, was added.
=== Extended blocks ===
* Letters with curl used in Sinology (total 4 characters) were added to '''Latin Extended-B'''.
* Former IPA letters (total 2 characters) were added to '''IPA Extensions'''.
* Some additional characters (total 17 characters) were added to '''Spacing Modifier Letters'''.
* Additional combining double-width diacritics and diacritics corresponding to their spacing equivalent (total 11 characters) were added to '''Combining Diacritical Marks'''.
* The archaic letters Sho and San and the capital Lunate Sigma (total 5 characters) were added to '''Greek and Coptic'''.
* Some additional markers, biblical signs, and letters with inverted V (total 19 characters) were added to '''Arabic'''.
* Letters used for foreign words from Persian and Sogdian (total 6 characters) were added to '''Syriac'''.
* The short A (ऄ) (total 1 character) was added to '''Devanagari'''.
* The Avagraha sign (ঽ) (total 1 character) was added to '''Bengali'''.
* The Adak Bindi and Visarga signs (total 2 characters) were added to '''Gurmukhi'''.
* The vocalic l and ll and the Rupee sign (total 5 characters) were added to '''Gujarati'''.
* The letters Va and Wa (total 2 characters) were added to '''Oriya'''.
* Additional signs for date and finance environments (total 8 characters) were added to '''Tamil'''.
* The Nukta and Avagraha signs (total 2 characters) were added to '''Kannada'''.
* Some symbols and signs (total 11 characters) were added to '''Khmer'''.
* An inverted undertie and a swung dash (total 2 characters) were added to '''General Punctuation'''.
* The facsimile sign (℻) (total 1 character) was added to '''Letterlike Symbols'''.
* The eject symbol and a vertical line (total 2 characters) were added to '''Miscellaneous Technical'''.
* A black circled digit zero (⓿) (total 1 character) was added to '''Enclosed Alphanumerics'''.
* Monograms and diagrams, flags, warning and weather symbols and a cup of tea (total 12 characters) were added to '''Miscellaneous Symbols'''.
* Additional parenthesized and circled Korean characters and supplemental signs (total 9 characters) were added to '''Enclosed CJK Letters and Months'''.
* Additional measure units (total 7 characters) were added to '''CJK Compatibility'''.
* An additional Arabic sign (﷽) (total 1 character) was added to '''Arabic Presentation Forms-A'''.
* A pair of vertical parenthesis (total 2 characters) was added to '''CJK Compatibility Forms'''.
* The letters Oi and Ew (total 4 characters) were added to '''Deseret'''.
* A small script l (ℓ) (total 1 character) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 4.1 ==
Unicode 4.1 was released March 31, 2005. It encoded 97,655 characters, adding 1,273 new characters.
=== New blocks ===
* '''Arabic Supplement''', containing 30 characters for various languages written with the Arabic script, was added.
* '''Ethiopic Supplement''', containing 26 characters and signs for Sebatbeit, was added.
* '''New Tai Lue''', containing 80 characters for the New Tai Lue script, was added.
* '''Buginese''', containing 30 characters for the Lontara script, was added.
* '''Phonetic Extensions Supplement''', containing 64 additional letters for phonetic transcription, was added.
* '''Combining Diacritical Marks Supplement''', containing 4 additional diacritics, was added.
* '''Glagolitic''', containing 94 characters for the Glagolitic script, was added.
* '''Coptic''', containing 114 characters for the Coptic script, was added.
* '''Georgian Supplement''', containing 38 Nuskhuri letters, was added.
* '''Tifinagh''', containing 55 characters for the Tifinagh script, was added.
* '''Ethiopic Extended''', containing 79 additional Ethiopic syllables, was added.
* '''Supplemental Punctuation''', containing 26 additional punctuation marks, was added.
* '''CJK Strokes''', containing 16 strokes for Han Ideographs, was added.
* '''Modifier Tone Letters''', containing 23 letters for Chinese tones, was added.
* '''Syloti Nagri''', containing 44 characters for the Syloti Nagri abugida, was added.
* '''Vertical Forms''', containing 10 punctuation marks suited for vertical text, was added.
* '''Ancient Greek Numbers''', containing 75 numerals and signs used in Ancient Greek, was added.
* '''Old Persian''', containing 50 characters for Old Persian cuneiform, was added.
* '''Kharoshthi''', containing 65 characters for the Kharoshthi abugida, was added.
* '''Ancient Greek Musical Notation''', containing 70 musical signs used in Ancient Greek, was added.
=== Extended blocks ===
* Letters for Sencoten, digraphs, letters with swash tail and other additions (total 11 characters) were added to '''Latin Extended-B'''.
* Additional diacritics for transliteration (total 5 characters) were added to '''Combining Diacritical Marks'''.
* Rho with stroke, reversed and dotted Lunate Sigma (total 4 characters) were added to '''Greek and Coptic'''.
* Ghe with descender (Ӷ) (total 2 characters) was added to '''Cyrillic'''.
* An additional biblical mark and some punctuation marks (total 4 characters) were added to '''Hebrew'''.
* Additional biblical marks, punctuation marks and the Afghani sign (total 8 characters) were added to '''Arabic'''.
* A glottal stop (ॽ) (total 1 character) was added to '''Devanagari'''.
* The Khanda Ta letter (ৎ) (total 1 character) was added to '''Bengali'''.
* The letter Sha and the digit zero (total 2 characters) were added to '''Tamil'''.
* Two marks used in Bhutan (total 2 characters) were added to '''Tibetan'''.
* Two letters and a modifier letter (total 3 characters) were added to '''Georgian'''.
* Some additional syllables (total 11 characters) were added to '''Ethiopic'''.
* Additional phonetic symbols (total 20 characters) were added to '''Phonetic Extensions'''.
* A flower and dot punctuation marks (total 9 characters) were added to '''General Punctuation'''.
* Additional subscript letters (total 5 characters) were added to '''Superscripts and Subscripts'''.
* The Guarani, Austral, Hryvnia and Cedi signs (total 4 characters) were added to '''Currency Symbols'''.
* A combining long double solidus (total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* The per sign and a double-struck letter Pi (total 2 characters) were added to '''Letterlike Symbols'''.
* Metrical and electrical signs (total 11 characters) were added to '''Miscellaneous Technical'''.
* Additional gender and map symbols (total 30 characters) were added to '''Miscellaneous Symbols'''.
* Some additional mathematical symbols (total 7 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional arrows and squares (total 6 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* A circled Hangul character (㉾) (total 1 character) was added to '''Enclosed CJK Letters and Months'''.
* Additional Han Ideographs (total 22 characters) were added to '''CJK Unified Ideographs'''.
* Additional Compatibility Ideographs (total 106 characters) were added to '''CJK Compatibility Ideographs'''.
* Italic dotless small i and j (total 2 characters) were added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.0 ==
Unicode 5.0 was released July 14, 2006. It encoded 99,024 characters, adding 1,369 new characters.
=== New blocks ===
* '''N'Ko''', containing 59 characters for the N'Ko script, was added.
* '''Balinese''', containing 121 characters and musical signs for the Balinese abugida, was added.
* '''Latin Extended-C''', containing 17 letters for various languages, was added.
* '''Latin Extended-D''', containing 2 characters for UPA, was added.
* '''Phags-pa''', containing 56 characters for the Phags-pa script, was added.
* '''Phoenician''', containing 27 letters and numerals for the Phoenician script, was added.
* '''Cuneiform''', containing 879 signs for Sumero-Akkadian Cuneiform, was added.
* '''Cuneiform Numbers and Punctuation''', containing 103 numerals and punctuation signs for Sumero-Akkadian Cuneiform, was added.
* '''Counting Rod Numerals''', containing 18 numerals used with counting rods, was added.
=== Extended blocks ===
* Various letters used mainly for aboriginal languages (total 14 characters) were added to '''Latin Extended-B'''.
* Lowercase lunate sigma symbols (total 3 characters) were added to '''Greek and Coptic'''.
* Lowercase palochka and 3 letters used in Nivkh (total 7 characters) were added to '''Cyrillic'''.
* Two letters used in Khanty and other languages (total 4 characters) were added to '''Cyrillic Supplement'''.
* A specific point meant for Vav (total 1 character) was added to '''Hebrew'''.
* Four letters used in Sindhi (total 4 characters) were added to '''Devanagari'''.
* Four letters used in Sanskrit (total 4 characters) were added to '''Kannada'''.
* Additional IPA diacritics (total 9 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Four combining arrows (total 4 characters) were added to '''Combining Diacritical Marks for Symbols'''.
* A danish symbol and a lowercase turned F (total 2 characters) were added to '''Letterlike Symbols'''.
* A lowercase reversed C (ↄ) (total 1 character) was added to '''Number Forms'''.
* Vertical parenthesis, geometric forms and electrical symbols (total 12 characters) were added to '''Miscellaneous Technical'''.
* A neuter symbol (⚲) (total 1 character) was added to '''Miscellaneous Symbols'''.
* Four additional mathematical symbols (total 4 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional squares, pentagons and hexagons (total 11 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Four additional tone letters used in Chinantec (total 4 characters) were added to '''Modifier Tone Letters'''.
* Bold Digamma (𝟊/'''Ϝ''') (total 2 characters) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.1 ==
Unicode 5.1 was released April 4, 2008. It encoded 100,648 characters, adding 1,624 new characters.
=== New blocks ===
* '''Sundanese''', containing 55 letters for Sundanese script, was added.
* '''Lepcha''', containing 74 letters for Lepcha script, was added.
* '''Ol Chiki''', containing 48 letters for Ol Chiki script, was added.
* '''Cyrillic Extended-A''', containing 32 letters for combining Cyrillic letters, was added.
* '''Vai''', containing 300 letters for Vai script, was added.
* '''Cyrillic Extended-B''', containing 78 letters for additional Cyrillic characters, was added.
* '''Saurashtra''', containing 81 letters for Saurashtra script, was added.
* '''Kayah Li''', containing 48 letters for Kayah languages, was added.
* '''Rejang''', containing 37 letters for Rejang script, was added.
* '''Cham''', containing 83 letters for Cham script, was added.
* '''Ancient Symbols''', containing 12 characters for weights and measures and other Ancient symbols, was added.
* '''Phaistos Disc''', containing 46 hieroglyphs for Phaistos, was added.
* '''Lycian''', containing 29 letters for Lycian script, was added.
* '''Carian''', containing 49 letters for Carian script, was added.
* '''Lydian''', containing 27 letters for Lydian script, was added.
* '''Mahjong Tiles''', containing 44 mahjong tiles, was added.
* '''Domino Tiles''', containing 100 domino tiles, was added.
=== Extended blocks ===
* Archaic letters and capital kai symbol (total 7 characters) were added to '''Greek and Coptic'''.
* Combining Pokrytie (total 1 character) was added to '''Cyrillic'''.
* Mordvin, Kurdish, Aleut and Chuvash letters (total 16 characters) were added to '''Cyrillic Supplement'''.
* Radix symbols, Letterlike, punctuation, Koranic annotation signs and additions for early Persian and Azerbaijani (total 15 characters) were added to '''Arabic'''.
* Additional letters in Torwali, Burushaski and early Persian (total 18 characters) were added to '''Arabic Supplement'''.
* High spacing dot and candra a (total 2 characters) were added to '''Devanagari'''.
* Udaat and yakash signs (total 2 characters) were added to '''Gurmukhi'''.
* Vocalic rr, l and ll (total 3 characters) were added to '''Oriya'''.
* Om symbol (ௐ) (total 1 character) was added to '''Tamil'''.
* Avagraha, additional phonetic letters, vocalic l and ll, fractional signs and tuumu (total 13 characters) were added to '''Telugu'''.
* Avagraha, vocalic rr, l and ll, Malayalam numerics and fractions and chillu letters (total 17 characters) were added to '''Malayalam'''.
* Letters for Balti and various symbols (total 6 characters) were added to '''Tibetan'''.
* Characters for various languages (total 78 characters) were added to '''Myanmar'''.
* Manchu Ali Gali lha (ᢪ) (total 1 character) was added to '''Mongolian'''.
* Miscellaneous combining marks (total 28 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Medievalist latin letters and miscellaneous letters (total 10 characters) were added to '''Latin Extended Additional'''.
* Invisible plus (+) (total 1 character) was added to '''General Punctuation'''.
* Combining asterisk above ( ⃰)(total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* Symbol for Samaritan Source (⅏) (total 1 character) was added to '''Letterlike Symbols'''.
* Archaic Roman Numerals (total 4 characters) were added to '''Number Forms'''.
* Outlined white star and other signs (total 15 characters) were added to '''Miscellaneous Symbols'''.
* Long division and additional mathematical brackets (total 5 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Miscellaneous signs (total 51 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Additional latin letters (total 12 characters) were added to '''Latin Extended-C'''.
* Additional punctuation (total 23 characters) were added to '''Supplemental Punctuation'''.
* Letter ih (ㄭ) (total 1 character) was added to '''Bopomofo'''.
* Other strokes (total 20 characters) were added to '''CJK Strokes'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Africanist tone letters (total 5 characters) were added to '''Modifier Tone Letters'''.
* Miscellaneous letters and symbols (total 112 characters) were added to '''Latin Extended-D'''.
* Continuous macrons for Coptic (total 3 characters) were added to '''Combining Half Marks'''.
* Musical symbol multiple measure rest (𝄩) (total 1 character) was added to '''Musical Symbols'''.
== Unicode 5.2 ==
Unicode 5.2 was released in October 1, 2009. It encoded 107,296 characters, adding 6,648 new characters.
=== New blocks ===
* '''Samaritan''', containing 61 letters for Samaritan script, was added.
* '''Unified Canadian Aboriginal Syllabics Extended''', containing 70 syllables for various cree languages, was added.
* '''Tai Tham''', containing 127 letters for Tai Tham script, was added.
* '''Vedic Extensions''', containing 35 characters for tone marks and signs, was added.
* '''Lisu''', containing 48 letters for Lisu (Fraser) script, was added.
* '''Bamum''', containing 88 letters for Bamum script, was added.
* '''Common Indic Number Forms''', containing 10 fractions and marks, was added.
* '''Devanagari Extended''', containing 28 additional marks, was added.
* '''Hangul Jamo Extended-A''', containing 29 characters for additional old initial consonants in hangul jamo, was added.
* '''Javanese''', containing 91 letters for Javanese script, was added.
* '''Myanmar Extended-A''', containing 28 letters for Khamti Shan in Myanmar, was added.
* '''Tai Viet''', containing 72 letters for Tai Viet script, was added.
* '''Meetei Mayek''', containing 56 letters for Meetei Mayek script, was added.
* '''Hangul Jamo Extended-B''', containing 72 characters for additional old medieval vowels and final consonants in hangul jamo, was added.
* '''Imperial Aramaic''', containing 31 characters for Old Aramaic, was added.
* '''Old South Arabian''', containing 32 letters and numbers for South Arabian, was added.
* '''Avestan''', containing 61 characters for Avestan script, was added.
* '''Inscriptional Parthian''', containing 30 characters for Inscriptional Parthian script, was added.
* '''Inscriptional Pahlavi''', containing 27 characters for Inscriptional Pahlavi script, was added.
* '''Old Turkic''', containing 73 characters for Orkhon script, was added.
* '''Rumi Numeral Symbols''', containing 31 numeric characters used in Fez, Morocco, and elsewhere in North Africa and the Iberian peninsula, between the tenth and seventeenth centuries, was added.
* '''Kaithi''', containing 66 letters for Kaithi script, was added.
* '''Egyptian Hieroglyphs''', containing 1,071 hieroglyphs for Egyptian, was added.
* '''Enclosed Alphanumeric Supplement''', containing 63 additional circled, parenthesized and squared alphanumerics, was added.
* '''Enclosed Ideographic Supplement''', containing 44 squared and tortoised shell bracketed ideographs, was added.
* '''CJK Unified Ideographs Extension C''', containing 4,149 additional Chinese Ideographs, was added.
=== Extended blocks ===
* Abhaz letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Inverted Candrabinbu and additional signs and letters (total 5 characters) were added to '''Devanagari'''.
* Ganda Mark (৻) (total 1 character) was added to '''Bengali'''.
* Religious svasti signs (total 4 characters) were added to '''Tibetan'''.
* Extensions for Khamti Shan and Alton and Phake (total 4 characters) were added to '''Myanmar'''.
* Additional old initial consonants, medival vowels, and old final consonants (total 16 characters) were added to '''Hangul Jamo'''.
* Hyphen and additional syllables (total 10 characters) were added to '''Unified Canadian Aboriginal Syllabics'''.
* Letter Sua and Tham Digit One (total 3 characters) were added to '''New Tai Lue'''.
* Combing Almost Equal to Below ( ᷽) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* The Live Tournosis, Spesmillo and Tenge signs (total 3 characters) were added to '''Currency Symbols'''.
* Additional vulgar fractions from ARIB STD B24 (total 4 characters) were added to '''Number Forms'''.
* Decimal exponent symbol (⏨) from ARIB STD B24 (total 1 characters) was added to '''Miscellaneous Technical'''.
* A soccer ball and symbols from ARIB STD B24 (total 59 characters) were added to '''Miscellaneous Symbols'''.
* Heavy exclamation mark symbol (❗) from ARIB STD B24 (total 1 character) was added to '''Dingbats'''.
* Traffic sign, dictionary and map symbols from ARIB STD B24 (total 5 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Capital letter turned alpha and additions for shona (total 3 characters) were added to '''Latin Extended-C'''.
* Cryptogrammic letters and combining marks (total 7 characters) were added to '''Coptic'''.
* Word separator middle dot used in Avestan (⸱) (total 1 character) was added to '''Supplemental Punctuation'''.
* Circled ideographs and numbers on black squares from ARIB STD B24 (total 12 characters) were added to '''Enclosed CJK Letters and Months'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Miscellaneous additions for compatibility (total 3 characters) were added to '''CJK Compatibility Ideographs'''.
* Number two and three (total 2 characters) were added to '''Phoenician'''.
== Unicode 6.0 ==
Unicode 6.0 was released in October 11, 2010. It encoded 109,384 characters, adding 2,088 new characters.
=== New blocks ===
* '''Mandaic''', containing 29 letters for Mandaic script, was added.
* '''Batak''', containing 56 letters for Batak script, was added.
* '''Ethiopic Extended-A''', containing 32 letters for Gamo-Gofa-Dawro, Basketo and Gumuz Ethiophic syllables, was added.
* '''Brahmi''', containing 108 characters for ancient Brahmi abugida, was added.
* '''Bamum Supplement''', containing 761 letters for additional Bamum script, was added.
* '''Kana Supplement''', containing 2 characters for archaic katakana, was added.
* '''Playing Cards''', containing 59 playing cards, was added.
* '''Miscellaneous Symbols and Pictographs''', containing 529 additional symbols, was added.
* '''Emoticons''', containing 63 faces, cat faces and gesture symbols, was added.
* '''Transport and Map Symbols''', containing 70 transportation, traffic signs and other symbols, was added.
* '''Alchemical Symbols''', containing 116 symbols for elements, was added.
* '''CJK Unified Ideographs Extension D''', containing 222 miscellaneous Han ideographs, was added.
=== Extended blocks ===
* Azerbaijani letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Kashmiri Yeh and Wavy hamza below (total 2 characters) were added to '''Arabic'''.
* Dependent vowel signs and letters used in Kashmiri and Bihari (total 10 characters) were added to '''Devanagari'''.
* Fraction signs (total 6 characters) were added to '''Oriya'''.
* Letters used in scholarly only and letter dot reph (total 3 characters) were added to '''Malayalam'''.
* Leading and Trailing Mchan Rtags (total 6 characters) were added to '''Tibetan'''.
* Additional combining marks (total 2 characters) were added to '''Ethiopic'''.
* Combining Double Inverted Breve Below (᷼) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* Miscellaneous subscript letters (total 8 characters) were added to '''Superscripts and Subscripts'''.
* Indian Rupee Sign (₹) (total 1 character) was added to '''Currency Symbols'''.
* Pointing double triangle and additional mechanical symbols (total 11 characters) were added to '''Miscellaneous Technical'''.
* Ophiucisus, astronomical symbol for uranus and pentagrams (total 6 characters) were added to '''Miscellaneous Symbols'''.
* Additional heavy punctation marks, raised fist, raised hand, sparkles, heavy arithmetic symbols and curly loops (total 16 characters) were added to '''Dingbats'''.
* Squared logicals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Separator mark and consonant joiner (total 2 characters) were added to '''Tifinagh'''.
* Bopomofo for Hmu and Ge (total 3 characters) were added to '''Bopomofo Extended'''.
* Reversed Tse (total 2 characters) were added to '''Cyrillic Extended-B'''.
* Additional letters (total 15 characters) were added to '''Latin Extended-D'''.
* Pedagogical symbols (total 16 characters) were added to '''Arabic Presentation Forms-A'''.
* Additional squared, black circled and squared letters and regional indicator letters (total 107 characters) were added to '''Enclosed Alphanumeric Supplement'''.
* Squared katakana, squared ideographs and circled advantage and accept (total 13 characters) were added to '''Enclosed Ideographic Supplement'''.
== Unicode 6.1 ==
Unicode 6.1 was released in January 31, 2012. It encoded 110,116 characters, adding 732 new characters.
=== New blocks ===
* '''Arabic Extended-A''' (U+08A0-U+08FF), containing 39 characters, was added.
* '''Sundanese Supplement''' (U+1CC0-U+1CCF), containing 8 characters, was added.
* '''Meetei Mayek Extensions''' (U+AAE0-U+AAFF), containing 23 characters, was added.
* '''Meroitic Hieroglyphs''' (U+10980-U+1099F), containing 32 characters, was added.
* '''Meroitic Cursive''' (U+109A0-U+109FF), containing 26 characters, was added.
* '''Sora Sompeng''' (U+110D0-U+110FF), containing 35 characters, was added.
* '''Chakma''' (U+11100-U+1114F), containing 67 characters, was added.
* '''Sharada''' (U+11180-U+111DF), containing 83 characters, was added.
* '''Takri''' (U+11680-U+116CF), containing 66 characters, was added.
* '''Miao''' (U+16F00-U+16F9F), containing 133 characters, was added.
* '''Arabic Mathematical Alphabetic Symbols''' (U+1EE00-U+1EEFF), containing 143 characters, was added.
=== Extended blocks ===
* An Armenian Dram sign (total 1 character) was added to '''Armenian'''. (U+058F)
* A sign Samvat (total 1 character) was added to '''Arabic'''. (U+0604)
* An Abbreviation mark (total 1 character) was added to '''Gujarati'''. (U+0AF0)
* Letters for Khmu (total 2 characters) were added to '''Lao'''. (U+0EDE-U+0EDF)
* Capital letter Yn, letter Aen, Hard and Labial sign (total 5 characters) were added to '''Georgian'''. (U+10C7, U+10CD and U+10FD-U+10FF)
* Letters and signs for Old Sundanese (total 9 characters) were added to '''Sundanese'''. (U+1BAB-U+1BAD and U+1BBA-U+1BBF)
* Sign Rotated Ardhavisarga, Candra Above, Jihvamuliya and Uphadhmaniya (total 4 characters) were added to '''Vedic Extensions'''. (U+1CF3-U+1CF6)
* Mathematical diagonals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''. (U+27CB and U+27CD)
* A letter Bohairic Khei (total 2 characters) were added to '''Coptic'''. (U+2CF2-U+2CF3)
* Small letters Yn and Aen (total 2 characters) were added to '''Georgian Supplement'''. (U+2D27 and U+2D2D)
* Letters Ye and Yo (total 2 characters) were added to '''Tifinagh'''. (U+2D66-U+2D67)
* (total 10 characters) were added to '''Supplemental Punctuation'''. (U+2E32-U+2E3B)
* An additional ideograph for Kanji (total 1 character) was added to '''CJK Unified Ideographs'''. (U+9FCC)
* Combining letter for Slavonic (total 9 characters) were added to '''Cyrillic Extended-B'''. (U+A674-U+A67B and U+A69F)
* Letter C with Bar, capital letter H with Hook and modifier letters for extended IPA (total 5 characters) were added to '''Latin Extended-D'''. (U+A792-U+A793, U+A7AA and U+A7F8-U+A7F9)
* Some additional ideographs for Korea (total 2 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA2E-U+FA2F)
* Symbols for Canadian legal use (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F16A-U+1F16B)
* Typikon symbols (total 4 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F540-U+1F543)
* (total 13 characters) were added to '''Emoticons'''. (U+1F600, U+1F611, U+1F615, U+1F617, U+1F619, U+1F61B, U+1F61F, U+1F626-U+1F627, U+1F62C, U+1F62E-U+1F62F and U+1F634)
== Unicode 6.2 ==
Unicode 6.2 was released in September 26, 2012. It encoded 110,117 characters, adding only 1 new character.
=== Extended blocks ===
* A Turkish Lira sign (total 1 character) was added to '''Currency Symbols'''. (U+20BA)
== Unicode 6.3 ==
Unicode 6.3 was released in September 30, 2013. It encoded 110,122 characters, adding only 5 new characters.
=== Extended blocks ===
* A Letter mark (total 1 character) was added to '''Arabic'''. (U+061C)
* Isolate directional format characters (total 4 characters) were added to '''General Punctuation'''. (U+2066-U+2069)
== Unicode 7.0 ==
Unicode 7.0 was released in June 16, 2014. It encoded 112,956 characters, adding 2,834 new characters.
=== New blocks ===
* '''Combining Diacritical Marks Extended''' (U+1AB0-U+1AFF), containing 15 marks, was added.
* '''Myanmar Extended-B''' (U+A9E0-U+A9FF), containing 31 letters, was added.
* '''Latin Extended-E''' (U+AB30-U+AB6F), containing 50 letters, was added.
* '''Coptic Epact Numbers''' (U+102E0-U+102FF), containing 28 numbers, was added.
* '''Old Permic''' (U+10350-U+1037F), containing 43 letters, was added.
* '''Elbasan''' (U+10500-U+1052F), containing 50 letters, was added.
* '''Caucasian Albanian''' (U+10530-U+1056F), containing 53 letters and marks, was added.
* '''Linear A''' (U+10600-U+1077F), containing 341 signs, was added.
* '''Palmyrene''' (U+10860-U+1087F), containing 32 letters, was added.
* '''Nabataean''' (U+10880-U+108AF), containing 40 letters and numbers, was added.
* '''Old North Arabian''' (U+10A80-U+10A9F), containing 32 letters and numbers, was added.
* '''Manichaean''' (U+10AC0-U+10AFF), containing 51 characters, was added.
* '''Psalter Pahlavi''' (U+10B80-U+10BAF), containing 29 characters, was added.
* '''Mahajani''' (U+11150-U+1117F), containing 39 letters and signs, was added.
* '''Sinhala Archaic Numbers''' (U+111E0-U+111FF), containing 20 numbers, was added.
* '''Khojki''' (U+11200-U+1124F), containing 61 characters, was added.
* '''Khudawadi''' (U+112B0-U+112FF), containing 69 characters, was added.
* '''Grantha''' (U+11300-U+1137F), containing 83 characters, was added.
* '''Tirhuta''' (U+11480-U+114DF), containing 82 characters, was added.
* '''Siddham''' (U+11580-U+115FF), containing 72 characters, was added.
* '''Modi''' (U+11600-U+1165F), containing 79 characters, was added.
* '''Warang Citi''' (U+118A0-U+118FF), containing 84 letters and numbers, was added.
* '''Pau Cin Hau''' (U+11AC0-U+11AFF), containing 57 characters, was added.
* '''Mro''' (U+16A40-U+16A6F), containing 43 characters, was added.
* '''Bassa Vah''' (U+16AD0-U+16AFF), containing 36 characters, was added.
* '''Pahawh Hmong''' (U+16B00-U+16B8F), containing 127 letters and signs, was added.
* '''Duployan''' (U+1BC00-U+1BC9F), containing 143 characters, was added.
* '''Shorthand Format Controls''' (U+1BCA0-U+1BCAF), containing 4 format characters, was added.
* '''Mende Kikakui''' (U+1E800-U+1E8DF), containing 213 syllables and numbers, was added.
* '''Ornamental Dingbats''' (U+1F650-U+1F67F), containing 48 pictographic characters, was added.
* '''Geometric Shapes Extended''' (U+1F780-U+1F7FF), containing 85 pictographic characters, was added.
* '''Supplemental Arrows-C''' (U+1F800-U+1F8FF), containing 148 pictographic characters, was added.
=== Extended blocks ===
* A capital letter Yot (total 1 character) was added to '''Greek and Coptic'''. (U+037F)
* Letters for Orok, Komi and Khanty (total 8 characters) were added to '''Cyrillic Supplement'''. (U+0528-U+052F)
* An Eternity sign (total 2 characters) were added to '''Armenian'''. (U+058D-U+058E)
* A Number Mark Above (total 1 character) was added to '''Arabic'''. (U+0605)
* Letters for African, Philippine, Turkic, Berber, Belarusian, Palula and Shina languages (total 8 characters) were added to '''Arabic Extended-A'''. (U+08A1, U+08AD-U+08B2 and U+08FF)
* A letter for Marwari (total 1 character) was added to '''Devanagari'''. (U+0978)
* A sign Anji (total 1 character) was added to '''Bengali'''. (U+0980)
* Sign Candrabindu and letter Llla (total 2 characters) were added to '''Telugu'''. (U+0C00 and U+0C34)
* A Sign Candrabindu (total 1 character) was added to '''Kannada'''. (U+0C81)
* A Sign Candrabindu (total 1 character) was added to '''Malayalam'''. (U+0D01)
* Lith Numerals (total 10 characters) were added to '''Sinhala'''. (U+0DE6-U+0DEF)
* Additional Old English runes (total 8 characters) were added to '''Runic'''. (U+16F1-U+16F8)
* Letters Gyan and Tra (total 2 characters) were added to '''Limbu'''. (U+191D-U+191E)
* Signs for Jaiminiya Sama Veda (total 2 characters) were added to '''Vedic Extensions'''. (U+1CF8-U+1CF9)
* Marks for Germanic and American lexicology (total 15 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DE7-U+1DF5)
* Nordic Mark, Manat and Ruble sign (total 3 characters) were added to '''Currency Symbols'''. (U+20BB-U+20BD)
* Playback symbols from Webdings font (total 7 characters) were added to '''Miscellaneous Technical'''. (U+23F4-U+23FA)
* A Scissors symbol from Wingdings 2 font (total 1 character) was added to '''Dingbats'''. (U+2700)
* Arrows for Lithuanian dialectology and symbols from Wingdings 3 font (total 115 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2B4D-U+2B4F, U+2B5A-U+2B5F, U+2B60-U+2B73, U+2B76-U+2B95, U+2B98-U+2BB9, U+2BBD-U+2BC8 and U+2BCA-U+2BD1)
* (total 7 characters) were added to '''Supplemental Punctuation'''. (U+2E3C-U+2E42)
* Early Cyrillic letters and letters for Lithuanian dialectology (total 6 characters) were added to '''Cyrillic Extended-B'''. (U+A698-U+A69D)
* Letters for European, American and African orthography (total 18 characters) were added to '''Latin Extended-D'''. (U+A794-U+A79F, U+A7AB-U+A7AD, U+A7B0-U+A7B1 and U+A7F7)
* Tone marks for Tai Laing and letters for Shwe Palaung (total 4 characters) were added to '''Myanmar Extended-A'''. (U+AA7C-U+AA7F)
* Combining phonetic marks (total 7 characters) were added to '''Combining Half Marks'''. (U+FE27-U+FE2D)
* Additional mathematical symbols (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018B-U+1018C)
* A Greek Tau Rho symbol (total 1 character) was added to '''Ancient Symbols'''. (U+101A0)
* A letter Ess (total 1 character) was added to '''Old Italic'''. (U+1031F)
* A Number Joiner (total 1 character) was added to '''Brahmi'''. (U+1107F)
* Sutra mark and sign Ekam (total 2 characters) were added to '''Sharada'''. (U+111CD and U+111DA)
* Additional cuneiform signs (total 42 characters) were added to '''Cuneiform'''. (U+1236F-U+12398)
* Additional numbers, vulgar fractions and a punctuation mark (total 13 characters) were added to '''Cuneiform Numbers and Punctuation'''. (U+12463-U+1246E and U+12474)
* Red Joker, Fool and trumps (total 23 characters) were added to '''Playing Cards'''. (U+1F0BF and U+1F0E0-U+1F0F5)
* Dingbat normal and negative sans-serif digit zero (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10B-U+1F10C)
* Symbols from Webdings, Wingdings 1 and 2 font (total 209 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F321-U+1F32C, U+1F336, U+1F37D, U+1F394-U+1F39F, U+1F3C5, U+1F3CB-U+1F3CE, U+1F3D4-U+1F3DF, U+1F3F1-U+1F3F7, U+1F43F, U+1F441, U+1F4F8, U+1F4FD-U+1F4FE, U+1F53E-U+1F53F, U+1F544-U+1F54A, U+1F568-U+1F579, U+1F57B-U+1F5A3 and U+1F5A5-U+1F5FA)
* Slightly frowning and smiling faces emoji (total 2 characters) were added to '''Emoticons'''. (U+1F641-U+1F642)
* Symbols from Webdings and Wingdings 2 font (total 27 characters) were added to '''Transport and Map Symbols'''. (U+1F6C6-U+1F6CF, U+1F6E0-U+1F6EC and U+1F6F0-U+1F6F3)
== Unicode 8.0 ==
Unicode 8.0 was released in June 17, 2015. It encoded 120,672 characters, adding 7,716 new characters.
=== New blocks ===
* '''Cherokee Supplement''' (U+AB70-U+ABBF), containing 80 lowercase letters, was added.
* '''Hatran''' (U+108E0-U+108FF), containing 26 letters, was added.
* '''Old Hungarian''' (U+10C80-U+10CFF), containing 108 letters, was added.
* '''Multani''' (U+11280-U+112AF), containing 38 letters, was added.
* '''Ahom''' (U+11700-U+1173F), containing 57 letters, was added.
* '''Early Dynastic Cuneiform''' (U+12480-U+1254F), containing 196 characters, was added.
* '''Anatolian Hieroglyphs''' (U+14400-U+1467F), containing 583 characters, was added.
* '''Sutton SignWriting''' (U+1D800-U+1DAAF), containing 672 signs, was added.
* '''Supplemental Symbols and Pictographs''' (U+1F900-U+1F9FF), containing 15 pictographic characters, was added.
* '''CJK Unified Ideographs Extension E''' (U+2B820-U+2CEAF), containing 5762 characters, was added.
=== Extended blocks ===
* Letters for Arwi (total 3 characters) were added to '''Arabic Extended-A'''. (U+08B3-U+08B4 and U+08E3)
* A letter for Avestan transliteration (total 1 character) was added to '''Gujarati'''. (U+0AF9)
* A letter for Andhra Pradesh (total 1 character) was added to '''Telugu'''. (U+0C5A)
* An archaic letter II (total 1 character) was added to '''Malayalam'''. (U+0D5F)
* A letter Mv and small letters (total 7 characters) were added to '''Cherokee'''. (U+13F5 and U+13F8-U+13FD)
* A Georgian Lari sign (total 1 character) was added to '''Currency Symbols'''. (U+20BE)
* Turned digits (total 2 characters) were added to '''Number Forms'''. (U+218A-U+218B)
* Two headed arrows with triangle arrowheads (total 4 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BEC-U+2BEF)
* Some additional ideographs (total 9 characters) were added to '''CJK Unified Ideographs'''. (U+9FCD-U+9FD5)
* A combining letter Ef (total 1 character) was added to '''Cyrillic Extended-B'''. (U+A69E)
* Sinological dot, phonetic extension for African languages, letters for American and Gabonese orthography (total 7 characters) were added to '''Latin Extended-D'''. (U+A78F and U+A7B2-U+A7B7)
* Sign Siddham and letter Jain Om (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FC-U+A8FD)
* Letters for Yakut transliteration (total 4 characters) were added to '''Latin Extended-E'''. (U+AB60-U+AB63)
* A combining mark for Church Slavonic (total 2 characters) were added to '''Combining Half Marks'''. (U+FE2E-U+FE2F)
* Numerals and vulgar fractions (total 64 characters) were added to '''Meroitic Cursive'''. (U+109BC-U+109BD, U+109C0-U+109CF and U+109D2-U+109FF)
* Sandhi mark, diacritical marks for Kashmiri, sign Siddham and punctuation marks (total 9 characters) were added to '''Sharada'''. (U+111C9-U+111CC and U+111DB-U+111DF)
* Combining Anusvara Above and letter Om (total 2 characters) were added to '''Grantha'''. (U+11300 and U+11350)
* Section marks and alternate letters (total 20 characters) were added to '''Siddham'''. (U+115CA-U+115DD)
* An additional sign (total 1 character) was added to '''Cuneiform'''. (U+12399)
* East-Slavic musical symbols (total 11 characters) were added to '''Musical Symbols'''. (U+1D1DE-U+1D1E8)
* (total 24 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F32D-U+1F32F, U+1F37E-U+1F37F, U+1F3CF-U+1F3D3, U+1F3F8-U+1F3FF, U+1F4FF and U+1F54B-U+1F54F)
* Upside Down Face and Face With Rolling Eyes emoji (total 2 characters) were added to '''Emoticons'''. (U+1F643-U+1F644)
* A Place of Worship emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D0)
== Unicode 9.0 ==
Unicode 9.0, was released in June 21, 2016. It encoded 128,172 characters, adding 7,500 new characters.
=== New blocks ===
* '''Cyrillic Extended-C''' (U+1C80-U+1C8F), containing 9 letters, was added.
* '''Osage''' (U+104B0-U+104FF), containing 72 letters, was added.
* '''Newa''' (U+11400-U+1147F), containing 92 letters, was added.
* '''Mongolian Supplement''' (U+11660-U+1167F), containing 13 letters, was added.
* '''Bhaiksuki''' (U+11C00-U+11C6F), containing 97 letters, was added.
* '''Marchen''' (U+11C70-U+11CBF), containing 68 letters, was added.
* '''Ideographic Symbols and Punctuation''' (U+16FE0-U+16FFF), containing 1 letter, was added.
* '''Tangut''' (U+17000-U+187FF), containing 6125 letters, was added.
* '''Tangut Components''' (U+18800-U+18AFF), containing 755 letters, was added.
* '''Glagolitic Supplement''' (U+1E000-U+1E02F), containing 38 letters, was added.
* '''Adlam''' (U+1E900-U+1E95F), containing 87 letters, was added.
=== Extended blocks ===
* Letters for Bravanese, Warsh and Quranic marks used in Pakistan (total 23 characters) were added to '''Arabic Extended-A'''. (U+08B6-U+08BD and U+08D4-U+08E2)
* A sign Spacing Candrabindu (total 1 character) were added to '''Kannada'''. (U+0C80)
* Sign Para, Chillu letters and vulgar fractions (total 14 characters) were added to '''Malayalam'''. (U+0D4F, U+0D54-U+0D56, U+0D58-U+0D5E and U+0D76-U+0D78)
* A diacritical mark for Newa (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFB)
* Power symbols (total 4 characters) were added to '''Miscellaneous Technical'''. (U+23FB-U+23FE)
* Punctuation marks for Church Slavonic (total 2 characters) were added to '''Supplemental Punctuation'''. (U+2E43-U+2E44)
* A letter for Unifon (total 1 character) was added to '''Latin Extended-D'''. (U+A7AE)
* A sign Candrabindu (total 1 character) was added to '''Saurashtra'''. (U+A8C5)
* Indiction sign and a currency symbol (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018D-U+1018E)
* A sign Sukun (total 1 character) was added to '''Khojki'''. (U+1123E)
* Japanese TV symbols (total 18 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F19B-U+1F1AC)
* A Japanese TV symbol (total 1 character) was added to '''Enclosed Ideographic Supplement'''. (U+1F23B)
* A dancing man and Black Heart emoji (total 2 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F57A and U+1F5A4)
* Octagonal Sign, Shopping Trolley, scooters and a Canoe emoji (total 5 characters) were added to '''Transport and Map Symbols'''. (U+1F6D1-U+1F6D2 and U+1F6F4-U+1F6F6)
* (total 67 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F919-U+1F91E, U+1F920-U+1F927, U+1F930, U+1F933-U+1F93E, U+1F940-U+1F94B, U+1F950-U+1F95E and U+1F985-U+1F991)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|0030 FE00
|
|short diagonal stroke form # DIGIT ZERO
|-
|1000 FE00
|
|dotted form # MYANMAR LETTER KA
|-
|1002 FE00
|
|dotted form # MYANMAR LETTER GA
|-
|1004 FE00
|
|dotted form # MYANMAR LETTER NGA
|-
|1010 FE00
|
|dotted form # MYANMAR LETTER TA
|-
|1011 FE00
|
|dotted form # MYANMAR LETTER THA
|-
|1015 FE00
|
|dotted form # MYANMAR LETTER PA
|-
|1019 FE00
|
|dotted form # MYANMAR LETTER MA
|-
|101A FE00
|
|dotted form # MYANMAR LETTER YA
|-
|101C FE00
|
|dotted form # MYANMAR LETTER LA
|-
|101D FE00
|
|dotted form # MYANMAR LETTER WA
|-
|1022 FE00
|
|dotted form # MYANMAR LETTER SHAN A
|-
|1031 FE00
|
|dotted form # MYANMAR VOWEL SIGN E
|-
|1075 FE00
|
|dotted form # MYANMAR LETTER SHAN KA
|-
|1078 FE00
|
|dotted form # MYANMAR LETTER SHAN CA
|-
|107A FE00
|
|dotted form # MYANMAR LETTER SHAN NYA
|-
|1080 FE00
|
|dotted form # MYANMAR LETTER SHAN THA
|-
|2205 FE00
|
|zero with long diagonal stroke overlay form # EMPTY SET
|-
|AA60 FE00
|
|dotted form # MYANMAR LETTER KHAMTI GA
|-
|AA61 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CA
|-
|AA62 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CHA
|-
|AA63 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JA
|-
|AA64 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JHA
|-
|AA65 FE00
|
|dotted form # MYANMAR LETTER KHAMTI NYA
|-
|AA66 FE00
|
|dotted form # MYANMAR LETTER KHAMTI TTA
|-
|AA6B FE00
|
|dotted form # MYANMAR LETTER KHAMTI NA
|-
|AA6C FE00
|
|dotted form # MYANMAR LETTER KHAMTI SA
|-
|AA6F FE00
|
|dotted form # MYANMAR LETTER KHAMTI FA
|-
|AA7A FE00
|
|dotted form # MYANMAR LETTER AITON RA
|-
|…
|
|278 additional emoji variation sequences
|}
== Unicode 10.0 ==
Unicode 10.0, was released in June 20, 2017. It encoded 136,690 characters, adding 8,518 new characters.
=== New blocks ===
* '''Syriac Supplement''' (U+0860-U+086F), containing 11 characters, was added.
* '''Zanabazar Square''' (U+11A00-U+11A4F), containing 72 characters, was added.
* '''Soyombo''' (U+11A50-U+11AAF), containing 80 characters, was added.
* '''Masaram Gondi''' (U+11D00-U+11D5F), containing 75 characters, was added.
* '''Kana Extended-A''' (U+1B100-U+1B12F), containing 31 characters, was added.
* '''Nushu''' (U+1B170-U+1B2FF), containing 396 characters, was added.
* '''CJK Unified Ideographs Extension F''' (U+2CEB0-U+2EBEF), containing 7,473 characters, was added.
=== Extended blocks ===
* A Vedic Anusvara and Abbreviation mark (total 2 characters) were added to '''Bengali'''. (U+09FC-U+09FD)
* Letters for Arabic transliteration (total 6 characters) were added to '''Gujarati'''. (U+0AFA-U+0AFF)
* A combining Anusvara Above and Viramas (total 3 characters) were added to '''Malayalam'''. (U+0D00 and U+0D3B-U+0D3C)
* A sign Atikrama (total 1 character) was added to '''Vedic Extensions'''. (U+1CF7)
* Combining diacritical marks for Church Slavonic (total 4 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DF6-U+1DF9)
* A Bitcoin sign (total 1 character) was added to '''Currency Symbols'''. (U+20BF)
* An Observe Eye symbol (total 1 character) was added to '''Miscellaneous Technical'''. (U+23FF)
* A Group mark (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2BD2)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E45-U+2E49)
* A letter O with Dot Above (total 1 character) was added to '''Bopomofo'''. (U+312E)
* Ideographs for Slavonic transliteration (total 21 characters) were added to '''CJK Unified Ideographs'''. (U+9FD6-U+9FEA)
* Letters for North Italic (total 3 characters) were added to '''Old Italic'''. (U+1032D-U+1032F)
* An Iteration mark for Nushu (total 1 character) was added to '''Ideographic Symbols and Punctuation'''. (U+16FE1)
* Letters for Hentaigana (total 254 characters) were added to '''Kana Supplement'''. (U+1B002-U+1B0FF)
* Symbols for Chinese Folk religion (total 6 characters) were added to '''Enclosed Ideographic Supplement'''. (U+1F260-U+1F265)
* Stupa, Pagoda, Sled and Flying Saucer emoji (total 4 characters) were added to '''Transport and Map Symbols'''. (U+1F6D3-U+1F6D4 and U+1F6F7-U+1F6F8)
* (total 66 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F900-U+1F90B, U+1F91F, U+1F928-U+1F92F, U+1F931-U+1F932, U+1F94C, U+1F95F-U+1F96B, U+1F992-U+1F997 and U+1F9D0-U+1F9E6)
== Unicode 11.0 ==
Unicode 11.0, was released in June 5, 2018. It encoded 137,374 characters, adding 684 new characters.
=== New blocks ===
* '''Georgian Extended''' (U+1C90-U+1CBF), containing 46 characters, was added.
* '''Hanifi Rohingya''' (U+10D00-U+10D3F), containing 50 characters, was added.
* '''Old Sogdian''' (U+10F00-U+10F2F), containing 40 characters, was added.
* '''Sogdian''' (U+10F30-U+10F6F), containing 42 characters, was added.
* '''Dogra''' (U+11800-U+1184F), containing 60 characters, was added.
* '''Gunjala Gondi''' (U+11D60-U+11DAF), containing 63 characters, was added.
* '''Makasar''' (U+11EE0-U+11EFF), containing 25 characters, was added.
* '''Medefaidrin''' (U+16E40-U+16E9F), containing 91 characters, was added.
* '''Mayan Numerals''' (U+1D2E0-U+1D2FF), containing 20 characters, was added.
* '''Indic Siyaq Numbers''' (U+1EC70-U+1ECBF), containing 68 characters, was added.
* '''Chess Symbols''' (U+1FA00-U+1FA6F), containing 14 characters, was added.
=== Extended blocks ===
* Small letters Turned Ayb and Yi with Stroke (total 2 characters) were added to '''Armenian'''. (U+0560 and U+0588)
* A triangle Yod (total 1 character) were added to '''Hebrew'''. (U+05EF)
* A Dantayalan and currency symbols (total 3 characters) were added to '''N'Ko'''. (U+07FD-U+07FF)
* A Small Low Waw (total 1 character) was added to '''Arabic Extended-A'''. (U+08D3)
* A Sandhi mark (total 1 character) was added to '''Bengali'''. (U+09FE)
* An Abbreviation mark (total 1 character) was added to '''Gurmukhi'''. (U+0A76)
* A combining Anusvara Above (total 1 character) was added to '''Telugu'''. (U+0C04)
* A sign Siddham (total 1 character) was added to '''Kannada'''. (U+0C84)
* A letter for Buryat (total 1 character) was added to '''Mongolian'''. (U+1878)
* Symbols for chess notation, astrological and half star symbols (total 43 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BBA-U+2BBC, U+2BD3-U+2BEB and 2BF0-U+2BFE)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E4A-U+2E4E)
* A letter NN (total 1 character) was added to '''Bopomofo'''. (U+312F)
* Some ideographs for Kanji (total 5 characters) were added to '''CJK Unified Ideographs'''. (U+9FEB-U+9FEF)
* A small capital Q and a letter for Mazahua (total 3 characters) were added to '''Latin Extended-D'''. (U+A7AF and U+A7B8-U+A7B9)
* Letter and vowel sign Ay (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FE-U+A8FF)
* Letters Ttta, Vha and a vulgar fraction (total 3 characters) were added to '''Kharoshthi'''. (U+10A34-U+10A35 and U+10A48)
* A Number Sign Above (total 1 character) was added to '''Kaithi'''. (U+110CD)
* Letter Lhaa, vowel sign Aa and Ei (total 3 characters) were added to '''Chakma'''. (U+11144-U+11146)
* A combining Bindu Below (total 1 character) was added to '''Grantha'''. (U+1133B)
* A Sandhi mark (total 1 character) was added to '''Newa'''. (U+1145E)
* An alternate letter Ba (total 1 character) was added to '''Ahom'''. (U+1171A)
* A mark Pluta (total 1 character) was added to '''Soyombo'''. (U+11A9D)
* Additional ideographs (total 5 characters) were added to '''Tangut'''. (U+187ED-U+187F1)
* Tally marks (total 7 characters) were added to '''Counting Rod Numerals'''. (U+1D372-U+1D378)
* A Copyleft symbol (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F12F)
* A Skateboard emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6F9)
* Normal and negative circled shapes (total 4 characters) were added to '''Geometric Shapes Extended'''. (U+1F7D5-U+1F7D8)
* (total 65 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F94D-U+1F94F, U+1F96C-U+1F970, U+1F973-U+1F976, U+1F97A, U+1F97C-U+1F97F, U+1F998-U+1F99F, U+1F9A0-U+1F9A2, U+1F9B0-U+1F9B9, U+1F9C1-U+1F9C2 and U+1F9E7-U+1F9FF)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|FF10 FE00
|
|short diagonal stroke form # FULLWIDTH DIGIT ZERO
|}
== Unicode 12.0 ==
Unicode 12.0 was released on March 5, 2019. It encoded 137,928 characters, adding 554 new characters.
=== New blocks ===
* '''Elymaic''' (U+10FE0-U+10FFF), containing 23 characters, was added.
* '''Nandinagari''' (U+119A0-U+119FF), containing 65 characters, was added.
* '''Tamil Supplement''' (U+11FC0-U+11FFF), containing 51 characters, was added.
* '''Egyptian Hieroglyph Format Controls''' (U+13430-U+1343F), containing 9 characters, was added.
* '''Small Kana Extension''' (U+1B130-U+1B16F), containing 7 characters, was added.
* '''Nyiakeng Puachue Hmong''' (U+1E100-U+1E14F), containing 71 characters, was added.
* '''Wancho''' (U+1E2C0-U+1E2FF), containing 59 characters, was added.
* '''Ottoman Siyaq Numbers''' (U+1ED00-U+1ED4F), containing 61 characters, was added.
* '''Symbols and Pictographs Extended-A''' (U+1FA70-U+1FAFF), containing 16 characters, was added.
=== Extended blocks ===
* A sign Siddham (total 1 character) was added to '''Telugu'''. (U+0C77)
* Letters for Pail and Sanskrit (total 15 characters) were added to '''Lao'''. (U+0E86, U+0E89, U+0E8C, U+0E8E-U+0E93, U+0E98, U+0EA0, U+0EA8-U+0EA9, U+0EAC and U+0EBA)
* A sign Double Anusvara Antargomukha (total 1 character) was added to '''Vedic Extensions'''. (U+1CFA)
* An astrological symbol and Hellschreiber Pause symbol (total 2 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BC9 and U+2BFF)
* A Cornish Verse Divider (total 1 character) was added to '''Supplemental Punctuation'''. (U+2E4F)
* Egyptological letters, Anglicana W and letters for early Pinyin (total 11 characters) were added to '''Latin Extended-D'''. (U+A7BA-U+A7BF and U+A7C2-U+A7C6)
*Sinological phonetic letters (total 2 characters) were added to '''Latin Extended-E'''. (U+AB66-U+AB67)
* A Vedic Anusvara (total 1 character) was added to '''Newa'''. (U+1145F)
* An archaic letter Kha (total 1 character) was added to '''Takri'''. (U+116B8)
* Sign Jihvamuliya and Uphadhmaniya (total 2 characters) were added to '''Soyombo'''. (U+11A84-U+11A85)
* Letters for various Yi and Miao languages (total 16 characters) were added to '''Miao'''. (U+16F45-U+16F4A, U+16F4F and U+16F7F-U+16F87)
* Marks for Ancient Chinese texts (total 2 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE2-U+16FE3)
* Some additional ideographs (total 6 characters) were added to '''Tangut'''. (U+187F2-U+187F7)
* A Nasalization mark (total 1 character) was added to '''Adlam'''. (U+1E94B)
* A Spanish and Portuguese register mark (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F16C)
* Hindu Temple and Auto Rickshaw emoji (total 2 characters) were added to '''Transport and Map Symbols'''. (U+1F6D5 and U+1F6FA)
* Large colored circles and boxes (total 12 characters) were added to '''Geometric Shapes Extended'''. (U+1F7E0-U+1F7EB)
* (total 31 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90D-U+1F90F, U+1F93F, U+1F971, U+1F97B, U+1F9A5-U+1F9AA, U+1F9AE-U+1F9AF, U+1F9BA-U+1F9BF, U+1F9C3-U+1F9CA and U+1F9CD-U+1F9CF)
* Heterodox chess symbols (total 84 characters) were added to '''Chess Symbols'''. (U+1FA00-U+1FA53)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Spacing Modifier Letters
|02EA, 02EB
|2
|-
|Vedic Extensions
|1CF2..1CF3
|2
|-
|Currency Symbols
|20A9
|1
|-
|CJK Symbols and Punctuation
|3001, 3002
|2
|-
|Bopomofo
|3105..312F
|43
|-
|Bopomofo Extended
|31A0..31BA
|27
|-
|CJK Unified Ideographs Extension A
|37C3, 3B9D, 3CFD, 3FE0, 44EC, 4A76
|6
|-
|CJK Unified Ideographs
|5344, 55B9, 6ABC, 6FF9, 809E, 80BC, 80E9, 8132, 8159, 841C, 891D, 8C6C, 915E, 9FD4
|14
|-
|Phags-pa
|A840..A877
|56
|-
|Halfwidth and Fullwidth Forms
|FF01, FF0C, FF0E, FF1A, FF1B, FF1F
|6
|-
|CJK Unified Ideographs Extension B
|200DD, 20164, 20BBF, 20C02, 20CED, 21D4C, 2278B, 23AB8, 2459B, 24A7D, 24FB9, 25ED7, 2677C, 26B4C, 26C21, 26CBE, 26E3D, 28834, 289A1, 289C0, 28A0F, 28B46
|22
|-
|CJK Unified Ideographs Extension C
|2A8FB, 2A917, 2AA30
|3
|-
|CJK Unified Ideographs Extension E
|2BA52, 2BD77, 2C494, 2C72F, 2C734, 2CB38
|6
|-
|CJK Unified Ideographs Extension F
|2D23B, 2E83A
|2
|-
! colspan="2" |Total
!192
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|3001 FE00
|
|corner-justified form # IDEOGRAPHIC COMMA
|-
|3001 FE01
|
|centered form # IDEOGRAPHIC COMMA
|-
|3002 FE00
|
|corner-justified form # IDEOGRAPHIC FULL STOP
|-
|3002 FE01
|
|centered form # IDEOGRAPHIC FULL STOP
|-
|FF01 FE00
|
|corner-justified form # FULLWIDTH EXCLAMATION MARK
|-
|FF01 FE01
|
|centered form # FULLWIDTH EXCLAMATION MARK
|-
|FF0C FE00
|
|corner-justified form # FULLWIDTH COMMA
|-
|FF0C FE01
|
|centered form # FULLWIDTH COMMA
|-
|FF0E FE00
|
|corner-justified form # FULLWIDTH FULL STOP
|-
|FF0E FE01
|
|centered form # FULLWIDTH FULL STOP
|-
|FF1A FE00
|
|corner-justified form # FULLWIDTH COLON
|-
|FF1A FE01
|
|centered form # FULLWIDTH COLON
|-
|FF1B FE00
|
|corner-justified form # FULLWIDTH SEMICOLON
|-
|FF1B FE01
|
|centered form # FULLWIDTH SEMICOLON
|-
|FF1F FE00
|
|corner-justified form # FULLWIDTH QUESTION MARK
|-
|FF1F FE01
|
|centered form # FULLWIDTH QUESTION MARK
|}
== Unicode 12.1 ==
Unicode 12.1 was released on May 7, 2019. It encoded 137,929 characters, adding only 1 new character.
=== Extended blocks ===
* A square era name Reiwa (total 1 character) was added to '''Enclosed CJK Letters and Months'''. (U+32FF)
== Unicode 13.0 ==
Unicode 13.0 was released on March 10, 2020. It encoded 143,859 characters, adding 5,930 new characters.
=== New blocks ===
* '''Yezidi''' (U+10E80-U+10EBF), containing 47 characters, was added.
* '''Chorasmian''' (U+10FB0-U+10FDF), containing 28 characters, was added.
* '''Dives Akuru''' (U+11900-U+1195F), containing 72 characters, was added.
* '''Lisu Supplement''' (U+11FB0-U+11FBF), containing 1 character, was added.
* '''Khitan Small Script''' (U+18B00-U+18CFF), containing 470 characters, was added.
* '''Tangut Supplement''' (U+18D00-U+18D08), containing 9 characters, was added.
* '''Symbols for Legacy Computing''' (U+1FB00-U+1FBFF), containing 212 characters, was added.
* '''CJK Unified Ideographs Extension G''' (U+30000-U+3134F), containing 4939 characters, was added.
=== Extended blocks ===
* Letters for African languages and Punjabi (total 10 characters) were added to '''Arabic Extended-A'''. (U+08BE-U+08C7)
* A sign Overline (total 1 character) was added to '''Oriya'''. (U+0B55)
* A Vedic Anusvara (total 1 character) was added to '''Malayalam'''. (U+0D04)
* A sign Candrabindu (total 1 character) was added to '''Sinhala'''. (U+0D81)
* Combining diacritical marks for Scottish phonology (total 2 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1ABF-U+1AC0)
* A Japanese symbol for Type A Electronics (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B97)
* Cross patties and a Tironian sign Capita Et (total 3 characters) were added to '''Supplemental Punctuation'''. (U+2E50-U+2E52)
* Letters for Taiwan and Cantonese language (total 5 characters) were added to '''Bopomofo Extended'''. (U+31BB-U+31BF)
* Some disunified ideographs (total 10 characters) were added to '''CJK Unified Ideographs Extension A'''. (U+4DB6-4DBF)
* Some ideographs for China (total 13 characters) were added to '''CJK Unified Ideographs'''. (U+9FF0-U+9FFC)
* Letters for Gaulish (total 6 characters) were added to '''Latin Extended-D'''. (U+A7C7-U+A7CA and U+A7F5-U+A7F6)
* An alternate sign Nasanta (total 1 character) was added to '''Syloti Nagri'''. (U+A82C)
* Letter R With Midle Tilde and modifier letters for Scottish phonology (total 4 characters) were added to '''Latin Extended-E'''. (U+AB68-U+AB6B)
* A symbol Ascia (total 1 character) was added to '''Ancient Symbols'''. (U+1019C)
* A letter for Pali (total 1 character) was added to '''Chakma'''. (U+11147)
* A vowel sign Prishthamatra E and Inverted Candrabindu (total 2 characters) were added to '''Sharada'''. (U+111CE and U+111CF)
* Double comma, sign Jihvamuliya and Uphadhmaniya (total 3 characters) were added to '''Newa'''. (U+1145A and U+11460-U+11461)
* Khitan Small Script Filler and reading marks for Vietnamese (total 3 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE4 and U+16FF0-U+16FF1)
* Some additional components (total 13 characters) were added to '''Tangut Components'''. (U+18AF3-U+18AFF)
* Creative Commons license symbols and Mask Work symbol (total 7 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10D-U+1F10F, U+1F16D-1F16F and U+1F1AD)
* Hut, Elevator, Pickup Truck and Roller Skate emoji (total 4 characters) were added to '''Transportation and Map Symbols'''. (U+1F6D6-U+1F6D7 and U+1F6FB-U+1F6FC)
* Arrows for legacy computing (total 2 characters) were added to '''Supplemental Arrows-C'''. (U+1F8B0-U+1F8B1)
* (total 10 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90C, U+1F972, U+1F977-U+1F978, U+1F9A3-U+1F9A4, U+1F9AB-U+1F9AD and U+1F9CB)
* (total 41 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA74, U+1FA83-U+1FA86, U+1FA96-U+1FAA8, U+1FAB0-U+1FAB6, U+1FAC0-U+1FAC2 and U+1FAD0-U+1FAD6)
* Gongche charaters for Kunqu Opera (total 7 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6D7-U+2A6DD)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Tagalog
|1700..170C, 170E..1714
|20
|-
|Mongolian
|1834, 1871, 1878
|3
|-
|Sundanese
|1BAB
|1
|-
|Currency Symbols
|20BF
|1
|-
|CJK Radicals Supplement
|2E80..2E99, 2E9B..2EF3
|115
|-
|Kangxi Radicals
|2F00..2FD5
|214
|-
|CJK Unified Ideographs Extension A
|3472, 38C7, 3DB8, 3FE0, 440B, 46E9
|6
|-
|CJK Unified Ideographs
|53FD, 6146, 6711, 671C, 6721, 6725, 6BD2, 7B9A, 87CE, 8956, 93BF, 9B97
|12
|-
|Latin Extended-D
|A764..A765
|2
|-
|Phags-pa
|A86D
|1
|-
|Tangut
|175F6, 17F0D, 17F8A, 17FA5, 180D6, 18139, 18147, 184F1, 18736
|9
|-
|Tangut Components
|18843, 18856, 1888C, 1890A, 18915, 1893B
|6
|-
|Adlam
|1E900..1E94A, 1E950..1E959, 1E95E..1E95F
|71
|-
|Miscellaneous Symbols and Pictographs
|1F3B1
|1
|-
|Supplemental Symbols and Pictographs
|1F995..1F998, 1F99B..1F99E, 1F9B0..1F9B3, 1F9E7
|13
|-
|CJK Unified Ideographs Extension B
|20219, 21249, 21827, 22C3A, 2327B, 23496, 2355E, 2363B, 236ED, 23839, 23FD5, 24261, 24726, 248F2, 2548E, 26657, 26C9E, 26FE1, 27334, 27C0E, 27CEF, 2A38C
|22
|-
|CJK Unified Ideographs Extension C
|2AED5, 2AEF3, 2AF76, 2B09F, 2B1C3, 2B1E5
|6
|-
|CJK Unified Ideographs Extension E
|2B83C, 2B8D9..2B8DA, 2B96F, 2BBD7, 2BD61, 2BE4A, 2BF1D, 2BF9D, 2C0B8, 2C142, 2C176, 2C316, 2C3FB, 2C402, 2C7AC, 2C82C, 2C83A, 2C9A1, 2CC88, 2CD68
|21
|-
|CJK Unified Ideographs Extension F
|2DC09, 2DE4A, 2EB7E, 2EB89
|4
|-
|CJK Compatibility Ideographs Supplement
|2F83B, 2F878, 2F8D6..2F8D7, 2F8DA, 2F8F0, 2F984, 2FA02
|8
|-
! colspan="2" |Total
!536
|}
== Unicode 14.0 ==
Unicode 14.0 was released on September 14, 2021. It encoded 144,697 characters, adding 838 new characters.
=== New blocks ===
* '''Arabic Extended-B''' (U+0870-U+089F), containing 41 characters, was added.
* '''Vithkuqi''' (U+10570-U+105BF), containing 70 characters, was added.
* '''Latin Extended-F''' (U+10780-U+107BF), containing 57 characters, was added.
* '''Old Uyghur''' (U+10F70-U+10FAF), containing 26 characters, was added.
* '''Unified Canadian Aboriginal Syllabics Extended-A''' (U+11AB0-U+11ABF), containing 16 characters, was added.
* '''Cypro-Minoan''' (U+12F90-U+12FFF), containing 99 characters, was added.
* '''Tangsa''' (U+16A70-U+16ACF), containing 89 characters, was added.
* '''Kana Extended-B''' (U+1AFF0-U+1AFFF), containing 13 characters, was added.
* '''Znamenny Musical Notation''' (U+1CF00-U+1CFFF), containing 185 characters, was added.
* '''Latin Extended-G''' (U+1DF00-U+1DFFF), containing 31 characters, was added.
* '''Toto''' (U+1E290-U+1E2BF), containing 31 characters, was added.
* '''Ethiopic Extended-B''' (U+1E7E0-U+1E7FF), containing 28 characters, was added.
=== Extended blocks ===
* An End of Text punctuation mark (total 1 character) was added to '''Arabic'''. (U+061D)
* Letters for Balti and Quranic orthography (total 12 characters) were added to '''Arabic Extended-A'''. (U+08B5 and U+08C8-U+08D2)
* A sign Nukta and letter Nakaara Pollu (total 2 characters) were added to '''Telugu'''. (U+0C3C and U+0C5D)
* A letter Nakaara Pollu (total 1 character) was added to '''Kannada'''. (U+0CDD)
* A letter Ra, sign Pamudpod and archaic letter Ra (total 3 characters) were added to '''Tagalog'''. (U+170D, U+1715 and U+171F)
* A fourth Free variation selector (total 1 character) was added to '''Mongolian'''. (U+180F)
* Combining diacritical marks for extended IPA (total 14 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1AC1-U+1ACE)
* An archaic ligature Jnya and punctuation marks (total 3 characters) were added to '''Balinese'''. (U+1B4C and U+1B7D-U+1B7E)
* A combining Dot Below Left (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFA)
* A Kyrgyz Som sign (total 1 character) was added to '''Currency Symbols'''. (U+20C0)
* A letter Caudate Chrivi (total 2 characters) were added to '''Glagolitic'''. (U+2C2F and U+2C5F)
* Medieval and phonetic punctuation marks (total 11 characters) were added to '''Supplemental Punctuation'''. (U+2E53-U+2E5D)
* Some ideographs for Macao (total 3 characters) were added to '''CJK Unified Ideographs'''. (U+9FFD-U+9FFF)
* Archaic European letters, modifier letters for Sokuon and Chatino orthography (total 13 characters) were added to '''Latin Extended-D'''. (U+A7C0-U+A7C1, U+A7D0-U+A7D1, U+A7D3, U+A7D5, U+A7D6-U+A7D9 and U+A7F2-U+A7F4)
* A modifier letter Wasla Above and honorifics (total 20 characters) were added to '''Arabic Presentation Forms-A'''. (U+FBC2, U+FD40-U+FD4F, U+FDCF and U+FDFE-U+FDFF)
* Letters for Old Tamil (total 6 characters) were added to '''Brahmi'''. (U+11070-U+11075)
* A vowel sign Vocalic R (total 1 character) was added to '''Khaiti'''. (U+110C2)
* An Abbreviation sign (total 1 character) was added to '''Takri'''. (U+116B9)
* Letters for Tai Ahom (total 7 characters) were added to '''Ahom'''. (U+11740-U+11746) The block was expanded from (U+11700-U+1173F) to (U+11700-U+1174F)
* Kana archaic letters (total 4 characters) were added to '''Kana Extended-A'''. (U+1B11F-U+1B122)
* Accidental symbols for Iranian classical music (total 2 characters) were added to '''Musical Symbols'''. (U+1D1E9-U+1D1EA)
* Playground Slide, Wheel and Ring Buoy emoji (total 3 characters) were added to '''Transportation and Map Symbols'''. (U+1F6DD-U+1F6DF)
* A Heavy Equals Sign emoji (total 1 character) was added to '''Geometric Shapes Extended'''. (U+1F7F0)
* A Troll and Face Holding Back Tears emoji (total 2 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F979 and U+1F9CC)
* (total 31 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA7B-U+1FA7C, U+1FAA9-U+1FAAC, U+1FAB7-U+1FABA, U+1FAC3-U+1FAC5, U+1FAD7-U+1FAD9, U+1FAE0-U+1FAE7 and U+1FAF0-U+1FAF6)
* Some ideographs for Macao (total 2 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6DE-U+2A6DF)
* Disunified ideographs and a G source ideograph for China, Hong Kong and Vietnam (total 4 characters) were added to '''CJK Unified Ideographs Extension C'''. (U+2B735-U+2B738)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Latin Extended-B
|0184..0185
|2
|-
|Arabic
|0674..0678, 06C5, 06C7, 06FE
|8
|-
|Letterlike Symbols
|210B, 2110, 2112, 211B, 212C, 2130..2131, 2133
|8
|-
|Enclosed Alphanumerics
|2460..24FF
|160
|-
|Dingbats
|2776..2793
|30
|-
|CJK Symbols and Punctuation
|3001..3029, 3030..303D, 303F
|56
|-
|CJK Strokes
|31C0..31E3
|36
|-
|Katakana Phonetic Extensions
|31F0..31FF
|16
|-
|Enclosed CJK Letters and Months
|3200..321E, 3220..32FF
|255
|-
|CJK Compatibiity
|3300..33FF
|256
|-
|CJK Unified Ideographs Extension A
|3777, 3B3F
|2
|-
|CJK Unified Ideographs
|5DD5, 652C, 6AC0
|3
|-
|Arabic Presentation Forms-A
|FBD7..FBD8, FBDD, FBE0..FBE1
|5
|-
|Vertical Forms
|FE10..FE19
|10
|-
|CJK Compatibiity Forms
|FE30..FE4F
|32
|-
|Small Form Variants
|FE50..FE52, FE54..FE66, FE68..FE6B
|26
|-
|Halfwidth and Fullwidth Forms
|FF01..FF9F, FFA1..FFBE, FFC2..FFC7, FFCA..FFCF, FFD2..FFD7, FFDA..FFDC, FFE0..FFE6, FFE8..FFEE
|225
|-
|Egyptian Hieroglyphs
|1300A, 13017, 1302D, 13032, 13034..13035, 13037..13038, 1303A..1303E, 1304E..1304F, 13055, 13057, 13068, 1309A, 130D2, 130D5, 130F6, 130FE, 13192, 1325F, 13267, 1326A, 13281, 13297, 1329E, 132B4, 132C1, 132E6, 13304, 1331F, 13378..1337B, 1337D..1337E, 133F3, 133FA..13403, 1340D, 13417, 1342B
|55
|-
|Mathematical Alphanumeric Symbols
|1D49C, 1D49E..1D49F, 1D4A2, 1D4A5..1D4A6, 1D4A9..1D4AC, 1D4AE..1D4B5
|18
|-
|Enclosed Alphanumeric Supplement
|1F100..1F1AD, 1F1E6..1F1FF
|200
|-
|Enclosed Ideographic Supplement
|1F200..1F202, 1F210..1F23B, 1F240..1F248, 1F250..1F251, 1F260..1F265
|64
|-
|Supplemental Symbols and Pictographs
|1F930
|1
|-
|CJK Unified Ideographs Extension B
|22ADC, 230F2, 25B27, 26F28
|4
|-
! colspan="2" |Total
!1472
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|1D49C FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE00
|
|chancery style # SCRIPT CAPITAL B
|-
|1D49E FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE00
|
|chancery style # SCRIPT CAPITAL E
|-
|2131 FE00
|
|chancery style # SCRIPT CAPITAL F
|-
|1D4A2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE00
|
|chancery style # SCRIPT CAPITAL H
|-
|2110 FE00
|
|chancery style # SCRIPT CAPITAL I
|-
|1D4A5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE00
|
|chancery style # SCRIPT CAPITAL L
|-
|2133 FE00
|
|chancery style # SCRIPT CAPITAL M
|-
|1D4A9 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE00
|
|chancery style # SCRIPT CAPITAL R
|-
|1D4AE FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Z
|-
|1D49C FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE01
|
|roundhand style # SCRIPT CAPITAL B
|-
|1D49E FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE01
|
|roundhand style # SCRIPT CAPITAL E
|-
|2131 FE01
|
|roundhand style # SCRIPT CAPITAL F
|-
|1D4A2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE01
|
|roundhand style # SCRIPT CAPITAL H
|-
|2110 FE01
|
|roundhand style # SCRIPT CAPITAL I
|-
|1D4A5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE01
|
|roundhand style # SCRIPT CAPITAL L
|-
|2133 FE01
|
|roundhand style # SCRIPT CAPITAL M
|-
|1D4A9 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE01
|
|roundhand style # SCRIPT CAPITAL R
|-
|1D4AE FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Z
|}
===Named Sequences===
Here is a table with new named character sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Name
|-
|0915 093C
|DEVANAGARI SEQUENCE FOR LETTER QA
|-
|0916 093C
|DEVANAGARI SEQUENCE FOR LETTER KHHA
|-
|0917 093C
|DEVANAGARI SEQUENCE FOR LETTER GHHA
|-
|091C 093C
|DEVANAGARI SEQUENCE FOR LETTER ZA
|-
|0921 093C
|DEVANAGARI SEQUENCE FOR LETTER DDDHA
|-
|0922 093C
|DEVANAGARI SEQUENCE FOR LETTER RHA
|-
|092B 093C
|DEVANAGARI SEQUENCE FOR LETTER FA
|-
|092F 093C
|DEVANAGARI SEQUENCE FOR LETTER YYA
|-
|09A1 09BC
|BENGALI SEQUENCE FOR LETTER RRA
|-
|09A2 09BC
|BENGALI SEQUENCE FOR LETTER RHA
|-
|09AF 09BC
|BENGALI SEQUENCE FOR LETTER YYA
|-
|0A32 0A3C
|GURMUKHI SEQUENCE FOR LETTER LLA
|-
|0A38 0A3C
|GURMUKHI SEQUENCE FOR LETTER SHA
|-
|0A16 0A3C
|GURMUKHI SEQUENCE FOR LETTER KHHA
|-
|0A17 0A3C
|GURMUKHI SEQUENCE FOR LETTER GHHA
|-
|0A1C 0A3C
|GURMUKHI SEQUENCE FOR LETTER ZA
|-
|0A2B 0A3C
|GURMUKHI SEQUENCE FOR LETTER FA
|-
|0B21 0B3C
|ORIYA SEQUENCE FOR LETTER RRA
|-
|0B22 0B3C
|ORIYA SEQUENCE FOR LETTER RHA
|}
== Unicode 15.0 ==
Unicode 15.0 was released on September 13, 2022. It encoded 149,186 characters, adding 4,489 new characters.
=== New blocks ===
* '''Arabic Extended-C''' (U+10EC0-U+10EFF), containing 3 characters, was added.
* '''Devanagari Extended-A''' (U+11B00-U+11B5F), containing 10 characters, was added.
* '''Kawi''' (U+11F00-U+11F5F), containing 86 characters, was added.
* '''Kaktovik Numerals''' (U+1D2C0-U+1D2DF), containing 20 characters, was added.
* '''Cyrillic Extended-D''' (U+1E030-U+1E08F), containing 63 characters, was added.
* '''Nag Mundari''' (U+1E4D0-U+1E4FF), containing 42 characters, was added.
* '''CJK Unified Ideographs Extension H''' (U+31350-U+323AF), containing 4192 characters, was added.
=== Extended blocks ===
* A Yamakkan (total 1 character) was added to '''Lao'''. (U+0ECE)
* A combining Anusvara Above Right (total 1 character) was added to '''Kannada'''. (U+0CF3)
* Letters Qa, Short I and Vocalic R (total 3 characters) were added to '''Khojki'''. (U+1123F-U+11241)
* An additional hieroglyph to Group V (total 1 character) was added to '''Egyptian Hieroglyphs'''
* Extended format controls (total 29 characters) were added to '''Egyptian Hieroglyph Format Controls'''. (U+13439-U+13455). The block was expanded from (U+13430-U+1343F) to (U+13430-U+1345F)
* Hiragana and Katakana Small Ko (total 2 characters) were added to '''Small Kana Extension'''. (U+1B132 and U+1B155)
* Letters for Malayalam transliteration (total 6 characters) were added to '''Latin Extended-G'''. (U+1DF25-U+1DF2A)
* A Wireless emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6DC)
* A Nine Pointed White Star (total 1 character) was be added to '''Geometric Shapes Extended'''. (U+1F7D9)
* A Lot of Fortune, eclipse symbols and symbols for dwarf planets (total 6 characters) were added to '''Alchemical symbols'''. (U+1F774-U+1F776 and U+1F77B-U+1F77F)
* (total 20 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA75-U+1FA77, U+1FA87-U+1FA88, U+1FAAD-U+1FAAF, U+1FABB-U+1FABF, U+1FACE-U+1FACF, U+1FADA-U+1FADB, U+1FAE8 and U+1FAF7-U+1FAF8)
* A disunified ideograph for Macao (total 1 character) was added to '''CJK Unified Ideographs Extension C'''. (U+2B739)
===Glyph Changes===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|IPA Extensions
|025E, 029A
|2
|-
|United Canadian Aboriginal Syllabics
|144B, 14D1, 1506, 15C0..15C3, 15E8..15EE, 1601, 1604..1607, 160A..160D, 1614..162D, 1630..163F, 1646..1647, 165A
|66
|-
|United Canadian Aboriginal Syllabics Extended
|18DB, 18EC, 18F1..18F2, 18F5
|5
|-
|Sundanese
|1BBF
|1
|-
|Optical Character Recognition
|2447
|1
|-
|CJK Unified Ideographs Extension A
|34DC, 3BF6, 3C43, 48B4, 4DBE
|5
|-
|CJK Unified Ideographs
|585F, 5F50, 6BC0, 7BC9, 833E
|5
|-
|Cyrillic Extended-B
|A66E
|1
|-
|Old Turkic
|10C47
|1
|-
|Egyptian Hieroglyphs
|various (new standardized variation sequences)
|94
|-
|Khitan Small Script
|18CCA
|1
|-
|Wancho (font update)
|1E2C0..1E2F9, 1E2FF
|59
|-
|Alchemical Symbols (font update)
|1F700..1F773
|116
|-
|CJK Unified Ideographs Extension B
|20048, 20A1C, 2143F, 21A5F, 21C08, 21FBA, 22ACF, 23392, 238A7, 23D8F, 23F4E, 25D20, 26E30, 27B48, 27C4F, 28633, 28B02, 28E9A, 29760, 2A60F
|20
|-
|CJK Unified Ideographs Extension C
|2B249
|1
|-
|CJK Unified Ideographs Extension E
|2BB37, 2BD7D, 2C151, 2C1E0, 2C2D6, 2C5CA, 2C810, 2CD34
|8
|-
|CJK Unified Ideographs Extension F
|2CF4E, 2D25D, 2D3EC, 2D6A7, 2D7BA, 2D979, 2DA74, 2DA97, 2DC13, 2DDC0, 2DF10, 2DF78, 2E05A, 2E0AE, 2E516, 2E640, 2E680, 2EA63
|18
|-
|CJK Compatibility Ideographs Supplement
|2F804, 2F805, 2F833, 2F835, 2F84C, 2F84F, 2F852, 2F855, 2F887, 2F88B, 2F899, 2F8A0, 2F8A6, 2F8A7, 2F8AD, 2F8B1, 2F8B4, 2F8B7, 2F8BA, 2F8D0, 2F8E0..2F8E2, 2F8E5, 2F8E6, 2F8FE, 2F900, 2F901, 2F907, 2F912, 2F922, 2F926, 2F936, 2F938, 2F94E, 2F959, 2F95F, 2F96C, 2F99F, 2F9B8, 2F9BA, 2F9D3, 2F9DB, 2F9DC, 2F9E8, 2F9EA, 2F9EE, 2FA00, 2FA0D, 2FA1B
|50
|-
|CJK Unified Ideographs Extension G
|302FC, 30723, 30A6D, 30CF7, 30DBF, 31006, 3105D
|7
|-
! colspan="2" |Total
!461
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|13091 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027
|-
|13092 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027A
|-
|13093 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D028
|-
|130A9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D047
|-
|1310F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F016
|-
|13117 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F023
|-
|1311C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F028
|-
|13121 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F032
|-
|13127 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F037A
|-
|13139 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13139 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13183 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH H005
|-
|13187 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH H008
|-
|131A0 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131A0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131B1 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B1 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B8 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M009
|-
|131B9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M010
|-
|131BA FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M010A
|-
|131CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M017
|-
|131EE FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131EE FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131F8 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N010
|-
|131F9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131F9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131FA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N012
|-
|131FA FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N012
|-
|13216 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH N035
|-
|13257 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O006
|-
|1327B FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH O029
|-
|1327F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O031
|-
|1327F FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O031
|-
|13285 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O036
|-
|1328C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O039
|-
|132A4 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132A4 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132AA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Q003
|-
|132CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH R024
|-
|132DC FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S010
|-
|132E7 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E7 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E9 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S020
|-
|132F8 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S033
|-
|132FD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S037
|-
|13302 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S042
|-
|13303 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S043
|-
|13307 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T001
|-
|13308 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T002
|-
|13310 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008
|-
|13311 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008A
|-
|13312 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13312 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13313 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13313 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13314 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T010
|-
|13314 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T010
|-
|1331B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331B FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T016A
|-
|13321 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13321 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13322 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13322 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13331 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T035
|-
|13331 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T035
|-
|1333B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U007
|-
|1333C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U008
|-
|1334A FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U022
|-
|13361 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U042
|-
|13373 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V007A
|-
|13377 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V010
|-
|13378 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V011
|-
|1337D FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V012A
|-
|13385 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V019
|-
|13399 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V026
|-
|1339A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V027
|-
|133AF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W001
|-
|133B0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W002
|-
|133BF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W014
|-
|133D3 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH X004A
|-
|133DD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH Y002
|-
|133F2 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z007
|-
|133F5 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z010
|-
|133F6 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z011
|-
|13403 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z015I
|-
|13416 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA008
|-
|13419 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|1341A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA012
|-
|13423 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA021
|-
|1342C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA030
|-
|1342E FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA032
|-
|13443 FE00
|
|expanded # EGYPTIAN HIEROGLYPH LOST SIGN
|-
|13444 FE00
|
|expanded # EGYPTIAN HIEROGLYPH HALF LOST SIGN
|-
|13445 FE00
|
|expanded # EGYPTIAN HIEROGLYPH TALL LOST SIGN
|-
|13446 FE00
|
|expanded # EGYPTIAN HIEROGLYPH WIDE LOST SIGN
|}
== Unicode 15.1 ==
Unicode 15.1 was released on September 12th, 2023. It encoded 149,813 characters, adding 627 new characters.
=== New Blocks ===
* '''CJK Unified Ideographs Extension I''' (U+2EBF0-U+2EE5F), containing 622 characters, was added.
=== Extended Blocks ===
* 4 Ideographic characters were added to '''Ideographic Description Characters'''. (U+2FFC-U+2FFF)
* An Ideographic subtraction (total 1 character) was added to '''CJK Strokes'''. (U+31EF)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|CJK Unified Ideographs Extension A
|357E, 358B..358E, 3599..359D, 35AF..35B0, 35B2..35B3, 35DF..35E1, 35EF, 360F, 3612, 3F94, 44D5, 48EE
|5
|-
|CJK Unified Ideographs
|5098, 512D, 517A, 5391, 54DB, 551C, 551F, 55B8, 55ED, 56AB, 591E, 594A, 5B2E, 5DFC..5DFD, 5EE4, 609E, 65B0, 65B3, 65D5, 65F2, 67B2, 6AB6, 6AEC, 6C69, 6FC2, 6FD3, 7019, 7361, 74BD, 7934, 820B, 826E, 83BB, 8412, 8456, 848A, 896F, 8E34, 8FD7, 9166, 9855, 985E, 9C4D
|5
|-
|Latin Extended-D
|A798
|1
|-
|Latin Extended-E
|AB5A
|1
|-
|Tangut
|17105, 172A4, 17BD1..17BD3, 17EF9, 18136
|59
|-
|Alchemical Symbols
|1F741, 1F747, 1F74C, 1F74F, 1F756, 1F758, 1F763, 1F768, 1F76D, 1F76E
|116
|-
|CJK Unified Ideographs Extension B
|20302, 2087A, 20C00, 230B7, 2339E, 236EF, 237C3, 23B87, 23CC0, 23CD9, 23E5E, 2486F, 249D6, 249E8, 24D6A, 2585E, 25D89, 26A5A..26A5B, 26A73, 26A82..26A83, 26A90, 26AA6, 26AA8, 26AD8, 27350, 279F8, 284A3, 28BBA, 29516, 29530
|20
|-
|CJK Unified Ideographs Extension C
|2A741, 2AB63, 2ACD8, 2AF6F, 2B173, 2B490
|1
|-
|CJK Unified Ideographs Extension E
|2BC2E, 2BF45, 2C04C, 2C13A, 2C43C, 2C43E, 2C816
|8
|-
|CJK Unified Ideographs Extension F
|2D1CC..2D1CD, 2D1DD, 2D1E4, 2D1F7, 2D203, 2D256, 2D266, 2D2A2, 2D2AC, 2D2DA
|18
|-
|CJK Unified Ideographs Extension G
|301D4, 301D9, 301E4, 301E8, 301FF..30200, 30205, 3020C, 30211, 30215..30217, 30220, 30234..30235, 30237
|7
|-
|CJK Unified Ideographs Extension H
|314B7, 31542, 31569, 31C7F, 31D5A, 31F68
|7
|-
! colspan="2" |Total
!164
|}
== Unicode 16.0 ==
Unicode 16.0 was released on September 10th, 2024. It encoded 154,998 characters, adding 5185 new characters.
=== New Blocks ===
* '''Todhri''' (U+105C0-U+105FF), containing 52 characters, was added.
* '''Garay''' (U+10D40-U+10D8F), containing 69 characters, was added.
* '''Tulu-Tigalari''' (U+11380-U+113FF), containing 80 characters, was added.
* '''Myanmar Extended-C''' (U+116D0-U+116FF), containing 20 characters, was added.
* '''Sunuwar''' (U+11BC0-U+11BFF), containing 44 characters, was added.
* '''Egyptian Hieroglyphs Extended-A''' (U+13460-U+143FF), containing 3995 characters, was added.
* '''Gurung Khema''' (U+16100-U+1613F), containing 58 characters, was added.
* '''Kirat Rai''' (U+16D40-U+16D7F), containing 58 characters, was added.
* '''Symbols for Legacy Computing Supplement''' (U+1CC00-U+1CEBF), containing 686 characters, was added.
* '''Ol Onal''' (U+1E5D0-U+1E5FF), containing 44 characters, was added.
=== Extended Blocks ===
* A combining diacritical mark for Jawi (total 1 character) was added to '''Arabic Extended-B'''. (U+0897)
* Inverted letters and a punctuation mark (total 3 characters) was added to '''Balinese'''. (U+1B4E-U+1B4F and U+1B7F)
* A letter Tje (total 2 characters) was added to '''Cyrillic Extended-C'''. (U+1C89-U+1C8A)
* Legacy computing symbols for Delete (total 3 characters) was added to '''Control Pictures'''. (U+2427-U+2429)
* CJK strokes HXG and SZP (total 2 characters) was added to '''CJK Strokes'''. (U+31E4-U+31E5)
* A capital Rams Horn, an S with Diagonal Stroke, Lamda Letters, and letters for Wakashan and Salishan Languages (total 6 characters) was added to '''Latin Extended-D'''. (U+A7CB-U+A7CD, U+A7DA-U+A7DC)
* A combining Alef overlay and letters with two dots vertically below (total 4 characters) was added to '''Arabic Extended-C'''. (U+10EC2-U+10EC4 and U+10EFC)
* A sign Nukta (total 1 character) was added to '''Kawi'''. (U+11F5A)
* A blank character (total 1 character) was added to '''Khitan Small Script'''. (U+18CFF)
* A rightwards arrow with hook, and arrows for legacy computing and arrows for Egyptology (total 12 characters) was added to '''Supplemental Arrows-C'''. (U+1F8B2-U+1F8BB, U+1F8C0-U+1F8C1)
* A Harp, Shovel, Leafless Tree, Fingerprint, Root Vegetable, Splatter, and Face with Bags Under Eyes (total 7 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA89, U+1FA8F, U+1FABE, U+1FAC6, U+1FADC, U+1FADF, and U+1FAE9)
* Graphic shapes for legacy computing (total 37 characters) was added to '''Symbols for Legacy Computing'''. (U+1FBCB-U+1FBEF)
== Unicode 17.0 ==
Unicode 17.0 was released on September 9th, 2025. It encoded 159,801 characters, adding 4,083 new characters.
=== New Blocks ===
* '''Sidetic''' (U+10940-U+1095F), containing 26 characters, was added.
* '''Sharada Supplement''' (U+11B60-U+11B7F), containing 8 characters, was added.
* '''Tolong Siki''' (U+11DB0-U+11DEF), containing 54 characters, was added.
* '''Beria Erfe''' (U+16EA0-U+16EDF), containing 50 characters, was added.
* '''Tangut Components Supplement''' (U+18D80-U+18DFF), containing 115 characters, was added.
* '''Miscellaneous Symbols Supplement''' (U+1CEC0-U+1CEFF), containing 34 characters, was added.
* '''Tai Yo''' (U+1E6C0-U+1E6FF), containing 55 characters, was added.
* '''CJK Unified Ideographs Extension J''' (U+323B0-U+3347F), containing 4298 characters, was added.
=== Extended Blocks ===
* A Noon with Ring Above (total 1 character) was added to '''Arabic Extended-B'''. (U+088F)
* An archaic ligature Shrii (total 1 character) was added to '''Telugu'''. (U+0C5C)
* An archaic ligature Shrii (total 1 character) was added to '''Kannada'''. (U+0CDC)
* Compound tone and harrington diacritics (total 26 characters) was to '''Combining Diacritical Marks Extended'''. (U+1ACF-U+1ADD, U+1AE0-U+1AEB)
* Saudi Riyal Sign (total 1 character) was added to '''Currency Symbols'''. (U+20C1)
* Equal Sign with Infinity Above (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B96)
* 2 capital letters for Middle English, Latin pharyngeal voiced fricative, and Modifier Letter Capital S (total 5 characters) was added to '''Latin Extended-D'''. (U+A7CE-U+A7CF, U+A7D2, U+A7D4, U+A7F1)
* Arabic Ligature Rahmatu Allaahi Alayh and Arabic Honorifics (total 25 characters) was added to '''Arabic Presentation Forms-A'''. (U+FBC3-U+FBD2, U+FD90, U+FD91, U+FDC8-U+FDCE)
* A Small Yeh Barree with Two Dots Below, Thin Noon, Biblical End of Verse, Yeh with Four Dots Below, Honorifics, Double Vertical Bar Below, and Small Low Noon (total 14 characters) was added to '''Arabic Extended-C'''. (U+10EC5-U+10EC7, U+10ED0-U+10ED8, U+10EFA-U+10EFB)
* Chinese Simplified and Traditional Er and Yangqin Slow Signs Two, Three, and Four (total 5 characters) was added to '''Ideographic Symbols and Punctuation'''. (U+16FF2-U+16FF6)
* Some additional ideographs (total 8 characters) was added to '''Tangut'''. (U+187F8-U+187FF)
* Additional ideographs (total 22 characters) was added to '''Tangut Supplement'''. (U+18D09-U+18D1E)
* Nine symbols (total 9 characters) was added to '''Symbols for Legacy Computing Supplement'''. (U+1CCFA-U+1CCFC, U+1CEBA-1CEBF)
* A Landslide (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D8)
* Historical asteroid symbols (total 4 characters) was added to '''Alchemical Symbols'''. (U+1F777-U+1F77A)
* Chemical symbols (total 9 characters) was added to '''Supplemental Arrows-C'''. (U+1F8D0-U+1F8D8)
* White and Black Chess Ferz and Alfil (total 4 characters) was added to '''Chess Symbols'''. (U+1FA54-U+1FA57)
* A trombone, treasure chest, hairy creature, orca, distorted face, and fight cloud (total 6 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA8A, U+1FA8E, U+1FAC8, U+1FACD, U+1FAEA, and U+1FAEF)
* An alarm bell symbol (total 1 character) was added to '''Symbols for Legacy Computing'''. (U+1FBFA)
* Additional ideographs (total 6 characters) was added to '''CJK Unified Ideographs Extension C'''. (U+2B73A-U+2B73F)
* Additional ideographs (total 12 characters) was added to '''CJK Unified Ideographs Extension E'''. (U+2CEA2-U+2CEAD)
== Unicode 18.0 ==
Unicode 18.0 will be released around September 2026. In August 2025, only 61 characters were accepted, but more were accepted in November 2025.
=== New Blocks ===
*'''Bengali Supplement''' (U+11DF0-U+11DFF), containing 2 characters, will be added.
* '''Archaic Cuneiform Numerals''' (U+12550-U+1268F), containing 311 characters, will be added.
* '''Jurchen''' (U+18E00-U+1919F), containing 914 characters, will be added.
* '''Jurchen Radicals''' (U+191A0-U+191DF), containing 51 characters, will be added.
* '''Musical Symbols Supplement''' (U+1D250-U+1D28F), containing 50 characters, will be added.
* '''Miscellaneous Symbols and Arrows Extended''' (U+1DB00-U+1DBFF), containing 29 characters, will be added.
* '''Seal Script''' (U+3D000-U+3FC3F), containing 11328 characters, will be added.
=== Extended Blocks ===
* Modifier letters Eh, Ini, and Yi (total 3 characters) will be added to '''Armenian'''. (U+0558, U+058B-U+058C)
* Hebrew Point Sheva Na Mudgash and Hebrew Point Dagesh Hazaq Mudgash (total 2 characters) will be added to '''Hebrew'''. (U+05C8-U+05C9)
* Signs for dot above and double dot above (total 2 characters) will be added to '''Oriya'''. (U+0B53-U+0B54)
* Alternate positioned IPA diacritics and diacritics for Chao and Khoe (total 7 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1ADE-U+1ADF, U+1AEC-U+1AF0)
* Latin subscript small letter w, y, and z and Modifier letter high and low vertical line (total 4 characters) will be added to '''Superscripts and Subscripts'''. (U+208F, U+209D-U+209F)
* Rufiyaa Sign, UAE Dirham Sign, and Omani Rial (total 3 characters) will be added to '''Currency Symbols'''. (U+20C2-U+20C4)
* Two Wiggly Exclamation Marks and Two Parenthesis with Middle Ring (total 4 characters) will be added to '''Supplemental Punctuation'''. (U+2E60-U+2E63)
* Latin capital letter closed omega and Latin capital letter r with long leg and (total 2 characters) will be added to '''Latin Extended-D'''. (U+A7DD and U+A7E2)
* Latin capital letter script r and script r with ring (total 2 characters) will be added to '''Latin Extended-E'''. (U+AB6C-U+AB6D)
* Latin modifier letters for clicks (total 5 characters) will be added to '''Latin Extended-F'''. (U+107BB-U+107BF)
* Arabic Crown Letters, Quranic Characters, and Arabic Crown (total 39 characters) will be added to '''Arabic Extended-C'''. (U+10EC9-U+10ECF, U+10ED9-U+10EEE, U+10EF0-U+10EF9)
* Devanagari Letter Alternate Ddda (total 1 character) will be added to '''Devanagari Extended-A'''. (U+11B0A)
* Extended Cuneiform Numeric Signs (total 12 characters) will be added to '''Cuneiform Numbers and Punctuation'''. (U+1246F, U+12475-U+1247F)
* Jurchen Small Script characters (total 5 characters) will be added to '''Khitan Small Script'''. (U+18CD6-U+18CDA)
* Two additional ideographs (total 2 characters) will be added to '''Tangut Supplement'''. (U+18D1F-U+18D20)
* Hiragana Digraph Koto, Katakana Diagraphs Toki, Tote, and Yori, letters alternate Ne, and Wi (total 6 characters) will be added to '''Kana Extended-A'''. (U+1B123-U+1B128)
* Katakana letter small archaic Ye (total 1 character) will be added to '''Small Kana Extension'''. (U+1B168)
* Leibnizian alchemical symbols, Leibnizian cossic characters, and Leibnizian mathematical signs and symbols (total 19 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED2-U+1CED4, U+1CEDD-U+1CEDF, U+1CEF1-U+1CEFD)
* Stein Zimmerman Symbols, Digit Slash Symbols, and other Symbols (total 23 characters) will be added to '''Musical Symbols'''. (U+1D127-U+1D128, U+1D1EB-U+1D1FF)
* Mathematical italic long s with descender s (U+1D6A6) will be added to '''Mathematical Alphanumeric Symbols'''.
* Affricate ligatures, letters with palatal hook, barred letters, RFE letters, Initial Teaching Alphabet, English Phonotypic Alphabet, Leibnizian cossic characters, and modifier letters (total 151 characters) will be added to '''Latin Extended-G'''. (U+1DF1F-U+1DF24, U+1DF2B-U+1DF81, U+1DF90-U+1DF96, U+1DFCD-U+1DFFF)
* A Tomobiki symbol (total 1 character) will be added to '''Enclosed Alphanumeric Supplement'''. (U+1F1AE)
* A lighthouse (total 1 character) will be added to '''Transport and Map Symbols'''. (U+1F6D9)
* A black circle with white vertical bar, and Extended Geometric Shapes (total 17 characters) will be added to '''Geometric Shapes Extended'''. (U+1F7DA-U+1F7DB, U+1F7F1-U+1F7FF)
* A meteor, eraser, net with handle, monarch butterfly, pickle, cracking face, leftwards thumb sign, and rightwards thumb sign (total 8 characters) will be added to '''Symbols and Pictographs Extended-A'''. (U+1FA8B-1FA8D, U+1FACC, U+1FADD, U+1FAEB, U+1FAF9-1FAFA)
* An additional ideograph (total 1 character) will be added to '''CJK Unified Ideographs Extension D'''. (U+2B81E)
== Code Points Provisionally Assigned==
This is a section where you can add any upcoming Unicode characters that have been [https://www.unicode.org/alloc/Pipeline.html#codepoint_reservation provisionally assigned for mature proposals] (but not yet accepted) for a future update of The Unicode Standard.
=== New Blocks ===
* '''Arabic Extended-D''' (U+10D90-U+10E5F), containing 3 characters, will be added.
* '''Sirmauri''' (U+11850-U+1188F), containing 55 characters, will be added.
* '''Leke''' (U+11B80-U+11BBF), containing 55 characters, will be added.
* '''Proto-Cuneiform''' (U+12690-U+12ECF), containing 1392 characters, will be added.
* '''Chisoi''' (U+16D80-U+16DAF), containing 40 characters, will be added.
* '''Mwangwego''' (U+16E00-U+16E3F), containing 64 characters, will be added.
* '''Shaaldaa''' (U+1C800-U+1CB2F), containing 804 characters, will be added.
* '''Leibnizian Ambiguous Signs''' (U+1DC00-U+1DC3F), containing 54 characters, will be added.
=== Extended Blocks ===
* Telugu Sign Spacing Candrabindu (total 1 character) will be added to '''Telugu'''. (U+0C70)
* Kannada Signs Ardhanusvara and Combining Anusvara Above (total 1 character) will be added to '''Kannada'''. (U+0CF0 and U+0CF4)
* Mongolian Letter Manchu Alternative Ue (total 1 character) will be added to '''Mongolian'''. (U+1879)
* Combining Grave-Acute-Macron, Combining inverted lazy s Above, and Combining comma Above and acute (total 3 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1AF1-U+1AF3)
* Cyrillic small letter Yeru with connecting bar (total 1 character) will be added to '''Cyrillic Extended-C'''. (U+1C8B)
* Belarusian Ruble sign and Ruble sign with double vertical stem (total 2 characters) will be added to '''Currency Symbols'''. (U+20C5, U+20CF)
* Combining Long Triple Solidus Overlay and Combining Saltire Overlay (total 2 characters) will be added to '''Combining Diacritical Marks for Symbols'''. (U+20F1-U+20F2)
* Latin capital and small letter i with oblique stroke (total 2 characters) will be added to '''Latin Extended-D'''. (U+A7De-U+A7DF)
* Latin capital letter u with left hook (total 1 character) will be added to '''Latin Extended-E'''. (U+AB6E)
* Arabic Dotless Half-Yeh, Half-Yeh, Dotless Half-Jeem and Astronomical Kaf (total 4 characters) will be added to '''Arabic Extended-C'''. (U+10EC0-U+10EC1, U+10EC8, U+10EEF)
* Brahmi minimizing virama (total 1 character) will be added to '''Brahmi'''. (U+1107E)
* Tulu-Tigalari letter combining anusvara above, signs om pushpika with tail and shrii pushpika, and letter archaic II (total 5 characters) will be added to '''Tulu-Tigalari'''. (U+113CB, U+113D9-U+113DB)
* Newa Letter Heavy Ya (total 1 character) will be added to '''Newa'''. (U+11462)
* Dogra Signs Candrabindu and Avaragha (total 2 characters) will be added to '''Dogra'''. (U+1183C-U+1183D)
* Devanagari Jivamuliya and Upadhmaniya (total 2 characters) will be added to '''Devanagari Extended-A'''. (U+11B0B-U+11B0C)
* Alchemical Symbol for Calx-2 and Alchemical Symbol for Retort-2 (total 2 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED1, U+1CED5)
* Musical Symbol down arrowhead breath mark (total 1 character) will be added to '''Musical Symbols Supplement'''. (U+1D282)
* Small w with palatal hook, small n and r with double middle tilde, small capital i with retroflex hook, small open q, x with stroke, small wavy y, schwa with right hook, Romance dialectology symbols, zh ligature, Albanian letter edhe, Albanian Frashëri letters, Modifier letter capital y, and modifier letter accents (total 26 characters) will be added to '''Latin Extended-G'''. (U+1DF82-U+1DF8F, U+1DF97-U+1DFA3, U+1DFC4-U+1DFCD)
*Arabic Astronomical zero and five astronomical symbols (total 6 characters) will be added to Arabic Mathematical Alphabetic Symbols (U+1EEE0-U+1EEE5)
==Roadmap Blocks==
This is a section where proportional maps of proposed allocations to Unicode and ISO/IEC 10646 are presented. Italic indicates scripts for which detailed proposals have not yet been written.<ref>[https://unicode.org/roadmaps/smp/]</ref>
* '''Northern Palaeohispanic''' (U+10200-U+1023F)
* '''Southern Palaeohispanic''' (U+10240-U+1027F)
* '''''Shavian Quikscript''' (U+103E0-U+103FF)''
* '''Combining Diacritical Marks Extended-A''' (U+107C0-U+107FF)
* '''Proto-Sinaitic''' (U+108B0-U+108DF)
* '''''Numidian''' (U+10960-U+1097F)''
* '''Balti''' (U+10AA0-U+10ABF)
* '''Book Pahlavi''' (U+10BB0-U+10BDF)
* '''Baburi''' (U+10BE0-U+10BFF)
* '''Arabic Extended-D''' (U+10D90-U+10E5F)
* '''Landa''' (U+11250-U+1127F)
* '''Tani Lipi''' (U+114E0-U+114FF)
* '''Ranjana''' (U+11500-U+1157F)
* '''Zou''' (U+11750-U+117AF)
* '''Pyu''' (U+117B0-U+117FF)
* '''Vateluttu''' (U+11960-U+1199F)
* '''Balti-B''' (U+11CC0-U+11CFF)
* '''Tocharian''' (U+11E00-U+11E6F)
* '''Khotanese''' (U+11E70-U+11ECF)
* '''Pallava''' (U+11F60-U+11FAF)
* '''''Egyptian Hieroglyphs Extended-B''' (U+14680-U+151FF)''
* '''Mayan Hieroglyphs''' (U+15500-U+15AFF)
* '''Kore Sebeli''' (U+15B00-U+15B6F)<!--proposed to be accepted, 93 characters-->
* '''Mandombe''' (U+15B80-U+15FFF)
* '''Kurukh Banna''' (U+16140-U+1618F)
* '''Moon''' (U+161A0-U+161FF)
* '''Blissymbols''' (U+16200-U+167FF)
* '''Woleai''' (U+16B90-U+16BFF)
* '''Kpelle''' (U+16C00-U+16C7F)
* '''Tikamuli''' (U+16C80-U+16CBF)
* '''Tangsa (Khimhun)''' (U+16CD0-U+16CFF)
* '''Afaka''' (U+16D00-U+16D3F)
* '''Kulitan''' (U+16DD0-U+16DFF)
* '''''Bopomofo Extended-A''' (U+16FA0-U+16FAF)''
* '''Kanbun Extended-A''' (U+16FB0-U+16FDF)
* '''Khitan Large Script''' (U+19200-U+199FF)
* '''Pau Cin Hau Syllabary''' (U+19E00-U+1A2FF)
* '''Eskaya''' (U+1A300-U+1A75F)
* '''Rejang Extended''' (U+1A760-U+1A77F)
* '''''Kaida''''' (U+1A780-U+1A7FF)
* '''Naxi Dongba''' (U+1A800-U+1ACFF)
* '''''Naxi Geba''' (U+1AD00-U+1AFCF)''
* '''''Kana Extended-C''' (U+1AFD0-U+1AFEF)''
* '''Shuishu Logograms''' (U+1B300-U+1B5FF)
* '''Lisu Syllabic Script''' (U+1B600-U+1B9FF)
* '''Indus''' (U+1BA00-U+1BB8F)
* '''Pitman Shorthand''' (U+1BCB0-U+1BCFF)
* '''Proto-Elamite''' (U+1BE00-U+1C37F)
* '''Linear Elamite''' (U+1C380-U+1C4FF)
* '''Ndiko Jonam''' (U+1CB30-U+1CB7F)
* '''N<nowiki>'</nowiki>ti''' (U+1CB80-U+1CBAF)
* '''Old Chinese Musical Symbols (Flute and Pipa)''' (U+1D290-U+1D2BF)
* '''''Mathematical Alphanumeric Symbols Supplement''' (U+1D380-U+1D3FF)''
* '''Jianzi Format Controls''' (U+1DAE0-U+1DAFF)
* '''Eebee Hmong''' (U+1E150-U+1E1FF)
* '''Western Cham''' (U+1E200-U+1E26F)
* '''Loma''' (U+1E300-U+1E41F)
* '''Bagam''' (U+1E420-U+1E4CF)
* '''Pungchen''' (U+1E500-U+1E52F)
* '''''Pungchung''' (U+1E530-U+1E55F)''
* '''''Marchung''' (U+1E560-U+1E59F)''
* '''Brusha''' (U+1E5A0-U+1E5CF)
* '''''Chola''' (U+1E600-U+1E65F)''
* '''Box-Headed''' (U+1E660-U+1E6BF)
* '''Lampung''' (U+1E700-U+1E73F)
* '''Kerinci''' (U+1E740-U+1E76F)
* '''Buginese Supplement''' (U+1E770-U+1E7BF)
* '''''Lontara Bilang-Bilang''' (U+1E7C0-U+1E7DF)''
* '''N'Ko Supplement''' (U+1E960-1E97F)
* '''''Byblos''''' (U+1EB90-U+1EBFF)
* '''Persian Siyaq Numbers''' (U+1EC00-U+1EC7F)
* '''Diwani Siyaq Numbers''' (U+1ECC0-U+1ECFF)
* '''''Extended Pictographic Characters''' (U+1FC00-U+1FFFF)''
== References ==
{{reflist}}
h9ymczu2ll7vopd3pcs2a1z3ahloi15
4656282
4656281
2026-08-04T18:33:56Z
Alexlatham96
377450
/* Code Points Provisionally Assigned */
4656282
wikitext
text/x-wiki
{{pp-protected|small=yes}}
{{Unicode page}}
{{TOC right}}
{{refimprove|date=June 2017}}
This page is about each version specification, and the differences between the versions.
== Unicode 1.0 ==
Unicode 1.0 was the first version of Unicode, released October 1991. It encoded 7,094 new characters.
=== “Blocks” ===
This version of Unicode did not formally group characters in blocks. But in comparison with version 2.0, the following “blocks” were available:
U+0000-U+FFFD
51 Blocks
* '''Basic Latin (formerly called ASCII)''' (U+0000-U+007F), containing 128 characters.
* '''Latin-1 Supplement (formerly called Latin1)''' (U+0080-U+00FF), containing 128 characters.
* '''Latin Extended-A''' '''(formerly called European Latin)''' (U+0100-U+017F), containing 127 characters.
* '''Latin Extended-B''' '''(formerly called Extended Latin)''' (U+0180-U+01FF), containing 113 characters.
* '''IPA Extensions''' '''(formerly called Standard Phonetic)''' (U+0250-U+02AF), containing 89 characters.
* '''Spacing Modifier Letters''' '''(formerly called Modifier Letters)''' (U+02B0-U+02FF), containing 57 characters.
* '''Combining Diacritical Marks''' '''(formerly called Generic Diacritical Marks)''' (U+0300-U+036F), containing 66 characters.
* '''Greek and Coptic''' '''(formerly called Greek)''' (U+0370-U+03FF), containing 112 characters.
* '''Cyrillic''' (U+0400-U+04FF), containing 192 characters.
* '''Armenian''' (U+0530-U+058F), containing 84 characters.
* '''Hebrew''' (U+0590-U+05FF), containing 52 characters.
* '''Arabic''' (U+0600-U+06FF), containing 169 characters.
* '''Devanagari''' (U+0900-U+097F), containing 104 characters.
* '''Bengali''' (U+0980-U+09FF), containing 89 characters.
* '''Gurmukhi''' (U+0A00-U+0A7F), containing 74 characters.
* '''Gujarati''' (U+0A80-U+0AFF), containing 75 characters.
* '''Oriya''' (U+0B00-U+0B7F), containing 78 characters.
* '''Tamil''' (U+0B80-U+0BFF), containing 61 characters.
* '''Telugu''' (U+0C00-U+0C7F), containing 80 characters.
* '''Kannada''' (U+0C80-U+0CFF), containing 80 characters.
* '''Malayalam''' (U+0D00-U+0D7F), containing 78 characters.
* '''Thai''' (U+0E00-U+0E7F), containing 92 characters.
* '''Lao''' (U+0E80-U+0EFF), containing 70 characters.
* '''Tibetan''' (U+1000-U+105F), containing 71 characters.
* '''Georgian''' (U+10A0-U+10FF), containing 78 characters.
* '''General Punctuation''' (U+2000-U+206F), containing 67 characters.
* '''Superscripts and Subscripts''' (U+2070-U+209F), containing 28 characters.
* '''Currency Symbols''' (U+20A0-U+20CF), containing 11 characters.
* '''Combining Marks for Symbols''' '''(formerly called Diacritical Marks for Symbols)''' (U+20D0-U+20FF), containing 18 characters.
* '''Letterlike Symbols''' (U+2100-U+214F), containing 57 characters.
* '''Number Forms''' (U+2150-U+218F), containing 48 characters.
* '''Arrows''' (U+2190-U+21FF), containing 91 characters.
* '''Mathematical Operators''' (U+2200-U+22FF), containing 242 characters.
* '''Miscellaneous Technical''' (U+2300-U+23FF), containing 43 characters.
* '''Control Pictures''' '''(formerly called Pictures for Control Codes)''' (U+2400-U+243F), containing 37 characters.
* '''Optical Character Recognition''' (U+2440-U+245F), containing 11 characters.
* '''Enclosed Alphanumerics''' (U+2460-U+24FF), containing 139 characters.
* '''Box Drawing''' '''(formerly called Form and Chart Components)''' (U+2500-U+257F), containing 128 characters.
* '''Block Elements''' '''(formerly called Blocks)''' (U+2580-U+259F), containing 22 characters.
* '''Geometric Shapes''' (U+25A0-U+25FF), containing 79 characters.
* '''Miscellaneous Symbols''' '''(formerly called Miscellaneous Dingbats)''' (U+2600-U+26FF), containing 106 characters.
* '''Dingbats''' '''(formerly called Zapf Dingbats)''' (U+2700-U+27BF), containing 160 characters.
* '''CJK Symbols and Punctuation''' (U+3000-U+303F), containing 56 characters.
* '''Hiragana''' (U+3040-U+309F), containing 90 characters.
* '''Katakana''' (U+30A0-U+30FF), containing 90 characters.
* '''Bopomofo''' (U+3100-U+312F), containing 40 characters.
* '''Hangul Compatibility Jamo (formerly called Hangul Elements)''' (U+3130-U+318F), containing 94 characters.
* '''Kanbun (formerly called CJK Miscellaneous)''' (U+3190-U+31FF), containing 16 characters.
* '''Enclosed CJK Letters and Months''' '''(formerly called''' '''Enclosed CJK Letters and Ideographs)''' (U+3200-U+32FF), containing 191 characters.
* '''CJK Compatibility''' '''(formerly called CJK Squared Words for U+3300-U+337F and CJK Squared Abbreviations for U+3380-33FF)''' (U+3300-U+33FF), containing 187 characters.
* '''Hangul''' (U+3400-U+3D2D), containing 2,350 characters.
* '''Private Use Area''' (U+E000-U+FDFF), reserved for 5,632 characters.
* '''CJK Compatibility Forms''' '''(formerly called CNS 11643 Compatibility)''' (U+FE30-U+FE4F), containing 28 characters.
* '''Small Form Variants''' '''(formerly called Small Variants)''' (U+FE50-U+FE6F), containing 26 characters.
* '''Arabic Presentation Forms-B''' '''(formerly called Basic Glyphs for Arabic Language)''' (U+FE70-U+FEFF), containing 140 characters.
* '''Halfwidth and Fullwidth Forms''' '''(formerly called Halfwidth and Fullwidth Variants)''' (U+FF00-U+FFEF), containing 216 characters.
* '''Specials''' '''(formerly called Special)''' (U+FFF0-U+FFFF), containing 1 character.
== Unicode 1.0.1 ==
Unicode 1.0.1 was released June 1992. It encoded 28,292 characters, adding 21,204 new characters and removing 6 characters, for a net increase of 21,198 characters.
=== New blocks ===
* '''CJK Unified Ideographs''' (U+4E00-U+9FFF), containing 20,902 Han Ideographs for Chinese, Japanese and Korean, was added.
* '''CJK Compatibility Ideographs''' (U+F900-U+FAFF), containing 302 Han Ideographs for compatibility with existing character sets, was added.
=== Removed characters ===
* Letters Ka and Kha with Ogonek (total 4 characters) were removed from '''Cyrillic'''. (U+04C5-U+04C6 and U+04C9-U+04CA)
* APL Compose Operator and APL Out (total 2 characters) were removed from '''Miscellaneous Technical'''. (U+2300-U+2301)
=== Rearranged characters ===
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
*'''Circled Katakana:''' ''The characters well be arranged in modern order: e.g., A, I, U, E, O, KA, KI'' (U+32D0-U+32FE)
*'''Basic Glyphs For Arabic Language:''' ''The character shapes will be arranged in different order: Isolate, Final, Initial and Medial'' (U+FE80-FEFC)
=== Characters with semantics changed ===
*'''Zero Width Non-Joiner''' [ZWNJ] (U+20DC)
*'''Zero Width Joiner''' [ZWJ] (U+20DD)
== Unicode 1.1 ==
Unicode 1.1 was released June 1993. It encoded 34,168 characters, adding 5,969 new characters and removing 93 characters, for a net increase of 5,876 characters. It finalized the long anticipated Han Unification.
=== New blocks ===
* '''Hangul Jamo''' (U+1100-U+11FF), containing 240 ''jamo'' for the Hangul script, was added.
* '''Latin Extended Additional''' (U+1E00-U+1EFF), containing 245 precomposed characters for transliteration and Vietnamese, was added.
* '''Greek Extended''' (U+1F00-U+1FFF), containing 233 precomposed characters for polytonic Greek, was added.
* '''Hangul Supplementary-A''' (U+3D2E-U+44B7), containing 1,930 precomposed syllables for the Hangul script, was added.
* '''Hangul Supplementary-B''' (U+44B8-U+4DFF), containing 2,376 precomposed syllables for the Hangul script, was added.
* '''Alphabetic Presentation Forms''' (U+FB00-U+FB4F), containing 57 precomposed characters and ligatures, was added.
* '''Arabic Presentation Forms-A''' (U+FB50-U+FDFF), containing 593 combinations of Arabic letters, was added.
* '''Combining Half Marks''' (U+FE20-U+FE2F), containing 4 halves of diacritical marks, was added.
=== Extended blocks ===
* The long S (ſ) (total 1 character) was added to '''Latin Extended-A'''. (U+017F)
* The Hungarian Dz, characters for transliteration purposes and precomposed characters with double grave and inverted breve (total 35 characters) were added to '''Latin Extended-B''' (U+01F1-U+01F5 and U+01FA-U+0217). The block was expanded from (U+0180-U+01FF) to (U+0180-U+024F)
* Diacritics for polytonic Greek and double width diacritics (total 6 characters) were added to '''Combining Diacritical Marks'''. (U+0342-U+0345 and U+0360-U+0361)
* Compatibility character now deprecated, Ano Teleia, and other characters (total 5 characters) were added to '''Greek and Coptic''' (U+0374-U+0375, U+037A, U+037E and U+0387).
* Additional characters for non-Slavic languages (total 38 characters) were added to '''Cyrillic'''. (U+04D0-U+04EB, U+04EE-U+04F5 and U+04F8-U+04F9)
* A ligature of Ech and Yiwn (և) (total 1 character) was added to '''Armenian'''. (U+0587)
* One deprecated compatibility character and several characters for biblical texts (total 25 characters) were added to '''Arabic'''. (U+066D and U+06D6-U+06ED)
* A sign Virama (total 1 character) was added to '''Gurmukhi''' (U+0A4D).
* Letters Candra O and E (total 3 characters) were added to '''Gujarati'''. (U+0A8D, U+0A91 and U+0AC9)
* An Ai Length mark (total 1 character) was added to '''Oriya'''. (U+0B56)
* An undertie, a pair of brackets and six formatting characters now deprecated (total 9 characters) were added to '''General Punctuation'''. (U+203F, U+2045-U+2046 and U+206A-U+206F)
* Some additional symbols and the complete set of APL functional symbols (total 79 characters) were added to '''Miscellaneous Technical'''. (U+2300 and U+232D-U+237A)
* A large circle (◯) (total 1 character) was added to '''Geometric Shapes'''. (U+25EF)
* The ideographic telegraph line feed separator symbol (〷) (total 1 character) was added to '''CJK Symbols and Punctuation'''. (U+3037)
* Four Katakana letters not in use since 1945 (total 4 characters) were added to '''Katakana'''. (U+30F7-U+30FA)
* Ideographic telegraph symbols for the twelve months (total 12 characters) were added to '''Enclosed CJK Letters and Months'''. (U+32C0-U+32CB)
* Ideographic telegraph symbols for hours and days and six additional measure units (total 62 characters) were added to '''CJK Compatibility'''. (U+3358-U+3376 and U+33E0-U+33FE)
* Some more space (total 2,304 characters) was added to the '''Private Use Area'''.
* Seven halfwidth geometric shapes (total 7 characters) were added to '''Halfwidth and Fullwidth Forms'''. (U+FFE8-U+FFEE)
=== Removed blocks ===
* '''Tibetan''', containing 71 letters for the Tibetan script, was removed from the Unicode standard.
=== Removed characters ===
* A total of 10 characters were removed from '''Greek and Coptic'''. (U+0370-U+0372, U+03D7-U+03D9, U+03DB, U+03DD, U+03DF, and U+03E1)
* Point Varika (total 1 character) was removed from ''Hebrew''. (U+05F5)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Thai'''. (U+0E70-U+0E74)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Lao'''. (U+0EF0-U+0EF4)
* An Ideographic Ditto Mark (total 1 character) was removed from '''CJK Symbols and Punctuation''' (U+3004) and merged with CJK Unified Ideograph-4EDD.
=== Rearranged characters ===
* Greek character U+03F3 was changed from Spacing Tonos to Letter Yot.
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
== Unicode 2.0 ==
Unicode 2.0 was released July 1996. It encoded 38,885 characters, adding 11,373 new characters and removing 6,656 characters, for a net increase of 4,717 characters. This was the first Unicode version to reserve blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Hangul Syllables''' (U+AC00-U+D7AF), containing 11,172 precomposed syllables for the Hangul script, was added.
* '''High Surrogates''' (U+D800-U+DB7F), setting aside 896 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''High Private Use Surrogates''' (U+DB80-U+DBFF), setting aside 128 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Low Surrogates''' (U+DC00-U+DFFF), setting aside 1,024 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Supplementary Private Use Area-A''' (U+F0000-U+FFFFF), reserving 65,534 characters for private use, was added.
* '''Supplementary Private Use Area-B''' (U+100000-U+10FFFF), reserving 65,534 characters for private use, was added.
=== Reinstated blocks ===
* '''Tibetan''' (U+0F00-U+0FFF), now containing 168 characters for the Tibetan script including religious signs, was readded.
=== Removed blocks ===
* '''Hangul''', containing 2,350 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-A''', containing 1,930 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-B''', containing 2,376 precomposed syllables for the Hangul script, was removed from the Unicode standard.
=== Extended blocks ===
* Cantillation marks for use in religious texts (total 31 characters) were added to '''Hebrew'''. (U+0591-U+05A1, U+05A3-U+05AF and U+05C4)
* A long S with Dot Above (total 1 character) was added to '''Latin Extended Additional'''. (U+1E9B)
* A Vietnamese Dong sign (total 1 character) was added to '''Currency Symbols'''. (U+20AB)
== Unicode 2.1 ==
Unicode 2.1 was released May 1998. It encoded 38,887 characters, adding only 2 new characters.
=== Extended blocks ===
* A Euro sign (total 1 character) was added to '''Currency Symbols'''. (U+20AC)
* An Object Replacement Character (total 1 character) was added to '''Specials'''. (U+FFFC)
== Unicode 3.0 ==
Unicode 3.0 was released September 1999. It was a big update and encoded 49,194 characters, adding 10,307 new characters.
=== New blocks ===
* '''Syriac''' (U+0700-U+074F), containing 71 characters used for writing in Syriac script, was added.
* '''Thaana''' (U+0780-U+07BF), containing 49 characters used for writing in Thaana script, was added.
* '''Sinhala''' (U+0D80-U+0DFF), containing 80 characters for the Sinhala script, was added.
* '''Myanmar''' (U+1000-U+109F), containing 78 characters for the Burmese script, was added.
* '''Ethiopic''' (U+1200-U+137F), containing 345 syllables and punctuation marks for the Ethiopic script, was added.
* '''Cherokee''' (U+13A0-U+13FF), containing 85 syllables for the Cherokee script, was added.
* '''Unified Canadian Aboriginal Syllabics''' (U+1400-U+167F), containing 630 syllables and punctuation marks for writing in indigenous languages of Canada, was added.
* '''Ogham''' (U+1680-U+169F), containing 29 characters for the ancient Ogham script, was added.
* '''Runic''' (U+16A0-U+16FF), containing 81 characters for the Germanic runes, was added.
* '''Khmer''' (U+1780-U+17FF), containing 103 characters for the Khmer script, was added.
* '''Mongolian''' (U+1800-U+18AF), containing 155 characters for the classical Mongolian script, was added.
* '''Braille Patterns''' (U+2800-U+28FF), containing 256 Braille letters, was added.
* '''CJK Radicals Supplement''' (U+2E80-U+2EFF), containing 115 non-Kangxi radicals, was added.
* '''Kangxi Radicals''' (U+2F00-U+2FDF), containing 214 radicals from the Kangxi dictionary, was added.
* '''Ideographic Description Characters''' (U+2FF0-U+2FFF), containing 12 characters used to describe a Han ideograph not available in the font, was added.
* '''Bopomofo Extended''' (U+31A0-U+31BF), containing 24 characters used for phonetic transcription of minority languages of Taiwan, was added.
* '''CJK Unified Ideographs Extension A''' (U+3400-U+4DBF), containing 6,582 additional Han Ideographs, was added.
* '''Yi Syllables''' (U+A000-U+A48F), containing 1,165 syllables of the modern Yi script, was added.
* '''Yi Radicals''' (U+A490-U+A4CF), containing 50 radicals of Yi Syllables, was added.
=== Extended blocks ===
* Additional precomposed characters, letters and capital letters of lowercase-only letters (total 30 characters) were added to '''Latin Extended-B'''. (U+01F6-U+01F9, U+0218-U+021F and U+0222-U+0233)
* Extensions for disordered speech (total 5 characters) were added to '''IPA Extensions'''. (U+02A9-U+02AD)
* Some additional modifier letters (total 6 characters) were added to '''Spacing Modifier Letters'''. (U+02DF and U+02EA-U+02EE)
* Additional combining diacritics for IPA (total 10 characters) were added to '''Combining Diacritical Marks'''. (U+0346-U+034E and U+0362)
* Lowercase versions of archaic letters and the Kai symbol (total 5 characters) were added to '''Greek and Coptic'''. (U+03D7, U+03DB, U+03DD, U+03DF and U+03E1)
* Nonstandard letters for Macedonian, combining numeral signs and three letters for Kildin Sami (total 12 characters) were added to '''Cyrillic'''. (U+0400, U+040D, U+0450, U+045D, U+0488-U+0489, U+048C-U+048F and U+04EC-U+04ED)
* A Hyphen (total 1 character) was added to '''Armenian'''. (U+058A)
* Combining hamza and maddah and nine additional Arabic characters (total 12 characters) were added to '''Arabic'''. (U+0653-U+0655, U+06B8-U+06B9, U+06BF, U+06CF and U+06FA-U+06FE)
* Additional letters and religious symbols (total 25 characters) were added to '''Tibetan'''. (U+0F6A, U+0F96, U+0FAE-U+0FB0, U+0FB8, U+0FBA-U+0FBC, U+0FBE-U+0FCC and U+0FCF)
* A narrow no-break space and 6 additional punctuation marks (total 7 characters) were added to '''General Punctuation'''. (U+202F and U+2048-U+204D)
* The Kip, Tugrik and Drachma sign (total 3 characters) were added to '''Currency Symbols'''. (U+20AD-U+20AF)
* An enclosing screen and an enclosing key (total 2 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E2-U+20E3)
* The information symbol and a rotated Q (total 2 characters) were added to '''Letterlike Symbols'''. (U+2139-U+213A)
* A mirrored Roman capital numeral hundred (Ↄ) (total 1 character) was added to '''Number Forms'''. (U+2183)
* Some additional arrows (total 9 characters) were added to '''Arrows'''. (U+21EB-U+21F3)
* Some additional technical symbols, including common keys on a 101 keyboard (total 33 characters) were added to '''Miscellaneous Technical'''. (U+2301, U+237B and U+237D-U+239A)
* Two additional control pictures (total 2 characters) were added to '''Control Pictures'''. (U+2425-U+2426)
* Squares and circles with quadrants (total 8 characters) were added to '''Geometric Shapes'''. (U+25F0-U+25F7)
* Two Syriac crosses and a signature mark (total 3 characters) were added to '''Miscellaneous Symbols'''. (U+2619 and U+2670-U+2671)
* Three Hangzhou numerals and a variation indicator (total 4 characters) were added to '''CJK Symbols and Punctuation'''. (U+3038-U+303A and U+303E)
* A ligature Yod with Hiriq (יִ) (total 1 character) was added to '''Alphabetic Presentation Forms'''. (U+FB1D)
* Three additional control characters for ruby markup (total 3 characters) were added to '''Specials'''. (U+FFF9-U+FFFB)
== Unicode 3.1 ==
Unicode 3.1 was released March 2001. It encoded 94,140 characters, adding 44,946 new characters, and mainly focused on blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Old Italic''' (U+10300-U+1032F), containing 35 letters for the Etruscan script, was added.
* '''Gothic''' (U+10330-U+1034F), containing 27 letters for the Gothic script, was added.
* '''Deseret''' (U+10400-U+1044F), containing 76 letters for the constructed Deseret script, was added.
* '''Byzantine Musical Symbols''' (U+1D000-U+1D0FF), containing 246 symbols for musical notation in Byzantine, was added.
* '''Musical Symbols''' (U+1D100-U+1D1FF), containing 219 characters for current musical notation, was added.
* '''Mathematical Alphanumeric Symbols''' (U+1D400-U+1D7FF), containing 991 Latin and Greek letters in serif, sans-serif, bold, italic, double-struck, script and Fraktur/Blackletter, was added.
* '''CJK Unified Ideographs Extension B''' (U+20000-U+2A6DF), containing 42,711 additional Chinese Ideographs, was added.
* '''CJK Compatibility Ideographs Supplement''' (U+2F800-U+2FA1F), containing 542 additional Chinese Ideographs for compatibility purposes, was added.
* '''Tags''', containing 97 language tags, was added. (U+E0000-U+E007F)
=== Extended noncharacters ===
* The Noncharacters range: U+FDD0..U+FDEF were added to '''Arabic Presentation Forms-A'''.
=== Extended blocks ===
* The capital Theta symbol and the Lunate Epsilon symbol (total 2 characters) were added to '''Greek and Coptic'''. (U+03F4-U+03F5)
=== Characters and Scripts Under Investigation or Rejected ===
* Khmer Sign Laak Was Rejected. (U+17DD) From '''Khmer.'''
* Georgian Letter U-Brjuu Was Rejected. From '''Georgian.'''
== Unicode 3.2 ==
Unicode 3.2 was released March 2002. It encoded 95,156 characters, adding 1,016 new characters.
=== New blocks ===
* '''Cyrillic Supplementary (now Cyrillic Supplement)''' (U+0500-U+052F), containing 16 characters used for the Komi language, was added.
* '''Tagalog''' (U+1700-U+171F), containing 20 characters for the Baybayin script, was added.
* '''Hanunoo''' (U+1720-U+173F), containing 23 characters and punctuation for the Hanunó'o script, was added.
* '''Buhid''' (U+1740-U+175F), containing 20 characters for the Buhid script, was added.
* '''Tagbanwa''' (U+1760-U+177F), containing 18 characters for the Tagbanwa script, was added.
* '''Miscellaneous Mathematical Symbols-A''' (U+27C0-U+27EF), containing 28 symbols used in math notation, was added.
* '''Supplemental Arrows-A''' (U+27F0-U+27FF), containing 16 additional arrows, was added.
* '''Supplemental Arrows-B''' (U+2900-U+297F), containing 128 special arrows, was added.
* '''Miscellaneous Mathematical Symbols-B''' (U+2980-U+29FF), containing 128 additional mathematical symbols, was added.
* '''Supplemental Mathematical Operators''' (U+2A00-U+2AFF), containing 256 additional mathematical operators, was added.
* '''Katakana Phonetic Extensions''' (U+31F0-U+31FF), containing 16 Katakana letters used for Ainu, was added.
* '''Variation Selectors''' (U+FE00-U+FE0F), containing 16 symbols used for indicating variations, was added.
=== Extended blocks ===
* A capital letter N with Long Right Leg (total 1 character) was added to '''Latin Extended-B'''. (U+0220)
* The combining grapheme joiner and combining Latin letters used in medieval texts (total 14 characters) were added to '''Combining Diacritical Marks'''. (U+034F and U+0363-U+036F)
* The Qoppa and a reversed lunate epsilon symbol (total 3 characters) were added to '''Greek and Coptic'''. (U+03D8-U+03D9 and U+03F6)
* Four additional letters used for the Kildin Sami language (total 8 characters) were added to '''Cyrillic'''. (U+048A-U+048B, U+04C5-U+04C6, U+04C9-U+04CA and U+04CD-U+04CE)
* A dotless Beh and a dotless Qaf (total 2 characters) were added to '''Arabic'''. (U+066E-U+066F)
* A Letter for Addu dialect (total 1 character) was added to '''Thaana'''. (U+07B1)
* The letters Yn and Elifi (total 2 characters) were added to '''Georgian'''. (U+10F7-U+10F8)
* Some additional punctuation marks and control characters (total 12 characters) were added to '''General Punctuation'''. (U+2047, U+204E-U+2052, U+2057 and U+205F-U+2063)
* A superscript letter I (total 1 character) was added to '''Superscripts and Subscripts'''. (U+2071)
* German Penny and Peso sign (total 2 characters) were added to '''Currency Symbols'''. (U+20B0-U+20B1)
* Some additional combining characters (total 7 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E4-U+20EA)
* Some double-struck and reversed/turned letters (total 15 characters) were added to '''Letterlike Symbols'''. (U+213D-U+214B)
* Some additional arrows (total 12 characters) were added to '''Arrows'''. (U+21F4-U+21FF)
* Some additional mathematical operators (total 14 characters) were added to '''Mathematical Operators'''. (U+22F2-U+22FF)
* Variable-width and additional symbols (total 53 characters) were added to '''Miscellaneous Technical'''. (U+237C and U+239B-U+23CE)
* Black and double circled numerals (total 20 characters) were added to '''Enclosed Alphanumerics'''. U+24EB-U+24FE)
* Quadrant elements (total 10 characters) were added to '''Block Elements'''. (U+2596-U+259F)
* Some additional triangles and squares (total 8 characters) were added to '''Geometric Shapes'''. (U+25F8-U+25FF)
* Shogi pieces ,recycling symbols, dices and dotted circles (total 24 characters) were added to '''Miscellaneous Symbols'''. (U+2616-U+2617, U+2672-U+267D and U+2680-U+2689)
* Additional parenthesis (total 14 characters) were added to '''Dingbats'''. (U+2768-U+2775)
* Three additional marks (total 3 characters) were added to '''CJK Symbols and Punctuation'''. (U+303B-U+303D)
* A digraph and two additional characters (total 3 characters) were added to '''Hiragana'''. (U+3095-U+3096 and U+309F)
* A digraph and a double hyphen (total 2 characters) were added to '''Katakana'''. (U+30A0 and U+30FF)
* Additional circled numerals (total 30 characters) were added to '''Enclosed CJK Letters and Months'''. (U+3251-U+325F and U+32B1-U+32BF
* Five missing radicals (total 5 characters) were added to '''Yi Radicals'''. (U+A4A2-U+A4A3, U+A4B4, U+A4C1, U+A4C5)
* Additional compatibility characters (total 59 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA30-U+FA6A)
* A Rial sign (total 1 character) was added to '''Arabic Presentation Forms-A'''. (U+FDFC)
* Two sesame dots (total 2 characters) were added to '''CJK Compatibility Forms'''. (U+FE45-U+FE46)
* A tail fragment (total 1 character) was added to '''Arabic Presentation Forms-B'''. (U+FE73)
* A pair of double parenthesis (total 2 characters) was added to '''Halfwidth and Fullwidth Forms'''. (U+FF5F-U+FF60)
== Unicode 4.0 ==
Unicode 4.0 was released April 2003. It encoded 96,382 characters, adding 1,226 new characters.
=== New blocks ===
* '''Limbu''', containing 66 characters for the Limbu abugida, was added.
* '''Tai Le''', containing 35 letters for the Tai Le script, was added.
* '''Khmer Symbols''', containing 32 symbols for the lunar calendar, was added.
* '''Phonetic Extensions''', containing 108 letters used in phonetic transcription, was added.
* '''Miscellaneous Symbols and Arrows''', containing 14 additional arrows, was added.
* '''Yijing Hexagram Symbols''', containing 64 hexagrams, was added.
* '''Linear B Syllabary''', containing 88 syllables of the ancient Linear B script, was added.
* '''Linear B Ideograms''', containing 123 ideograms of the ancient Linear B script, was added.
* '''Aegean Numbers''', containing 57 numerals used in the Aegean area, was added.
* '''Ugaritic''', containing 31 characters used in Ugaritic cuneiform, was added.
* '''Shavian''', containing 48 letters used for the artificial Shavian script, was added.
* '''Osmanya''', containing 40 characters used in the artificial Osmanya script, was added.
* '''Cypriot Syllabary''', containing 55 characters formerly used on Cyprus, was added.
* '''Tai Xuan Jing Symbols''', containing 87 symbols of Tai Xuan Jing, was added.
* '''Variation Selectors Supplement''', containing 240 additional variation selectors, was added.
=== Extended blocks ===
* Letters with curl used in Sinology (total 4 characters) were added to '''Latin Extended-B'''.
* Former IPA letters (total 2 characters) were added to '''IPA Extensions'''.
* Some additional characters (total 17 characters) were added to '''Spacing Modifier Letters'''.
* Additional combining double-width diacritics and diacritics corresponding to their spacing equivalent (total 11 characters) were added to '''Combining Diacritical Marks'''.
* The archaic letters Sho and San and the capital Lunate Sigma (total 5 characters) were added to '''Greek and Coptic'''.
* Some additional markers, biblical signs, and letters with inverted V (total 19 characters) were added to '''Arabic'''.
* Letters used for foreign words from Persian and Sogdian (total 6 characters) were added to '''Syriac'''.
* The short A (ऄ) (total 1 character) was added to '''Devanagari'''.
* The Avagraha sign (ঽ) (total 1 character) was added to '''Bengali'''.
* The Adak Bindi and Visarga signs (total 2 characters) were added to '''Gurmukhi'''.
* The vocalic l and ll and the Rupee sign (total 5 characters) were added to '''Gujarati'''.
* The letters Va and Wa (total 2 characters) were added to '''Oriya'''.
* Additional signs for date and finance environments (total 8 characters) were added to '''Tamil'''.
* The Nukta and Avagraha signs (total 2 characters) were added to '''Kannada'''.
* Some symbols and signs (total 11 characters) were added to '''Khmer'''.
* An inverted undertie and a swung dash (total 2 characters) were added to '''General Punctuation'''.
* The facsimile sign (℻) (total 1 character) was added to '''Letterlike Symbols'''.
* The eject symbol and a vertical line (total 2 characters) were added to '''Miscellaneous Technical'''.
* A black circled digit zero (⓿) (total 1 character) was added to '''Enclosed Alphanumerics'''.
* Monograms and diagrams, flags, warning and weather symbols and a cup of tea (total 12 characters) were added to '''Miscellaneous Symbols'''.
* Additional parenthesized and circled Korean characters and supplemental signs (total 9 characters) were added to '''Enclosed CJK Letters and Months'''.
* Additional measure units (total 7 characters) were added to '''CJK Compatibility'''.
* An additional Arabic sign (﷽) (total 1 character) was added to '''Arabic Presentation Forms-A'''.
* A pair of vertical parenthesis (total 2 characters) was added to '''CJK Compatibility Forms'''.
* The letters Oi and Ew (total 4 characters) were added to '''Deseret'''.
* A small script l (ℓ) (total 1 character) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 4.1 ==
Unicode 4.1 was released March 31, 2005. It encoded 97,655 characters, adding 1,273 new characters.
=== New blocks ===
* '''Arabic Supplement''', containing 30 characters for various languages written with the Arabic script, was added.
* '''Ethiopic Supplement''', containing 26 characters and signs for Sebatbeit, was added.
* '''New Tai Lue''', containing 80 characters for the New Tai Lue script, was added.
* '''Buginese''', containing 30 characters for the Lontara script, was added.
* '''Phonetic Extensions Supplement''', containing 64 additional letters for phonetic transcription, was added.
* '''Combining Diacritical Marks Supplement''', containing 4 additional diacritics, was added.
* '''Glagolitic''', containing 94 characters for the Glagolitic script, was added.
* '''Coptic''', containing 114 characters for the Coptic script, was added.
* '''Georgian Supplement''', containing 38 Nuskhuri letters, was added.
* '''Tifinagh''', containing 55 characters for the Tifinagh script, was added.
* '''Ethiopic Extended''', containing 79 additional Ethiopic syllables, was added.
* '''Supplemental Punctuation''', containing 26 additional punctuation marks, was added.
* '''CJK Strokes''', containing 16 strokes for Han Ideographs, was added.
* '''Modifier Tone Letters''', containing 23 letters for Chinese tones, was added.
* '''Syloti Nagri''', containing 44 characters for the Syloti Nagri abugida, was added.
* '''Vertical Forms''', containing 10 punctuation marks suited for vertical text, was added.
* '''Ancient Greek Numbers''', containing 75 numerals and signs used in Ancient Greek, was added.
* '''Old Persian''', containing 50 characters for Old Persian cuneiform, was added.
* '''Kharoshthi''', containing 65 characters for the Kharoshthi abugida, was added.
* '''Ancient Greek Musical Notation''', containing 70 musical signs used in Ancient Greek, was added.
=== Extended blocks ===
* Letters for Sencoten, digraphs, letters with swash tail and other additions (total 11 characters) were added to '''Latin Extended-B'''.
* Additional diacritics for transliteration (total 5 characters) were added to '''Combining Diacritical Marks'''.
* Rho with stroke, reversed and dotted Lunate Sigma (total 4 characters) were added to '''Greek and Coptic'''.
* Ghe with descender (Ӷ) (total 2 characters) was added to '''Cyrillic'''.
* An additional biblical mark and some punctuation marks (total 4 characters) were added to '''Hebrew'''.
* Additional biblical marks, punctuation marks and the Afghani sign (total 8 characters) were added to '''Arabic'''.
* A glottal stop (ॽ) (total 1 character) was added to '''Devanagari'''.
* The Khanda Ta letter (ৎ) (total 1 character) was added to '''Bengali'''.
* The letter Sha and the digit zero (total 2 characters) were added to '''Tamil'''.
* Two marks used in Bhutan (total 2 characters) were added to '''Tibetan'''.
* Two letters and a modifier letter (total 3 characters) were added to '''Georgian'''.
* Some additional syllables (total 11 characters) were added to '''Ethiopic'''.
* Additional phonetic symbols (total 20 characters) were added to '''Phonetic Extensions'''.
* A flower and dot punctuation marks (total 9 characters) were added to '''General Punctuation'''.
* Additional subscript letters (total 5 characters) were added to '''Superscripts and Subscripts'''.
* The Guarani, Austral, Hryvnia and Cedi signs (total 4 characters) were added to '''Currency Symbols'''.
* A combining long double solidus (total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* The per sign and a double-struck letter Pi (total 2 characters) were added to '''Letterlike Symbols'''.
* Metrical and electrical signs (total 11 characters) were added to '''Miscellaneous Technical'''.
* Additional gender and map symbols (total 30 characters) were added to '''Miscellaneous Symbols'''.
* Some additional mathematical symbols (total 7 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional arrows and squares (total 6 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* A circled Hangul character (㉾) (total 1 character) was added to '''Enclosed CJK Letters and Months'''.
* Additional Han Ideographs (total 22 characters) were added to '''CJK Unified Ideographs'''.
* Additional Compatibility Ideographs (total 106 characters) were added to '''CJK Compatibility Ideographs'''.
* Italic dotless small i and j (total 2 characters) were added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.0 ==
Unicode 5.0 was released July 14, 2006. It encoded 99,024 characters, adding 1,369 new characters.
=== New blocks ===
* '''N'Ko''', containing 59 characters for the N'Ko script, was added.
* '''Balinese''', containing 121 characters and musical signs for the Balinese abugida, was added.
* '''Latin Extended-C''', containing 17 letters for various languages, was added.
* '''Latin Extended-D''', containing 2 characters for UPA, was added.
* '''Phags-pa''', containing 56 characters for the Phags-pa script, was added.
* '''Phoenician''', containing 27 letters and numerals for the Phoenician script, was added.
* '''Cuneiform''', containing 879 signs for Sumero-Akkadian Cuneiform, was added.
* '''Cuneiform Numbers and Punctuation''', containing 103 numerals and punctuation signs for Sumero-Akkadian Cuneiform, was added.
* '''Counting Rod Numerals''', containing 18 numerals used with counting rods, was added.
=== Extended blocks ===
* Various letters used mainly for aboriginal languages (total 14 characters) were added to '''Latin Extended-B'''.
* Lowercase lunate sigma symbols (total 3 characters) were added to '''Greek and Coptic'''.
* Lowercase palochka and 3 letters used in Nivkh (total 7 characters) were added to '''Cyrillic'''.
* Two letters used in Khanty and other languages (total 4 characters) were added to '''Cyrillic Supplement'''.
* A specific point meant for Vav (total 1 character) was added to '''Hebrew'''.
* Four letters used in Sindhi (total 4 characters) were added to '''Devanagari'''.
* Four letters used in Sanskrit (total 4 characters) were added to '''Kannada'''.
* Additional IPA diacritics (total 9 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Four combining arrows (total 4 characters) were added to '''Combining Diacritical Marks for Symbols'''.
* A danish symbol and a lowercase turned F (total 2 characters) were added to '''Letterlike Symbols'''.
* A lowercase reversed C (ↄ) (total 1 character) was added to '''Number Forms'''.
* Vertical parenthesis, geometric forms and electrical symbols (total 12 characters) were added to '''Miscellaneous Technical'''.
* A neuter symbol (⚲) (total 1 character) was added to '''Miscellaneous Symbols'''.
* Four additional mathematical symbols (total 4 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional squares, pentagons and hexagons (total 11 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Four additional tone letters used in Chinantec (total 4 characters) were added to '''Modifier Tone Letters'''.
* Bold Digamma (𝟊/'''Ϝ''') (total 2 characters) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.1 ==
Unicode 5.1 was released April 4, 2008. It encoded 100,648 characters, adding 1,624 new characters.
=== New blocks ===
* '''Sundanese''', containing 55 letters for Sundanese script, was added.
* '''Lepcha''', containing 74 letters for Lepcha script, was added.
* '''Ol Chiki''', containing 48 letters for Ol Chiki script, was added.
* '''Cyrillic Extended-A''', containing 32 letters for combining Cyrillic letters, was added.
* '''Vai''', containing 300 letters for Vai script, was added.
* '''Cyrillic Extended-B''', containing 78 letters for additional Cyrillic characters, was added.
* '''Saurashtra''', containing 81 letters for Saurashtra script, was added.
* '''Kayah Li''', containing 48 letters for Kayah languages, was added.
* '''Rejang''', containing 37 letters for Rejang script, was added.
* '''Cham''', containing 83 letters for Cham script, was added.
* '''Ancient Symbols''', containing 12 characters for weights and measures and other Ancient symbols, was added.
* '''Phaistos Disc''', containing 46 hieroglyphs for Phaistos, was added.
* '''Lycian''', containing 29 letters for Lycian script, was added.
* '''Carian''', containing 49 letters for Carian script, was added.
* '''Lydian''', containing 27 letters for Lydian script, was added.
* '''Mahjong Tiles''', containing 44 mahjong tiles, was added.
* '''Domino Tiles''', containing 100 domino tiles, was added.
=== Extended blocks ===
* Archaic letters and capital kai symbol (total 7 characters) were added to '''Greek and Coptic'''.
* Combining Pokrytie (total 1 character) was added to '''Cyrillic'''.
* Mordvin, Kurdish, Aleut and Chuvash letters (total 16 characters) were added to '''Cyrillic Supplement'''.
* Radix symbols, Letterlike, punctuation, Koranic annotation signs and additions for early Persian and Azerbaijani (total 15 characters) were added to '''Arabic'''.
* Additional letters in Torwali, Burushaski and early Persian (total 18 characters) were added to '''Arabic Supplement'''.
* High spacing dot and candra a (total 2 characters) were added to '''Devanagari'''.
* Udaat and yakash signs (total 2 characters) were added to '''Gurmukhi'''.
* Vocalic rr, l and ll (total 3 characters) were added to '''Oriya'''.
* Om symbol (ௐ) (total 1 character) was added to '''Tamil'''.
* Avagraha, additional phonetic letters, vocalic l and ll, fractional signs and tuumu (total 13 characters) were added to '''Telugu'''.
* Avagraha, vocalic rr, l and ll, Malayalam numerics and fractions and chillu letters (total 17 characters) were added to '''Malayalam'''.
* Letters for Balti and various symbols (total 6 characters) were added to '''Tibetan'''.
* Characters for various languages (total 78 characters) were added to '''Myanmar'''.
* Manchu Ali Gali lha (ᢪ) (total 1 character) was added to '''Mongolian'''.
* Miscellaneous combining marks (total 28 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Medievalist latin letters and miscellaneous letters (total 10 characters) were added to '''Latin Extended Additional'''.
* Invisible plus (+) (total 1 character) was added to '''General Punctuation'''.
* Combining asterisk above ( ⃰)(total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* Symbol for Samaritan Source (⅏) (total 1 character) was added to '''Letterlike Symbols'''.
* Archaic Roman Numerals (total 4 characters) were added to '''Number Forms'''.
* Outlined white star and other signs (total 15 characters) were added to '''Miscellaneous Symbols'''.
* Long division and additional mathematical brackets (total 5 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Miscellaneous signs (total 51 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Additional latin letters (total 12 characters) were added to '''Latin Extended-C'''.
* Additional punctuation (total 23 characters) were added to '''Supplemental Punctuation'''.
* Letter ih (ㄭ) (total 1 character) was added to '''Bopomofo'''.
* Other strokes (total 20 characters) were added to '''CJK Strokes'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Africanist tone letters (total 5 characters) were added to '''Modifier Tone Letters'''.
* Miscellaneous letters and symbols (total 112 characters) were added to '''Latin Extended-D'''.
* Continuous macrons for Coptic (total 3 characters) were added to '''Combining Half Marks'''.
* Musical symbol multiple measure rest (𝄩) (total 1 character) was added to '''Musical Symbols'''.
== Unicode 5.2 ==
Unicode 5.2 was released in October 1, 2009. It encoded 107,296 characters, adding 6,648 new characters.
=== New blocks ===
* '''Samaritan''', containing 61 letters for Samaritan script, was added.
* '''Unified Canadian Aboriginal Syllabics Extended''', containing 70 syllables for various cree languages, was added.
* '''Tai Tham''', containing 127 letters for Tai Tham script, was added.
* '''Vedic Extensions''', containing 35 characters for tone marks and signs, was added.
* '''Lisu''', containing 48 letters for Lisu (Fraser) script, was added.
* '''Bamum''', containing 88 letters for Bamum script, was added.
* '''Common Indic Number Forms''', containing 10 fractions and marks, was added.
* '''Devanagari Extended''', containing 28 additional marks, was added.
* '''Hangul Jamo Extended-A''', containing 29 characters for additional old initial consonants in hangul jamo, was added.
* '''Javanese''', containing 91 letters for Javanese script, was added.
* '''Myanmar Extended-A''', containing 28 letters for Khamti Shan in Myanmar, was added.
* '''Tai Viet''', containing 72 letters for Tai Viet script, was added.
* '''Meetei Mayek''', containing 56 letters for Meetei Mayek script, was added.
* '''Hangul Jamo Extended-B''', containing 72 characters for additional old medieval vowels and final consonants in hangul jamo, was added.
* '''Imperial Aramaic''', containing 31 characters for Old Aramaic, was added.
* '''Old South Arabian''', containing 32 letters and numbers for South Arabian, was added.
* '''Avestan''', containing 61 characters for Avestan script, was added.
* '''Inscriptional Parthian''', containing 30 characters for Inscriptional Parthian script, was added.
* '''Inscriptional Pahlavi''', containing 27 characters for Inscriptional Pahlavi script, was added.
* '''Old Turkic''', containing 73 characters for Orkhon script, was added.
* '''Rumi Numeral Symbols''', containing 31 numeric characters used in Fez, Morocco, and elsewhere in North Africa and the Iberian peninsula, between the tenth and seventeenth centuries, was added.
* '''Kaithi''', containing 66 letters for Kaithi script, was added.
* '''Egyptian Hieroglyphs''', containing 1,071 hieroglyphs for Egyptian, was added.
* '''Enclosed Alphanumeric Supplement''', containing 63 additional circled, parenthesized and squared alphanumerics, was added.
* '''Enclosed Ideographic Supplement''', containing 44 squared and tortoised shell bracketed ideographs, was added.
* '''CJK Unified Ideographs Extension C''', containing 4,149 additional Chinese Ideographs, was added.
=== Extended blocks ===
* Abhaz letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Inverted Candrabinbu and additional signs and letters (total 5 characters) were added to '''Devanagari'''.
* Ganda Mark (৻) (total 1 character) was added to '''Bengali'''.
* Religious svasti signs (total 4 characters) were added to '''Tibetan'''.
* Extensions for Khamti Shan and Alton and Phake (total 4 characters) were added to '''Myanmar'''.
* Additional old initial consonants, medival vowels, and old final consonants (total 16 characters) were added to '''Hangul Jamo'''.
* Hyphen and additional syllables (total 10 characters) were added to '''Unified Canadian Aboriginal Syllabics'''.
* Letter Sua and Tham Digit One (total 3 characters) were added to '''New Tai Lue'''.
* Combing Almost Equal to Below ( ᷽) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* The Live Tournosis, Spesmillo and Tenge signs (total 3 characters) were added to '''Currency Symbols'''.
* Additional vulgar fractions from ARIB STD B24 (total 4 characters) were added to '''Number Forms'''.
* Decimal exponent symbol (⏨) from ARIB STD B24 (total 1 characters) was added to '''Miscellaneous Technical'''.
* A soccer ball and symbols from ARIB STD B24 (total 59 characters) were added to '''Miscellaneous Symbols'''.
* Heavy exclamation mark symbol (❗) from ARIB STD B24 (total 1 character) was added to '''Dingbats'''.
* Traffic sign, dictionary and map symbols from ARIB STD B24 (total 5 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Capital letter turned alpha and additions for shona (total 3 characters) were added to '''Latin Extended-C'''.
* Cryptogrammic letters and combining marks (total 7 characters) were added to '''Coptic'''.
* Word separator middle dot used in Avestan (⸱) (total 1 character) was added to '''Supplemental Punctuation'''.
* Circled ideographs and numbers on black squares from ARIB STD B24 (total 12 characters) were added to '''Enclosed CJK Letters and Months'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Miscellaneous additions for compatibility (total 3 characters) were added to '''CJK Compatibility Ideographs'''.
* Number two and three (total 2 characters) were added to '''Phoenician'''.
== Unicode 6.0 ==
Unicode 6.0 was released in October 11, 2010. It encoded 109,384 characters, adding 2,088 new characters.
=== New blocks ===
* '''Mandaic''', containing 29 letters for Mandaic script, was added.
* '''Batak''', containing 56 letters for Batak script, was added.
* '''Ethiopic Extended-A''', containing 32 letters for Gamo-Gofa-Dawro, Basketo and Gumuz Ethiophic syllables, was added.
* '''Brahmi''', containing 108 characters for ancient Brahmi abugida, was added.
* '''Bamum Supplement''', containing 761 letters for additional Bamum script, was added.
* '''Kana Supplement''', containing 2 characters for archaic katakana, was added.
* '''Playing Cards''', containing 59 playing cards, was added.
* '''Miscellaneous Symbols and Pictographs''', containing 529 additional symbols, was added.
* '''Emoticons''', containing 63 faces, cat faces and gesture symbols, was added.
* '''Transport and Map Symbols''', containing 70 transportation, traffic signs and other symbols, was added.
* '''Alchemical Symbols''', containing 116 symbols for elements, was added.
* '''CJK Unified Ideographs Extension D''', containing 222 miscellaneous Han ideographs, was added.
=== Extended blocks ===
* Azerbaijani letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Kashmiri Yeh and Wavy hamza below (total 2 characters) were added to '''Arabic'''.
* Dependent vowel signs and letters used in Kashmiri and Bihari (total 10 characters) were added to '''Devanagari'''.
* Fraction signs (total 6 characters) were added to '''Oriya'''.
* Letters used in scholarly only and letter dot reph (total 3 characters) were added to '''Malayalam'''.
* Leading and Trailing Mchan Rtags (total 6 characters) were added to '''Tibetan'''.
* Additional combining marks (total 2 characters) were added to '''Ethiopic'''.
* Combining Double Inverted Breve Below (᷼) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* Miscellaneous subscript letters (total 8 characters) were added to '''Superscripts and Subscripts'''.
* Indian Rupee Sign (₹) (total 1 character) was added to '''Currency Symbols'''.
* Pointing double triangle and additional mechanical symbols (total 11 characters) were added to '''Miscellaneous Technical'''.
* Ophiucisus, astronomical symbol for uranus and pentagrams (total 6 characters) were added to '''Miscellaneous Symbols'''.
* Additional heavy punctation marks, raised fist, raised hand, sparkles, heavy arithmetic symbols and curly loops (total 16 characters) were added to '''Dingbats'''.
* Squared logicals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Separator mark and consonant joiner (total 2 characters) were added to '''Tifinagh'''.
* Bopomofo for Hmu and Ge (total 3 characters) were added to '''Bopomofo Extended'''.
* Reversed Tse (total 2 characters) were added to '''Cyrillic Extended-B'''.
* Additional letters (total 15 characters) were added to '''Latin Extended-D'''.
* Pedagogical symbols (total 16 characters) were added to '''Arabic Presentation Forms-A'''.
* Additional squared, black circled and squared letters and regional indicator letters (total 107 characters) were added to '''Enclosed Alphanumeric Supplement'''.
* Squared katakana, squared ideographs and circled advantage and accept (total 13 characters) were added to '''Enclosed Ideographic Supplement'''.
== Unicode 6.1 ==
Unicode 6.1 was released in January 31, 2012. It encoded 110,116 characters, adding 732 new characters.
=== New blocks ===
* '''Arabic Extended-A''' (U+08A0-U+08FF), containing 39 characters, was added.
* '''Sundanese Supplement''' (U+1CC0-U+1CCF), containing 8 characters, was added.
* '''Meetei Mayek Extensions''' (U+AAE0-U+AAFF), containing 23 characters, was added.
* '''Meroitic Hieroglyphs''' (U+10980-U+1099F), containing 32 characters, was added.
* '''Meroitic Cursive''' (U+109A0-U+109FF), containing 26 characters, was added.
* '''Sora Sompeng''' (U+110D0-U+110FF), containing 35 characters, was added.
* '''Chakma''' (U+11100-U+1114F), containing 67 characters, was added.
* '''Sharada''' (U+11180-U+111DF), containing 83 characters, was added.
* '''Takri''' (U+11680-U+116CF), containing 66 characters, was added.
* '''Miao''' (U+16F00-U+16F9F), containing 133 characters, was added.
* '''Arabic Mathematical Alphabetic Symbols''' (U+1EE00-U+1EEFF), containing 143 characters, was added.
=== Extended blocks ===
* An Armenian Dram sign (total 1 character) was added to '''Armenian'''. (U+058F)
* A sign Samvat (total 1 character) was added to '''Arabic'''. (U+0604)
* An Abbreviation mark (total 1 character) was added to '''Gujarati'''. (U+0AF0)
* Letters for Khmu (total 2 characters) were added to '''Lao'''. (U+0EDE-U+0EDF)
* Capital letter Yn, letter Aen, Hard and Labial sign (total 5 characters) were added to '''Georgian'''. (U+10C7, U+10CD and U+10FD-U+10FF)
* Letters and signs for Old Sundanese (total 9 characters) were added to '''Sundanese'''. (U+1BAB-U+1BAD and U+1BBA-U+1BBF)
* Sign Rotated Ardhavisarga, Candra Above, Jihvamuliya and Uphadhmaniya (total 4 characters) were added to '''Vedic Extensions'''. (U+1CF3-U+1CF6)
* Mathematical diagonals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''. (U+27CB and U+27CD)
* A letter Bohairic Khei (total 2 characters) were added to '''Coptic'''. (U+2CF2-U+2CF3)
* Small letters Yn and Aen (total 2 characters) were added to '''Georgian Supplement'''. (U+2D27 and U+2D2D)
* Letters Ye and Yo (total 2 characters) were added to '''Tifinagh'''. (U+2D66-U+2D67)
* (total 10 characters) were added to '''Supplemental Punctuation'''. (U+2E32-U+2E3B)
* An additional ideograph for Kanji (total 1 character) was added to '''CJK Unified Ideographs'''. (U+9FCC)
* Combining letter for Slavonic (total 9 characters) were added to '''Cyrillic Extended-B'''. (U+A674-U+A67B and U+A69F)
* Letter C with Bar, capital letter H with Hook and modifier letters for extended IPA (total 5 characters) were added to '''Latin Extended-D'''. (U+A792-U+A793, U+A7AA and U+A7F8-U+A7F9)
* Some additional ideographs for Korea (total 2 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA2E-U+FA2F)
* Symbols for Canadian legal use (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F16A-U+1F16B)
* Typikon symbols (total 4 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F540-U+1F543)
* (total 13 characters) were added to '''Emoticons'''. (U+1F600, U+1F611, U+1F615, U+1F617, U+1F619, U+1F61B, U+1F61F, U+1F626-U+1F627, U+1F62C, U+1F62E-U+1F62F and U+1F634)
== Unicode 6.2 ==
Unicode 6.2 was released in September 26, 2012. It encoded 110,117 characters, adding only 1 new character.
=== Extended blocks ===
* A Turkish Lira sign (total 1 character) was added to '''Currency Symbols'''. (U+20BA)
== Unicode 6.3 ==
Unicode 6.3 was released in September 30, 2013. It encoded 110,122 characters, adding only 5 new characters.
=== Extended blocks ===
* A Letter mark (total 1 character) was added to '''Arabic'''. (U+061C)
* Isolate directional format characters (total 4 characters) were added to '''General Punctuation'''. (U+2066-U+2069)
== Unicode 7.0 ==
Unicode 7.0 was released in June 16, 2014. It encoded 112,956 characters, adding 2,834 new characters.
=== New blocks ===
* '''Combining Diacritical Marks Extended''' (U+1AB0-U+1AFF), containing 15 marks, was added.
* '''Myanmar Extended-B''' (U+A9E0-U+A9FF), containing 31 letters, was added.
* '''Latin Extended-E''' (U+AB30-U+AB6F), containing 50 letters, was added.
* '''Coptic Epact Numbers''' (U+102E0-U+102FF), containing 28 numbers, was added.
* '''Old Permic''' (U+10350-U+1037F), containing 43 letters, was added.
* '''Elbasan''' (U+10500-U+1052F), containing 50 letters, was added.
* '''Caucasian Albanian''' (U+10530-U+1056F), containing 53 letters and marks, was added.
* '''Linear A''' (U+10600-U+1077F), containing 341 signs, was added.
* '''Palmyrene''' (U+10860-U+1087F), containing 32 letters, was added.
* '''Nabataean''' (U+10880-U+108AF), containing 40 letters and numbers, was added.
* '''Old North Arabian''' (U+10A80-U+10A9F), containing 32 letters and numbers, was added.
* '''Manichaean''' (U+10AC0-U+10AFF), containing 51 characters, was added.
* '''Psalter Pahlavi''' (U+10B80-U+10BAF), containing 29 characters, was added.
* '''Mahajani''' (U+11150-U+1117F), containing 39 letters and signs, was added.
* '''Sinhala Archaic Numbers''' (U+111E0-U+111FF), containing 20 numbers, was added.
* '''Khojki''' (U+11200-U+1124F), containing 61 characters, was added.
* '''Khudawadi''' (U+112B0-U+112FF), containing 69 characters, was added.
* '''Grantha''' (U+11300-U+1137F), containing 83 characters, was added.
* '''Tirhuta''' (U+11480-U+114DF), containing 82 characters, was added.
* '''Siddham''' (U+11580-U+115FF), containing 72 characters, was added.
* '''Modi''' (U+11600-U+1165F), containing 79 characters, was added.
* '''Warang Citi''' (U+118A0-U+118FF), containing 84 letters and numbers, was added.
* '''Pau Cin Hau''' (U+11AC0-U+11AFF), containing 57 characters, was added.
* '''Mro''' (U+16A40-U+16A6F), containing 43 characters, was added.
* '''Bassa Vah''' (U+16AD0-U+16AFF), containing 36 characters, was added.
* '''Pahawh Hmong''' (U+16B00-U+16B8F), containing 127 letters and signs, was added.
* '''Duployan''' (U+1BC00-U+1BC9F), containing 143 characters, was added.
* '''Shorthand Format Controls''' (U+1BCA0-U+1BCAF), containing 4 format characters, was added.
* '''Mende Kikakui''' (U+1E800-U+1E8DF), containing 213 syllables and numbers, was added.
* '''Ornamental Dingbats''' (U+1F650-U+1F67F), containing 48 pictographic characters, was added.
* '''Geometric Shapes Extended''' (U+1F780-U+1F7FF), containing 85 pictographic characters, was added.
* '''Supplemental Arrows-C''' (U+1F800-U+1F8FF), containing 148 pictographic characters, was added.
=== Extended blocks ===
* A capital letter Yot (total 1 character) was added to '''Greek and Coptic'''. (U+037F)
* Letters for Orok, Komi and Khanty (total 8 characters) were added to '''Cyrillic Supplement'''. (U+0528-U+052F)
* An Eternity sign (total 2 characters) were added to '''Armenian'''. (U+058D-U+058E)
* A Number Mark Above (total 1 character) was added to '''Arabic'''. (U+0605)
* Letters for African, Philippine, Turkic, Berber, Belarusian, Palula and Shina languages (total 8 characters) were added to '''Arabic Extended-A'''. (U+08A1, U+08AD-U+08B2 and U+08FF)
* A letter for Marwari (total 1 character) was added to '''Devanagari'''. (U+0978)
* A sign Anji (total 1 character) was added to '''Bengali'''. (U+0980)
* Sign Candrabindu and letter Llla (total 2 characters) were added to '''Telugu'''. (U+0C00 and U+0C34)
* A Sign Candrabindu (total 1 character) was added to '''Kannada'''. (U+0C81)
* A Sign Candrabindu (total 1 character) was added to '''Malayalam'''. (U+0D01)
* Lith Numerals (total 10 characters) were added to '''Sinhala'''. (U+0DE6-U+0DEF)
* Additional Old English runes (total 8 characters) were added to '''Runic'''. (U+16F1-U+16F8)
* Letters Gyan and Tra (total 2 characters) were added to '''Limbu'''. (U+191D-U+191E)
* Signs for Jaiminiya Sama Veda (total 2 characters) were added to '''Vedic Extensions'''. (U+1CF8-U+1CF9)
* Marks for Germanic and American lexicology (total 15 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DE7-U+1DF5)
* Nordic Mark, Manat and Ruble sign (total 3 characters) were added to '''Currency Symbols'''. (U+20BB-U+20BD)
* Playback symbols from Webdings font (total 7 characters) were added to '''Miscellaneous Technical'''. (U+23F4-U+23FA)
* A Scissors symbol from Wingdings 2 font (total 1 character) was added to '''Dingbats'''. (U+2700)
* Arrows for Lithuanian dialectology and symbols from Wingdings 3 font (total 115 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2B4D-U+2B4F, U+2B5A-U+2B5F, U+2B60-U+2B73, U+2B76-U+2B95, U+2B98-U+2BB9, U+2BBD-U+2BC8 and U+2BCA-U+2BD1)
* (total 7 characters) were added to '''Supplemental Punctuation'''. (U+2E3C-U+2E42)
* Early Cyrillic letters and letters for Lithuanian dialectology (total 6 characters) were added to '''Cyrillic Extended-B'''. (U+A698-U+A69D)
* Letters for European, American and African orthography (total 18 characters) were added to '''Latin Extended-D'''. (U+A794-U+A79F, U+A7AB-U+A7AD, U+A7B0-U+A7B1 and U+A7F7)
* Tone marks for Tai Laing and letters for Shwe Palaung (total 4 characters) were added to '''Myanmar Extended-A'''. (U+AA7C-U+AA7F)
* Combining phonetic marks (total 7 characters) were added to '''Combining Half Marks'''. (U+FE27-U+FE2D)
* Additional mathematical symbols (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018B-U+1018C)
* A Greek Tau Rho symbol (total 1 character) was added to '''Ancient Symbols'''. (U+101A0)
* A letter Ess (total 1 character) was added to '''Old Italic'''. (U+1031F)
* A Number Joiner (total 1 character) was added to '''Brahmi'''. (U+1107F)
* Sutra mark and sign Ekam (total 2 characters) were added to '''Sharada'''. (U+111CD and U+111DA)
* Additional cuneiform signs (total 42 characters) were added to '''Cuneiform'''. (U+1236F-U+12398)
* Additional numbers, vulgar fractions and a punctuation mark (total 13 characters) were added to '''Cuneiform Numbers and Punctuation'''. (U+12463-U+1246E and U+12474)
* Red Joker, Fool and trumps (total 23 characters) were added to '''Playing Cards'''. (U+1F0BF and U+1F0E0-U+1F0F5)
* Dingbat normal and negative sans-serif digit zero (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10B-U+1F10C)
* Symbols from Webdings, Wingdings 1 and 2 font (total 209 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F321-U+1F32C, U+1F336, U+1F37D, U+1F394-U+1F39F, U+1F3C5, U+1F3CB-U+1F3CE, U+1F3D4-U+1F3DF, U+1F3F1-U+1F3F7, U+1F43F, U+1F441, U+1F4F8, U+1F4FD-U+1F4FE, U+1F53E-U+1F53F, U+1F544-U+1F54A, U+1F568-U+1F579, U+1F57B-U+1F5A3 and U+1F5A5-U+1F5FA)
* Slightly frowning and smiling faces emoji (total 2 characters) were added to '''Emoticons'''. (U+1F641-U+1F642)
* Symbols from Webdings and Wingdings 2 font (total 27 characters) were added to '''Transport and Map Symbols'''. (U+1F6C6-U+1F6CF, U+1F6E0-U+1F6EC and U+1F6F0-U+1F6F3)
== Unicode 8.0 ==
Unicode 8.0 was released in June 17, 2015. It encoded 120,672 characters, adding 7,716 new characters.
=== New blocks ===
* '''Cherokee Supplement''' (U+AB70-U+ABBF), containing 80 lowercase letters, was added.
* '''Hatran''' (U+108E0-U+108FF), containing 26 letters, was added.
* '''Old Hungarian''' (U+10C80-U+10CFF), containing 108 letters, was added.
* '''Multani''' (U+11280-U+112AF), containing 38 letters, was added.
* '''Ahom''' (U+11700-U+1173F), containing 57 letters, was added.
* '''Early Dynastic Cuneiform''' (U+12480-U+1254F), containing 196 characters, was added.
* '''Anatolian Hieroglyphs''' (U+14400-U+1467F), containing 583 characters, was added.
* '''Sutton SignWriting''' (U+1D800-U+1DAAF), containing 672 signs, was added.
* '''Supplemental Symbols and Pictographs''' (U+1F900-U+1F9FF), containing 15 pictographic characters, was added.
* '''CJK Unified Ideographs Extension E''' (U+2B820-U+2CEAF), containing 5762 characters, was added.
=== Extended blocks ===
* Letters for Arwi (total 3 characters) were added to '''Arabic Extended-A'''. (U+08B3-U+08B4 and U+08E3)
* A letter for Avestan transliteration (total 1 character) was added to '''Gujarati'''. (U+0AF9)
* A letter for Andhra Pradesh (total 1 character) was added to '''Telugu'''. (U+0C5A)
* An archaic letter II (total 1 character) was added to '''Malayalam'''. (U+0D5F)
* A letter Mv and small letters (total 7 characters) were added to '''Cherokee'''. (U+13F5 and U+13F8-U+13FD)
* A Georgian Lari sign (total 1 character) was added to '''Currency Symbols'''. (U+20BE)
* Turned digits (total 2 characters) were added to '''Number Forms'''. (U+218A-U+218B)
* Two headed arrows with triangle arrowheads (total 4 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BEC-U+2BEF)
* Some additional ideographs (total 9 characters) were added to '''CJK Unified Ideographs'''. (U+9FCD-U+9FD5)
* A combining letter Ef (total 1 character) was added to '''Cyrillic Extended-B'''. (U+A69E)
* Sinological dot, phonetic extension for African languages, letters for American and Gabonese orthography (total 7 characters) were added to '''Latin Extended-D'''. (U+A78F and U+A7B2-U+A7B7)
* Sign Siddham and letter Jain Om (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FC-U+A8FD)
* Letters for Yakut transliteration (total 4 characters) were added to '''Latin Extended-E'''. (U+AB60-U+AB63)
* A combining mark for Church Slavonic (total 2 characters) were added to '''Combining Half Marks'''. (U+FE2E-U+FE2F)
* Numerals and vulgar fractions (total 64 characters) were added to '''Meroitic Cursive'''. (U+109BC-U+109BD, U+109C0-U+109CF and U+109D2-U+109FF)
* Sandhi mark, diacritical marks for Kashmiri, sign Siddham and punctuation marks (total 9 characters) were added to '''Sharada'''. (U+111C9-U+111CC and U+111DB-U+111DF)
* Combining Anusvara Above and letter Om (total 2 characters) were added to '''Grantha'''. (U+11300 and U+11350)
* Section marks and alternate letters (total 20 characters) were added to '''Siddham'''. (U+115CA-U+115DD)
* An additional sign (total 1 character) was added to '''Cuneiform'''. (U+12399)
* East-Slavic musical symbols (total 11 characters) were added to '''Musical Symbols'''. (U+1D1DE-U+1D1E8)
* (total 24 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F32D-U+1F32F, U+1F37E-U+1F37F, U+1F3CF-U+1F3D3, U+1F3F8-U+1F3FF, U+1F4FF and U+1F54B-U+1F54F)
* Upside Down Face and Face With Rolling Eyes emoji (total 2 characters) were added to '''Emoticons'''. (U+1F643-U+1F644)
* A Place of Worship emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D0)
== Unicode 9.0 ==
Unicode 9.0, was released in June 21, 2016. It encoded 128,172 characters, adding 7,500 new characters.
=== New blocks ===
* '''Cyrillic Extended-C''' (U+1C80-U+1C8F), containing 9 letters, was added.
* '''Osage''' (U+104B0-U+104FF), containing 72 letters, was added.
* '''Newa''' (U+11400-U+1147F), containing 92 letters, was added.
* '''Mongolian Supplement''' (U+11660-U+1167F), containing 13 letters, was added.
* '''Bhaiksuki''' (U+11C00-U+11C6F), containing 97 letters, was added.
* '''Marchen''' (U+11C70-U+11CBF), containing 68 letters, was added.
* '''Ideographic Symbols and Punctuation''' (U+16FE0-U+16FFF), containing 1 letter, was added.
* '''Tangut''' (U+17000-U+187FF), containing 6125 letters, was added.
* '''Tangut Components''' (U+18800-U+18AFF), containing 755 letters, was added.
* '''Glagolitic Supplement''' (U+1E000-U+1E02F), containing 38 letters, was added.
* '''Adlam''' (U+1E900-U+1E95F), containing 87 letters, was added.
=== Extended blocks ===
* Letters for Bravanese, Warsh and Quranic marks used in Pakistan (total 23 characters) were added to '''Arabic Extended-A'''. (U+08B6-U+08BD and U+08D4-U+08E2)
* A sign Spacing Candrabindu (total 1 character) were added to '''Kannada'''. (U+0C80)
* Sign Para, Chillu letters and vulgar fractions (total 14 characters) were added to '''Malayalam'''. (U+0D4F, U+0D54-U+0D56, U+0D58-U+0D5E and U+0D76-U+0D78)
* A diacritical mark for Newa (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFB)
* Power symbols (total 4 characters) were added to '''Miscellaneous Technical'''. (U+23FB-U+23FE)
* Punctuation marks for Church Slavonic (total 2 characters) were added to '''Supplemental Punctuation'''. (U+2E43-U+2E44)
* A letter for Unifon (total 1 character) was added to '''Latin Extended-D'''. (U+A7AE)
* A sign Candrabindu (total 1 character) was added to '''Saurashtra'''. (U+A8C5)
* Indiction sign and a currency symbol (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018D-U+1018E)
* A sign Sukun (total 1 character) was added to '''Khojki'''. (U+1123E)
* Japanese TV symbols (total 18 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F19B-U+1F1AC)
* A Japanese TV symbol (total 1 character) was added to '''Enclosed Ideographic Supplement'''. (U+1F23B)
* A dancing man and Black Heart emoji (total 2 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F57A and U+1F5A4)
* Octagonal Sign, Shopping Trolley, scooters and a Canoe emoji (total 5 characters) were added to '''Transport and Map Symbols'''. (U+1F6D1-U+1F6D2 and U+1F6F4-U+1F6F6)
* (total 67 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F919-U+1F91E, U+1F920-U+1F927, U+1F930, U+1F933-U+1F93E, U+1F940-U+1F94B, U+1F950-U+1F95E and U+1F985-U+1F991)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|0030 FE00
|
|short diagonal stroke form # DIGIT ZERO
|-
|1000 FE00
|
|dotted form # MYANMAR LETTER KA
|-
|1002 FE00
|
|dotted form # MYANMAR LETTER GA
|-
|1004 FE00
|
|dotted form # MYANMAR LETTER NGA
|-
|1010 FE00
|
|dotted form # MYANMAR LETTER TA
|-
|1011 FE00
|
|dotted form # MYANMAR LETTER THA
|-
|1015 FE00
|
|dotted form # MYANMAR LETTER PA
|-
|1019 FE00
|
|dotted form # MYANMAR LETTER MA
|-
|101A FE00
|
|dotted form # MYANMAR LETTER YA
|-
|101C FE00
|
|dotted form # MYANMAR LETTER LA
|-
|101D FE00
|
|dotted form # MYANMAR LETTER WA
|-
|1022 FE00
|
|dotted form # MYANMAR LETTER SHAN A
|-
|1031 FE00
|
|dotted form # MYANMAR VOWEL SIGN E
|-
|1075 FE00
|
|dotted form # MYANMAR LETTER SHAN KA
|-
|1078 FE00
|
|dotted form # MYANMAR LETTER SHAN CA
|-
|107A FE00
|
|dotted form # MYANMAR LETTER SHAN NYA
|-
|1080 FE00
|
|dotted form # MYANMAR LETTER SHAN THA
|-
|2205 FE00
|
|zero with long diagonal stroke overlay form # EMPTY SET
|-
|AA60 FE00
|
|dotted form # MYANMAR LETTER KHAMTI GA
|-
|AA61 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CA
|-
|AA62 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CHA
|-
|AA63 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JA
|-
|AA64 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JHA
|-
|AA65 FE00
|
|dotted form # MYANMAR LETTER KHAMTI NYA
|-
|AA66 FE00
|
|dotted form # MYANMAR LETTER KHAMTI TTA
|-
|AA6B FE00
|
|dotted form # MYANMAR LETTER KHAMTI NA
|-
|AA6C FE00
|
|dotted form # MYANMAR LETTER KHAMTI SA
|-
|AA6F FE00
|
|dotted form # MYANMAR LETTER KHAMTI FA
|-
|AA7A FE00
|
|dotted form # MYANMAR LETTER AITON RA
|-
|…
|
|278 additional emoji variation sequences
|}
== Unicode 10.0 ==
Unicode 10.0, was released in June 20, 2017. It encoded 136,690 characters, adding 8,518 new characters.
=== New blocks ===
* '''Syriac Supplement''' (U+0860-U+086F), containing 11 characters, was added.
* '''Zanabazar Square''' (U+11A00-U+11A4F), containing 72 characters, was added.
* '''Soyombo''' (U+11A50-U+11AAF), containing 80 characters, was added.
* '''Masaram Gondi''' (U+11D00-U+11D5F), containing 75 characters, was added.
* '''Kana Extended-A''' (U+1B100-U+1B12F), containing 31 characters, was added.
* '''Nushu''' (U+1B170-U+1B2FF), containing 396 characters, was added.
* '''CJK Unified Ideographs Extension F''' (U+2CEB0-U+2EBEF), containing 7,473 characters, was added.
=== Extended blocks ===
* A Vedic Anusvara and Abbreviation mark (total 2 characters) were added to '''Bengali'''. (U+09FC-U+09FD)
* Letters for Arabic transliteration (total 6 characters) were added to '''Gujarati'''. (U+0AFA-U+0AFF)
* A combining Anusvara Above and Viramas (total 3 characters) were added to '''Malayalam'''. (U+0D00 and U+0D3B-U+0D3C)
* A sign Atikrama (total 1 character) was added to '''Vedic Extensions'''. (U+1CF7)
* Combining diacritical marks for Church Slavonic (total 4 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DF6-U+1DF9)
* A Bitcoin sign (total 1 character) was added to '''Currency Symbols'''. (U+20BF)
* An Observe Eye symbol (total 1 character) was added to '''Miscellaneous Technical'''. (U+23FF)
* A Group mark (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2BD2)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E45-U+2E49)
* A letter O with Dot Above (total 1 character) was added to '''Bopomofo'''. (U+312E)
* Ideographs for Slavonic transliteration (total 21 characters) were added to '''CJK Unified Ideographs'''. (U+9FD6-U+9FEA)
* Letters for North Italic (total 3 characters) were added to '''Old Italic'''. (U+1032D-U+1032F)
* An Iteration mark for Nushu (total 1 character) was added to '''Ideographic Symbols and Punctuation'''. (U+16FE1)
* Letters for Hentaigana (total 254 characters) were added to '''Kana Supplement'''. (U+1B002-U+1B0FF)
* Symbols for Chinese Folk religion (total 6 characters) were added to '''Enclosed Ideographic Supplement'''. (U+1F260-U+1F265)
* Stupa, Pagoda, Sled and Flying Saucer emoji (total 4 characters) were added to '''Transport and Map Symbols'''. (U+1F6D3-U+1F6D4 and U+1F6F7-U+1F6F8)
* (total 66 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F900-U+1F90B, U+1F91F, U+1F928-U+1F92F, U+1F931-U+1F932, U+1F94C, U+1F95F-U+1F96B, U+1F992-U+1F997 and U+1F9D0-U+1F9E6)
== Unicode 11.0 ==
Unicode 11.0, was released in June 5, 2018. It encoded 137,374 characters, adding 684 new characters.
=== New blocks ===
* '''Georgian Extended''' (U+1C90-U+1CBF), containing 46 characters, was added.
* '''Hanifi Rohingya''' (U+10D00-U+10D3F), containing 50 characters, was added.
* '''Old Sogdian''' (U+10F00-U+10F2F), containing 40 characters, was added.
* '''Sogdian''' (U+10F30-U+10F6F), containing 42 characters, was added.
* '''Dogra''' (U+11800-U+1184F), containing 60 characters, was added.
* '''Gunjala Gondi''' (U+11D60-U+11DAF), containing 63 characters, was added.
* '''Makasar''' (U+11EE0-U+11EFF), containing 25 characters, was added.
* '''Medefaidrin''' (U+16E40-U+16E9F), containing 91 characters, was added.
* '''Mayan Numerals''' (U+1D2E0-U+1D2FF), containing 20 characters, was added.
* '''Indic Siyaq Numbers''' (U+1EC70-U+1ECBF), containing 68 characters, was added.
* '''Chess Symbols''' (U+1FA00-U+1FA6F), containing 14 characters, was added.
=== Extended blocks ===
* Small letters Turned Ayb and Yi with Stroke (total 2 characters) were added to '''Armenian'''. (U+0560 and U+0588)
* A triangle Yod (total 1 character) were added to '''Hebrew'''. (U+05EF)
* A Dantayalan and currency symbols (total 3 characters) were added to '''N'Ko'''. (U+07FD-U+07FF)
* A Small Low Waw (total 1 character) was added to '''Arabic Extended-A'''. (U+08D3)
* A Sandhi mark (total 1 character) was added to '''Bengali'''. (U+09FE)
* An Abbreviation mark (total 1 character) was added to '''Gurmukhi'''. (U+0A76)
* A combining Anusvara Above (total 1 character) was added to '''Telugu'''. (U+0C04)
* A sign Siddham (total 1 character) was added to '''Kannada'''. (U+0C84)
* A letter for Buryat (total 1 character) was added to '''Mongolian'''. (U+1878)
* Symbols for chess notation, astrological and half star symbols (total 43 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BBA-U+2BBC, U+2BD3-U+2BEB and 2BF0-U+2BFE)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E4A-U+2E4E)
* A letter NN (total 1 character) was added to '''Bopomofo'''. (U+312F)
* Some ideographs for Kanji (total 5 characters) were added to '''CJK Unified Ideographs'''. (U+9FEB-U+9FEF)
* A small capital Q and a letter for Mazahua (total 3 characters) were added to '''Latin Extended-D'''. (U+A7AF and U+A7B8-U+A7B9)
* Letter and vowel sign Ay (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FE-U+A8FF)
* Letters Ttta, Vha and a vulgar fraction (total 3 characters) were added to '''Kharoshthi'''. (U+10A34-U+10A35 and U+10A48)
* A Number Sign Above (total 1 character) was added to '''Kaithi'''. (U+110CD)
* Letter Lhaa, vowel sign Aa and Ei (total 3 characters) were added to '''Chakma'''. (U+11144-U+11146)
* A combining Bindu Below (total 1 character) was added to '''Grantha'''. (U+1133B)
* A Sandhi mark (total 1 character) was added to '''Newa'''. (U+1145E)
* An alternate letter Ba (total 1 character) was added to '''Ahom'''. (U+1171A)
* A mark Pluta (total 1 character) was added to '''Soyombo'''. (U+11A9D)
* Additional ideographs (total 5 characters) were added to '''Tangut'''. (U+187ED-U+187F1)
* Tally marks (total 7 characters) were added to '''Counting Rod Numerals'''. (U+1D372-U+1D378)
* A Copyleft symbol (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F12F)
* A Skateboard emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6F9)
* Normal and negative circled shapes (total 4 characters) were added to '''Geometric Shapes Extended'''. (U+1F7D5-U+1F7D8)
* (total 65 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F94D-U+1F94F, U+1F96C-U+1F970, U+1F973-U+1F976, U+1F97A, U+1F97C-U+1F97F, U+1F998-U+1F99F, U+1F9A0-U+1F9A2, U+1F9B0-U+1F9B9, U+1F9C1-U+1F9C2 and U+1F9E7-U+1F9FF)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|FF10 FE00
|
|short diagonal stroke form # FULLWIDTH DIGIT ZERO
|}
== Unicode 12.0 ==
Unicode 12.0 was released on March 5, 2019. It encoded 137,928 characters, adding 554 new characters.
=== New blocks ===
* '''Elymaic''' (U+10FE0-U+10FFF), containing 23 characters, was added.
* '''Nandinagari''' (U+119A0-U+119FF), containing 65 characters, was added.
* '''Tamil Supplement''' (U+11FC0-U+11FFF), containing 51 characters, was added.
* '''Egyptian Hieroglyph Format Controls''' (U+13430-U+1343F), containing 9 characters, was added.
* '''Small Kana Extension''' (U+1B130-U+1B16F), containing 7 characters, was added.
* '''Nyiakeng Puachue Hmong''' (U+1E100-U+1E14F), containing 71 characters, was added.
* '''Wancho''' (U+1E2C0-U+1E2FF), containing 59 characters, was added.
* '''Ottoman Siyaq Numbers''' (U+1ED00-U+1ED4F), containing 61 characters, was added.
* '''Symbols and Pictographs Extended-A''' (U+1FA70-U+1FAFF), containing 16 characters, was added.
=== Extended blocks ===
* A sign Siddham (total 1 character) was added to '''Telugu'''. (U+0C77)
* Letters for Pail and Sanskrit (total 15 characters) were added to '''Lao'''. (U+0E86, U+0E89, U+0E8C, U+0E8E-U+0E93, U+0E98, U+0EA0, U+0EA8-U+0EA9, U+0EAC and U+0EBA)
* A sign Double Anusvara Antargomukha (total 1 character) was added to '''Vedic Extensions'''. (U+1CFA)
* An astrological symbol and Hellschreiber Pause symbol (total 2 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BC9 and U+2BFF)
* A Cornish Verse Divider (total 1 character) was added to '''Supplemental Punctuation'''. (U+2E4F)
* Egyptological letters, Anglicana W and letters for early Pinyin (total 11 characters) were added to '''Latin Extended-D'''. (U+A7BA-U+A7BF and U+A7C2-U+A7C6)
*Sinological phonetic letters (total 2 characters) were added to '''Latin Extended-E'''. (U+AB66-U+AB67)
* A Vedic Anusvara (total 1 character) was added to '''Newa'''. (U+1145F)
* An archaic letter Kha (total 1 character) was added to '''Takri'''. (U+116B8)
* Sign Jihvamuliya and Uphadhmaniya (total 2 characters) were added to '''Soyombo'''. (U+11A84-U+11A85)
* Letters for various Yi and Miao languages (total 16 characters) were added to '''Miao'''. (U+16F45-U+16F4A, U+16F4F and U+16F7F-U+16F87)
* Marks for Ancient Chinese texts (total 2 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE2-U+16FE3)
* Some additional ideographs (total 6 characters) were added to '''Tangut'''. (U+187F2-U+187F7)
* A Nasalization mark (total 1 character) was added to '''Adlam'''. (U+1E94B)
* A Spanish and Portuguese register mark (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F16C)
* Hindu Temple and Auto Rickshaw emoji (total 2 characters) were added to '''Transport and Map Symbols'''. (U+1F6D5 and U+1F6FA)
* Large colored circles and boxes (total 12 characters) were added to '''Geometric Shapes Extended'''. (U+1F7E0-U+1F7EB)
* (total 31 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90D-U+1F90F, U+1F93F, U+1F971, U+1F97B, U+1F9A5-U+1F9AA, U+1F9AE-U+1F9AF, U+1F9BA-U+1F9BF, U+1F9C3-U+1F9CA and U+1F9CD-U+1F9CF)
* Heterodox chess symbols (total 84 characters) were added to '''Chess Symbols'''. (U+1FA00-U+1FA53)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Spacing Modifier Letters
|02EA, 02EB
|2
|-
|Vedic Extensions
|1CF2..1CF3
|2
|-
|Currency Symbols
|20A9
|1
|-
|CJK Symbols and Punctuation
|3001, 3002
|2
|-
|Bopomofo
|3105..312F
|43
|-
|Bopomofo Extended
|31A0..31BA
|27
|-
|CJK Unified Ideographs Extension A
|37C3, 3B9D, 3CFD, 3FE0, 44EC, 4A76
|6
|-
|CJK Unified Ideographs
|5344, 55B9, 6ABC, 6FF9, 809E, 80BC, 80E9, 8132, 8159, 841C, 891D, 8C6C, 915E, 9FD4
|14
|-
|Phags-pa
|A840..A877
|56
|-
|Halfwidth and Fullwidth Forms
|FF01, FF0C, FF0E, FF1A, FF1B, FF1F
|6
|-
|CJK Unified Ideographs Extension B
|200DD, 20164, 20BBF, 20C02, 20CED, 21D4C, 2278B, 23AB8, 2459B, 24A7D, 24FB9, 25ED7, 2677C, 26B4C, 26C21, 26CBE, 26E3D, 28834, 289A1, 289C0, 28A0F, 28B46
|22
|-
|CJK Unified Ideographs Extension C
|2A8FB, 2A917, 2AA30
|3
|-
|CJK Unified Ideographs Extension E
|2BA52, 2BD77, 2C494, 2C72F, 2C734, 2CB38
|6
|-
|CJK Unified Ideographs Extension F
|2D23B, 2E83A
|2
|-
! colspan="2" |Total
!192
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|3001 FE00
|
|corner-justified form # IDEOGRAPHIC COMMA
|-
|3001 FE01
|
|centered form # IDEOGRAPHIC COMMA
|-
|3002 FE00
|
|corner-justified form # IDEOGRAPHIC FULL STOP
|-
|3002 FE01
|
|centered form # IDEOGRAPHIC FULL STOP
|-
|FF01 FE00
|
|corner-justified form # FULLWIDTH EXCLAMATION MARK
|-
|FF01 FE01
|
|centered form # FULLWIDTH EXCLAMATION MARK
|-
|FF0C FE00
|
|corner-justified form # FULLWIDTH COMMA
|-
|FF0C FE01
|
|centered form # FULLWIDTH COMMA
|-
|FF0E FE00
|
|corner-justified form # FULLWIDTH FULL STOP
|-
|FF0E FE01
|
|centered form # FULLWIDTH FULL STOP
|-
|FF1A FE00
|
|corner-justified form # FULLWIDTH COLON
|-
|FF1A FE01
|
|centered form # FULLWIDTH COLON
|-
|FF1B FE00
|
|corner-justified form # FULLWIDTH SEMICOLON
|-
|FF1B FE01
|
|centered form # FULLWIDTH SEMICOLON
|-
|FF1F FE00
|
|corner-justified form # FULLWIDTH QUESTION MARK
|-
|FF1F FE01
|
|centered form # FULLWIDTH QUESTION MARK
|}
== Unicode 12.1 ==
Unicode 12.1 was released on May 7, 2019. It encoded 137,929 characters, adding only 1 new character.
=== Extended blocks ===
* A square era name Reiwa (total 1 character) was added to '''Enclosed CJK Letters and Months'''. (U+32FF)
== Unicode 13.0 ==
Unicode 13.0 was released on March 10, 2020. It encoded 143,859 characters, adding 5,930 new characters.
=== New blocks ===
* '''Yezidi''' (U+10E80-U+10EBF), containing 47 characters, was added.
* '''Chorasmian''' (U+10FB0-U+10FDF), containing 28 characters, was added.
* '''Dives Akuru''' (U+11900-U+1195F), containing 72 characters, was added.
* '''Lisu Supplement''' (U+11FB0-U+11FBF), containing 1 character, was added.
* '''Khitan Small Script''' (U+18B00-U+18CFF), containing 470 characters, was added.
* '''Tangut Supplement''' (U+18D00-U+18D08), containing 9 characters, was added.
* '''Symbols for Legacy Computing''' (U+1FB00-U+1FBFF), containing 212 characters, was added.
* '''CJK Unified Ideographs Extension G''' (U+30000-U+3134F), containing 4939 characters, was added.
=== Extended blocks ===
* Letters for African languages and Punjabi (total 10 characters) were added to '''Arabic Extended-A'''. (U+08BE-U+08C7)
* A sign Overline (total 1 character) was added to '''Oriya'''. (U+0B55)
* A Vedic Anusvara (total 1 character) was added to '''Malayalam'''. (U+0D04)
* A sign Candrabindu (total 1 character) was added to '''Sinhala'''. (U+0D81)
* Combining diacritical marks for Scottish phonology (total 2 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1ABF-U+1AC0)
* A Japanese symbol for Type A Electronics (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B97)
* Cross patties and a Tironian sign Capita Et (total 3 characters) were added to '''Supplemental Punctuation'''. (U+2E50-U+2E52)
* Letters for Taiwan and Cantonese language (total 5 characters) were added to '''Bopomofo Extended'''. (U+31BB-U+31BF)
* Some disunified ideographs (total 10 characters) were added to '''CJK Unified Ideographs Extension A'''. (U+4DB6-4DBF)
* Some ideographs for China (total 13 characters) were added to '''CJK Unified Ideographs'''. (U+9FF0-U+9FFC)
* Letters for Gaulish (total 6 characters) were added to '''Latin Extended-D'''. (U+A7C7-U+A7CA and U+A7F5-U+A7F6)
* An alternate sign Nasanta (total 1 character) was added to '''Syloti Nagri'''. (U+A82C)
* Letter R With Midle Tilde and modifier letters for Scottish phonology (total 4 characters) were added to '''Latin Extended-E'''. (U+AB68-U+AB6B)
* A symbol Ascia (total 1 character) was added to '''Ancient Symbols'''. (U+1019C)
* A letter for Pali (total 1 character) was added to '''Chakma'''. (U+11147)
* A vowel sign Prishthamatra E and Inverted Candrabindu (total 2 characters) were added to '''Sharada'''. (U+111CE and U+111CF)
* Double comma, sign Jihvamuliya and Uphadhmaniya (total 3 characters) were added to '''Newa'''. (U+1145A and U+11460-U+11461)
* Khitan Small Script Filler and reading marks for Vietnamese (total 3 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE4 and U+16FF0-U+16FF1)
* Some additional components (total 13 characters) were added to '''Tangut Components'''. (U+18AF3-U+18AFF)
* Creative Commons license symbols and Mask Work symbol (total 7 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10D-U+1F10F, U+1F16D-1F16F and U+1F1AD)
* Hut, Elevator, Pickup Truck and Roller Skate emoji (total 4 characters) were added to '''Transportation and Map Symbols'''. (U+1F6D6-U+1F6D7 and U+1F6FB-U+1F6FC)
* Arrows for legacy computing (total 2 characters) were added to '''Supplemental Arrows-C'''. (U+1F8B0-U+1F8B1)
* (total 10 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90C, U+1F972, U+1F977-U+1F978, U+1F9A3-U+1F9A4, U+1F9AB-U+1F9AD and U+1F9CB)
* (total 41 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA74, U+1FA83-U+1FA86, U+1FA96-U+1FAA8, U+1FAB0-U+1FAB6, U+1FAC0-U+1FAC2 and U+1FAD0-U+1FAD6)
* Gongche charaters for Kunqu Opera (total 7 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6D7-U+2A6DD)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Tagalog
|1700..170C, 170E..1714
|20
|-
|Mongolian
|1834, 1871, 1878
|3
|-
|Sundanese
|1BAB
|1
|-
|Currency Symbols
|20BF
|1
|-
|CJK Radicals Supplement
|2E80..2E99, 2E9B..2EF3
|115
|-
|Kangxi Radicals
|2F00..2FD5
|214
|-
|CJK Unified Ideographs Extension A
|3472, 38C7, 3DB8, 3FE0, 440B, 46E9
|6
|-
|CJK Unified Ideographs
|53FD, 6146, 6711, 671C, 6721, 6725, 6BD2, 7B9A, 87CE, 8956, 93BF, 9B97
|12
|-
|Latin Extended-D
|A764..A765
|2
|-
|Phags-pa
|A86D
|1
|-
|Tangut
|175F6, 17F0D, 17F8A, 17FA5, 180D6, 18139, 18147, 184F1, 18736
|9
|-
|Tangut Components
|18843, 18856, 1888C, 1890A, 18915, 1893B
|6
|-
|Adlam
|1E900..1E94A, 1E950..1E959, 1E95E..1E95F
|71
|-
|Miscellaneous Symbols and Pictographs
|1F3B1
|1
|-
|Supplemental Symbols and Pictographs
|1F995..1F998, 1F99B..1F99E, 1F9B0..1F9B3, 1F9E7
|13
|-
|CJK Unified Ideographs Extension B
|20219, 21249, 21827, 22C3A, 2327B, 23496, 2355E, 2363B, 236ED, 23839, 23FD5, 24261, 24726, 248F2, 2548E, 26657, 26C9E, 26FE1, 27334, 27C0E, 27CEF, 2A38C
|22
|-
|CJK Unified Ideographs Extension C
|2AED5, 2AEF3, 2AF76, 2B09F, 2B1C3, 2B1E5
|6
|-
|CJK Unified Ideographs Extension E
|2B83C, 2B8D9..2B8DA, 2B96F, 2BBD7, 2BD61, 2BE4A, 2BF1D, 2BF9D, 2C0B8, 2C142, 2C176, 2C316, 2C3FB, 2C402, 2C7AC, 2C82C, 2C83A, 2C9A1, 2CC88, 2CD68
|21
|-
|CJK Unified Ideographs Extension F
|2DC09, 2DE4A, 2EB7E, 2EB89
|4
|-
|CJK Compatibility Ideographs Supplement
|2F83B, 2F878, 2F8D6..2F8D7, 2F8DA, 2F8F0, 2F984, 2FA02
|8
|-
! colspan="2" |Total
!536
|}
== Unicode 14.0 ==
Unicode 14.0 was released on September 14, 2021. It encoded 144,697 characters, adding 838 new characters.
=== New blocks ===
* '''Arabic Extended-B''' (U+0870-U+089F), containing 41 characters, was added.
* '''Vithkuqi''' (U+10570-U+105BF), containing 70 characters, was added.
* '''Latin Extended-F''' (U+10780-U+107BF), containing 57 characters, was added.
* '''Old Uyghur''' (U+10F70-U+10FAF), containing 26 characters, was added.
* '''Unified Canadian Aboriginal Syllabics Extended-A''' (U+11AB0-U+11ABF), containing 16 characters, was added.
* '''Cypro-Minoan''' (U+12F90-U+12FFF), containing 99 characters, was added.
* '''Tangsa''' (U+16A70-U+16ACF), containing 89 characters, was added.
* '''Kana Extended-B''' (U+1AFF0-U+1AFFF), containing 13 characters, was added.
* '''Znamenny Musical Notation''' (U+1CF00-U+1CFFF), containing 185 characters, was added.
* '''Latin Extended-G''' (U+1DF00-U+1DFFF), containing 31 characters, was added.
* '''Toto''' (U+1E290-U+1E2BF), containing 31 characters, was added.
* '''Ethiopic Extended-B''' (U+1E7E0-U+1E7FF), containing 28 characters, was added.
=== Extended blocks ===
* An End of Text punctuation mark (total 1 character) was added to '''Arabic'''. (U+061D)
* Letters for Balti and Quranic orthography (total 12 characters) were added to '''Arabic Extended-A'''. (U+08B5 and U+08C8-U+08D2)
* A sign Nukta and letter Nakaara Pollu (total 2 characters) were added to '''Telugu'''. (U+0C3C and U+0C5D)
* A letter Nakaara Pollu (total 1 character) was added to '''Kannada'''. (U+0CDD)
* A letter Ra, sign Pamudpod and archaic letter Ra (total 3 characters) were added to '''Tagalog'''. (U+170D, U+1715 and U+171F)
* A fourth Free variation selector (total 1 character) was added to '''Mongolian'''. (U+180F)
* Combining diacritical marks for extended IPA (total 14 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1AC1-U+1ACE)
* An archaic ligature Jnya and punctuation marks (total 3 characters) were added to '''Balinese'''. (U+1B4C and U+1B7D-U+1B7E)
* A combining Dot Below Left (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFA)
* A Kyrgyz Som sign (total 1 character) was added to '''Currency Symbols'''. (U+20C0)
* A letter Caudate Chrivi (total 2 characters) were added to '''Glagolitic'''. (U+2C2F and U+2C5F)
* Medieval and phonetic punctuation marks (total 11 characters) were added to '''Supplemental Punctuation'''. (U+2E53-U+2E5D)
* Some ideographs for Macao (total 3 characters) were added to '''CJK Unified Ideographs'''. (U+9FFD-U+9FFF)
* Archaic European letters, modifier letters for Sokuon and Chatino orthography (total 13 characters) were added to '''Latin Extended-D'''. (U+A7C0-U+A7C1, U+A7D0-U+A7D1, U+A7D3, U+A7D5, U+A7D6-U+A7D9 and U+A7F2-U+A7F4)
* A modifier letter Wasla Above and honorifics (total 20 characters) were added to '''Arabic Presentation Forms-A'''. (U+FBC2, U+FD40-U+FD4F, U+FDCF and U+FDFE-U+FDFF)
* Letters for Old Tamil (total 6 characters) were added to '''Brahmi'''. (U+11070-U+11075)
* A vowel sign Vocalic R (total 1 character) was added to '''Khaiti'''. (U+110C2)
* An Abbreviation sign (total 1 character) was added to '''Takri'''. (U+116B9)
* Letters for Tai Ahom (total 7 characters) were added to '''Ahom'''. (U+11740-U+11746) The block was expanded from (U+11700-U+1173F) to (U+11700-U+1174F)
* Kana archaic letters (total 4 characters) were added to '''Kana Extended-A'''. (U+1B11F-U+1B122)
* Accidental symbols for Iranian classical music (total 2 characters) were added to '''Musical Symbols'''. (U+1D1E9-U+1D1EA)
* Playground Slide, Wheel and Ring Buoy emoji (total 3 characters) were added to '''Transportation and Map Symbols'''. (U+1F6DD-U+1F6DF)
* A Heavy Equals Sign emoji (total 1 character) was added to '''Geometric Shapes Extended'''. (U+1F7F0)
* A Troll and Face Holding Back Tears emoji (total 2 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F979 and U+1F9CC)
* (total 31 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA7B-U+1FA7C, U+1FAA9-U+1FAAC, U+1FAB7-U+1FABA, U+1FAC3-U+1FAC5, U+1FAD7-U+1FAD9, U+1FAE0-U+1FAE7 and U+1FAF0-U+1FAF6)
* Some ideographs for Macao (total 2 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6DE-U+2A6DF)
* Disunified ideographs and a G source ideograph for China, Hong Kong and Vietnam (total 4 characters) were added to '''CJK Unified Ideographs Extension C'''. (U+2B735-U+2B738)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Latin Extended-B
|0184..0185
|2
|-
|Arabic
|0674..0678, 06C5, 06C7, 06FE
|8
|-
|Letterlike Symbols
|210B, 2110, 2112, 211B, 212C, 2130..2131, 2133
|8
|-
|Enclosed Alphanumerics
|2460..24FF
|160
|-
|Dingbats
|2776..2793
|30
|-
|CJK Symbols and Punctuation
|3001..3029, 3030..303D, 303F
|56
|-
|CJK Strokes
|31C0..31E3
|36
|-
|Katakana Phonetic Extensions
|31F0..31FF
|16
|-
|Enclosed CJK Letters and Months
|3200..321E, 3220..32FF
|255
|-
|CJK Compatibiity
|3300..33FF
|256
|-
|CJK Unified Ideographs Extension A
|3777, 3B3F
|2
|-
|CJK Unified Ideographs
|5DD5, 652C, 6AC0
|3
|-
|Arabic Presentation Forms-A
|FBD7..FBD8, FBDD, FBE0..FBE1
|5
|-
|Vertical Forms
|FE10..FE19
|10
|-
|CJK Compatibiity Forms
|FE30..FE4F
|32
|-
|Small Form Variants
|FE50..FE52, FE54..FE66, FE68..FE6B
|26
|-
|Halfwidth and Fullwidth Forms
|FF01..FF9F, FFA1..FFBE, FFC2..FFC7, FFCA..FFCF, FFD2..FFD7, FFDA..FFDC, FFE0..FFE6, FFE8..FFEE
|225
|-
|Egyptian Hieroglyphs
|1300A, 13017, 1302D, 13032, 13034..13035, 13037..13038, 1303A..1303E, 1304E..1304F, 13055, 13057, 13068, 1309A, 130D2, 130D5, 130F6, 130FE, 13192, 1325F, 13267, 1326A, 13281, 13297, 1329E, 132B4, 132C1, 132E6, 13304, 1331F, 13378..1337B, 1337D..1337E, 133F3, 133FA..13403, 1340D, 13417, 1342B
|55
|-
|Mathematical Alphanumeric Symbols
|1D49C, 1D49E..1D49F, 1D4A2, 1D4A5..1D4A6, 1D4A9..1D4AC, 1D4AE..1D4B5
|18
|-
|Enclosed Alphanumeric Supplement
|1F100..1F1AD, 1F1E6..1F1FF
|200
|-
|Enclosed Ideographic Supplement
|1F200..1F202, 1F210..1F23B, 1F240..1F248, 1F250..1F251, 1F260..1F265
|64
|-
|Supplemental Symbols and Pictographs
|1F930
|1
|-
|CJK Unified Ideographs Extension B
|22ADC, 230F2, 25B27, 26F28
|4
|-
! colspan="2" |Total
!1472
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|1D49C FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE00
|
|chancery style # SCRIPT CAPITAL B
|-
|1D49E FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE00
|
|chancery style # SCRIPT CAPITAL E
|-
|2131 FE00
|
|chancery style # SCRIPT CAPITAL F
|-
|1D4A2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE00
|
|chancery style # SCRIPT CAPITAL H
|-
|2110 FE00
|
|chancery style # SCRIPT CAPITAL I
|-
|1D4A5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE00
|
|chancery style # SCRIPT CAPITAL L
|-
|2133 FE00
|
|chancery style # SCRIPT CAPITAL M
|-
|1D4A9 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE00
|
|chancery style # SCRIPT CAPITAL R
|-
|1D4AE FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Z
|-
|1D49C FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE01
|
|roundhand style # SCRIPT CAPITAL B
|-
|1D49E FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE01
|
|roundhand style # SCRIPT CAPITAL E
|-
|2131 FE01
|
|roundhand style # SCRIPT CAPITAL F
|-
|1D4A2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE01
|
|roundhand style # SCRIPT CAPITAL H
|-
|2110 FE01
|
|roundhand style # SCRIPT CAPITAL I
|-
|1D4A5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE01
|
|roundhand style # SCRIPT CAPITAL L
|-
|2133 FE01
|
|roundhand style # SCRIPT CAPITAL M
|-
|1D4A9 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE01
|
|roundhand style # SCRIPT CAPITAL R
|-
|1D4AE FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Z
|}
===Named Sequences===
Here is a table with new named character sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Name
|-
|0915 093C
|DEVANAGARI SEQUENCE FOR LETTER QA
|-
|0916 093C
|DEVANAGARI SEQUENCE FOR LETTER KHHA
|-
|0917 093C
|DEVANAGARI SEQUENCE FOR LETTER GHHA
|-
|091C 093C
|DEVANAGARI SEQUENCE FOR LETTER ZA
|-
|0921 093C
|DEVANAGARI SEQUENCE FOR LETTER DDDHA
|-
|0922 093C
|DEVANAGARI SEQUENCE FOR LETTER RHA
|-
|092B 093C
|DEVANAGARI SEQUENCE FOR LETTER FA
|-
|092F 093C
|DEVANAGARI SEQUENCE FOR LETTER YYA
|-
|09A1 09BC
|BENGALI SEQUENCE FOR LETTER RRA
|-
|09A2 09BC
|BENGALI SEQUENCE FOR LETTER RHA
|-
|09AF 09BC
|BENGALI SEQUENCE FOR LETTER YYA
|-
|0A32 0A3C
|GURMUKHI SEQUENCE FOR LETTER LLA
|-
|0A38 0A3C
|GURMUKHI SEQUENCE FOR LETTER SHA
|-
|0A16 0A3C
|GURMUKHI SEQUENCE FOR LETTER KHHA
|-
|0A17 0A3C
|GURMUKHI SEQUENCE FOR LETTER GHHA
|-
|0A1C 0A3C
|GURMUKHI SEQUENCE FOR LETTER ZA
|-
|0A2B 0A3C
|GURMUKHI SEQUENCE FOR LETTER FA
|-
|0B21 0B3C
|ORIYA SEQUENCE FOR LETTER RRA
|-
|0B22 0B3C
|ORIYA SEQUENCE FOR LETTER RHA
|}
== Unicode 15.0 ==
Unicode 15.0 was released on September 13, 2022. It encoded 149,186 characters, adding 4,489 new characters.
=== New blocks ===
* '''Arabic Extended-C''' (U+10EC0-U+10EFF), containing 3 characters, was added.
* '''Devanagari Extended-A''' (U+11B00-U+11B5F), containing 10 characters, was added.
* '''Kawi''' (U+11F00-U+11F5F), containing 86 characters, was added.
* '''Kaktovik Numerals''' (U+1D2C0-U+1D2DF), containing 20 characters, was added.
* '''Cyrillic Extended-D''' (U+1E030-U+1E08F), containing 63 characters, was added.
* '''Nag Mundari''' (U+1E4D0-U+1E4FF), containing 42 characters, was added.
* '''CJK Unified Ideographs Extension H''' (U+31350-U+323AF), containing 4192 characters, was added.
=== Extended blocks ===
* A Yamakkan (total 1 character) was added to '''Lao'''. (U+0ECE)
* A combining Anusvara Above Right (total 1 character) was added to '''Kannada'''. (U+0CF3)
* Letters Qa, Short I and Vocalic R (total 3 characters) were added to '''Khojki'''. (U+1123F-U+11241)
* An additional hieroglyph to Group V (total 1 character) was added to '''Egyptian Hieroglyphs'''
* Extended format controls (total 29 characters) were added to '''Egyptian Hieroglyph Format Controls'''. (U+13439-U+13455). The block was expanded from (U+13430-U+1343F) to (U+13430-U+1345F)
* Hiragana and Katakana Small Ko (total 2 characters) were added to '''Small Kana Extension'''. (U+1B132 and U+1B155)
* Letters for Malayalam transliteration (total 6 characters) were added to '''Latin Extended-G'''. (U+1DF25-U+1DF2A)
* A Wireless emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6DC)
* A Nine Pointed White Star (total 1 character) was be added to '''Geometric Shapes Extended'''. (U+1F7D9)
* A Lot of Fortune, eclipse symbols and symbols for dwarf planets (total 6 characters) were added to '''Alchemical symbols'''. (U+1F774-U+1F776 and U+1F77B-U+1F77F)
* (total 20 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA75-U+1FA77, U+1FA87-U+1FA88, U+1FAAD-U+1FAAF, U+1FABB-U+1FABF, U+1FACE-U+1FACF, U+1FADA-U+1FADB, U+1FAE8 and U+1FAF7-U+1FAF8)
* A disunified ideograph for Macao (total 1 character) was added to '''CJK Unified Ideographs Extension C'''. (U+2B739)
===Glyph Changes===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|IPA Extensions
|025E, 029A
|2
|-
|United Canadian Aboriginal Syllabics
|144B, 14D1, 1506, 15C0..15C3, 15E8..15EE, 1601, 1604..1607, 160A..160D, 1614..162D, 1630..163F, 1646..1647, 165A
|66
|-
|United Canadian Aboriginal Syllabics Extended
|18DB, 18EC, 18F1..18F2, 18F5
|5
|-
|Sundanese
|1BBF
|1
|-
|Optical Character Recognition
|2447
|1
|-
|CJK Unified Ideographs Extension A
|34DC, 3BF6, 3C43, 48B4, 4DBE
|5
|-
|CJK Unified Ideographs
|585F, 5F50, 6BC0, 7BC9, 833E
|5
|-
|Cyrillic Extended-B
|A66E
|1
|-
|Old Turkic
|10C47
|1
|-
|Egyptian Hieroglyphs
|various (new standardized variation sequences)
|94
|-
|Khitan Small Script
|18CCA
|1
|-
|Wancho (font update)
|1E2C0..1E2F9, 1E2FF
|59
|-
|Alchemical Symbols (font update)
|1F700..1F773
|116
|-
|CJK Unified Ideographs Extension B
|20048, 20A1C, 2143F, 21A5F, 21C08, 21FBA, 22ACF, 23392, 238A7, 23D8F, 23F4E, 25D20, 26E30, 27B48, 27C4F, 28633, 28B02, 28E9A, 29760, 2A60F
|20
|-
|CJK Unified Ideographs Extension C
|2B249
|1
|-
|CJK Unified Ideographs Extension E
|2BB37, 2BD7D, 2C151, 2C1E0, 2C2D6, 2C5CA, 2C810, 2CD34
|8
|-
|CJK Unified Ideographs Extension F
|2CF4E, 2D25D, 2D3EC, 2D6A7, 2D7BA, 2D979, 2DA74, 2DA97, 2DC13, 2DDC0, 2DF10, 2DF78, 2E05A, 2E0AE, 2E516, 2E640, 2E680, 2EA63
|18
|-
|CJK Compatibility Ideographs Supplement
|2F804, 2F805, 2F833, 2F835, 2F84C, 2F84F, 2F852, 2F855, 2F887, 2F88B, 2F899, 2F8A0, 2F8A6, 2F8A7, 2F8AD, 2F8B1, 2F8B4, 2F8B7, 2F8BA, 2F8D0, 2F8E0..2F8E2, 2F8E5, 2F8E6, 2F8FE, 2F900, 2F901, 2F907, 2F912, 2F922, 2F926, 2F936, 2F938, 2F94E, 2F959, 2F95F, 2F96C, 2F99F, 2F9B8, 2F9BA, 2F9D3, 2F9DB, 2F9DC, 2F9E8, 2F9EA, 2F9EE, 2FA00, 2FA0D, 2FA1B
|50
|-
|CJK Unified Ideographs Extension G
|302FC, 30723, 30A6D, 30CF7, 30DBF, 31006, 3105D
|7
|-
! colspan="2" |Total
!461
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|13091 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027
|-
|13092 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027A
|-
|13093 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D028
|-
|130A9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D047
|-
|1310F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F016
|-
|13117 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F023
|-
|1311C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F028
|-
|13121 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F032
|-
|13127 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F037A
|-
|13139 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13139 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13183 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH H005
|-
|13187 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH H008
|-
|131A0 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131A0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131B1 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B1 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B8 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M009
|-
|131B9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M010
|-
|131BA FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M010A
|-
|131CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M017
|-
|131EE FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131EE FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131F8 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N010
|-
|131F9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131F9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131FA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N012
|-
|131FA FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N012
|-
|13216 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH N035
|-
|13257 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O006
|-
|1327B FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH O029
|-
|1327F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O031
|-
|1327F FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O031
|-
|13285 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O036
|-
|1328C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O039
|-
|132A4 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132A4 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132AA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Q003
|-
|132CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH R024
|-
|132DC FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S010
|-
|132E7 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E7 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E9 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S020
|-
|132F8 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S033
|-
|132FD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S037
|-
|13302 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S042
|-
|13303 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S043
|-
|13307 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T001
|-
|13308 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T002
|-
|13310 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008
|-
|13311 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008A
|-
|13312 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13312 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13313 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13313 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13314 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T010
|-
|13314 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T010
|-
|1331B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331B FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T016A
|-
|13321 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13321 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13322 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13322 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13331 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T035
|-
|13331 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T035
|-
|1333B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U007
|-
|1333C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U008
|-
|1334A FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U022
|-
|13361 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U042
|-
|13373 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V007A
|-
|13377 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V010
|-
|13378 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V011
|-
|1337D FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V012A
|-
|13385 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V019
|-
|13399 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V026
|-
|1339A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V027
|-
|133AF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W001
|-
|133B0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W002
|-
|133BF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W014
|-
|133D3 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH X004A
|-
|133DD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH Y002
|-
|133F2 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z007
|-
|133F5 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z010
|-
|133F6 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z011
|-
|13403 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z015I
|-
|13416 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA008
|-
|13419 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|1341A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA012
|-
|13423 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA021
|-
|1342C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA030
|-
|1342E FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA032
|-
|13443 FE00
|
|expanded # EGYPTIAN HIEROGLYPH LOST SIGN
|-
|13444 FE00
|
|expanded # EGYPTIAN HIEROGLYPH HALF LOST SIGN
|-
|13445 FE00
|
|expanded # EGYPTIAN HIEROGLYPH TALL LOST SIGN
|-
|13446 FE00
|
|expanded # EGYPTIAN HIEROGLYPH WIDE LOST SIGN
|}
== Unicode 15.1 ==
Unicode 15.1 was released on September 12th, 2023. It encoded 149,813 characters, adding 627 new characters.
=== New Blocks ===
* '''CJK Unified Ideographs Extension I''' (U+2EBF0-U+2EE5F), containing 622 characters, was added.
=== Extended Blocks ===
* 4 Ideographic characters were added to '''Ideographic Description Characters'''. (U+2FFC-U+2FFF)
* An Ideographic subtraction (total 1 character) was added to '''CJK Strokes'''. (U+31EF)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|CJK Unified Ideographs Extension A
|357E, 358B..358E, 3599..359D, 35AF..35B0, 35B2..35B3, 35DF..35E1, 35EF, 360F, 3612, 3F94, 44D5, 48EE
|5
|-
|CJK Unified Ideographs
|5098, 512D, 517A, 5391, 54DB, 551C, 551F, 55B8, 55ED, 56AB, 591E, 594A, 5B2E, 5DFC..5DFD, 5EE4, 609E, 65B0, 65B3, 65D5, 65F2, 67B2, 6AB6, 6AEC, 6C69, 6FC2, 6FD3, 7019, 7361, 74BD, 7934, 820B, 826E, 83BB, 8412, 8456, 848A, 896F, 8E34, 8FD7, 9166, 9855, 985E, 9C4D
|5
|-
|Latin Extended-D
|A798
|1
|-
|Latin Extended-E
|AB5A
|1
|-
|Tangut
|17105, 172A4, 17BD1..17BD3, 17EF9, 18136
|59
|-
|Alchemical Symbols
|1F741, 1F747, 1F74C, 1F74F, 1F756, 1F758, 1F763, 1F768, 1F76D, 1F76E
|116
|-
|CJK Unified Ideographs Extension B
|20302, 2087A, 20C00, 230B7, 2339E, 236EF, 237C3, 23B87, 23CC0, 23CD9, 23E5E, 2486F, 249D6, 249E8, 24D6A, 2585E, 25D89, 26A5A..26A5B, 26A73, 26A82..26A83, 26A90, 26AA6, 26AA8, 26AD8, 27350, 279F8, 284A3, 28BBA, 29516, 29530
|20
|-
|CJK Unified Ideographs Extension C
|2A741, 2AB63, 2ACD8, 2AF6F, 2B173, 2B490
|1
|-
|CJK Unified Ideographs Extension E
|2BC2E, 2BF45, 2C04C, 2C13A, 2C43C, 2C43E, 2C816
|8
|-
|CJK Unified Ideographs Extension F
|2D1CC..2D1CD, 2D1DD, 2D1E4, 2D1F7, 2D203, 2D256, 2D266, 2D2A2, 2D2AC, 2D2DA
|18
|-
|CJK Unified Ideographs Extension G
|301D4, 301D9, 301E4, 301E8, 301FF..30200, 30205, 3020C, 30211, 30215..30217, 30220, 30234..30235, 30237
|7
|-
|CJK Unified Ideographs Extension H
|314B7, 31542, 31569, 31C7F, 31D5A, 31F68
|7
|-
! colspan="2" |Total
!164
|}
== Unicode 16.0 ==
Unicode 16.0 was released on September 10th, 2024. It encoded 154,998 characters, adding 5185 new characters.
=== New Blocks ===
* '''Todhri''' (U+105C0-U+105FF), containing 52 characters, was added.
* '''Garay''' (U+10D40-U+10D8F), containing 69 characters, was added.
* '''Tulu-Tigalari''' (U+11380-U+113FF), containing 80 characters, was added.
* '''Myanmar Extended-C''' (U+116D0-U+116FF), containing 20 characters, was added.
* '''Sunuwar''' (U+11BC0-U+11BFF), containing 44 characters, was added.
* '''Egyptian Hieroglyphs Extended-A''' (U+13460-U+143FF), containing 3995 characters, was added.
* '''Gurung Khema''' (U+16100-U+1613F), containing 58 characters, was added.
* '''Kirat Rai''' (U+16D40-U+16D7F), containing 58 characters, was added.
* '''Symbols for Legacy Computing Supplement''' (U+1CC00-U+1CEBF), containing 686 characters, was added.
* '''Ol Onal''' (U+1E5D0-U+1E5FF), containing 44 characters, was added.
=== Extended Blocks ===
* A combining diacritical mark for Jawi (total 1 character) was added to '''Arabic Extended-B'''. (U+0897)
* Inverted letters and a punctuation mark (total 3 characters) was added to '''Balinese'''. (U+1B4E-U+1B4F and U+1B7F)
* A letter Tje (total 2 characters) was added to '''Cyrillic Extended-C'''. (U+1C89-U+1C8A)
* Legacy computing symbols for Delete (total 3 characters) was added to '''Control Pictures'''. (U+2427-U+2429)
* CJK strokes HXG and SZP (total 2 characters) was added to '''CJK Strokes'''. (U+31E4-U+31E5)
* A capital Rams Horn, an S with Diagonal Stroke, Lamda Letters, and letters for Wakashan and Salishan Languages (total 6 characters) was added to '''Latin Extended-D'''. (U+A7CB-U+A7CD, U+A7DA-U+A7DC)
* A combining Alef overlay and letters with two dots vertically below (total 4 characters) was added to '''Arabic Extended-C'''. (U+10EC2-U+10EC4 and U+10EFC)
* A sign Nukta (total 1 character) was added to '''Kawi'''. (U+11F5A)
* A blank character (total 1 character) was added to '''Khitan Small Script'''. (U+18CFF)
* A rightwards arrow with hook, and arrows for legacy computing and arrows for Egyptology (total 12 characters) was added to '''Supplemental Arrows-C'''. (U+1F8B2-U+1F8BB, U+1F8C0-U+1F8C1)
* A Harp, Shovel, Leafless Tree, Fingerprint, Root Vegetable, Splatter, and Face with Bags Under Eyes (total 7 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA89, U+1FA8F, U+1FABE, U+1FAC6, U+1FADC, U+1FADF, and U+1FAE9)
* Graphic shapes for legacy computing (total 37 characters) was added to '''Symbols for Legacy Computing'''. (U+1FBCB-U+1FBEF)
== Unicode 17.0 ==
Unicode 17.0 was released on September 9th, 2025. It encoded 159,801 characters, adding 4,083 new characters.
=== New Blocks ===
* '''Sidetic''' (U+10940-U+1095F), containing 26 characters, was added.
* '''Sharada Supplement''' (U+11B60-U+11B7F), containing 8 characters, was added.
* '''Tolong Siki''' (U+11DB0-U+11DEF), containing 54 characters, was added.
* '''Beria Erfe''' (U+16EA0-U+16EDF), containing 50 characters, was added.
* '''Tangut Components Supplement''' (U+18D80-U+18DFF), containing 115 characters, was added.
* '''Miscellaneous Symbols Supplement''' (U+1CEC0-U+1CEFF), containing 34 characters, was added.
* '''Tai Yo''' (U+1E6C0-U+1E6FF), containing 55 characters, was added.
* '''CJK Unified Ideographs Extension J''' (U+323B0-U+3347F), containing 4298 characters, was added.
=== Extended Blocks ===
* A Noon with Ring Above (total 1 character) was added to '''Arabic Extended-B'''. (U+088F)
* An archaic ligature Shrii (total 1 character) was added to '''Telugu'''. (U+0C5C)
* An archaic ligature Shrii (total 1 character) was added to '''Kannada'''. (U+0CDC)
* Compound tone and harrington diacritics (total 26 characters) was to '''Combining Diacritical Marks Extended'''. (U+1ACF-U+1ADD, U+1AE0-U+1AEB)
* Saudi Riyal Sign (total 1 character) was added to '''Currency Symbols'''. (U+20C1)
* Equal Sign with Infinity Above (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B96)
* 2 capital letters for Middle English, Latin pharyngeal voiced fricative, and Modifier Letter Capital S (total 5 characters) was added to '''Latin Extended-D'''. (U+A7CE-U+A7CF, U+A7D2, U+A7D4, U+A7F1)
* Arabic Ligature Rahmatu Allaahi Alayh and Arabic Honorifics (total 25 characters) was added to '''Arabic Presentation Forms-A'''. (U+FBC3-U+FBD2, U+FD90, U+FD91, U+FDC8-U+FDCE)
* A Small Yeh Barree with Two Dots Below, Thin Noon, Biblical End of Verse, Yeh with Four Dots Below, Honorifics, Double Vertical Bar Below, and Small Low Noon (total 14 characters) was added to '''Arabic Extended-C'''. (U+10EC5-U+10EC7, U+10ED0-U+10ED8, U+10EFA-U+10EFB)
* Chinese Simplified and Traditional Er and Yangqin Slow Signs Two, Three, and Four (total 5 characters) was added to '''Ideographic Symbols and Punctuation'''. (U+16FF2-U+16FF6)
* Some additional ideographs (total 8 characters) was added to '''Tangut'''. (U+187F8-U+187FF)
* Additional ideographs (total 22 characters) was added to '''Tangut Supplement'''. (U+18D09-U+18D1E)
* Nine symbols (total 9 characters) was added to '''Symbols for Legacy Computing Supplement'''. (U+1CCFA-U+1CCFC, U+1CEBA-1CEBF)
* A Landslide (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D8)
* Historical asteroid symbols (total 4 characters) was added to '''Alchemical Symbols'''. (U+1F777-U+1F77A)
* Chemical symbols (total 9 characters) was added to '''Supplemental Arrows-C'''. (U+1F8D0-U+1F8D8)
* White and Black Chess Ferz and Alfil (total 4 characters) was added to '''Chess Symbols'''. (U+1FA54-U+1FA57)
* A trombone, treasure chest, hairy creature, orca, distorted face, and fight cloud (total 6 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA8A, U+1FA8E, U+1FAC8, U+1FACD, U+1FAEA, and U+1FAEF)
* An alarm bell symbol (total 1 character) was added to '''Symbols for Legacy Computing'''. (U+1FBFA)
* Additional ideographs (total 6 characters) was added to '''CJK Unified Ideographs Extension C'''. (U+2B73A-U+2B73F)
* Additional ideographs (total 12 characters) was added to '''CJK Unified Ideographs Extension E'''. (U+2CEA2-U+2CEAD)
== Unicode 18.0 ==
Unicode 18.0 will be released around September 2026. In August 2025, only 61 characters were accepted, but more were accepted in November 2025.
=== New Blocks ===
*'''Bengali Supplement''' (U+11DF0-U+11DFF), containing 2 characters, will be added.
* '''Archaic Cuneiform Numerals''' (U+12550-U+1268F), containing 311 characters, will be added.
* '''Jurchen''' (U+18E00-U+1919F), containing 914 characters, will be added.
* '''Jurchen Radicals''' (U+191A0-U+191DF), containing 51 characters, will be added.
* '''Musical Symbols Supplement''' (U+1D250-U+1D28F), containing 50 characters, will be added.
* '''Miscellaneous Symbols and Arrows Extended''' (U+1DB00-U+1DBFF), containing 29 characters, will be added.
* '''Seal Script''' (U+3D000-U+3FC3F), containing 11328 characters, will be added.
=== Extended Blocks ===
* Modifier letters Eh, Ini, and Yi (total 3 characters) will be added to '''Armenian'''. (U+0558, U+058B-U+058C)
* Hebrew Point Sheva Na Mudgash and Hebrew Point Dagesh Hazaq Mudgash (total 2 characters) will be added to '''Hebrew'''. (U+05C8-U+05C9)
* Signs for dot above and double dot above (total 2 characters) will be added to '''Oriya'''. (U+0B53-U+0B54)
* Alternate positioned IPA diacritics and diacritics for Chao and Khoe (total 7 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1ADE-U+1ADF, U+1AEC-U+1AF0)
* Latin subscript small letter w, y, and z and Modifier letter high and low vertical line (total 4 characters) will be added to '''Superscripts and Subscripts'''. (U+208F, U+209D-U+209F)
* Rufiyaa Sign, UAE Dirham Sign, and Omani Rial (total 3 characters) will be added to '''Currency Symbols'''. (U+20C2-U+20C4)
* Two Wiggly Exclamation Marks and Two Parenthesis with Middle Ring (total 4 characters) will be added to '''Supplemental Punctuation'''. (U+2E60-U+2E63)
* Latin capital letter closed omega and Latin capital letter r with long leg and (total 2 characters) will be added to '''Latin Extended-D'''. (U+A7DD and U+A7E2)
* Latin capital letter script r and script r with ring (total 2 characters) will be added to '''Latin Extended-E'''. (U+AB6C-U+AB6D)
* Latin modifier letters for clicks (total 5 characters) will be added to '''Latin Extended-F'''. (U+107BB-U+107BF)
* Arabic Crown Letters, Quranic Characters, and Arabic Crown (total 39 characters) will be added to '''Arabic Extended-C'''. (U+10EC9-U+10ECF, U+10ED9-U+10EEE, U+10EF0-U+10EF9)
* Devanagari Letter Alternate Ddda (total 1 character) will be added to '''Devanagari Extended-A'''. (U+11B0A)
* Extended Cuneiform Numeric Signs (total 12 characters) will be added to '''Cuneiform Numbers and Punctuation'''. (U+1246F, U+12475-U+1247F)
* Jurchen Small Script characters (total 5 characters) will be added to '''Khitan Small Script'''. (U+18CD6-U+18CDA)
* Two additional ideographs (total 2 characters) will be added to '''Tangut Supplement'''. (U+18D1F-U+18D20)
* Hiragana Digraph Koto, Katakana Diagraphs Toki, Tote, and Yori, letters alternate Ne, and Wi (total 6 characters) will be added to '''Kana Extended-A'''. (U+1B123-U+1B128)
* Katakana letter small archaic Ye (total 1 character) will be added to '''Small Kana Extension'''. (U+1B168)
* Leibnizian alchemical symbols, Leibnizian cossic characters, and Leibnizian mathematical signs and symbols (total 19 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED2-U+1CED4, U+1CEDD-U+1CEDF, U+1CEF1-U+1CEFD)
* Stein Zimmerman Symbols, Digit Slash Symbols, and other Symbols (total 23 characters) will be added to '''Musical Symbols'''. (U+1D127-U+1D128, U+1D1EB-U+1D1FF)
* Mathematical italic long s with descender s (U+1D6A6) will be added to '''Mathematical Alphanumeric Symbols'''.
* Affricate ligatures, letters with palatal hook, barred letters, RFE letters, Initial Teaching Alphabet, English Phonotypic Alphabet, Leibnizian cossic characters, and modifier letters (total 151 characters) will be added to '''Latin Extended-G'''. (U+1DF1F-U+1DF24, U+1DF2B-U+1DF81, U+1DF90-U+1DF96, U+1DFCD-U+1DFFF)
* A Tomobiki symbol (total 1 character) will be added to '''Enclosed Alphanumeric Supplement'''. (U+1F1AE)
* A lighthouse (total 1 character) will be added to '''Transport and Map Symbols'''. (U+1F6D9)
* A black circle with white vertical bar, and Extended Geometric Shapes (total 17 characters) will be added to '''Geometric Shapes Extended'''. (U+1F7DA-U+1F7DB, U+1F7F1-U+1F7FF)
* A meteor, eraser, net with handle, monarch butterfly, pickle, cracking face, leftwards thumb sign, and rightwards thumb sign (total 8 characters) will be added to '''Symbols and Pictographs Extended-A'''. (U+1FA8B-1FA8D, U+1FACC, U+1FADD, U+1FAEB, U+1FAF9-1FAFA)
* An additional ideograph (total 1 character) will be added to '''CJK Unified Ideographs Extension D'''. (U+2B81E)
== Unicode 19.0==
Unicode 19.0 will be released in late 2027.
=== New Blocks ===
* '''CJK Unified Ideographs Components-A''' (U+2FA20-U+2FA9F)
* '''CJK Unified Ideographs Components-B''' (U+2FAA0-U+2FC1F)
== Code Points Provisionally Assigned==
This is a section where you can add any upcoming Unicode characters that have been [https://www.unicode.org/alloc/Pipeline.html#codepoint_reservation provisionally assigned for mature proposals] (but not yet accepted) for a future update of The Unicode Standard.
=== New Blocks ===
* '''Arabic Extended-D''' (U+10D90-U+10E5F), containing 3 characters, will be added.
* '''Sirmauri''' (U+11850-U+1188F), containing 55 characters, will be added.
* '''Leke''' (U+11B80-U+11BBF), containing 55 characters, will be added.
* '''Proto-Cuneiform''' (U+12690-U+12ECF), containing 1392 characters, will be added.
* '''Chisoi''' (U+16D80-U+16DAF), containing 40 characters, will be added.
* '''Mwangwego''' (U+16E00-U+16E3F), containing 64 characters, will be added.
* '''Shaaldaa''' (U+1C800-U+1CB2F), containing 804 characters, will be added.
* '''Leibnizian Ambiguous Signs''' (U+1DC00-U+1DC3F), containing 54 characters, will be added.
=== Extended Blocks ===
* Telugu Sign Spacing Candrabindu (total 1 character) will be added to '''Telugu'''. (U+0C70)
* Kannada Signs Ardhanusvara and Combining Anusvara Above (total 1 character) will be added to '''Kannada'''. (U+0CF0 and U+0CF4)
* Mongolian Letter Manchu Alternative Ue (total 1 character) will be added to '''Mongolian'''. (U+1879)
* Combining Grave-Acute-Macron, Combining inverted lazy s Above, and Combining comma Above and acute (total 3 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1AF1-U+1AF3)
* Cyrillic small letter Yeru with connecting bar (total 1 character) will be added to '''Cyrillic Extended-C'''. (U+1C8B)
* Belarusian Ruble sign and Ruble sign with double vertical stem (total 2 characters) will be added to '''Currency Symbols'''. (U+20C5, U+20CF)
* Combining Long Triple Solidus Overlay and Combining Saltire Overlay (total 2 characters) will be added to '''Combining Diacritical Marks for Symbols'''. (U+20F1-U+20F2)
* Latin capital and small letter i with oblique stroke (total 2 characters) will be added to '''Latin Extended-D'''. (U+A7De-U+A7DF)
* Latin capital letter u with left hook (total 1 character) will be added to '''Latin Extended-E'''. (U+AB6E)
* Arabic Dotless Half-Yeh, Half-Yeh, Dotless Half-Jeem and Astronomical Kaf (total 4 characters) will be added to '''Arabic Extended-C'''. (U+10EC0-U+10EC1, U+10EC8, U+10EEF)
* Brahmi minimizing virama (total 1 character) will be added to '''Brahmi'''. (U+1107E)
* Tulu-Tigalari letter combining anusvara above, signs om pushpika with tail and shrii pushpika, and letter archaic II (total 5 characters) will be added to '''Tulu-Tigalari'''. (U+113CB, U+113D9-U+113DB)
* Newa Letter Heavy Ya (total 1 character) will be added to '''Newa'''. (U+11462)
* Dogra Signs Candrabindu and Avaragha (total 2 characters) will be added to '''Dogra'''. (U+1183C-U+1183D)
* Devanagari Jivamuliya and Upadhmaniya (total 2 characters) will be added to '''Devanagari Extended-A'''. (U+11B0B-U+11B0C)
* Alchemical Symbol for Calx-2 and Alchemical Symbol for Retort-2 (total 2 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED1, U+1CED5)
* Musical Symbol down arrowhead breath mark (total 1 character) will be added to '''Musical Symbols Supplement'''. (U+1D282)
* Small w with palatal hook, small n and r with double middle tilde, small capital i with retroflex hook, small open q, x with stroke, small wavy y, schwa with right hook, Romance dialectology symbols, zh ligature, Albanian letter edhe, Albanian Frashëri letters, Modifier letter capital y, and modifier letter accents (total 26 characters) will be added to '''Latin Extended-G'''. (U+1DF82-U+1DF8F, U+1DF97-U+1DFA3, U+1DFC4-U+1DFCD)
*Arabic Astronomical zero and five astronomical symbols (total 6 characters) will be added to Arabic Mathematical Alphabetic Symbols (U+1EEE0-U+1EEE5)
==Roadmap Blocks==
This is a section where proportional maps of proposed allocations to Unicode and ISO/IEC 10646 are presented. Italic indicates scripts for which detailed proposals have not yet been written.<ref>[https://unicode.org/roadmaps/smp/]</ref>
* '''Northern Palaeohispanic''' (U+10200-U+1023F)
* '''Southern Palaeohispanic''' (U+10240-U+1027F)
* '''''Shavian Quikscript''' (U+103E0-U+103FF)''
* '''Combining Diacritical Marks Extended-A''' (U+107C0-U+107FF)
* '''Proto-Sinaitic''' (U+108B0-U+108DF)
* '''''Numidian''' (U+10960-U+1097F)''
* '''Balti''' (U+10AA0-U+10ABF)
* '''Book Pahlavi''' (U+10BB0-U+10BDF)
* '''Baburi''' (U+10BE0-U+10BFF)
* '''Arabic Extended-D''' (U+10D90-U+10E5F)
* '''Landa''' (U+11250-U+1127F)
* '''Tani Lipi''' (U+114E0-U+114FF)
* '''Ranjana''' (U+11500-U+1157F)
* '''Zou''' (U+11750-U+117AF)
* '''Pyu''' (U+117B0-U+117FF)
* '''Vateluttu''' (U+11960-U+1199F)
* '''Balti-B''' (U+11CC0-U+11CFF)
* '''Tocharian''' (U+11E00-U+11E6F)
* '''Khotanese''' (U+11E70-U+11ECF)
* '''Pallava''' (U+11F60-U+11FAF)
* '''''Egyptian Hieroglyphs Extended-B''' (U+14680-U+151FF)''
* '''Mayan Hieroglyphs''' (U+15500-U+15AFF)
* '''Kore Sebeli''' (U+15B00-U+15B6F)<!--proposed to be accepted, 93 characters-->
* '''Mandombe''' (U+15B80-U+15FFF)
* '''Kurukh Banna''' (U+16140-U+1618F)
* '''Moon''' (U+161A0-U+161FF)
* '''Blissymbols''' (U+16200-U+167FF)
* '''Woleai''' (U+16B90-U+16BFF)
* '''Kpelle''' (U+16C00-U+16C7F)
* '''Tikamuli''' (U+16C80-U+16CBF)
* '''Tangsa (Khimhun)''' (U+16CD0-U+16CFF)
* '''Afaka''' (U+16D00-U+16D3F)
* '''Kulitan''' (U+16DD0-U+16DFF)
* '''''Bopomofo Extended-A''' (U+16FA0-U+16FAF)''
* '''Kanbun Extended-A''' (U+16FB0-U+16FDF)
* '''Khitan Large Script''' (U+19200-U+199FF)
* '''Pau Cin Hau Syllabary''' (U+19E00-U+1A2FF)
* '''Eskaya''' (U+1A300-U+1A75F)
* '''Rejang Extended''' (U+1A760-U+1A77F)
* '''''Kaida''''' (U+1A780-U+1A7FF)
* '''Naxi Dongba''' (U+1A800-U+1ACFF)
* '''''Naxi Geba''' (U+1AD00-U+1AFCF)''
* '''''Kana Extended-C''' (U+1AFD0-U+1AFEF)''
* '''Shuishu Logograms''' (U+1B300-U+1B5FF)
* '''Lisu Syllabic Script''' (U+1B600-U+1B9FF)
* '''Indus''' (U+1BA00-U+1BB8F)
* '''Pitman Shorthand''' (U+1BCB0-U+1BCFF)
* '''Proto-Elamite''' (U+1BE00-U+1C37F)
* '''Linear Elamite''' (U+1C380-U+1C4FF)
* '''Ndiko Jonam''' (U+1CB30-U+1CB7F)
* '''N<nowiki>'</nowiki>ti''' (U+1CB80-U+1CBAF)
* '''Old Chinese Musical Symbols (Flute and Pipa)''' (U+1D290-U+1D2BF)
* '''''Mathematical Alphanumeric Symbols Supplement''' (U+1D380-U+1D3FF)''
* '''Jianzi Format Controls''' (U+1DAE0-U+1DAFF)
* '''Eebee Hmong''' (U+1E150-U+1E1FF)
* '''Western Cham''' (U+1E200-U+1E26F)
* '''Loma''' (U+1E300-U+1E41F)
* '''Bagam''' (U+1E420-U+1E4CF)
* '''Pungchen''' (U+1E500-U+1E52F)
* '''''Pungchung''' (U+1E530-U+1E55F)''
* '''''Marchung''' (U+1E560-U+1E59F)''
* '''Brusha''' (U+1E5A0-U+1E5CF)
* '''''Chola''' (U+1E600-U+1E65F)''
* '''Box-Headed''' (U+1E660-U+1E6BF)
* '''Lampung''' (U+1E700-U+1E73F)
* '''Kerinci''' (U+1E740-U+1E76F)
* '''Buginese Supplement''' (U+1E770-U+1E7BF)
* '''''Lontara Bilang-Bilang''' (U+1E7C0-U+1E7DF)''
* '''N'Ko Supplement''' (U+1E960-1E97F)
* '''''Byblos''''' (U+1EB90-U+1EBFF)
* '''Persian Siyaq Numbers''' (U+1EC00-U+1EC7F)
* '''Diwani Siyaq Numbers''' (U+1ECC0-U+1ECFF)
* '''''Extended Pictographic Characters''' (U+1FC00-U+1FFFF)''
== References ==
{{reflist}}
f5t8awtcec42x0n5cnv07wydj41slg4
4656283
4656282
2026-08-04T18:34:53Z
Alexlatham96
377450
/* Unicode 18.0 */ removed detail
4656283
wikitext
text/x-wiki
{{pp-protected|small=yes}}
{{Unicode page}}
{{TOC right}}
{{refimprove|date=June 2017}}
This page is about each version specification, and the differences between the versions.
== Unicode 1.0 ==
Unicode 1.0 was the first version of Unicode, released October 1991. It encoded 7,094 new characters.
=== “Blocks” ===
This version of Unicode did not formally group characters in blocks. But in comparison with version 2.0, the following “blocks” were available:
U+0000-U+FFFD
51 Blocks
* '''Basic Latin (formerly called ASCII)''' (U+0000-U+007F), containing 128 characters.
* '''Latin-1 Supplement (formerly called Latin1)''' (U+0080-U+00FF), containing 128 characters.
* '''Latin Extended-A''' '''(formerly called European Latin)''' (U+0100-U+017F), containing 127 characters.
* '''Latin Extended-B''' '''(formerly called Extended Latin)''' (U+0180-U+01FF), containing 113 characters.
* '''IPA Extensions''' '''(formerly called Standard Phonetic)''' (U+0250-U+02AF), containing 89 characters.
* '''Spacing Modifier Letters''' '''(formerly called Modifier Letters)''' (U+02B0-U+02FF), containing 57 characters.
* '''Combining Diacritical Marks''' '''(formerly called Generic Diacritical Marks)''' (U+0300-U+036F), containing 66 characters.
* '''Greek and Coptic''' '''(formerly called Greek)''' (U+0370-U+03FF), containing 112 characters.
* '''Cyrillic''' (U+0400-U+04FF), containing 192 characters.
* '''Armenian''' (U+0530-U+058F), containing 84 characters.
* '''Hebrew''' (U+0590-U+05FF), containing 52 characters.
* '''Arabic''' (U+0600-U+06FF), containing 169 characters.
* '''Devanagari''' (U+0900-U+097F), containing 104 characters.
* '''Bengali''' (U+0980-U+09FF), containing 89 characters.
* '''Gurmukhi''' (U+0A00-U+0A7F), containing 74 characters.
* '''Gujarati''' (U+0A80-U+0AFF), containing 75 characters.
* '''Oriya''' (U+0B00-U+0B7F), containing 78 characters.
* '''Tamil''' (U+0B80-U+0BFF), containing 61 characters.
* '''Telugu''' (U+0C00-U+0C7F), containing 80 characters.
* '''Kannada''' (U+0C80-U+0CFF), containing 80 characters.
* '''Malayalam''' (U+0D00-U+0D7F), containing 78 characters.
* '''Thai''' (U+0E00-U+0E7F), containing 92 characters.
* '''Lao''' (U+0E80-U+0EFF), containing 70 characters.
* '''Tibetan''' (U+1000-U+105F), containing 71 characters.
* '''Georgian''' (U+10A0-U+10FF), containing 78 characters.
* '''General Punctuation''' (U+2000-U+206F), containing 67 characters.
* '''Superscripts and Subscripts''' (U+2070-U+209F), containing 28 characters.
* '''Currency Symbols''' (U+20A0-U+20CF), containing 11 characters.
* '''Combining Marks for Symbols''' '''(formerly called Diacritical Marks for Symbols)''' (U+20D0-U+20FF), containing 18 characters.
* '''Letterlike Symbols''' (U+2100-U+214F), containing 57 characters.
* '''Number Forms''' (U+2150-U+218F), containing 48 characters.
* '''Arrows''' (U+2190-U+21FF), containing 91 characters.
* '''Mathematical Operators''' (U+2200-U+22FF), containing 242 characters.
* '''Miscellaneous Technical''' (U+2300-U+23FF), containing 43 characters.
* '''Control Pictures''' '''(formerly called Pictures for Control Codes)''' (U+2400-U+243F), containing 37 characters.
* '''Optical Character Recognition''' (U+2440-U+245F), containing 11 characters.
* '''Enclosed Alphanumerics''' (U+2460-U+24FF), containing 139 characters.
* '''Box Drawing''' '''(formerly called Form and Chart Components)''' (U+2500-U+257F), containing 128 characters.
* '''Block Elements''' '''(formerly called Blocks)''' (U+2580-U+259F), containing 22 characters.
* '''Geometric Shapes''' (U+25A0-U+25FF), containing 79 characters.
* '''Miscellaneous Symbols''' '''(formerly called Miscellaneous Dingbats)''' (U+2600-U+26FF), containing 106 characters.
* '''Dingbats''' '''(formerly called Zapf Dingbats)''' (U+2700-U+27BF), containing 160 characters.
* '''CJK Symbols and Punctuation''' (U+3000-U+303F), containing 56 characters.
* '''Hiragana''' (U+3040-U+309F), containing 90 characters.
* '''Katakana''' (U+30A0-U+30FF), containing 90 characters.
* '''Bopomofo''' (U+3100-U+312F), containing 40 characters.
* '''Hangul Compatibility Jamo (formerly called Hangul Elements)''' (U+3130-U+318F), containing 94 characters.
* '''Kanbun (formerly called CJK Miscellaneous)''' (U+3190-U+31FF), containing 16 characters.
* '''Enclosed CJK Letters and Months''' '''(formerly called''' '''Enclosed CJK Letters and Ideographs)''' (U+3200-U+32FF), containing 191 characters.
* '''CJK Compatibility''' '''(formerly called CJK Squared Words for U+3300-U+337F and CJK Squared Abbreviations for U+3380-33FF)''' (U+3300-U+33FF), containing 187 characters.
* '''Hangul''' (U+3400-U+3D2D), containing 2,350 characters.
* '''Private Use Area''' (U+E000-U+FDFF), reserved for 5,632 characters.
* '''CJK Compatibility Forms''' '''(formerly called CNS 11643 Compatibility)''' (U+FE30-U+FE4F), containing 28 characters.
* '''Small Form Variants''' '''(formerly called Small Variants)''' (U+FE50-U+FE6F), containing 26 characters.
* '''Arabic Presentation Forms-B''' '''(formerly called Basic Glyphs for Arabic Language)''' (U+FE70-U+FEFF), containing 140 characters.
* '''Halfwidth and Fullwidth Forms''' '''(formerly called Halfwidth and Fullwidth Variants)''' (U+FF00-U+FFEF), containing 216 characters.
* '''Specials''' '''(formerly called Special)''' (U+FFF0-U+FFFF), containing 1 character.
== Unicode 1.0.1 ==
Unicode 1.0.1 was released June 1992. It encoded 28,292 characters, adding 21,204 new characters and removing 6 characters, for a net increase of 21,198 characters.
=== New blocks ===
* '''CJK Unified Ideographs''' (U+4E00-U+9FFF), containing 20,902 Han Ideographs for Chinese, Japanese and Korean, was added.
* '''CJK Compatibility Ideographs''' (U+F900-U+FAFF), containing 302 Han Ideographs for compatibility with existing character sets, was added.
=== Removed characters ===
* Letters Ka and Kha with Ogonek (total 4 characters) were removed from '''Cyrillic'''. (U+04C5-U+04C6 and U+04C9-U+04CA)
* APL Compose Operator and APL Out (total 2 characters) were removed from '''Miscellaneous Technical'''. (U+2300-U+2301)
=== Rearranged characters ===
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
*'''Circled Katakana:''' ''The characters well be arranged in modern order: e.g., A, I, U, E, O, KA, KI'' (U+32D0-U+32FE)
*'''Basic Glyphs For Arabic Language:''' ''The character shapes will be arranged in different order: Isolate, Final, Initial and Medial'' (U+FE80-FEFC)
=== Characters with semantics changed ===
*'''Zero Width Non-Joiner''' [ZWNJ] (U+20DC)
*'''Zero Width Joiner''' [ZWJ] (U+20DD)
== Unicode 1.1 ==
Unicode 1.1 was released June 1993. It encoded 34,168 characters, adding 5,969 new characters and removing 93 characters, for a net increase of 5,876 characters. It finalized the long anticipated Han Unification.
=== New blocks ===
* '''Hangul Jamo''' (U+1100-U+11FF), containing 240 ''jamo'' for the Hangul script, was added.
* '''Latin Extended Additional''' (U+1E00-U+1EFF), containing 245 precomposed characters for transliteration and Vietnamese, was added.
* '''Greek Extended''' (U+1F00-U+1FFF), containing 233 precomposed characters for polytonic Greek, was added.
* '''Hangul Supplementary-A''' (U+3D2E-U+44B7), containing 1,930 precomposed syllables for the Hangul script, was added.
* '''Hangul Supplementary-B''' (U+44B8-U+4DFF), containing 2,376 precomposed syllables for the Hangul script, was added.
* '''Alphabetic Presentation Forms''' (U+FB00-U+FB4F), containing 57 precomposed characters and ligatures, was added.
* '''Arabic Presentation Forms-A''' (U+FB50-U+FDFF), containing 593 combinations of Arabic letters, was added.
* '''Combining Half Marks''' (U+FE20-U+FE2F), containing 4 halves of diacritical marks, was added.
=== Extended blocks ===
* The long S (ſ) (total 1 character) was added to '''Latin Extended-A'''. (U+017F)
* The Hungarian Dz, characters for transliteration purposes and precomposed characters with double grave and inverted breve (total 35 characters) were added to '''Latin Extended-B''' (U+01F1-U+01F5 and U+01FA-U+0217). The block was expanded from (U+0180-U+01FF) to (U+0180-U+024F)
* Diacritics for polytonic Greek and double width diacritics (total 6 characters) were added to '''Combining Diacritical Marks'''. (U+0342-U+0345 and U+0360-U+0361)
* Compatibility character now deprecated, Ano Teleia, and other characters (total 5 characters) were added to '''Greek and Coptic''' (U+0374-U+0375, U+037A, U+037E and U+0387).
* Additional characters for non-Slavic languages (total 38 characters) were added to '''Cyrillic'''. (U+04D0-U+04EB, U+04EE-U+04F5 and U+04F8-U+04F9)
* A ligature of Ech and Yiwn (և) (total 1 character) was added to '''Armenian'''. (U+0587)
* One deprecated compatibility character and several characters for biblical texts (total 25 characters) were added to '''Arabic'''. (U+066D and U+06D6-U+06ED)
* A sign Virama (total 1 character) was added to '''Gurmukhi''' (U+0A4D).
* Letters Candra O and E (total 3 characters) were added to '''Gujarati'''. (U+0A8D, U+0A91 and U+0AC9)
* An Ai Length mark (total 1 character) was added to '''Oriya'''. (U+0B56)
* An undertie, a pair of brackets and six formatting characters now deprecated (total 9 characters) were added to '''General Punctuation'''. (U+203F, U+2045-U+2046 and U+206A-U+206F)
* Some additional symbols and the complete set of APL functional symbols (total 79 characters) were added to '''Miscellaneous Technical'''. (U+2300 and U+232D-U+237A)
* A large circle (◯) (total 1 character) was added to '''Geometric Shapes'''. (U+25EF)
* The ideographic telegraph line feed separator symbol (〷) (total 1 character) was added to '''CJK Symbols and Punctuation'''. (U+3037)
* Four Katakana letters not in use since 1945 (total 4 characters) were added to '''Katakana'''. (U+30F7-U+30FA)
* Ideographic telegraph symbols for the twelve months (total 12 characters) were added to '''Enclosed CJK Letters and Months'''. (U+32C0-U+32CB)
* Ideographic telegraph symbols for hours and days and six additional measure units (total 62 characters) were added to '''CJK Compatibility'''. (U+3358-U+3376 and U+33E0-U+33FE)
* Some more space (total 2,304 characters) was added to the '''Private Use Area'''.
* Seven halfwidth geometric shapes (total 7 characters) were added to '''Halfwidth and Fullwidth Forms'''. (U+FFE8-U+FFEE)
=== Removed blocks ===
* '''Tibetan''', containing 71 letters for the Tibetan script, was removed from the Unicode standard.
=== Removed characters ===
* A total of 10 characters were removed from '''Greek and Coptic'''. (U+0370-U+0372, U+03D7-U+03D9, U+03DB, U+03DD, U+03DF, and U+03E1)
* Point Varika (total 1 character) was removed from ''Hebrew''. (U+05F5)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Thai'''. (U+0E70-U+0E74)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Lao'''. (U+0EF0-U+0EF4)
* An Ideographic Ditto Mark (total 1 character) was removed from '''CJK Symbols and Punctuation''' (U+3004) and merged with CJK Unified Ideograph-4EDD.
=== Rearranged characters ===
* Greek character U+03F3 was changed from Spacing Tonos to Letter Yot.
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
== Unicode 2.0 ==
Unicode 2.0 was released July 1996. It encoded 38,885 characters, adding 11,373 new characters and removing 6,656 characters, for a net increase of 4,717 characters. This was the first Unicode version to reserve blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Hangul Syllables''' (U+AC00-U+D7AF), containing 11,172 precomposed syllables for the Hangul script, was added.
* '''High Surrogates''' (U+D800-U+DB7F), setting aside 896 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''High Private Use Surrogates''' (U+DB80-U+DBFF), setting aside 128 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Low Surrogates''' (U+DC00-U+DFFF), setting aside 1,024 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Supplementary Private Use Area-A''' (U+F0000-U+FFFFF), reserving 65,534 characters for private use, was added.
* '''Supplementary Private Use Area-B''' (U+100000-U+10FFFF), reserving 65,534 characters for private use, was added.
=== Reinstated blocks ===
* '''Tibetan''' (U+0F00-U+0FFF), now containing 168 characters for the Tibetan script including religious signs, was readded.
=== Removed blocks ===
* '''Hangul''', containing 2,350 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-A''', containing 1,930 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-B''', containing 2,376 precomposed syllables for the Hangul script, was removed from the Unicode standard.
=== Extended blocks ===
* Cantillation marks for use in religious texts (total 31 characters) were added to '''Hebrew'''. (U+0591-U+05A1, U+05A3-U+05AF and U+05C4)
* A long S with Dot Above (total 1 character) was added to '''Latin Extended Additional'''. (U+1E9B)
* A Vietnamese Dong sign (total 1 character) was added to '''Currency Symbols'''. (U+20AB)
== Unicode 2.1 ==
Unicode 2.1 was released May 1998. It encoded 38,887 characters, adding only 2 new characters.
=== Extended blocks ===
* A Euro sign (total 1 character) was added to '''Currency Symbols'''. (U+20AC)
* An Object Replacement Character (total 1 character) was added to '''Specials'''. (U+FFFC)
== Unicode 3.0 ==
Unicode 3.0 was released September 1999. It was a big update and encoded 49,194 characters, adding 10,307 new characters.
=== New blocks ===
* '''Syriac''' (U+0700-U+074F), containing 71 characters used for writing in Syriac script, was added.
* '''Thaana''' (U+0780-U+07BF), containing 49 characters used for writing in Thaana script, was added.
* '''Sinhala''' (U+0D80-U+0DFF), containing 80 characters for the Sinhala script, was added.
* '''Myanmar''' (U+1000-U+109F), containing 78 characters for the Burmese script, was added.
* '''Ethiopic''' (U+1200-U+137F), containing 345 syllables and punctuation marks for the Ethiopic script, was added.
* '''Cherokee''' (U+13A0-U+13FF), containing 85 syllables for the Cherokee script, was added.
* '''Unified Canadian Aboriginal Syllabics''' (U+1400-U+167F), containing 630 syllables and punctuation marks for writing in indigenous languages of Canada, was added.
* '''Ogham''' (U+1680-U+169F), containing 29 characters for the ancient Ogham script, was added.
* '''Runic''' (U+16A0-U+16FF), containing 81 characters for the Germanic runes, was added.
* '''Khmer''' (U+1780-U+17FF), containing 103 characters for the Khmer script, was added.
* '''Mongolian''' (U+1800-U+18AF), containing 155 characters for the classical Mongolian script, was added.
* '''Braille Patterns''' (U+2800-U+28FF), containing 256 Braille letters, was added.
* '''CJK Radicals Supplement''' (U+2E80-U+2EFF), containing 115 non-Kangxi radicals, was added.
* '''Kangxi Radicals''' (U+2F00-U+2FDF), containing 214 radicals from the Kangxi dictionary, was added.
* '''Ideographic Description Characters''' (U+2FF0-U+2FFF), containing 12 characters used to describe a Han ideograph not available in the font, was added.
* '''Bopomofo Extended''' (U+31A0-U+31BF), containing 24 characters used for phonetic transcription of minority languages of Taiwan, was added.
* '''CJK Unified Ideographs Extension A''' (U+3400-U+4DBF), containing 6,582 additional Han Ideographs, was added.
* '''Yi Syllables''' (U+A000-U+A48F), containing 1,165 syllables of the modern Yi script, was added.
* '''Yi Radicals''' (U+A490-U+A4CF), containing 50 radicals of Yi Syllables, was added.
=== Extended blocks ===
* Additional precomposed characters, letters and capital letters of lowercase-only letters (total 30 characters) were added to '''Latin Extended-B'''. (U+01F6-U+01F9, U+0218-U+021F and U+0222-U+0233)
* Extensions for disordered speech (total 5 characters) were added to '''IPA Extensions'''. (U+02A9-U+02AD)
* Some additional modifier letters (total 6 characters) were added to '''Spacing Modifier Letters'''. (U+02DF and U+02EA-U+02EE)
* Additional combining diacritics for IPA (total 10 characters) were added to '''Combining Diacritical Marks'''. (U+0346-U+034E and U+0362)
* Lowercase versions of archaic letters and the Kai symbol (total 5 characters) were added to '''Greek and Coptic'''. (U+03D7, U+03DB, U+03DD, U+03DF and U+03E1)
* Nonstandard letters for Macedonian, combining numeral signs and three letters for Kildin Sami (total 12 characters) were added to '''Cyrillic'''. (U+0400, U+040D, U+0450, U+045D, U+0488-U+0489, U+048C-U+048F and U+04EC-U+04ED)
* A Hyphen (total 1 character) was added to '''Armenian'''. (U+058A)
* Combining hamza and maddah and nine additional Arabic characters (total 12 characters) were added to '''Arabic'''. (U+0653-U+0655, U+06B8-U+06B9, U+06BF, U+06CF and U+06FA-U+06FE)
* Additional letters and religious symbols (total 25 characters) were added to '''Tibetan'''. (U+0F6A, U+0F96, U+0FAE-U+0FB0, U+0FB8, U+0FBA-U+0FBC, U+0FBE-U+0FCC and U+0FCF)
* A narrow no-break space and 6 additional punctuation marks (total 7 characters) were added to '''General Punctuation'''. (U+202F and U+2048-U+204D)
* The Kip, Tugrik and Drachma sign (total 3 characters) were added to '''Currency Symbols'''. (U+20AD-U+20AF)
* An enclosing screen and an enclosing key (total 2 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E2-U+20E3)
* The information symbol and a rotated Q (total 2 characters) were added to '''Letterlike Symbols'''. (U+2139-U+213A)
* A mirrored Roman capital numeral hundred (Ↄ) (total 1 character) was added to '''Number Forms'''. (U+2183)
* Some additional arrows (total 9 characters) were added to '''Arrows'''. (U+21EB-U+21F3)
* Some additional technical symbols, including common keys on a 101 keyboard (total 33 characters) were added to '''Miscellaneous Technical'''. (U+2301, U+237B and U+237D-U+239A)
* Two additional control pictures (total 2 characters) were added to '''Control Pictures'''. (U+2425-U+2426)
* Squares and circles with quadrants (total 8 characters) were added to '''Geometric Shapes'''. (U+25F0-U+25F7)
* Two Syriac crosses and a signature mark (total 3 characters) were added to '''Miscellaneous Symbols'''. (U+2619 and U+2670-U+2671)
* Three Hangzhou numerals and a variation indicator (total 4 characters) were added to '''CJK Symbols and Punctuation'''. (U+3038-U+303A and U+303E)
* A ligature Yod with Hiriq (יִ) (total 1 character) was added to '''Alphabetic Presentation Forms'''. (U+FB1D)
* Three additional control characters for ruby markup (total 3 characters) were added to '''Specials'''. (U+FFF9-U+FFFB)
== Unicode 3.1 ==
Unicode 3.1 was released March 2001. It encoded 94,140 characters, adding 44,946 new characters, and mainly focused on blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Old Italic''' (U+10300-U+1032F), containing 35 letters for the Etruscan script, was added.
* '''Gothic''' (U+10330-U+1034F), containing 27 letters for the Gothic script, was added.
* '''Deseret''' (U+10400-U+1044F), containing 76 letters for the constructed Deseret script, was added.
* '''Byzantine Musical Symbols''' (U+1D000-U+1D0FF), containing 246 symbols for musical notation in Byzantine, was added.
* '''Musical Symbols''' (U+1D100-U+1D1FF), containing 219 characters for current musical notation, was added.
* '''Mathematical Alphanumeric Symbols''' (U+1D400-U+1D7FF), containing 991 Latin and Greek letters in serif, sans-serif, bold, italic, double-struck, script and Fraktur/Blackletter, was added.
* '''CJK Unified Ideographs Extension B''' (U+20000-U+2A6DF), containing 42,711 additional Chinese Ideographs, was added.
* '''CJK Compatibility Ideographs Supplement''' (U+2F800-U+2FA1F), containing 542 additional Chinese Ideographs for compatibility purposes, was added.
* '''Tags''', containing 97 language tags, was added. (U+E0000-U+E007F)
=== Extended noncharacters ===
* The Noncharacters range: U+FDD0..U+FDEF were added to '''Arabic Presentation Forms-A'''.
=== Extended blocks ===
* The capital Theta symbol and the Lunate Epsilon symbol (total 2 characters) were added to '''Greek and Coptic'''. (U+03F4-U+03F5)
=== Characters and Scripts Under Investigation or Rejected ===
* Khmer Sign Laak Was Rejected. (U+17DD) From '''Khmer.'''
* Georgian Letter U-Brjuu Was Rejected. From '''Georgian.'''
== Unicode 3.2 ==
Unicode 3.2 was released March 2002. It encoded 95,156 characters, adding 1,016 new characters.
=== New blocks ===
* '''Cyrillic Supplementary (now Cyrillic Supplement)''' (U+0500-U+052F), containing 16 characters used for the Komi language, was added.
* '''Tagalog''' (U+1700-U+171F), containing 20 characters for the Baybayin script, was added.
* '''Hanunoo''' (U+1720-U+173F), containing 23 characters and punctuation for the Hanunó'o script, was added.
* '''Buhid''' (U+1740-U+175F), containing 20 characters for the Buhid script, was added.
* '''Tagbanwa''' (U+1760-U+177F), containing 18 characters for the Tagbanwa script, was added.
* '''Miscellaneous Mathematical Symbols-A''' (U+27C0-U+27EF), containing 28 symbols used in math notation, was added.
* '''Supplemental Arrows-A''' (U+27F0-U+27FF), containing 16 additional arrows, was added.
* '''Supplemental Arrows-B''' (U+2900-U+297F), containing 128 special arrows, was added.
* '''Miscellaneous Mathematical Symbols-B''' (U+2980-U+29FF), containing 128 additional mathematical symbols, was added.
* '''Supplemental Mathematical Operators''' (U+2A00-U+2AFF), containing 256 additional mathematical operators, was added.
* '''Katakana Phonetic Extensions''' (U+31F0-U+31FF), containing 16 Katakana letters used for Ainu, was added.
* '''Variation Selectors''' (U+FE00-U+FE0F), containing 16 symbols used for indicating variations, was added.
=== Extended blocks ===
* A capital letter N with Long Right Leg (total 1 character) was added to '''Latin Extended-B'''. (U+0220)
* The combining grapheme joiner and combining Latin letters used in medieval texts (total 14 characters) were added to '''Combining Diacritical Marks'''. (U+034F and U+0363-U+036F)
* The Qoppa and a reversed lunate epsilon symbol (total 3 characters) were added to '''Greek and Coptic'''. (U+03D8-U+03D9 and U+03F6)
* Four additional letters used for the Kildin Sami language (total 8 characters) were added to '''Cyrillic'''. (U+048A-U+048B, U+04C5-U+04C6, U+04C9-U+04CA and U+04CD-U+04CE)
* A dotless Beh and a dotless Qaf (total 2 characters) were added to '''Arabic'''. (U+066E-U+066F)
* A Letter for Addu dialect (total 1 character) was added to '''Thaana'''. (U+07B1)
* The letters Yn and Elifi (total 2 characters) were added to '''Georgian'''. (U+10F7-U+10F8)
* Some additional punctuation marks and control characters (total 12 characters) were added to '''General Punctuation'''. (U+2047, U+204E-U+2052, U+2057 and U+205F-U+2063)
* A superscript letter I (total 1 character) was added to '''Superscripts and Subscripts'''. (U+2071)
* German Penny and Peso sign (total 2 characters) were added to '''Currency Symbols'''. (U+20B0-U+20B1)
* Some additional combining characters (total 7 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E4-U+20EA)
* Some double-struck and reversed/turned letters (total 15 characters) were added to '''Letterlike Symbols'''. (U+213D-U+214B)
* Some additional arrows (total 12 characters) were added to '''Arrows'''. (U+21F4-U+21FF)
* Some additional mathematical operators (total 14 characters) were added to '''Mathematical Operators'''. (U+22F2-U+22FF)
* Variable-width and additional symbols (total 53 characters) were added to '''Miscellaneous Technical'''. (U+237C and U+239B-U+23CE)
* Black and double circled numerals (total 20 characters) were added to '''Enclosed Alphanumerics'''. U+24EB-U+24FE)
* Quadrant elements (total 10 characters) were added to '''Block Elements'''. (U+2596-U+259F)
* Some additional triangles and squares (total 8 characters) were added to '''Geometric Shapes'''. (U+25F8-U+25FF)
* Shogi pieces ,recycling symbols, dices and dotted circles (total 24 characters) were added to '''Miscellaneous Symbols'''. (U+2616-U+2617, U+2672-U+267D and U+2680-U+2689)
* Additional parenthesis (total 14 characters) were added to '''Dingbats'''. (U+2768-U+2775)
* Three additional marks (total 3 characters) were added to '''CJK Symbols and Punctuation'''. (U+303B-U+303D)
* A digraph and two additional characters (total 3 characters) were added to '''Hiragana'''. (U+3095-U+3096 and U+309F)
* A digraph and a double hyphen (total 2 characters) were added to '''Katakana'''. (U+30A0 and U+30FF)
* Additional circled numerals (total 30 characters) were added to '''Enclosed CJK Letters and Months'''. (U+3251-U+325F and U+32B1-U+32BF
* Five missing radicals (total 5 characters) were added to '''Yi Radicals'''. (U+A4A2-U+A4A3, U+A4B4, U+A4C1, U+A4C5)
* Additional compatibility characters (total 59 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA30-U+FA6A)
* A Rial sign (total 1 character) was added to '''Arabic Presentation Forms-A'''. (U+FDFC)
* Two sesame dots (total 2 characters) were added to '''CJK Compatibility Forms'''. (U+FE45-U+FE46)
* A tail fragment (total 1 character) was added to '''Arabic Presentation Forms-B'''. (U+FE73)
* A pair of double parenthesis (total 2 characters) was added to '''Halfwidth and Fullwidth Forms'''. (U+FF5F-U+FF60)
== Unicode 4.0 ==
Unicode 4.0 was released April 2003. It encoded 96,382 characters, adding 1,226 new characters.
=== New blocks ===
* '''Limbu''', containing 66 characters for the Limbu abugida, was added.
* '''Tai Le''', containing 35 letters for the Tai Le script, was added.
* '''Khmer Symbols''', containing 32 symbols for the lunar calendar, was added.
* '''Phonetic Extensions''', containing 108 letters used in phonetic transcription, was added.
* '''Miscellaneous Symbols and Arrows''', containing 14 additional arrows, was added.
* '''Yijing Hexagram Symbols''', containing 64 hexagrams, was added.
* '''Linear B Syllabary''', containing 88 syllables of the ancient Linear B script, was added.
* '''Linear B Ideograms''', containing 123 ideograms of the ancient Linear B script, was added.
* '''Aegean Numbers''', containing 57 numerals used in the Aegean area, was added.
* '''Ugaritic''', containing 31 characters used in Ugaritic cuneiform, was added.
* '''Shavian''', containing 48 letters used for the artificial Shavian script, was added.
* '''Osmanya''', containing 40 characters used in the artificial Osmanya script, was added.
* '''Cypriot Syllabary''', containing 55 characters formerly used on Cyprus, was added.
* '''Tai Xuan Jing Symbols''', containing 87 symbols of Tai Xuan Jing, was added.
* '''Variation Selectors Supplement''', containing 240 additional variation selectors, was added.
=== Extended blocks ===
* Letters with curl used in Sinology (total 4 characters) were added to '''Latin Extended-B'''.
* Former IPA letters (total 2 characters) were added to '''IPA Extensions'''.
* Some additional characters (total 17 characters) were added to '''Spacing Modifier Letters'''.
* Additional combining double-width diacritics and diacritics corresponding to their spacing equivalent (total 11 characters) were added to '''Combining Diacritical Marks'''.
* The archaic letters Sho and San and the capital Lunate Sigma (total 5 characters) were added to '''Greek and Coptic'''.
* Some additional markers, biblical signs, and letters with inverted V (total 19 characters) were added to '''Arabic'''.
* Letters used for foreign words from Persian and Sogdian (total 6 characters) were added to '''Syriac'''.
* The short A (ऄ) (total 1 character) was added to '''Devanagari'''.
* The Avagraha sign (ঽ) (total 1 character) was added to '''Bengali'''.
* The Adak Bindi and Visarga signs (total 2 characters) were added to '''Gurmukhi'''.
* The vocalic l and ll and the Rupee sign (total 5 characters) were added to '''Gujarati'''.
* The letters Va and Wa (total 2 characters) were added to '''Oriya'''.
* Additional signs for date and finance environments (total 8 characters) were added to '''Tamil'''.
* The Nukta and Avagraha signs (total 2 characters) were added to '''Kannada'''.
* Some symbols and signs (total 11 characters) were added to '''Khmer'''.
* An inverted undertie and a swung dash (total 2 characters) were added to '''General Punctuation'''.
* The facsimile sign (℻) (total 1 character) was added to '''Letterlike Symbols'''.
* The eject symbol and a vertical line (total 2 characters) were added to '''Miscellaneous Technical'''.
* A black circled digit zero (⓿) (total 1 character) was added to '''Enclosed Alphanumerics'''.
* Monograms and diagrams, flags, warning and weather symbols and a cup of tea (total 12 characters) were added to '''Miscellaneous Symbols'''.
* Additional parenthesized and circled Korean characters and supplemental signs (total 9 characters) were added to '''Enclosed CJK Letters and Months'''.
* Additional measure units (total 7 characters) were added to '''CJK Compatibility'''.
* An additional Arabic sign (﷽) (total 1 character) was added to '''Arabic Presentation Forms-A'''.
* A pair of vertical parenthesis (total 2 characters) was added to '''CJK Compatibility Forms'''.
* The letters Oi and Ew (total 4 characters) were added to '''Deseret'''.
* A small script l (ℓ) (total 1 character) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 4.1 ==
Unicode 4.1 was released March 31, 2005. It encoded 97,655 characters, adding 1,273 new characters.
=== New blocks ===
* '''Arabic Supplement''', containing 30 characters for various languages written with the Arabic script, was added.
* '''Ethiopic Supplement''', containing 26 characters and signs for Sebatbeit, was added.
* '''New Tai Lue''', containing 80 characters for the New Tai Lue script, was added.
* '''Buginese''', containing 30 characters for the Lontara script, was added.
* '''Phonetic Extensions Supplement''', containing 64 additional letters for phonetic transcription, was added.
* '''Combining Diacritical Marks Supplement''', containing 4 additional diacritics, was added.
* '''Glagolitic''', containing 94 characters for the Glagolitic script, was added.
* '''Coptic''', containing 114 characters for the Coptic script, was added.
* '''Georgian Supplement''', containing 38 Nuskhuri letters, was added.
* '''Tifinagh''', containing 55 characters for the Tifinagh script, was added.
* '''Ethiopic Extended''', containing 79 additional Ethiopic syllables, was added.
* '''Supplemental Punctuation''', containing 26 additional punctuation marks, was added.
* '''CJK Strokes''', containing 16 strokes for Han Ideographs, was added.
* '''Modifier Tone Letters''', containing 23 letters for Chinese tones, was added.
* '''Syloti Nagri''', containing 44 characters for the Syloti Nagri abugida, was added.
* '''Vertical Forms''', containing 10 punctuation marks suited for vertical text, was added.
* '''Ancient Greek Numbers''', containing 75 numerals and signs used in Ancient Greek, was added.
* '''Old Persian''', containing 50 characters for Old Persian cuneiform, was added.
* '''Kharoshthi''', containing 65 characters for the Kharoshthi abugida, was added.
* '''Ancient Greek Musical Notation''', containing 70 musical signs used in Ancient Greek, was added.
=== Extended blocks ===
* Letters for Sencoten, digraphs, letters with swash tail and other additions (total 11 characters) were added to '''Latin Extended-B'''.
* Additional diacritics for transliteration (total 5 characters) were added to '''Combining Diacritical Marks'''.
* Rho with stroke, reversed and dotted Lunate Sigma (total 4 characters) were added to '''Greek and Coptic'''.
* Ghe with descender (Ӷ) (total 2 characters) was added to '''Cyrillic'''.
* An additional biblical mark and some punctuation marks (total 4 characters) were added to '''Hebrew'''.
* Additional biblical marks, punctuation marks and the Afghani sign (total 8 characters) were added to '''Arabic'''.
* A glottal stop (ॽ) (total 1 character) was added to '''Devanagari'''.
* The Khanda Ta letter (ৎ) (total 1 character) was added to '''Bengali'''.
* The letter Sha and the digit zero (total 2 characters) were added to '''Tamil'''.
* Two marks used in Bhutan (total 2 characters) were added to '''Tibetan'''.
* Two letters and a modifier letter (total 3 characters) were added to '''Georgian'''.
* Some additional syllables (total 11 characters) were added to '''Ethiopic'''.
* Additional phonetic symbols (total 20 characters) were added to '''Phonetic Extensions'''.
* A flower and dot punctuation marks (total 9 characters) were added to '''General Punctuation'''.
* Additional subscript letters (total 5 characters) were added to '''Superscripts and Subscripts'''.
* The Guarani, Austral, Hryvnia and Cedi signs (total 4 characters) were added to '''Currency Symbols'''.
* A combining long double solidus (total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* The per sign and a double-struck letter Pi (total 2 characters) were added to '''Letterlike Symbols'''.
* Metrical and electrical signs (total 11 characters) were added to '''Miscellaneous Technical'''.
* Additional gender and map symbols (total 30 characters) were added to '''Miscellaneous Symbols'''.
* Some additional mathematical symbols (total 7 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional arrows and squares (total 6 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* A circled Hangul character (㉾) (total 1 character) was added to '''Enclosed CJK Letters and Months'''.
* Additional Han Ideographs (total 22 characters) were added to '''CJK Unified Ideographs'''.
* Additional Compatibility Ideographs (total 106 characters) were added to '''CJK Compatibility Ideographs'''.
* Italic dotless small i and j (total 2 characters) were added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.0 ==
Unicode 5.0 was released July 14, 2006. It encoded 99,024 characters, adding 1,369 new characters.
=== New blocks ===
* '''N'Ko''', containing 59 characters for the N'Ko script, was added.
* '''Balinese''', containing 121 characters and musical signs for the Balinese abugida, was added.
* '''Latin Extended-C''', containing 17 letters for various languages, was added.
* '''Latin Extended-D''', containing 2 characters for UPA, was added.
* '''Phags-pa''', containing 56 characters for the Phags-pa script, was added.
* '''Phoenician''', containing 27 letters and numerals for the Phoenician script, was added.
* '''Cuneiform''', containing 879 signs for Sumero-Akkadian Cuneiform, was added.
* '''Cuneiform Numbers and Punctuation''', containing 103 numerals and punctuation signs for Sumero-Akkadian Cuneiform, was added.
* '''Counting Rod Numerals''', containing 18 numerals used with counting rods, was added.
=== Extended blocks ===
* Various letters used mainly for aboriginal languages (total 14 characters) were added to '''Latin Extended-B'''.
* Lowercase lunate sigma symbols (total 3 characters) were added to '''Greek and Coptic'''.
* Lowercase palochka and 3 letters used in Nivkh (total 7 characters) were added to '''Cyrillic'''.
* Two letters used in Khanty and other languages (total 4 characters) were added to '''Cyrillic Supplement'''.
* A specific point meant for Vav (total 1 character) was added to '''Hebrew'''.
* Four letters used in Sindhi (total 4 characters) were added to '''Devanagari'''.
* Four letters used in Sanskrit (total 4 characters) were added to '''Kannada'''.
* Additional IPA diacritics (total 9 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Four combining arrows (total 4 characters) were added to '''Combining Diacritical Marks for Symbols'''.
* A danish symbol and a lowercase turned F (total 2 characters) were added to '''Letterlike Symbols'''.
* A lowercase reversed C (ↄ) (total 1 character) was added to '''Number Forms'''.
* Vertical parenthesis, geometric forms and electrical symbols (total 12 characters) were added to '''Miscellaneous Technical'''.
* A neuter symbol (⚲) (total 1 character) was added to '''Miscellaneous Symbols'''.
* Four additional mathematical symbols (total 4 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional squares, pentagons and hexagons (total 11 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Four additional tone letters used in Chinantec (total 4 characters) were added to '''Modifier Tone Letters'''.
* Bold Digamma (𝟊/'''Ϝ''') (total 2 characters) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.1 ==
Unicode 5.1 was released April 4, 2008. It encoded 100,648 characters, adding 1,624 new characters.
=== New blocks ===
* '''Sundanese''', containing 55 letters for Sundanese script, was added.
* '''Lepcha''', containing 74 letters for Lepcha script, was added.
* '''Ol Chiki''', containing 48 letters for Ol Chiki script, was added.
* '''Cyrillic Extended-A''', containing 32 letters for combining Cyrillic letters, was added.
* '''Vai''', containing 300 letters for Vai script, was added.
* '''Cyrillic Extended-B''', containing 78 letters for additional Cyrillic characters, was added.
* '''Saurashtra''', containing 81 letters for Saurashtra script, was added.
* '''Kayah Li''', containing 48 letters for Kayah languages, was added.
* '''Rejang''', containing 37 letters for Rejang script, was added.
* '''Cham''', containing 83 letters for Cham script, was added.
* '''Ancient Symbols''', containing 12 characters for weights and measures and other Ancient symbols, was added.
* '''Phaistos Disc''', containing 46 hieroglyphs for Phaistos, was added.
* '''Lycian''', containing 29 letters for Lycian script, was added.
* '''Carian''', containing 49 letters for Carian script, was added.
* '''Lydian''', containing 27 letters for Lydian script, was added.
* '''Mahjong Tiles''', containing 44 mahjong tiles, was added.
* '''Domino Tiles''', containing 100 domino tiles, was added.
=== Extended blocks ===
* Archaic letters and capital kai symbol (total 7 characters) were added to '''Greek and Coptic'''.
* Combining Pokrytie (total 1 character) was added to '''Cyrillic'''.
* Mordvin, Kurdish, Aleut and Chuvash letters (total 16 characters) were added to '''Cyrillic Supplement'''.
* Radix symbols, Letterlike, punctuation, Koranic annotation signs and additions for early Persian and Azerbaijani (total 15 characters) were added to '''Arabic'''.
* Additional letters in Torwali, Burushaski and early Persian (total 18 characters) were added to '''Arabic Supplement'''.
* High spacing dot and candra a (total 2 characters) were added to '''Devanagari'''.
* Udaat and yakash signs (total 2 characters) were added to '''Gurmukhi'''.
* Vocalic rr, l and ll (total 3 characters) were added to '''Oriya'''.
* Om symbol (ௐ) (total 1 character) was added to '''Tamil'''.
* Avagraha, additional phonetic letters, vocalic l and ll, fractional signs and tuumu (total 13 characters) were added to '''Telugu'''.
* Avagraha, vocalic rr, l and ll, Malayalam numerics and fractions and chillu letters (total 17 characters) were added to '''Malayalam'''.
* Letters for Balti and various symbols (total 6 characters) were added to '''Tibetan'''.
* Characters for various languages (total 78 characters) were added to '''Myanmar'''.
* Manchu Ali Gali lha (ᢪ) (total 1 character) was added to '''Mongolian'''.
* Miscellaneous combining marks (total 28 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Medievalist latin letters and miscellaneous letters (total 10 characters) were added to '''Latin Extended Additional'''.
* Invisible plus (+) (total 1 character) was added to '''General Punctuation'''.
* Combining asterisk above ( ⃰)(total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* Symbol for Samaritan Source (⅏) (total 1 character) was added to '''Letterlike Symbols'''.
* Archaic Roman Numerals (total 4 characters) were added to '''Number Forms'''.
* Outlined white star and other signs (total 15 characters) were added to '''Miscellaneous Symbols'''.
* Long division and additional mathematical brackets (total 5 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Miscellaneous signs (total 51 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Additional latin letters (total 12 characters) were added to '''Latin Extended-C'''.
* Additional punctuation (total 23 characters) were added to '''Supplemental Punctuation'''.
* Letter ih (ㄭ) (total 1 character) was added to '''Bopomofo'''.
* Other strokes (total 20 characters) were added to '''CJK Strokes'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Africanist tone letters (total 5 characters) were added to '''Modifier Tone Letters'''.
* Miscellaneous letters and symbols (total 112 characters) were added to '''Latin Extended-D'''.
* Continuous macrons for Coptic (total 3 characters) were added to '''Combining Half Marks'''.
* Musical symbol multiple measure rest (𝄩) (total 1 character) was added to '''Musical Symbols'''.
== Unicode 5.2 ==
Unicode 5.2 was released in October 1, 2009. It encoded 107,296 characters, adding 6,648 new characters.
=== New blocks ===
* '''Samaritan''', containing 61 letters for Samaritan script, was added.
* '''Unified Canadian Aboriginal Syllabics Extended''', containing 70 syllables for various cree languages, was added.
* '''Tai Tham''', containing 127 letters for Tai Tham script, was added.
* '''Vedic Extensions''', containing 35 characters for tone marks and signs, was added.
* '''Lisu''', containing 48 letters for Lisu (Fraser) script, was added.
* '''Bamum''', containing 88 letters for Bamum script, was added.
* '''Common Indic Number Forms''', containing 10 fractions and marks, was added.
* '''Devanagari Extended''', containing 28 additional marks, was added.
* '''Hangul Jamo Extended-A''', containing 29 characters for additional old initial consonants in hangul jamo, was added.
* '''Javanese''', containing 91 letters for Javanese script, was added.
* '''Myanmar Extended-A''', containing 28 letters for Khamti Shan in Myanmar, was added.
* '''Tai Viet''', containing 72 letters for Tai Viet script, was added.
* '''Meetei Mayek''', containing 56 letters for Meetei Mayek script, was added.
* '''Hangul Jamo Extended-B''', containing 72 characters for additional old medieval vowels and final consonants in hangul jamo, was added.
* '''Imperial Aramaic''', containing 31 characters for Old Aramaic, was added.
* '''Old South Arabian''', containing 32 letters and numbers for South Arabian, was added.
* '''Avestan''', containing 61 characters for Avestan script, was added.
* '''Inscriptional Parthian''', containing 30 characters for Inscriptional Parthian script, was added.
* '''Inscriptional Pahlavi''', containing 27 characters for Inscriptional Pahlavi script, was added.
* '''Old Turkic''', containing 73 characters for Orkhon script, was added.
* '''Rumi Numeral Symbols''', containing 31 numeric characters used in Fez, Morocco, and elsewhere in North Africa and the Iberian peninsula, between the tenth and seventeenth centuries, was added.
* '''Kaithi''', containing 66 letters for Kaithi script, was added.
* '''Egyptian Hieroglyphs''', containing 1,071 hieroglyphs for Egyptian, was added.
* '''Enclosed Alphanumeric Supplement''', containing 63 additional circled, parenthesized and squared alphanumerics, was added.
* '''Enclosed Ideographic Supplement''', containing 44 squared and tortoised shell bracketed ideographs, was added.
* '''CJK Unified Ideographs Extension C''', containing 4,149 additional Chinese Ideographs, was added.
=== Extended blocks ===
* Abhaz letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Inverted Candrabinbu and additional signs and letters (total 5 characters) were added to '''Devanagari'''.
* Ganda Mark (৻) (total 1 character) was added to '''Bengali'''.
* Religious svasti signs (total 4 characters) were added to '''Tibetan'''.
* Extensions for Khamti Shan and Alton and Phake (total 4 characters) were added to '''Myanmar'''.
* Additional old initial consonants, medival vowels, and old final consonants (total 16 characters) were added to '''Hangul Jamo'''.
* Hyphen and additional syllables (total 10 characters) were added to '''Unified Canadian Aboriginal Syllabics'''.
* Letter Sua and Tham Digit One (total 3 characters) were added to '''New Tai Lue'''.
* Combing Almost Equal to Below ( ᷽) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* The Live Tournosis, Spesmillo and Tenge signs (total 3 characters) were added to '''Currency Symbols'''.
* Additional vulgar fractions from ARIB STD B24 (total 4 characters) were added to '''Number Forms'''.
* Decimal exponent symbol (⏨) from ARIB STD B24 (total 1 characters) was added to '''Miscellaneous Technical'''.
* A soccer ball and symbols from ARIB STD B24 (total 59 characters) were added to '''Miscellaneous Symbols'''.
* Heavy exclamation mark symbol (❗) from ARIB STD B24 (total 1 character) was added to '''Dingbats'''.
* Traffic sign, dictionary and map symbols from ARIB STD B24 (total 5 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Capital letter turned alpha and additions for shona (total 3 characters) were added to '''Latin Extended-C'''.
* Cryptogrammic letters and combining marks (total 7 characters) were added to '''Coptic'''.
* Word separator middle dot used in Avestan (⸱) (total 1 character) was added to '''Supplemental Punctuation'''.
* Circled ideographs and numbers on black squares from ARIB STD B24 (total 12 characters) were added to '''Enclosed CJK Letters and Months'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Miscellaneous additions for compatibility (total 3 characters) were added to '''CJK Compatibility Ideographs'''.
* Number two and three (total 2 characters) were added to '''Phoenician'''.
== Unicode 6.0 ==
Unicode 6.0 was released in October 11, 2010. It encoded 109,384 characters, adding 2,088 new characters.
=== New blocks ===
* '''Mandaic''', containing 29 letters for Mandaic script, was added.
* '''Batak''', containing 56 letters for Batak script, was added.
* '''Ethiopic Extended-A''', containing 32 letters for Gamo-Gofa-Dawro, Basketo and Gumuz Ethiophic syllables, was added.
* '''Brahmi''', containing 108 characters for ancient Brahmi abugida, was added.
* '''Bamum Supplement''', containing 761 letters for additional Bamum script, was added.
* '''Kana Supplement''', containing 2 characters for archaic katakana, was added.
* '''Playing Cards''', containing 59 playing cards, was added.
* '''Miscellaneous Symbols and Pictographs''', containing 529 additional symbols, was added.
* '''Emoticons''', containing 63 faces, cat faces and gesture symbols, was added.
* '''Transport and Map Symbols''', containing 70 transportation, traffic signs and other symbols, was added.
* '''Alchemical Symbols''', containing 116 symbols for elements, was added.
* '''CJK Unified Ideographs Extension D''', containing 222 miscellaneous Han ideographs, was added.
=== Extended blocks ===
* Azerbaijani letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Kashmiri Yeh and Wavy hamza below (total 2 characters) were added to '''Arabic'''.
* Dependent vowel signs and letters used in Kashmiri and Bihari (total 10 characters) were added to '''Devanagari'''.
* Fraction signs (total 6 characters) were added to '''Oriya'''.
* Letters used in scholarly only and letter dot reph (total 3 characters) were added to '''Malayalam'''.
* Leading and Trailing Mchan Rtags (total 6 characters) were added to '''Tibetan'''.
* Additional combining marks (total 2 characters) were added to '''Ethiopic'''.
* Combining Double Inverted Breve Below (᷼) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* Miscellaneous subscript letters (total 8 characters) were added to '''Superscripts and Subscripts'''.
* Indian Rupee Sign (₹) (total 1 character) was added to '''Currency Symbols'''.
* Pointing double triangle and additional mechanical symbols (total 11 characters) were added to '''Miscellaneous Technical'''.
* Ophiucisus, astronomical symbol for uranus and pentagrams (total 6 characters) were added to '''Miscellaneous Symbols'''.
* Additional heavy punctation marks, raised fist, raised hand, sparkles, heavy arithmetic symbols and curly loops (total 16 characters) were added to '''Dingbats'''.
* Squared logicals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Separator mark and consonant joiner (total 2 characters) were added to '''Tifinagh'''.
* Bopomofo for Hmu and Ge (total 3 characters) were added to '''Bopomofo Extended'''.
* Reversed Tse (total 2 characters) were added to '''Cyrillic Extended-B'''.
* Additional letters (total 15 characters) were added to '''Latin Extended-D'''.
* Pedagogical symbols (total 16 characters) were added to '''Arabic Presentation Forms-A'''.
* Additional squared, black circled and squared letters and regional indicator letters (total 107 characters) were added to '''Enclosed Alphanumeric Supplement'''.
* Squared katakana, squared ideographs and circled advantage and accept (total 13 characters) were added to '''Enclosed Ideographic Supplement'''.
== Unicode 6.1 ==
Unicode 6.1 was released in January 31, 2012. It encoded 110,116 characters, adding 732 new characters.
=== New blocks ===
* '''Arabic Extended-A''' (U+08A0-U+08FF), containing 39 characters, was added.
* '''Sundanese Supplement''' (U+1CC0-U+1CCF), containing 8 characters, was added.
* '''Meetei Mayek Extensions''' (U+AAE0-U+AAFF), containing 23 characters, was added.
* '''Meroitic Hieroglyphs''' (U+10980-U+1099F), containing 32 characters, was added.
* '''Meroitic Cursive''' (U+109A0-U+109FF), containing 26 characters, was added.
* '''Sora Sompeng''' (U+110D0-U+110FF), containing 35 characters, was added.
* '''Chakma''' (U+11100-U+1114F), containing 67 characters, was added.
* '''Sharada''' (U+11180-U+111DF), containing 83 characters, was added.
* '''Takri''' (U+11680-U+116CF), containing 66 characters, was added.
* '''Miao''' (U+16F00-U+16F9F), containing 133 characters, was added.
* '''Arabic Mathematical Alphabetic Symbols''' (U+1EE00-U+1EEFF), containing 143 characters, was added.
=== Extended blocks ===
* An Armenian Dram sign (total 1 character) was added to '''Armenian'''. (U+058F)
* A sign Samvat (total 1 character) was added to '''Arabic'''. (U+0604)
* An Abbreviation mark (total 1 character) was added to '''Gujarati'''. (U+0AF0)
* Letters for Khmu (total 2 characters) were added to '''Lao'''. (U+0EDE-U+0EDF)
* Capital letter Yn, letter Aen, Hard and Labial sign (total 5 characters) were added to '''Georgian'''. (U+10C7, U+10CD and U+10FD-U+10FF)
* Letters and signs for Old Sundanese (total 9 characters) were added to '''Sundanese'''. (U+1BAB-U+1BAD and U+1BBA-U+1BBF)
* Sign Rotated Ardhavisarga, Candra Above, Jihvamuliya and Uphadhmaniya (total 4 characters) were added to '''Vedic Extensions'''. (U+1CF3-U+1CF6)
* Mathematical diagonals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''. (U+27CB and U+27CD)
* A letter Bohairic Khei (total 2 characters) were added to '''Coptic'''. (U+2CF2-U+2CF3)
* Small letters Yn and Aen (total 2 characters) were added to '''Georgian Supplement'''. (U+2D27 and U+2D2D)
* Letters Ye and Yo (total 2 characters) were added to '''Tifinagh'''. (U+2D66-U+2D67)
* (total 10 characters) were added to '''Supplemental Punctuation'''. (U+2E32-U+2E3B)
* An additional ideograph for Kanji (total 1 character) was added to '''CJK Unified Ideographs'''. (U+9FCC)
* Combining letter for Slavonic (total 9 characters) were added to '''Cyrillic Extended-B'''. (U+A674-U+A67B and U+A69F)
* Letter C with Bar, capital letter H with Hook and modifier letters for extended IPA (total 5 characters) were added to '''Latin Extended-D'''. (U+A792-U+A793, U+A7AA and U+A7F8-U+A7F9)
* Some additional ideographs for Korea (total 2 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA2E-U+FA2F)
* Symbols for Canadian legal use (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F16A-U+1F16B)
* Typikon symbols (total 4 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F540-U+1F543)
* (total 13 characters) were added to '''Emoticons'''. (U+1F600, U+1F611, U+1F615, U+1F617, U+1F619, U+1F61B, U+1F61F, U+1F626-U+1F627, U+1F62C, U+1F62E-U+1F62F and U+1F634)
== Unicode 6.2 ==
Unicode 6.2 was released in September 26, 2012. It encoded 110,117 characters, adding only 1 new character.
=== Extended blocks ===
* A Turkish Lira sign (total 1 character) was added to '''Currency Symbols'''. (U+20BA)
== Unicode 6.3 ==
Unicode 6.3 was released in September 30, 2013. It encoded 110,122 characters, adding only 5 new characters.
=== Extended blocks ===
* A Letter mark (total 1 character) was added to '''Arabic'''. (U+061C)
* Isolate directional format characters (total 4 characters) were added to '''General Punctuation'''. (U+2066-U+2069)
== Unicode 7.0 ==
Unicode 7.0 was released in June 16, 2014. It encoded 112,956 characters, adding 2,834 new characters.
=== New blocks ===
* '''Combining Diacritical Marks Extended''' (U+1AB0-U+1AFF), containing 15 marks, was added.
* '''Myanmar Extended-B''' (U+A9E0-U+A9FF), containing 31 letters, was added.
* '''Latin Extended-E''' (U+AB30-U+AB6F), containing 50 letters, was added.
* '''Coptic Epact Numbers''' (U+102E0-U+102FF), containing 28 numbers, was added.
* '''Old Permic''' (U+10350-U+1037F), containing 43 letters, was added.
* '''Elbasan''' (U+10500-U+1052F), containing 50 letters, was added.
* '''Caucasian Albanian''' (U+10530-U+1056F), containing 53 letters and marks, was added.
* '''Linear A''' (U+10600-U+1077F), containing 341 signs, was added.
* '''Palmyrene''' (U+10860-U+1087F), containing 32 letters, was added.
* '''Nabataean''' (U+10880-U+108AF), containing 40 letters and numbers, was added.
* '''Old North Arabian''' (U+10A80-U+10A9F), containing 32 letters and numbers, was added.
* '''Manichaean''' (U+10AC0-U+10AFF), containing 51 characters, was added.
* '''Psalter Pahlavi''' (U+10B80-U+10BAF), containing 29 characters, was added.
* '''Mahajani''' (U+11150-U+1117F), containing 39 letters and signs, was added.
* '''Sinhala Archaic Numbers''' (U+111E0-U+111FF), containing 20 numbers, was added.
* '''Khojki''' (U+11200-U+1124F), containing 61 characters, was added.
* '''Khudawadi''' (U+112B0-U+112FF), containing 69 characters, was added.
* '''Grantha''' (U+11300-U+1137F), containing 83 characters, was added.
* '''Tirhuta''' (U+11480-U+114DF), containing 82 characters, was added.
* '''Siddham''' (U+11580-U+115FF), containing 72 characters, was added.
* '''Modi''' (U+11600-U+1165F), containing 79 characters, was added.
* '''Warang Citi''' (U+118A0-U+118FF), containing 84 letters and numbers, was added.
* '''Pau Cin Hau''' (U+11AC0-U+11AFF), containing 57 characters, was added.
* '''Mro''' (U+16A40-U+16A6F), containing 43 characters, was added.
* '''Bassa Vah''' (U+16AD0-U+16AFF), containing 36 characters, was added.
* '''Pahawh Hmong''' (U+16B00-U+16B8F), containing 127 letters and signs, was added.
* '''Duployan''' (U+1BC00-U+1BC9F), containing 143 characters, was added.
* '''Shorthand Format Controls''' (U+1BCA0-U+1BCAF), containing 4 format characters, was added.
* '''Mende Kikakui''' (U+1E800-U+1E8DF), containing 213 syllables and numbers, was added.
* '''Ornamental Dingbats''' (U+1F650-U+1F67F), containing 48 pictographic characters, was added.
* '''Geometric Shapes Extended''' (U+1F780-U+1F7FF), containing 85 pictographic characters, was added.
* '''Supplemental Arrows-C''' (U+1F800-U+1F8FF), containing 148 pictographic characters, was added.
=== Extended blocks ===
* A capital letter Yot (total 1 character) was added to '''Greek and Coptic'''. (U+037F)
* Letters for Orok, Komi and Khanty (total 8 characters) were added to '''Cyrillic Supplement'''. (U+0528-U+052F)
* An Eternity sign (total 2 characters) were added to '''Armenian'''. (U+058D-U+058E)
* A Number Mark Above (total 1 character) was added to '''Arabic'''. (U+0605)
* Letters for African, Philippine, Turkic, Berber, Belarusian, Palula and Shina languages (total 8 characters) were added to '''Arabic Extended-A'''. (U+08A1, U+08AD-U+08B2 and U+08FF)
* A letter for Marwari (total 1 character) was added to '''Devanagari'''. (U+0978)
* A sign Anji (total 1 character) was added to '''Bengali'''. (U+0980)
* Sign Candrabindu and letter Llla (total 2 characters) were added to '''Telugu'''. (U+0C00 and U+0C34)
* A Sign Candrabindu (total 1 character) was added to '''Kannada'''. (U+0C81)
* A Sign Candrabindu (total 1 character) was added to '''Malayalam'''. (U+0D01)
* Lith Numerals (total 10 characters) were added to '''Sinhala'''. (U+0DE6-U+0DEF)
* Additional Old English runes (total 8 characters) were added to '''Runic'''. (U+16F1-U+16F8)
* Letters Gyan and Tra (total 2 characters) were added to '''Limbu'''. (U+191D-U+191E)
* Signs for Jaiminiya Sama Veda (total 2 characters) were added to '''Vedic Extensions'''. (U+1CF8-U+1CF9)
* Marks for Germanic and American lexicology (total 15 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DE7-U+1DF5)
* Nordic Mark, Manat and Ruble sign (total 3 characters) were added to '''Currency Symbols'''. (U+20BB-U+20BD)
* Playback symbols from Webdings font (total 7 characters) were added to '''Miscellaneous Technical'''. (U+23F4-U+23FA)
* A Scissors symbol from Wingdings 2 font (total 1 character) was added to '''Dingbats'''. (U+2700)
* Arrows for Lithuanian dialectology and symbols from Wingdings 3 font (total 115 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2B4D-U+2B4F, U+2B5A-U+2B5F, U+2B60-U+2B73, U+2B76-U+2B95, U+2B98-U+2BB9, U+2BBD-U+2BC8 and U+2BCA-U+2BD1)
* (total 7 characters) were added to '''Supplemental Punctuation'''. (U+2E3C-U+2E42)
* Early Cyrillic letters and letters for Lithuanian dialectology (total 6 characters) were added to '''Cyrillic Extended-B'''. (U+A698-U+A69D)
* Letters for European, American and African orthography (total 18 characters) were added to '''Latin Extended-D'''. (U+A794-U+A79F, U+A7AB-U+A7AD, U+A7B0-U+A7B1 and U+A7F7)
* Tone marks for Tai Laing and letters for Shwe Palaung (total 4 characters) were added to '''Myanmar Extended-A'''. (U+AA7C-U+AA7F)
* Combining phonetic marks (total 7 characters) were added to '''Combining Half Marks'''. (U+FE27-U+FE2D)
* Additional mathematical symbols (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018B-U+1018C)
* A Greek Tau Rho symbol (total 1 character) was added to '''Ancient Symbols'''. (U+101A0)
* A letter Ess (total 1 character) was added to '''Old Italic'''. (U+1031F)
* A Number Joiner (total 1 character) was added to '''Brahmi'''. (U+1107F)
* Sutra mark and sign Ekam (total 2 characters) were added to '''Sharada'''. (U+111CD and U+111DA)
* Additional cuneiform signs (total 42 characters) were added to '''Cuneiform'''. (U+1236F-U+12398)
* Additional numbers, vulgar fractions and a punctuation mark (total 13 characters) were added to '''Cuneiform Numbers and Punctuation'''. (U+12463-U+1246E and U+12474)
* Red Joker, Fool and trumps (total 23 characters) were added to '''Playing Cards'''. (U+1F0BF and U+1F0E0-U+1F0F5)
* Dingbat normal and negative sans-serif digit zero (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10B-U+1F10C)
* Symbols from Webdings, Wingdings 1 and 2 font (total 209 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F321-U+1F32C, U+1F336, U+1F37D, U+1F394-U+1F39F, U+1F3C5, U+1F3CB-U+1F3CE, U+1F3D4-U+1F3DF, U+1F3F1-U+1F3F7, U+1F43F, U+1F441, U+1F4F8, U+1F4FD-U+1F4FE, U+1F53E-U+1F53F, U+1F544-U+1F54A, U+1F568-U+1F579, U+1F57B-U+1F5A3 and U+1F5A5-U+1F5FA)
* Slightly frowning and smiling faces emoji (total 2 characters) were added to '''Emoticons'''. (U+1F641-U+1F642)
* Symbols from Webdings and Wingdings 2 font (total 27 characters) were added to '''Transport and Map Symbols'''. (U+1F6C6-U+1F6CF, U+1F6E0-U+1F6EC and U+1F6F0-U+1F6F3)
== Unicode 8.0 ==
Unicode 8.0 was released in June 17, 2015. It encoded 120,672 characters, adding 7,716 new characters.
=== New blocks ===
* '''Cherokee Supplement''' (U+AB70-U+ABBF), containing 80 lowercase letters, was added.
* '''Hatran''' (U+108E0-U+108FF), containing 26 letters, was added.
* '''Old Hungarian''' (U+10C80-U+10CFF), containing 108 letters, was added.
* '''Multani''' (U+11280-U+112AF), containing 38 letters, was added.
* '''Ahom''' (U+11700-U+1173F), containing 57 letters, was added.
* '''Early Dynastic Cuneiform''' (U+12480-U+1254F), containing 196 characters, was added.
* '''Anatolian Hieroglyphs''' (U+14400-U+1467F), containing 583 characters, was added.
* '''Sutton SignWriting''' (U+1D800-U+1DAAF), containing 672 signs, was added.
* '''Supplemental Symbols and Pictographs''' (U+1F900-U+1F9FF), containing 15 pictographic characters, was added.
* '''CJK Unified Ideographs Extension E''' (U+2B820-U+2CEAF), containing 5762 characters, was added.
=== Extended blocks ===
* Letters for Arwi (total 3 characters) were added to '''Arabic Extended-A'''. (U+08B3-U+08B4 and U+08E3)
* A letter for Avestan transliteration (total 1 character) was added to '''Gujarati'''. (U+0AF9)
* A letter for Andhra Pradesh (total 1 character) was added to '''Telugu'''. (U+0C5A)
* An archaic letter II (total 1 character) was added to '''Malayalam'''. (U+0D5F)
* A letter Mv and small letters (total 7 characters) were added to '''Cherokee'''. (U+13F5 and U+13F8-U+13FD)
* A Georgian Lari sign (total 1 character) was added to '''Currency Symbols'''. (U+20BE)
* Turned digits (total 2 characters) were added to '''Number Forms'''. (U+218A-U+218B)
* Two headed arrows with triangle arrowheads (total 4 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BEC-U+2BEF)
* Some additional ideographs (total 9 characters) were added to '''CJK Unified Ideographs'''. (U+9FCD-U+9FD5)
* A combining letter Ef (total 1 character) was added to '''Cyrillic Extended-B'''. (U+A69E)
* Sinological dot, phonetic extension for African languages, letters for American and Gabonese orthography (total 7 characters) were added to '''Latin Extended-D'''. (U+A78F and U+A7B2-U+A7B7)
* Sign Siddham and letter Jain Om (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FC-U+A8FD)
* Letters for Yakut transliteration (total 4 characters) were added to '''Latin Extended-E'''. (U+AB60-U+AB63)
* A combining mark for Church Slavonic (total 2 characters) were added to '''Combining Half Marks'''. (U+FE2E-U+FE2F)
* Numerals and vulgar fractions (total 64 characters) were added to '''Meroitic Cursive'''. (U+109BC-U+109BD, U+109C0-U+109CF and U+109D2-U+109FF)
* Sandhi mark, diacritical marks for Kashmiri, sign Siddham and punctuation marks (total 9 characters) were added to '''Sharada'''. (U+111C9-U+111CC and U+111DB-U+111DF)
* Combining Anusvara Above and letter Om (total 2 characters) were added to '''Grantha'''. (U+11300 and U+11350)
* Section marks and alternate letters (total 20 characters) were added to '''Siddham'''. (U+115CA-U+115DD)
* An additional sign (total 1 character) was added to '''Cuneiform'''. (U+12399)
* East-Slavic musical symbols (total 11 characters) were added to '''Musical Symbols'''. (U+1D1DE-U+1D1E8)
* (total 24 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F32D-U+1F32F, U+1F37E-U+1F37F, U+1F3CF-U+1F3D3, U+1F3F8-U+1F3FF, U+1F4FF and U+1F54B-U+1F54F)
* Upside Down Face and Face With Rolling Eyes emoji (total 2 characters) were added to '''Emoticons'''. (U+1F643-U+1F644)
* A Place of Worship emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D0)
== Unicode 9.0 ==
Unicode 9.0, was released in June 21, 2016. It encoded 128,172 characters, adding 7,500 new characters.
=== New blocks ===
* '''Cyrillic Extended-C''' (U+1C80-U+1C8F), containing 9 letters, was added.
* '''Osage''' (U+104B0-U+104FF), containing 72 letters, was added.
* '''Newa''' (U+11400-U+1147F), containing 92 letters, was added.
* '''Mongolian Supplement''' (U+11660-U+1167F), containing 13 letters, was added.
* '''Bhaiksuki''' (U+11C00-U+11C6F), containing 97 letters, was added.
* '''Marchen''' (U+11C70-U+11CBF), containing 68 letters, was added.
* '''Ideographic Symbols and Punctuation''' (U+16FE0-U+16FFF), containing 1 letter, was added.
* '''Tangut''' (U+17000-U+187FF), containing 6125 letters, was added.
* '''Tangut Components''' (U+18800-U+18AFF), containing 755 letters, was added.
* '''Glagolitic Supplement''' (U+1E000-U+1E02F), containing 38 letters, was added.
* '''Adlam''' (U+1E900-U+1E95F), containing 87 letters, was added.
=== Extended blocks ===
* Letters for Bravanese, Warsh and Quranic marks used in Pakistan (total 23 characters) were added to '''Arabic Extended-A'''. (U+08B6-U+08BD and U+08D4-U+08E2)
* A sign Spacing Candrabindu (total 1 character) were added to '''Kannada'''. (U+0C80)
* Sign Para, Chillu letters and vulgar fractions (total 14 characters) were added to '''Malayalam'''. (U+0D4F, U+0D54-U+0D56, U+0D58-U+0D5E and U+0D76-U+0D78)
* A diacritical mark for Newa (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFB)
* Power symbols (total 4 characters) were added to '''Miscellaneous Technical'''. (U+23FB-U+23FE)
* Punctuation marks for Church Slavonic (total 2 characters) were added to '''Supplemental Punctuation'''. (U+2E43-U+2E44)
* A letter for Unifon (total 1 character) was added to '''Latin Extended-D'''. (U+A7AE)
* A sign Candrabindu (total 1 character) was added to '''Saurashtra'''. (U+A8C5)
* Indiction sign and a currency symbol (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018D-U+1018E)
* A sign Sukun (total 1 character) was added to '''Khojki'''. (U+1123E)
* Japanese TV symbols (total 18 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F19B-U+1F1AC)
* A Japanese TV symbol (total 1 character) was added to '''Enclosed Ideographic Supplement'''. (U+1F23B)
* A dancing man and Black Heart emoji (total 2 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F57A and U+1F5A4)
* Octagonal Sign, Shopping Trolley, scooters and a Canoe emoji (total 5 characters) were added to '''Transport and Map Symbols'''. (U+1F6D1-U+1F6D2 and U+1F6F4-U+1F6F6)
* (total 67 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F919-U+1F91E, U+1F920-U+1F927, U+1F930, U+1F933-U+1F93E, U+1F940-U+1F94B, U+1F950-U+1F95E and U+1F985-U+1F991)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|0030 FE00
|
|short diagonal stroke form # DIGIT ZERO
|-
|1000 FE00
|
|dotted form # MYANMAR LETTER KA
|-
|1002 FE00
|
|dotted form # MYANMAR LETTER GA
|-
|1004 FE00
|
|dotted form # MYANMAR LETTER NGA
|-
|1010 FE00
|
|dotted form # MYANMAR LETTER TA
|-
|1011 FE00
|
|dotted form # MYANMAR LETTER THA
|-
|1015 FE00
|
|dotted form # MYANMAR LETTER PA
|-
|1019 FE00
|
|dotted form # MYANMAR LETTER MA
|-
|101A FE00
|
|dotted form # MYANMAR LETTER YA
|-
|101C FE00
|
|dotted form # MYANMAR LETTER LA
|-
|101D FE00
|
|dotted form # MYANMAR LETTER WA
|-
|1022 FE00
|
|dotted form # MYANMAR LETTER SHAN A
|-
|1031 FE00
|
|dotted form # MYANMAR VOWEL SIGN E
|-
|1075 FE00
|
|dotted form # MYANMAR LETTER SHAN KA
|-
|1078 FE00
|
|dotted form # MYANMAR LETTER SHAN CA
|-
|107A FE00
|
|dotted form # MYANMAR LETTER SHAN NYA
|-
|1080 FE00
|
|dotted form # MYANMAR LETTER SHAN THA
|-
|2205 FE00
|
|zero with long diagonal stroke overlay form # EMPTY SET
|-
|AA60 FE00
|
|dotted form # MYANMAR LETTER KHAMTI GA
|-
|AA61 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CA
|-
|AA62 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CHA
|-
|AA63 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JA
|-
|AA64 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JHA
|-
|AA65 FE00
|
|dotted form # MYANMAR LETTER KHAMTI NYA
|-
|AA66 FE00
|
|dotted form # MYANMAR LETTER KHAMTI TTA
|-
|AA6B FE00
|
|dotted form # MYANMAR LETTER KHAMTI NA
|-
|AA6C FE00
|
|dotted form # MYANMAR LETTER KHAMTI SA
|-
|AA6F FE00
|
|dotted form # MYANMAR LETTER KHAMTI FA
|-
|AA7A FE00
|
|dotted form # MYANMAR LETTER AITON RA
|-
|…
|
|278 additional emoji variation sequences
|}
== Unicode 10.0 ==
Unicode 10.0, was released in June 20, 2017. It encoded 136,690 characters, adding 8,518 new characters.
=== New blocks ===
* '''Syriac Supplement''' (U+0860-U+086F), containing 11 characters, was added.
* '''Zanabazar Square''' (U+11A00-U+11A4F), containing 72 characters, was added.
* '''Soyombo''' (U+11A50-U+11AAF), containing 80 characters, was added.
* '''Masaram Gondi''' (U+11D00-U+11D5F), containing 75 characters, was added.
* '''Kana Extended-A''' (U+1B100-U+1B12F), containing 31 characters, was added.
* '''Nushu''' (U+1B170-U+1B2FF), containing 396 characters, was added.
* '''CJK Unified Ideographs Extension F''' (U+2CEB0-U+2EBEF), containing 7,473 characters, was added.
=== Extended blocks ===
* A Vedic Anusvara and Abbreviation mark (total 2 characters) were added to '''Bengali'''. (U+09FC-U+09FD)
* Letters for Arabic transliteration (total 6 characters) were added to '''Gujarati'''. (U+0AFA-U+0AFF)
* A combining Anusvara Above and Viramas (total 3 characters) were added to '''Malayalam'''. (U+0D00 and U+0D3B-U+0D3C)
* A sign Atikrama (total 1 character) was added to '''Vedic Extensions'''. (U+1CF7)
* Combining diacritical marks for Church Slavonic (total 4 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DF6-U+1DF9)
* A Bitcoin sign (total 1 character) was added to '''Currency Symbols'''. (U+20BF)
* An Observe Eye symbol (total 1 character) was added to '''Miscellaneous Technical'''. (U+23FF)
* A Group mark (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2BD2)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E45-U+2E49)
* A letter O with Dot Above (total 1 character) was added to '''Bopomofo'''. (U+312E)
* Ideographs for Slavonic transliteration (total 21 characters) were added to '''CJK Unified Ideographs'''. (U+9FD6-U+9FEA)
* Letters for North Italic (total 3 characters) were added to '''Old Italic'''. (U+1032D-U+1032F)
* An Iteration mark for Nushu (total 1 character) was added to '''Ideographic Symbols and Punctuation'''. (U+16FE1)
* Letters for Hentaigana (total 254 characters) were added to '''Kana Supplement'''. (U+1B002-U+1B0FF)
* Symbols for Chinese Folk religion (total 6 characters) were added to '''Enclosed Ideographic Supplement'''. (U+1F260-U+1F265)
* Stupa, Pagoda, Sled and Flying Saucer emoji (total 4 characters) were added to '''Transport and Map Symbols'''. (U+1F6D3-U+1F6D4 and U+1F6F7-U+1F6F8)
* (total 66 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F900-U+1F90B, U+1F91F, U+1F928-U+1F92F, U+1F931-U+1F932, U+1F94C, U+1F95F-U+1F96B, U+1F992-U+1F997 and U+1F9D0-U+1F9E6)
== Unicode 11.0 ==
Unicode 11.0, was released in June 5, 2018. It encoded 137,374 characters, adding 684 new characters.
=== New blocks ===
* '''Georgian Extended''' (U+1C90-U+1CBF), containing 46 characters, was added.
* '''Hanifi Rohingya''' (U+10D00-U+10D3F), containing 50 characters, was added.
* '''Old Sogdian''' (U+10F00-U+10F2F), containing 40 characters, was added.
* '''Sogdian''' (U+10F30-U+10F6F), containing 42 characters, was added.
* '''Dogra''' (U+11800-U+1184F), containing 60 characters, was added.
* '''Gunjala Gondi''' (U+11D60-U+11DAF), containing 63 characters, was added.
* '''Makasar''' (U+11EE0-U+11EFF), containing 25 characters, was added.
* '''Medefaidrin''' (U+16E40-U+16E9F), containing 91 characters, was added.
* '''Mayan Numerals''' (U+1D2E0-U+1D2FF), containing 20 characters, was added.
* '''Indic Siyaq Numbers''' (U+1EC70-U+1ECBF), containing 68 characters, was added.
* '''Chess Symbols''' (U+1FA00-U+1FA6F), containing 14 characters, was added.
=== Extended blocks ===
* Small letters Turned Ayb and Yi with Stroke (total 2 characters) were added to '''Armenian'''. (U+0560 and U+0588)
* A triangle Yod (total 1 character) were added to '''Hebrew'''. (U+05EF)
* A Dantayalan and currency symbols (total 3 characters) were added to '''N'Ko'''. (U+07FD-U+07FF)
* A Small Low Waw (total 1 character) was added to '''Arabic Extended-A'''. (U+08D3)
* A Sandhi mark (total 1 character) was added to '''Bengali'''. (U+09FE)
* An Abbreviation mark (total 1 character) was added to '''Gurmukhi'''. (U+0A76)
* A combining Anusvara Above (total 1 character) was added to '''Telugu'''. (U+0C04)
* A sign Siddham (total 1 character) was added to '''Kannada'''. (U+0C84)
* A letter for Buryat (total 1 character) was added to '''Mongolian'''. (U+1878)
* Symbols for chess notation, astrological and half star symbols (total 43 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BBA-U+2BBC, U+2BD3-U+2BEB and 2BF0-U+2BFE)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E4A-U+2E4E)
* A letter NN (total 1 character) was added to '''Bopomofo'''. (U+312F)
* Some ideographs for Kanji (total 5 characters) were added to '''CJK Unified Ideographs'''. (U+9FEB-U+9FEF)
* A small capital Q and a letter for Mazahua (total 3 characters) were added to '''Latin Extended-D'''. (U+A7AF and U+A7B8-U+A7B9)
* Letter and vowel sign Ay (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FE-U+A8FF)
* Letters Ttta, Vha and a vulgar fraction (total 3 characters) were added to '''Kharoshthi'''. (U+10A34-U+10A35 and U+10A48)
* A Number Sign Above (total 1 character) was added to '''Kaithi'''. (U+110CD)
* Letter Lhaa, vowel sign Aa and Ei (total 3 characters) were added to '''Chakma'''. (U+11144-U+11146)
* A combining Bindu Below (total 1 character) was added to '''Grantha'''. (U+1133B)
* A Sandhi mark (total 1 character) was added to '''Newa'''. (U+1145E)
* An alternate letter Ba (total 1 character) was added to '''Ahom'''. (U+1171A)
* A mark Pluta (total 1 character) was added to '''Soyombo'''. (U+11A9D)
* Additional ideographs (total 5 characters) were added to '''Tangut'''. (U+187ED-U+187F1)
* Tally marks (total 7 characters) were added to '''Counting Rod Numerals'''. (U+1D372-U+1D378)
* A Copyleft symbol (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F12F)
* A Skateboard emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6F9)
* Normal and negative circled shapes (total 4 characters) were added to '''Geometric Shapes Extended'''. (U+1F7D5-U+1F7D8)
* (total 65 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F94D-U+1F94F, U+1F96C-U+1F970, U+1F973-U+1F976, U+1F97A, U+1F97C-U+1F97F, U+1F998-U+1F99F, U+1F9A0-U+1F9A2, U+1F9B0-U+1F9B9, U+1F9C1-U+1F9C2 and U+1F9E7-U+1F9FF)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|FF10 FE00
|
|short diagonal stroke form # FULLWIDTH DIGIT ZERO
|}
== Unicode 12.0 ==
Unicode 12.0 was released on March 5, 2019. It encoded 137,928 characters, adding 554 new characters.
=== New blocks ===
* '''Elymaic''' (U+10FE0-U+10FFF), containing 23 characters, was added.
* '''Nandinagari''' (U+119A0-U+119FF), containing 65 characters, was added.
* '''Tamil Supplement''' (U+11FC0-U+11FFF), containing 51 characters, was added.
* '''Egyptian Hieroglyph Format Controls''' (U+13430-U+1343F), containing 9 characters, was added.
* '''Small Kana Extension''' (U+1B130-U+1B16F), containing 7 characters, was added.
* '''Nyiakeng Puachue Hmong''' (U+1E100-U+1E14F), containing 71 characters, was added.
* '''Wancho''' (U+1E2C0-U+1E2FF), containing 59 characters, was added.
* '''Ottoman Siyaq Numbers''' (U+1ED00-U+1ED4F), containing 61 characters, was added.
* '''Symbols and Pictographs Extended-A''' (U+1FA70-U+1FAFF), containing 16 characters, was added.
=== Extended blocks ===
* A sign Siddham (total 1 character) was added to '''Telugu'''. (U+0C77)
* Letters for Pail and Sanskrit (total 15 characters) were added to '''Lao'''. (U+0E86, U+0E89, U+0E8C, U+0E8E-U+0E93, U+0E98, U+0EA0, U+0EA8-U+0EA9, U+0EAC and U+0EBA)
* A sign Double Anusvara Antargomukha (total 1 character) was added to '''Vedic Extensions'''. (U+1CFA)
* An astrological symbol and Hellschreiber Pause symbol (total 2 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BC9 and U+2BFF)
* A Cornish Verse Divider (total 1 character) was added to '''Supplemental Punctuation'''. (U+2E4F)
* Egyptological letters, Anglicana W and letters for early Pinyin (total 11 characters) were added to '''Latin Extended-D'''. (U+A7BA-U+A7BF and U+A7C2-U+A7C6)
*Sinological phonetic letters (total 2 characters) were added to '''Latin Extended-E'''. (U+AB66-U+AB67)
* A Vedic Anusvara (total 1 character) was added to '''Newa'''. (U+1145F)
* An archaic letter Kha (total 1 character) was added to '''Takri'''. (U+116B8)
* Sign Jihvamuliya and Uphadhmaniya (total 2 characters) were added to '''Soyombo'''. (U+11A84-U+11A85)
* Letters for various Yi and Miao languages (total 16 characters) were added to '''Miao'''. (U+16F45-U+16F4A, U+16F4F and U+16F7F-U+16F87)
* Marks for Ancient Chinese texts (total 2 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE2-U+16FE3)
* Some additional ideographs (total 6 characters) were added to '''Tangut'''. (U+187F2-U+187F7)
* A Nasalization mark (total 1 character) was added to '''Adlam'''. (U+1E94B)
* A Spanish and Portuguese register mark (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F16C)
* Hindu Temple and Auto Rickshaw emoji (total 2 characters) were added to '''Transport and Map Symbols'''. (U+1F6D5 and U+1F6FA)
* Large colored circles and boxes (total 12 characters) were added to '''Geometric Shapes Extended'''. (U+1F7E0-U+1F7EB)
* (total 31 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90D-U+1F90F, U+1F93F, U+1F971, U+1F97B, U+1F9A5-U+1F9AA, U+1F9AE-U+1F9AF, U+1F9BA-U+1F9BF, U+1F9C3-U+1F9CA and U+1F9CD-U+1F9CF)
* Heterodox chess symbols (total 84 characters) were added to '''Chess Symbols'''. (U+1FA00-U+1FA53)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Spacing Modifier Letters
|02EA, 02EB
|2
|-
|Vedic Extensions
|1CF2..1CF3
|2
|-
|Currency Symbols
|20A9
|1
|-
|CJK Symbols and Punctuation
|3001, 3002
|2
|-
|Bopomofo
|3105..312F
|43
|-
|Bopomofo Extended
|31A0..31BA
|27
|-
|CJK Unified Ideographs Extension A
|37C3, 3B9D, 3CFD, 3FE0, 44EC, 4A76
|6
|-
|CJK Unified Ideographs
|5344, 55B9, 6ABC, 6FF9, 809E, 80BC, 80E9, 8132, 8159, 841C, 891D, 8C6C, 915E, 9FD4
|14
|-
|Phags-pa
|A840..A877
|56
|-
|Halfwidth and Fullwidth Forms
|FF01, FF0C, FF0E, FF1A, FF1B, FF1F
|6
|-
|CJK Unified Ideographs Extension B
|200DD, 20164, 20BBF, 20C02, 20CED, 21D4C, 2278B, 23AB8, 2459B, 24A7D, 24FB9, 25ED7, 2677C, 26B4C, 26C21, 26CBE, 26E3D, 28834, 289A1, 289C0, 28A0F, 28B46
|22
|-
|CJK Unified Ideographs Extension C
|2A8FB, 2A917, 2AA30
|3
|-
|CJK Unified Ideographs Extension E
|2BA52, 2BD77, 2C494, 2C72F, 2C734, 2CB38
|6
|-
|CJK Unified Ideographs Extension F
|2D23B, 2E83A
|2
|-
! colspan="2" |Total
!192
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|3001 FE00
|
|corner-justified form # IDEOGRAPHIC COMMA
|-
|3001 FE01
|
|centered form # IDEOGRAPHIC COMMA
|-
|3002 FE00
|
|corner-justified form # IDEOGRAPHIC FULL STOP
|-
|3002 FE01
|
|centered form # IDEOGRAPHIC FULL STOP
|-
|FF01 FE00
|
|corner-justified form # FULLWIDTH EXCLAMATION MARK
|-
|FF01 FE01
|
|centered form # FULLWIDTH EXCLAMATION MARK
|-
|FF0C FE00
|
|corner-justified form # FULLWIDTH COMMA
|-
|FF0C FE01
|
|centered form # FULLWIDTH COMMA
|-
|FF0E FE00
|
|corner-justified form # FULLWIDTH FULL STOP
|-
|FF0E FE01
|
|centered form # FULLWIDTH FULL STOP
|-
|FF1A FE00
|
|corner-justified form # FULLWIDTH COLON
|-
|FF1A FE01
|
|centered form # FULLWIDTH COLON
|-
|FF1B FE00
|
|corner-justified form # FULLWIDTH SEMICOLON
|-
|FF1B FE01
|
|centered form # FULLWIDTH SEMICOLON
|-
|FF1F FE00
|
|corner-justified form # FULLWIDTH QUESTION MARK
|-
|FF1F FE01
|
|centered form # FULLWIDTH QUESTION MARK
|}
== Unicode 12.1 ==
Unicode 12.1 was released on May 7, 2019. It encoded 137,929 characters, adding only 1 new character.
=== Extended blocks ===
* A square era name Reiwa (total 1 character) was added to '''Enclosed CJK Letters and Months'''. (U+32FF)
== Unicode 13.0 ==
Unicode 13.0 was released on March 10, 2020. It encoded 143,859 characters, adding 5,930 new characters.
=== New blocks ===
* '''Yezidi''' (U+10E80-U+10EBF), containing 47 characters, was added.
* '''Chorasmian''' (U+10FB0-U+10FDF), containing 28 characters, was added.
* '''Dives Akuru''' (U+11900-U+1195F), containing 72 characters, was added.
* '''Lisu Supplement''' (U+11FB0-U+11FBF), containing 1 character, was added.
* '''Khitan Small Script''' (U+18B00-U+18CFF), containing 470 characters, was added.
* '''Tangut Supplement''' (U+18D00-U+18D08), containing 9 characters, was added.
* '''Symbols for Legacy Computing''' (U+1FB00-U+1FBFF), containing 212 characters, was added.
* '''CJK Unified Ideographs Extension G''' (U+30000-U+3134F), containing 4939 characters, was added.
=== Extended blocks ===
* Letters for African languages and Punjabi (total 10 characters) were added to '''Arabic Extended-A'''. (U+08BE-U+08C7)
* A sign Overline (total 1 character) was added to '''Oriya'''. (U+0B55)
* A Vedic Anusvara (total 1 character) was added to '''Malayalam'''. (U+0D04)
* A sign Candrabindu (total 1 character) was added to '''Sinhala'''. (U+0D81)
* Combining diacritical marks for Scottish phonology (total 2 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1ABF-U+1AC0)
* A Japanese symbol for Type A Electronics (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B97)
* Cross patties and a Tironian sign Capita Et (total 3 characters) were added to '''Supplemental Punctuation'''. (U+2E50-U+2E52)
* Letters for Taiwan and Cantonese language (total 5 characters) were added to '''Bopomofo Extended'''. (U+31BB-U+31BF)
* Some disunified ideographs (total 10 characters) were added to '''CJK Unified Ideographs Extension A'''. (U+4DB6-4DBF)
* Some ideographs for China (total 13 characters) were added to '''CJK Unified Ideographs'''. (U+9FF0-U+9FFC)
* Letters for Gaulish (total 6 characters) were added to '''Latin Extended-D'''. (U+A7C7-U+A7CA and U+A7F5-U+A7F6)
* An alternate sign Nasanta (total 1 character) was added to '''Syloti Nagri'''. (U+A82C)
* Letter R With Midle Tilde and modifier letters for Scottish phonology (total 4 characters) were added to '''Latin Extended-E'''. (U+AB68-U+AB6B)
* A symbol Ascia (total 1 character) was added to '''Ancient Symbols'''. (U+1019C)
* A letter for Pali (total 1 character) was added to '''Chakma'''. (U+11147)
* A vowel sign Prishthamatra E and Inverted Candrabindu (total 2 characters) were added to '''Sharada'''. (U+111CE and U+111CF)
* Double comma, sign Jihvamuliya and Uphadhmaniya (total 3 characters) were added to '''Newa'''. (U+1145A and U+11460-U+11461)
* Khitan Small Script Filler and reading marks for Vietnamese (total 3 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE4 and U+16FF0-U+16FF1)
* Some additional components (total 13 characters) were added to '''Tangut Components'''. (U+18AF3-U+18AFF)
* Creative Commons license symbols and Mask Work symbol (total 7 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10D-U+1F10F, U+1F16D-1F16F and U+1F1AD)
* Hut, Elevator, Pickup Truck and Roller Skate emoji (total 4 characters) were added to '''Transportation and Map Symbols'''. (U+1F6D6-U+1F6D7 and U+1F6FB-U+1F6FC)
* Arrows for legacy computing (total 2 characters) were added to '''Supplemental Arrows-C'''. (U+1F8B0-U+1F8B1)
* (total 10 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90C, U+1F972, U+1F977-U+1F978, U+1F9A3-U+1F9A4, U+1F9AB-U+1F9AD and U+1F9CB)
* (total 41 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA74, U+1FA83-U+1FA86, U+1FA96-U+1FAA8, U+1FAB0-U+1FAB6, U+1FAC0-U+1FAC2 and U+1FAD0-U+1FAD6)
* Gongche charaters for Kunqu Opera (total 7 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6D7-U+2A6DD)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Tagalog
|1700..170C, 170E..1714
|20
|-
|Mongolian
|1834, 1871, 1878
|3
|-
|Sundanese
|1BAB
|1
|-
|Currency Symbols
|20BF
|1
|-
|CJK Radicals Supplement
|2E80..2E99, 2E9B..2EF3
|115
|-
|Kangxi Radicals
|2F00..2FD5
|214
|-
|CJK Unified Ideographs Extension A
|3472, 38C7, 3DB8, 3FE0, 440B, 46E9
|6
|-
|CJK Unified Ideographs
|53FD, 6146, 6711, 671C, 6721, 6725, 6BD2, 7B9A, 87CE, 8956, 93BF, 9B97
|12
|-
|Latin Extended-D
|A764..A765
|2
|-
|Phags-pa
|A86D
|1
|-
|Tangut
|175F6, 17F0D, 17F8A, 17FA5, 180D6, 18139, 18147, 184F1, 18736
|9
|-
|Tangut Components
|18843, 18856, 1888C, 1890A, 18915, 1893B
|6
|-
|Adlam
|1E900..1E94A, 1E950..1E959, 1E95E..1E95F
|71
|-
|Miscellaneous Symbols and Pictographs
|1F3B1
|1
|-
|Supplemental Symbols and Pictographs
|1F995..1F998, 1F99B..1F99E, 1F9B0..1F9B3, 1F9E7
|13
|-
|CJK Unified Ideographs Extension B
|20219, 21249, 21827, 22C3A, 2327B, 23496, 2355E, 2363B, 236ED, 23839, 23FD5, 24261, 24726, 248F2, 2548E, 26657, 26C9E, 26FE1, 27334, 27C0E, 27CEF, 2A38C
|22
|-
|CJK Unified Ideographs Extension C
|2AED5, 2AEF3, 2AF76, 2B09F, 2B1C3, 2B1E5
|6
|-
|CJK Unified Ideographs Extension E
|2B83C, 2B8D9..2B8DA, 2B96F, 2BBD7, 2BD61, 2BE4A, 2BF1D, 2BF9D, 2C0B8, 2C142, 2C176, 2C316, 2C3FB, 2C402, 2C7AC, 2C82C, 2C83A, 2C9A1, 2CC88, 2CD68
|21
|-
|CJK Unified Ideographs Extension F
|2DC09, 2DE4A, 2EB7E, 2EB89
|4
|-
|CJK Compatibility Ideographs Supplement
|2F83B, 2F878, 2F8D6..2F8D7, 2F8DA, 2F8F0, 2F984, 2FA02
|8
|-
! colspan="2" |Total
!536
|}
== Unicode 14.0 ==
Unicode 14.0 was released on September 14, 2021. It encoded 144,697 characters, adding 838 new characters.
=== New blocks ===
* '''Arabic Extended-B''' (U+0870-U+089F), containing 41 characters, was added.
* '''Vithkuqi''' (U+10570-U+105BF), containing 70 characters, was added.
* '''Latin Extended-F''' (U+10780-U+107BF), containing 57 characters, was added.
* '''Old Uyghur''' (U+10F70-U+10FAF), containing 26 characters, was added.
* '''Unified Canadian Aboriginal Syllabics Extended-A''' (U+11AB0-U+11ABF), containing 16 characters, was added.
* '''Cypro-Minoan''' (U+12F90-U+12FFF), containing 99 characters, was added.
* '''Tangsa''' (U+16A70-U+16ACF), containing 89 characters, was added.
* '''Kana Extended-B''' (U+1AFF0-U+1AFFF), containing 13 characters, was added.
* '''Znamenny Musical Notation''' (U+1CF00-U+1CFFF), containing 185 characters, was added.
* '''Latin Extended-G''' (U+1DF00-U+1DFFF), containing 31 characters, was added.
* '''Toto''' (U+1E290-U+1E2BF), containing 31 characters, was added.
* '''Ethiopic Extended-B''' (U+1E7E0-U+1E7FF), containing 28 characters, was added.
=== Extended blocks ===
* An End of Text punctuation mark (total 1 character) was added to '''Arabic'''. (U+061D)
* Letters for Balti and Quranic orthography (total 12 characters) were added to '''Arabic Extended-A'''. (U+08B5 and U+08C8-U+08D2)
* A sign Nukta and letter Nakaara Pollu (total 2 characters) were added to '''Telugu'''. (U+0C3C and U+0C5D)
* A letter Nakaara Pollu (total 1 character) was added to '''Kannada'''. (U+0CDD)
* A letter Ra, sign Pamudpod and archaic letter Ra (total 3 characters) were added to '''Tagalog'''. (U+170D, U+1715 and U+171F)
* A fourth Free variation selector (total 1 character) was added to '''Mongolian'''. (U+180F)
* Combining diacritical marks for extended IPA (total 14 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1AC1-U+1ACE)
* An archaic ligature Jnya and punctuation marks (total 3 characters) were added to '''Balinese'''. (U+1B4C and U+1B7D-U+1B7E)
* A combining Dot Below Left (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFA)
* A Kyrgyz Som sign (total 1 character) was added to '''Currency Symbols'''. (U+20C0)
* A letter Caudate Chrivi (total 2 characters) were added to '''Glagolitic'''. (U+2C2F and U+2C5F)
* Medieval and phonetic punctuation marks (total 11 characters) were added to '''Supplemental Punctuation'''. (U+2E53-U+2E5D)
* Some ideographs for Macao (total 3 characters) were added to '''CJK Unified Ideographs'''. (U+9FFD-U+9FFF)
* Archaic European letters, modifier letters for Sokuon and Chatino orthography (total 13 characters) were added to '''Latin Extended-D'''. (U+A7C0-U+A7C1, U+A7D0-U+A7D1, U+A7D3, U+A7D5, U+A7D6-U+A7D9 and U+A7F2-U+A7F4)
* A modifier letter Wasla Above and honorifics (total 20 characters) were added to '''Arabic Presentation Forms-A'''. (U+FBC2, U+FD40-U+FD4F, U+FDCF and U+FDFE-U+FDFF)
* Letters for Old Tamil (total 6 characters) were added to '''Brahmi'''. (U+11070-U+11075)
* A vowel sign Vocalic R (total 1 character) was added to '''Khaiti'''. (U+110C2)
* An Abbreviation sign (total 1 character) was added to '''Takri'''. (U+116B9)
* Letters for Tai Ahom (total 7 characters) were added to '''Ahom'''. (U+11740-U+11746) The block was expanded from (U+11700-U+1173F) to (U+11700-U+1174F)
* Kana archaic letters (total 4 characters) were added to '''Kana Extended-A'''. (U+1B11F-U+1B122)
* Accidental symbols for Iranian classical music (total 2 characters) were added to '''Musical Symbols'''. (U+1D1E9-U+1D1EA)
* Playground Slide, Wheel and Ring Buoy emoji (total 3 characters) were added to '''Transportation and Map Symbols'''. (U+1F6DD-U+1F6DF)
* A Heavy Equals Sign emoji (total 1 character) was added to '''Geometric Shapes Extended'''. (U+1F7F0)
* A Troll and Face Holding Back Tears emoji (total 2 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F979 and U+1F9CC)
* (total 31 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA7B-U+1FA7C, U+1FAA9-U+1FAAC, U+1FAB7-U+1FABA, U+1FAC3-U+1FAC5, U+1FAD7-U+1FAD9, U+1FAE0-U+1FAE7 and U+1FAF0-U+1FAF6)
* Some ideographs for Macao (total 2 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6DE-U+2A6DF)
* Disunified ideographs and a G source ideograph for China, Hong Kong and Vietnam (total 4 characters) were added to '''CJK Unified Ideographs Extension C'''. (U+2B735-U+2B738)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Latin Extended-B
|0184..0185
|2
|-
|Arabic
|0674..0678, 06C5, 06C7, 06FE
|8
|-
|Letterlike Symbols
|210B, 2110, 2112, 211B, 212C, 2130..2131, 2133
|8
|-
|Enclosed Alphanumerics
|2460..24FF
|160
|-
|Dingbats
|2776..2793
|30
|-
|CJK Symbols and Punctuation
|3001..3029, 3030..303D, 303F
|56
|-
|CJK Strokes
|31C0..31E3
|36
|-
|Katakana Phonetic Extensions
|31F0..31FF
|16
|-
|Enclosed CJK Letters and Months
|3200..321E, 3220..32FF
|255
|-
|CJK Compatibiity
|3300..33FF
|256
|-
|CJK Unified Ideographs Extension A
|3777, 3B3F
|2
|-
|CJK Unified Ideographs
|5DD5, 652C, 6AC0
|3
|-
|Arabic Presentation Forms-A
|FBD7..FBD8, FBDD, FBE0..FBE1
|5
|-
|Vertical Forms
|FE10..FE19
|10
|-
|CJK Compatibiity Forms
|FE30..FE4F
|32
|-
|Small Form Variants
|FE50..FE52, FE54..FE66, FE68..FE6B
|26
|-
|Halfwidth and Fullwidth Forms
|FF01..FF9F, FFA1..FFBE, FFC2..FFC7, FFCA..FFCF, FFD2..FFD7, FFDA..FFDC, FFE0..FFE6, FFE8..FFEE
|225
|-
|Egyptian Hieroglyphs
|1300A, 13017, 1302D, 13032, 13034..13035, 13037..13038, 1303A..1303E, 1304E..1304F, 13055, 13057, 13068, 1309A, 130D2, 130D5, 130F6, 130FE, 13192, 1325F, 13267, 1326A, 13281, 13297, 1329E, 132B4, 132C1, 132E6, 13304, 1331F, 13378..1337B, 1337D..1337E, 133F3, 133FA..13403, 1340D, 13417, 1342B
|55
|-
|Mathematical Alphanumeric Symbols
|1D49C, 1D49E..1D49F, 1D4A2, 1D4A5..1D4A6, 1D4A9..1D4AC, 1D4AE..1D4B5
|18
|-
|Enclosed Alphanumeric Supplement
|1F100..1F1AD, 1F1E6..1F1FF
|200
|-
|Enclosed Ideographic Supplement
|1F200..1F202, 1F210..1F23B, 1F240..1F248, 1F250..1F251, 1F260..1F265
|64
|-
|Supplemental Symbols and Pictographs
|1F930
|1
|-
|CJK Unified Ideographs Extension B
|22ADC, 230F2, 25B27, 26F28
|4
|-
! colspan="2" |Total
!1472
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|1D49C FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE00
|
|chancery style # SCRIPT CAPITAL B
|-
|1D49E FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE00
|
|chancery style # SCRIPT CAPITAL E
|-
|2131 FE00
|
|chancery style # SCRIPT CAPITAL F
|-
|1D4A2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE00
|
|chancery style # SCRIPT CAPITAL H
|-
|2110 FE00
|
|chancery style # SCRIPT CAPITAL I
|-
|1D4A5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE00
|
|chancery style # SCRIPT CAPITAL L
|-
|2133 FE00
|
|chancery style # SCRIPT CAPITAL M
|-
|1D4A9 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE00
|
|chancery style # SCRIPT CAPITAL R
|-
|1D4AE FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Z
|-
|1D49C FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE01
|
|roundhand style # SCRIPT CAPITAL B
|-
|1D49E FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE01
|
|roundhand style # SCRIPT CAPITAL E
|-
|2131 FE01
|
|roundhand style # SCRIPT CAPITAL F
|-
|1D4A2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE01
|
|roundhand style # SCRIPT CAPITAL H
|-
|2110 FE01
|
|roundhand style # SCRIPT CAPITAL I
|-
|1D4A5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE01
|
|roundhand style # SCRIPT CAPITAL L
|-
|2133 FE01
|
|roundhand style # SCRIPT CAPITAL M
|-
|1D4A9 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE01
|
|roundhand style # SCRIPT CAPITAL R
|-
|1D4AE FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Z
|}
===Named Sequences===
Here is a table with new named character sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Name
|-
|0915 093C
|DEVANAGARI SEQUENCE FOR LETTER QA
|-
|0916 093C
|DEVANAGARI SEQUENCE FOR LETTER KHHA
|-
|0917 093C
|DEVANAGARI SEQUENCE FOR LETTER GHHA
|-
|091C 093C
|DEVANAGARI SEQUENCE FOR LETTER ZA
|-
|0921 093C
|DEVANAGARI SEQUENCE FOR LETTER DDDHA
|-
|0922 093C
|DEVANAGARI SEQUENCE FOR LETTER RHA
|-
|092B 093C
|DEVANAGARI SEQUENCE FOR LETTER FA
|-
|092F 093C
|DEVANAGARI SEQUENCE FOR LETTER YYA
|-
|09A1 09BC
|BENGALI SEQUENCE FOR LETTER RRA
|-
|09A2 09BC
|BENGALI SEQUENCE FOR LETTER RHA
|-
|09AF 09BC
|BENGALI SEQUENCE FOR LETTER YYA
|-
|0A32 0A3C
|GURMUKHI SEQUENCE FOR LETTER LLA
|-
|0A38 0A3C
|GURMUKHI SEQUENCE FOR LETTER SHA
|-
|0A16 0A3C
|GURMUKHI SEQUENCE FOR LETTER KHHA
|-
|0A17 0A3C
|GURMUKHI SEQUENCE FOR LETTER GHHA
|-
|0A1C 0A3C
|GURMUKHI SEQUENCE FOR LETTER ZA
|-
|0A2B 0A3C
|GURMUKHI SEQUENCE FOR LETTER FA
|-
|0B21 0B3C
|ORIYA SEQUENCE FOR LETTER RRA
|-
|0B22 0B3C
|ORIYA SEQUENCE FOR LETTER RHA
|}
== Unicode 15.0 ==
Unicode 15.0 was released on September 13, 2022. It encoded 149,186 characters, adding 4,489 new characters.
=== New blocks ===
* '''Arabic Extended-C''' (U+10EC0-U+10EFF), containing 3 characters, was added.
* '''Devanagari Extended-A''' (U+11B00-U+11B5F), containing 10 characters, was added.
* '''Kawi''' (U+11F00-U+11F5F), containing 86 characters, was added.
* '''Kaktovik Numerals''' (U+1D2C0-U+1D2DF), containing 20 characters, was added.
* '''Cyrillic Extended-D''' (U+1E030-U+1E08F), containing 63 characters, was added.
* '''Nag Mundari''' (U+1E4D0-U+1E4FF), containing 42 characters, was added.
* '''CJK Unified Ideographs Extension H''' (U+31350-U+323AF), containing 4192 characters, was added.
=== Extended blocks ===
* A Yamakkan (total 1 character) was added to '''Lao'''. (U+0ECE)
* A combining Anusvara Above Right (total 1 character) was added to '''Kannada'''. (U+0CF3)
* Letters Qa, Short I and Vocalic R (total 3 characters) were added to '''Khojki'''. (U+1123F-U+11241)
* An additional hieroglyph to Group V (total 1 character) was added to '''Egyptian Hieroglyphs'''
* Extended format controls (total 29 characters) were added to '''Egyptian Hieroglyph Format Controls'''. (U+13439-U+13455). The block was expanded from (U+13430-U+1343F) to (U+13430-U+1345F)
* Hiragana and Katakana Small Ko (total 2 characters) were added to '''Small Kana Extension'''. (U+1B132 and U+1B155)
* Letters for Malayalam transliteration (total 6 characters) were added to '''Latin Extended-G'''. (U+1DF25-U+1DF2A)
* A Wireless emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6DC)
* A Nine Pointed White Star (total 1 character) was be added to '''Geometric Shapes Extended'''. (U+1F7D9)
* A Lot of Fortune, eclipse symbols and symbols for dwarf planets (total 6 characters) were added to '''Alchemical symbols'''. (U+1F774-U+1F776 and U+1F77B-U+1F77F)
* (total 20 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA75-U+1FA77, U+1FA87-U+1FA88, U+1FAAD-U+1FAAF, U+1FABB-U+1FABF, U+1FACE-U+1FACF, U+1FADA-U+1FADB, U+1FAE8 and U+1FAF7-U+1FAF8)
* A disunified ideograph for Macao (total 1 character) was added to '''CJK Unified Ideographs Extension C'''. (U+2B739)
===Glyph Changes===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|IPA Extensions
|025E, 029A
|2
|-
|United Canadian Aboriginal Syllabics
|144B, 14D1, 1506, 15C0..15C3, 15E8..15EE, 1601, 1604..1607, 160A..160D, 1614..162D, 1630..163F, 1646..1647, 165A
|66
|-
|United Canadian Aboriginal Syllabics Extended
|18DB, 18EC, 18F1..18F2, 18F5
|5
|-
|Sundanese
|1BBF
|1
|-
|Optical Character Recognition
|2447
|1
|-
|CJK Unified Ideographs Extension A
|34DC, 3BF6, 3C43, 48B4, 4DBE
|5
|-
|CJK Unified Ideographs
|585F, 5F50, 6BC0, 7BC9, 833E
|5
|-
|Cyrillic Extended-B
|A66E
|1
|-
|Old Turkic
|10C47
|1
|-
|Egyptian Hieroglyphs
|various (new standardized variation sequences)
|94
|-
|Khitan Small Script
|18CCA
|1
|-
|Wancho (font update)
|1E2C0..1E2F9, 1E2FF
|59
|-
|Alchemical Symbols (font update)
|1F700..1F773
|116
|-
|CJK Unified Ideographs Extension B
|20048, 20A1C, 2143F, 21A5F, 21C08, 21FBA, 22ACF, 23392, 238A7, 23D8F, 23F4E, 25D20, 26E30, 27B48, 27C4F, 28633, 28B02, 28E9A, 29760, 2A60F
|20
|-
|CJK Unified Ideographs Extension C
|2B249
|1
|-
|CJK Unified Ideographs Extension E
|2BB37, 2BD7D, 2C151, 2C1E0, 2C2D6, 2C5CA, 2C810, 2CD34
|8
|-
|CJK Unified Ideographs Extension F
|2CF4E, 2D25D, 2D3EC, 2D6A7, 2D7BA, 2D979, 2DA74, 2DA97, 2DC13, 2DDC0, 2DF10, 2DF78, 2E05A, 2E0AE, 2E516, 2E640, 2E680, 2EA63
|18
|-
|CJK Compatibility Ideographs Supplement
|2F804, 2F805, 2F833, 2F835, 2F84C, 2F84F, 2F852, 2F855, 2F887, 2F88B, 2F899, 2F8A0, 2F8A6, 2F8A7, 2F8AD, 2F8B1, 2F8B4, 2F8B7, 2F8BA, 2F8D0, 2F8E0..2F8E2, 2F8E5, 2F8E6, 2F8FE, 2F900, 2F901, 2F907, 2F912, 2F922, 2F926, 2F936, 2F938, 2F94E, 2F959, 2F95F, 2F96C, 2F99F, 2F9B8, 2F9BA, 2F9D3, 2F9DB, 2F9DC, 2F9E8, 2F9EA, 2F9EE, 2FA00, 2FA0D, 2FA1B
|50
|-
|CJK Unified Ideographs Extension G
|302FC, 30723, 30A6D, 30CF7, 30DBF, 31006, 3105D
|7
|-
! colspan="2" |Total
!461
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|13091 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027
|-
|13092 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027A
|-
|13093 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D028
|-
|130A9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D047
|-
|1310F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F016
|-
|13117 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F023
|-
|1311C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F028
|-
|13121 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F032
|-
|13127 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F037A
|-
|13139 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13139 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13183 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH H005
|-
|13187 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH H008
|-
|131A0 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131A0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131B1 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B1 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B8 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M009
|-
|131B9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M010
|-
|131BA FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M010A
|-
|131CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M017
|-
|131EE FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131EE FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131F8 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N010
|-
|131F9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131F9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131FA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N012
|-
|131FA FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N012
|-
|13216 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH N035
|-
|13257 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O006
|-
|1327B FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH O029
|-
|1327F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O031
|-
|1327F FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O031
|-
|13285 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O036
|-
|1328C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O039
|-
|132A4 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132A4 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132AA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Q003
|-
|132CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH R024
|-
|132DC FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S010
|-
|132E7 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E7 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E9 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S020
|-
|132F8 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S033
|-
|132FD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S037
|-
|13302 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S042
|-
|13303 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S043
|-
|13307 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T001
|-
|13308 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T002
|-
|13310 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008
|-
|13311 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008A
|-
|13312 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13312 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13313 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13313 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13314 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T010
|-
|13314 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T010
|-
|1331B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331B FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T016A
|-
|13321 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13321 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13322 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13322 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13331 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T035
|-
|13331 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T035
|-
|1333B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U007
|-
|1333C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U008
|-
|1334A FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U022
|-
|13361 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U042
|-
|13373 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V007A
|-
|13377 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V010
|-
|13378 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V011
|-
|1337D FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V012A
|-
|13385 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V019
|-
|13399 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V026
|-
|1339A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V027
|-
|133AF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W001
|-
|133B0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W002
|-
|133BF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W014
|-
|133D3 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH X004A
|-
|133DD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH Y002
|-
|133F2 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z007
|-
|133F5 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z010
|-
|133F6 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z011
|-
|13403 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z015I
|-
|13416 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA008
|-
|13419 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|1341A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA012
|-
|13423 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA021
|-
|1342C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA030
|-
|1342E FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA032
|-
|13443 FE00
|
|expanded # EGYPTIAN HIEROGLYPH LOST SIGN
|-
|13444 FE00
|
|expanded # EGYPTIAN HIEROGLYPH HALF LOST SIGN
|-
|13445 FE00
|
|expanded # EGYPTIAN HIEROGLYPH TALL LOST SIGN
|-
|13446 FE00
|
|expanded # EGYPTIAN HIEROGLYPH WIDE LOST SIGN
|}
== Unicode 15.1 ==
Unicode 15.1 was released on September 12th, 2023. It encoded 149,813 characters, adding 627 new characters.
=== New Blocks ===
* '''CJK Unified Ideographs Extension I''' (U+2EBF0-U+2EE5F), containing 622 characters, was added.
=== Extended Blocks ===
* 4 Ideographic characters were added to '''Ideographic Description Characters'''. (U+2FFC-U+2FFF)
* An Ideographic subtraction (total 1 character) was added to '''CJK Strokes'''. (U+31EF)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|CJK Unified Ideographs Extension A
|357E, 358B..358E, 3599..359D, 35AF..35B0, 35B2..35B3, 35DF..35E1, 35EF, 360F, 3612, 3F94, 44D5, 48EE
|5
|-
|CJK Unified Ideographs
|5098, 512D, 517A, 5391, 54DB, 551C, 551F, 55B8, 55ED, 56AB, 591E, 594A, 5B2E, 5DFC..5DFD, 5EE4, 609E, 65B0, 65B3, 65D5, 65F2, 67B2, 6AB6, 6AEC, 6C69, 6FC2, 6FD3, 7019, 7361, 74BD, 7934, 820B, 826E, 83BB, 8412, 8456, 848A, 896F, 8E34, 8FD7, 9166, 9855, 985E, 9C4D
|5
|-
|Latin Extended-D
|A798
|1
|-
|Latin Extended-E
|AB5A
|1
|-
|Tangut
|17105, 172A4, 17BD1..17BD3, 17EF9, 18136
|59
|-
|Alchemical Symbols
|1F741, 1F747, 1F74C, 1F74F, 1F756, 1F758, 1F763, 1F768, 1F76D, 1F76E
|116
|-
|CJK Unified Ideographs Extension B
|20302, 2087A, 20C00, 230B7, 2339E, 236EF, 237C3, 23B87, 23CC0, 23CD9, 23E5E, 2486F, 249D6, 249E8, 24D6A, 2585E, 25D89, 26A5A..26A5B, 26A73, 26A82..26A83, 26A90, 26AA6, 26AA8, 26AD8, 27350, 279F8, 284A3, 28BBA, 29516, 29530
|20
|-
|CJK Unified Ideographs Extension C
|2A741, 2AB63, 2ACD8, 2AF6F, 2B173, 2B490
|1
|-
|CJK Unified Ideographs Extension E
|2BC2E, 2BF45, 2C04C, 2C13A, 2C43C, 2C43E, 2C816
|8
|-
|CJK Unified Ideographs Extension F
|2D1CC..2D1CD, 2D1DD, 2D1E4, 2D1F7, 2D203, 2D256, 2D266, 2D2A2, 2D2AC, 2D2DA
|18
|-
|CJK Unified Ideographs Extension G
|301D4, 301D9, 301E4, 301E8, 301FF..30200, 30205, 3020C, 30211, 30215..30217, 30220, 30234..30235, 30237
|7
|-
|CJK Unified Ideographs Extension H
|314B7, 31542, 31569, 31C7F, 31D5A, 31F68
|7
|-
! colspan="2" |Total
!164
|}
== Unicode 16.0 ==
Unicode 16.0 was released on September 10th, 2024. It encoded 154,998 characters, adding 5185 new characters.
=== New Blocks ===
* '''Todhri''' (U+105C0-U+105FF), containing 52 characters, was added.
* '''Garay''' (U+10D40-U+10D8F), containing 69 characters, was added.
* '''Tulu-Tigalari''' (U+11380-U+113FF), containing 80 characters, was added.
* '''Myanmar Extended-C''' (U+116D0-U+116FF), containing 20 characters, was added.
* '''Sunuwar''' (U+11BC0-U+11BFF), containing 44 characters, was added.
* '''Egyptian Hieroglyphs Extended-A''' (U+13460-U+143FF), containing 3995 characters, was added.
* '''Gurung Khema''' (U+16100-U+1613F), containing 58 characters, was added.
* '''Kirat Rai''' (U+16D40-U+16D7F), containing 58 characters, was added.
* '''Symbols for Legacy Computing Supplement''' (U+1CC00-U+1CEBF), containing 686 characters, was added.
* '''Ol Onal''' (U+1E5D0-U+1E5FF), containing 44 characters, was added.
=== Extended Blocks ===
* A combining diacritical mark for Jawi (total 1 character) was added to '''Arabic Extended-B'''. (U+0897)
* Inverted letters and a punctuation mark (total 3 characters) was added to '''Balinese'''. (U+1B4E-U+1B4F and U+1B7F)
* A letter Tje (total 2 characters) was added to '''Cyrillic Extended-C'''. (U+1C89-U+1C8A)
* Legacy computing symbols for Delete (total 3 characters) was added to '''Control Pictures'''. (U+2427-U+2429)
* CJK strokes HXG and SZP (total 2 characters) was added to '''CJK Strokes'''. (U+31E4-U+31E5)
* A capital Rams Horn, an S with Diagonal Stroke, Lamda Letters, and letters for Wakashan and Salishan Languages (total 6 characters) was added to '''Latin Extended-D'''. (U+A7CB-U+A7CD, U+A7DA-U+A7DC)
* A combining Alef overlay and letters with two dots vertically below (total 4 characters) was added to '''Arabic Extended-C'''. (U+10EC2-U+10EC4 and U+10EFC)
* A sign Nukta (total 1 character) was added to '''Kawi'''. (U+11F5A)
* A blank character (total 1 character) was added to '''Khitan Small Script'''. (U+18CFF)
* A rightwards arrow with hook, and arrows for legacy computing and arrows for Egyptology (total 12 characters) was added to '''Supplemental Arrows-C'''. (U+1F8B2-U+1F8BB, U+1F8C0-U+1F8C1)
* A Harp, Shovel, Leafless Tree, Fingerprint, Root Vegetable, Splatter, and Face with Bags Under Eyes (total 7 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA89, U+1FA8F, U+1FABE, U+1FAC6, U+1FADC, U+1FADF, and U+1FAE9)
* Graphic shapes for legacy computing (total 37 characters) was added to '''Symbols for Legacy Computing'''. (U+1FBCB-U+1FBEF)
== Unicode 17.0 ==
Unicode 17.0 was released on September 9th, 2025. It encoded 159,801 characters, adding 4,083 new characters.
=== New Blocks ===
* '''Sidetic''' (U+10940-U+1095F), containing 26 characters, was added.
* '''Sharada Supplement''' (U+11B60-U+11B7F), containing 8 characters, was added.
* '''Tolong Siki''' (U+11DB0-U+11DEF), containing 54 characters, was added.
* '''Beria Erfe''' (U+16EA0-U+16EDF), containing 50 characters, was added.
* '''Tangut Components Supplement''' (U+18D80-U+18DFF), containing 115 characters, was added.
* '''Miscellaneous Symbols Supplement''' (U+1CEC0-U+1CEFF), containing 34 characters, was added.
* '''Tai Yo''' (U+1E6C0-U+1E6FF), containing 55 characters, was added.
* '''CJK Unified Ideographs Extension J''' (U+323B0-U+3347F), containing 4298 characters, was added.
=== Extended Blocks ===
* A Noon with Ring Above (total 1 character) was added to '''Arabic Extended-B'''. (U+088F)
* An archaic ligature Shrii (total 1 character) was added to '''Telugu'''. (U+0C5C)
* An archaic ligature Shrii (total 1 character) was added to '''Kannada'''. (U+0CDC)
* Compound tone and harrington diacritics (total 26 characters) was to '''Combining Diacritical Marks Extended'''. (U+1ACF-U+1ADD, U+1AE0-U+1AEB)
* Saudi Riyal Sign (total 1 character) was added to '''Currency Symbols'''. (U+20C1)
* Equal Sign with Infinity Above (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B96)
* 2 capital letters for Middle English, Latin pharyngeal voiced fricative, and Modifier Letter Capital S (total 5 characters) was added to '''Latin Extended-D'''. (U+A7CE-U+A7CF, U+A7D2, U+A7D4, U+A7F1)
* Arabic Ligature Rahmatu Allaahi Alayh and Arabic Honorifics (total 25 characters) was added to '''Arabic Presentation Forms-A'''. (U+FBC3-U+FBD2, U+FD90, U+FD91, U+FDC8-U+FDCE)
* A Small Yeh Barree with Two Dots Below, Thin Noon, Biblical End of Verse, Yeh with Four Dots Below, Honorifics, Double Vertical Bar Below, and Small Low Noon (total 14 characters) was added to '''Arabic Extended-C'''. (U+10EC5-U+10EC7, U+10ED0-U+10ED8, U+10EFA-U+10EFB)
* Chinese Simplified and Traditional Er and Yangqin Slow Signs Two, Three, and Four (total 5 characters) was added to '''Ideographic Symbols and Punctuation'''. (U+16FF2-U+16FF6)
* Some additional ideographs (total 8 characters) was added to '''Tangut'''. (U+187F8-U+187FF)
* Additional ideographs (total 22 characters) was added to '''Tangut Supplement'''. (U+18D09-U+18D1E)
* Nine symbols (total 9 characters) was added to '''Symbols for Legacy Computing Supplement'''. (U+1CCFA-U+1CCFC, U+1CEBA-1CEBF)
* A Landslide (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D8)
* Historical asteroid symbols (total 4 characters) was added to '''Alchemical Symbols'''. (U+1F777-U+1F77A)
* Chemical symbols (total 9 characters) was added to '''Supplemental Arrows-C'''. (U+1F8D0-U+1F8D8)
* White and Black Chess Ferz and Alfil (total 4 characters) was added to '''Chess Symbols'''. (U+1FA54-U+1FA57)
* A trombone, treasure chest, hairy creature, orca, distorted face, and fight cloud (total 6 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA8A, U+1FA8E, U+1FAC8, U+1FACD, U+1FAEA, and U+1FAEF)
* An alarm bell symbol (total 1 character) was added to '''Symbols for Legacy Computing'''. (U+1FBFA)
* Additional ideographs (total 6 characters) was added to '''CJK Unified Ideographs Extension C'''. (U+2B73A-U+2B73F)
* Additional ideographs (total 12 characters) was added to '''CJK Unified Ideographs Extension E'''. (U+2CEA2-U+2CEAD)
== Unicode 18.0 ==
Unicode 18.0 will be released on September 16, 2026.
=== New Blocks ===
*'''Bengali Supplement''' (U+11DF0-U+11DFF), containing 2 characters, will be added.
* '''Archaic Cuneiform Numerals''' (U+12550-U+1268F), containing 311 characters, will be added.
* '''Jurchen''' (U+18E00-U+1919F), containing 914 characters, will be added.
* '''Jurchen Radicals''' (U+191A0-U+191DF), containing 51 characters, will be added.
* '''Musical Symbols Supplement''' (U+1D250-U+1D28F), containing 50 characters, will be added.
* '''Miscellaneous Symbols and Arrows Extended''' (U+1DB00-U+1DBFF), containing 29 characters, will be added.
* '''Seal Script''' (U+3D000-U+3FC3F), containing 11328 characters, will be added.
=== Extended Blocks ===
* Modifier letters Eh, Ini, and Yi (total 3 characters) will be added to '''Armenian'''. (U+0558, U+058B-U+058C)
* Hebrew Point Sheva Na Mudgash and Hebrew Point Dagesh Hazaq Mudgash (total 2 characters) will be added to '''Hebrew'''. (U+05C8-U+05C9)
* Signs for dot above and double dot above (total 2 characters) will be added to '''Oriya'''. (U+0B53-U+0B54)
* Alternate positioned IPA diacritics and diacritics for Chao and Khoe (total 7 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1ADE-U+1ADF, U+1AEC-U+1AF0)
* Latin subscript small letter w, y, and z and Modifier letter high and low vertical line (total 4 characters) will be added to '''Superscripts and Subscripts'''. (U+208F, U+209D-U+209F)
* Rufiyaa Sign, UAE Dirham Sign, and Omani Rial (total 3 characters) will be added to '''Currency Symbols'''. (U+20C2-U+20C4)
* Two Wiggly Exclamation Marks and Two Parenthesis with Middle Ring (total 4 characters) will be added to '''Supplemental Punctuation'''. (U+2E60-U+2E63)
* Latin capital letter closed omega and Latin capital letter r with long leg and (total 2 characters) will be added to '''Latin Extended-D'''. (U+A7DD and U+A7E2)
* Latin capital letter script r and script r with ring (total 2 characters) will be added to '''Latin Extended-E'''. (U+AB6C-U+AB6D)
* Latin modifier letters for clicks (total 5 characters) will be added to '''Latin Extended-F'''. (U+107BB-U+107BF)
* Arabic Crown Letters, Quranic Characters, and Arabic Crown (total 39 characters) will be added to '''Arabic Extended-C'''. (U+10EC9-U+10ECF, U+10ED9-U+10EEE, U+10EF0-U+10EF9)
* Devanagari Letter Alternate Ddda (total 1 character) will be added to '''Devanagari Extended-A'''. (U+11B0A)
* Extended Cuneiform Numeric Signs (total 12 characters) will be added to '''Cuneiform Numbers and Punctuation'''. (U+1246F, U+12475-U+1247F)
* Jurchen Small Script characters (total 5 characters) will be added to '''Khitan Small Script'''. (U+18CD6-U+18CDA)
* Two additional ideographs (total 2 characters) will be added to '''Tangut Supplement'''. (U+18D1F-U+18D20)
* Hiragana Digraph Koto, Katakana Diagraphs Toki, Tote, and Yori, letters alternate Ne, and Wi (total 6 characters) will be added to '''Kana Extended-A'''. (U+1B123-U+1B128)
* Katakana letter small archaic Ye (total 1 character) will be added to '''Small Kana Extension'''. (U+1B168)
* Leibnizian alchemical symbols, Leibnizian cossic characters, and Leibnizian mathematical signs and symbols (total 19 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED2-U+1CED4, U+1CEDD-U+1CEDF, U+1CEF1-U+1CEFD)
* Stein Zimmerman Symbols, Digit Slash Symbols, and other Symbols (total 23 characters) will be added to '''Musical Symbols'''. (U+1D127-U+1D128, U+1D1EB-U+1D1FF)
* Mathematical italic long s with descender s (U+1D6A6) will be added to '''Mathematical Alphanumeric Symbols'''.
* Affricate ligatures, letters with palatal hook, barred letters, RFE letters, Initial Teaching Alphabet, English Phonotypic Alphabet, Leibnizian cossic characters, and modifier letters (total 151 characters) will be added to '''Latin Extended-G'''. (U+1DF1F-U+1DF24, U+1DF2B-U+1DF81, U+1DF90-U+1DF96, U+1DFCD-U+1DFFF)
* A Tomobiki symbol (total 1 character) will be added to '''Enclosed Alphanumeric Supplement'''. (U+1F1AE)
* A lighthouse (total 1 character) will be added to '''Transport and Map Symbols'''. (U+1F6D9)
* A black circle with white vertical bar, and Extended Geometric Shapes (total 17 characters) will be added to '''Geometric Shapes Extended'''. (U+1F7DA-U+1F7DB, U+1F7F1-U+1F7FF)
* A meteor, eraser, net with handle, monarch butterfly, pickle, cracking face, leftwards thumb sign, and rightwards thumb sign (total 8 characters) will be added to '''Symbols and Pictographs Extended-A'''. (U+1FA8B-1FA8D, U+1FACC, U+1FADD, U+1FAEB, U+1FAF9-1FAFA)
* An additional ideograph (total 1 character) will be added to '''CJK Unified Ideographs Extension D'''. (U+2B81E)
== Unicode 19.0==
Unicode 19.0 will be released in late 2027.
=== New Blocks ===
* '''CJK Unified Ideographs Components-A''' (U+2FA20-U+2FA9F)
* '''CJK Unified Ideographs Components-B''' (U+2FAA0-U+2FC1F)
== Code Points Provisionally Assigned==
This is a section where you can add any upcoming Unicode characters that have been [https://www.unicode.org/alloc/Pipeline.html#codepoint_reservation provisionally assigned for mature proposals] (but not yet accepted) for a future update of The Unicode Standard.
=== New Blocks ===
* '''Arabic Extended-D''' (U+10D90-U+10E5F), containing 3 characters, will be added.
* '''Sirmauri''' (U+11850-U+1188F), containing 55 characters, will be added.
* '''Leke''' (U+11B80-U+11BBF), containing 55 characters, will be added.
* '''Proto-Cuneiform''' (U+12690-U+12ECF), containing 1392 characters, will be added.
* '''Chisoi''' (U+16D80-U+16DAF), containing 40 characters, will be added.
* '''Mwangwego''' (U+16E00-U+16E3F), containing 64 characters, will be added.
* '''Shaaldaa''' (U+1C800-U+1CB2F), containing 804 characters, will be added.
* '''Leibnizian Ambiguous Signs''' (U+1DC00-U+1DC3F), containing 54 characters, will be added.
=== Extended Blocks ===
* Telugu Sign Spacing Candrabindu (total 1 character) will be added to '''Telugu'''. (U+0C70)
* Kannada Signs Ardhanusvara and Combining Anusvara Above (total 1 character) will be added to '''Kannada'''. (U+0CF0 and U+0CF4)
* Mongolian Letter Manchu Alternative Ue (total 1 character) will be added to '''Mongolian'''. (U+1879)
* Combining Grave-Acute-Macron, Combining inverted lazy s Above, and Combining comma Above and acute (total 3 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1AF1-U+1AF3)
* Cyrillic small letter Yeru with connecting bar (total 1 character) will be added to '''Cyrillic Extended-C'''. (U+1C8B)
* Belarusian Ruble sign and Ruble sign with double vertical stem (total 2 characters) will be added to '''Currency Symbols'''. (U+20C5, U+20CF)
* Combining Long Triple Solidus Overlay and Combining Saltire Overlay (total 2 characters) will be added to '''Combining Diacritical Marks for Symbols'''. (U+20F1-U+20F2)
* Latin capital and small letter i with oblique stroke (total 2 characters) will be added to '''Latin Extended-D'''. (U+A7De-U+A7DF)
* Latin capital letter u with left hook (total 1 character) will be added to '''Latin Extended-E'''. (U+AB6E)
* Arabic Dotless Half-Yeh, Half-Yeh, Dotless Half-Jeem and Astronomical Kaf (total 4 characters) will be added to '''Arabic Extended-C'''. (U+10EC0-U+10EC1, U+10EC8, U+10EEF)
* Brahmi minimizing virama (total 1 character) will be added to '''Brahmi'''. (U+1107E)
* Tulu-Tigalari letter combining anusvara above, signs om pushpika with tail and shrii pushpika, and letter archaic II (total 5 characters) will be added to '''Tulu-Tigalari'''. (U+113CB, U+113D9-U+113DB)
* Newa Letter Heavy Ya (total 1 character) will be added to '''Newa'''. (U+11462)
* Dogra Signs Candrabindu and Avaragha (total 2 characters) will be added to '''Dogra'''. (U+1183C-U+1183D)
* Devanagari Jivamuliya and Upadhmaniya (total 2 characters) will be added to '''Devanagari Extended-A'''. (U+11B0B-U+11B0C)
* Alchemical Symbol for Calx-2 and Alchemical Symbol for Retort-2 (total 2 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED1, U+1CED5)
* Musical Symbol down arrowhead breath mark (total 1 character) will be added to '''Musical Symbols Supplement'''. (U+1D282)
* Small w with palatal hook, small n and r with double middle tilde, small capital i with retroflex hook, small open q, x with stroke, small wavy y, schwa with right hook, Romance dialectology symbols, zh ligature, Albanian letter edhe, Albanian Frashëri letters, Modifier letter capital y, and modifier letter accents (total 26 characters) will be added to '''Latin Extended-G'''. (U+1DF82-U+1DF8F, U+1DF97-U+1DFA3, U+1DFC4-U+1DFCD)
*Arabic Astronomical zero and five astronomical symbols (total 6 characters) will be added to Arabic Mathematical Alphabetic Symbols (U+1EEE0-U+1EEE5)
==Roadmap Blocks==
This is a section where proportional maps of proposed allocations to Unicode and ISO/IEC 10646 are presented. Italic indicates scripts for which detailed proposals have not yet been written.<ref>[https://unicode.org/roadmaps/smp/]</ref>
* '''Northern Palaeohispanic''' (U+10200-U+1023F)
* '''Southern Palaeohispanic''' (U+10240-U+1027F)
* '''''Shavian Quikscript''' (U+103E0-U+103FF)''
* '''Combining Diacritical Marks Extended-A''' (U+107C0-U+107FF)
* '''Proto-Sinaitic''' (U+108B0-U+108DF)
* '''''Numidian''' (U+10960-U+1097F)''
* '''Balti''' (U+10AA0-U+10ABF)
* '''Book Pahlavi''' (U+10BB0-U+10BDF)
* '''Baburi''' (U+10BE0-U+10BFF)
* '''Arabic Extended-D''' (U+10D90-U+10E5F)
* '''Landa''' (U+11250-U+1127F)
* '''Tani Lipi''' (U+114E0-U+114FF)
* '''Ranjana''' (U+11500-U+1157F)
* '''Zou''' (U+11750-U+117AF)
* '''Pyu''' (U+117B0-U+117FF)
* '''Vateluttu''' (U+11960-U+1199F)
* '''Balti-B''' (U+11CC0-U+11CFF)
* '''Tocharian''' (U+11E00-U+11E6F)
* '''Khotanese''' (U+11E70-U+11ECF)
* '''Pallava''' (U+11F60-U+11FAF)
* '''''Egyptian Hieroglyphs Extended-B''' (U+14680-U+151FF)''
* '''Mayan Hieroglyphs''' (U+15500-U+15AFF)
* '''Kore Sebeli''' (U+15B00-U+15B6F)<!--proposed to be accepted, 93 characters-->
* '''Mandombe''' (U+15B80-U+15FFF)
* '''Kurukh Banna''' (U+16140-U+1618F)
* '''Moon''' (U+161A0-U+161FF)
* '''Blissymbols''' (U+16200-U+167FF)
* '''Woleai''' (U+16B90-U+16BFF)
* '''Kpelle''' (U+16C00-U+16C7F)
* '''Tikamuli''' (U+16C80-U+16CBF)
* '''Tangsa (Khimhun)''' (U+16CD0-U+16CFF)
* '''Afaka''' (U+16D00-U+16D3F)
* '''Kulitan''' (U+16DD0-U+16DFF)
* '''''Bopomofo Extended-A''' (U+16FA0-U+16FAF)''
* '''Kanbun Extended-A''' (U+16FB0-U+16FDF)
* '''Khitan Large Script''' (U+19200-U+199FF)
* '''Pau Cin Hau Syllabary''' (U+19E00-U+1A2FF)
* '''Eskaya''' (U+1A300-U+1A75F)
* '''Rejang Extended''' (U+1A760-U+1A77F)
* '''''Kaida''''' (U+1A780-U+1A7FF)
* '''Naxi Dongba''' (U+1A800-U+1ACFF)
* '''''Naxi Geba''' (U+1AD00-U+1AFCF)''
* '''''Kana Extended-C''' (U+1AFD0-U+1AFEF)''
* '''Shuishu Logograms''' (U+1B300-U+1B5FF)
* '''Lisu Syllabic Script''' (U+1B600-U+1B9FF)
* '''Indus''' (U+1BA00-U+1BB8F)
* '''Pitman Shorthand''' (U+1BCB0-U+1BCFF)
* '''Proto-Elamite''' (U+1BE00-U+1C37F)
* '''Linear Elamite''' (U+1C380-U+1C4FF)
* '''Ndiko Jonam''' (U+1CB30-U+1CB7F)
* '''N<nowiki>'</nowiki>ti''' (U+1CB80-U+1CBAF)
* '''Old Chinese Musical Symbols (Flute and Pipa)''' (U+1D290-U+1D2BF)
* '''''Mathematical Alphanumeric Symbols Supplement''' (U+1D380-U+1D3FF)''
* '''Jianzi Format Controls''' (U+1DAE0-U+1DAFF)
* '''Eebee Hmong''' (U+1E150-U+1E1FF)
* '''Western Cham''' (U+1E200-U+1E26F)
* '''Loma''' (U+1E300-U+1E41F)
* '''Bagam''' (U+1E420-U+1E4CF)
* '''Pungchen''' (U+1E500-U+1E52F)
* '''''Pungchung''' (U+1E530-U+1E55F)''
* '''''Marchung''' (U+1E560-U+1E59F)''
* '''Brusha''' (U+1E5A0-U+1E5CF)
* '''''Chola''' (U+1E600-U+1E65F)''
* '''Box-Headed''' (U+1E660-U+1E6BF)
* '''Lampung''' (U+1E700-U+1E73F)
* '''Kerinci''' (U+1E740-U+1E76F)
* '''Buginese Supplement''' (U+1E770-U+1E7BF)
* '''''Lontara Bilang-Bilang''' (U+1E7C0-U+1E7DF)''
* '''N'Ko Supplement''' (U+1E960-1E97F)
* '''''Byblos''''' (U+1EB90-U+1EBFF)
* '''Persian Siyaq Numbers''' (U+1EC00-U+1EC7F)
* '''Diwani Siyaq Numbers''' (U+1ECC0-U+1ECFF)
* '''''Extended Pictographic Characters''' (U+1FC00-U+1FFFF)''
== References ==
{{reflist}}
l71xelwenh6vx06jwx79rsda27klzsk
4656284
4656283
2026-08-04T18:36:13Z
Alexlatham96
377450
/* Unicode 19.0 */
4656284
wikitext
text/x-wiki
{{pp-protected|small=yes}}
{{Unicode page}}
{{TOC right}}
{{refimprove|date=June 2017}}
This page is about each version specification, and the differences between the versions.
== Unicode 1.0 ==
Unicode 1.0 was the first version of Unicode, released October 1991. It encoded 7,094 new characters.
=== “Blocks” ===
This version of Unicode did not formally group characters in blocks. But in comparison with version 2.0, the following “blocks” were available:
U+0000-U+FFFD
51 Blocks
* '''Basic Latin (formerly called ASCII)''' (U+0000-U+007F), containing 128 characters.
* '''Latin-1 Supplement (formerly called Latin1)''' (U+0080-U+00FF), containing 128 characters.
* '''Latin Extended-A''' '''(formerly called European Latin)''' (U+0100-U+017F), containing 127 characters.
* '''Latin Extended-B''' '''(formerly called Extended Latin)''' (U+0180-U+01FF), containing 113 characters.
* '''IPA Extensions''' '''(formerly called Standard Phonetic)''' (U+0250-U+02AF), containing 89 characters.
* '''Spacing Modifier Letters''' '''(formerly called Modifier Letters)''' (U+02B0-U+02FF), containing 57 characters.
* '''Combining Diacritical Marks''' '''(formerly called Generic Diacritical Marks)''' (U+0300-U+036F), containing 66 characters.
* '''Greek and Coptic''' '''(formerly called Greek)''' (U+0370-U+03FF), containing 112 characters.
* '''Cyrillic''' (U+0400-U+04FF), containing 192 characters.
* '''Armenian''' (U+0530-U+058F), containing 84 characters.
* '''Hebrew''' (U+0590-U+05FF), containing 52 characters.
* '''Arabic''' (U+0600-U+06FF), containing 169 characters.
* '''Devanagari''' (U+0900-U+097F), containing 104 characters.
* '''Bengali''' (U+0980-U+09FF), containing 89 characters.
* '''Gurmukhi''' (U+0A00-U+0A7F), containing 74 characters.
* '''Gujarati''' (U+0A80-U+0AFF), containing 75 characters.
* '''Oriya''' (U+0B00-U+0B7F), containing 78 characters.
* '''Tamil''' (U+0B80-U+0BFF), containing 61 characters.
* '''Telugu''' (U+0C00-U+0C7F), containing 80 characters.
* '''Kannada''' (U+0C80-U+0CFF), containing 80 characters.
* '''Malayalam''' (U+0D00-U+0D7F), containing 78 characters.
* '''Thai''' (U+0E00-U+0E7F), containing 92 characters.
* '''Lao''' (U+0E80-U+0EFF), containing 70 characters.
* '''Tibetan''' (U+1000-U+105F), containing 71 characters.
* '''Georgian''' (U+10A0-U+10FF), containing 78 characters.
* '''General Punctuation''' (U+2000-U+206F), containing 67 characters.
* '''Superscripts and Subscripts''' (U+2070-U+209F), containing 28 characters.
* '''Currency Symbols''' (U+20A0-U+20CF), containing 11 characters.
* '''Combining Marks for Symbols''' '''(formerly called Diacritical Marks for Symbols)''' (U+20D0-U+20FF), containing 18 characters.
* '''Letterlike Symbols''' (U+2100-U+214F), containing 57 characters.
* '''Number Forms''' (U+2150-U+218F), containing 48 characters.
* '''Arrows''' (U+2190-U+21FF), containing 91 characters.
* '''Mathematical Operators''' (U+2200-U+22FF), containing 242 characters.
* '''Miscellaneous Technical''' (U+2300-U+23FF), containing 43 characters.
* '''Control Pictures''' '''(formerly called Pictures for Control Codes)''' (U+2400-U+243F), containing 37 characters.
* '''Optical Character Recognition''' (U+2440-U+245F), containing 11 characters.
* '''Enclosed Alphanumerics''' (U+2460-U+24FF), containing 139 characters.
* '''Box Drawing''' '''(formerly called Form and Chart Components)''' (U+2500-U+257F), containing 128 characters.
* '''Block Elements''' '''(formerly called Blocks)''' (U+2580-U+259F), containing 22 characters.
* '''Geometric Shapes''' (U+25A0-U+25FF), containing 79 characters.
* '''Miscellaneous Symbols''' '''(formerly called Miscellaneous Dingbats)''' (U+2600-U+26FF), containing 106 characters.
* '''Dingbats''' '''(formerly called Zapf Dingbats)''' (U+2700-U+27BF), containing 160 characters.
* '''CJK Symbols and Punctuation''' (U+3000-U+303F), containing 56 characters.
* '''Hiragana''' (U+3040-U+309F), containing 90 characters.
* '''Katakana''' (U+30A0-U+30FF), containing 90 characters.
* '''Bopomofo''' (U+3100-U+312F), containing 40 characters.
* '''Hangul Compatibility Jamo (formerly called Hangul Elements)''' (U+3130-U+318F), containing 94 characters.
* '''Kanbun (formerly called CJK Miscellaneous)''' (U+3190-U+31FF), containing 16 characters.
* '''Enclosed CJK Letters and Months''' '''(formerly called''' '''Enclosed CJK Letters and Ideographs)''' (U+3200-U+32FF), containing 191 characters.
* '''CJK Compatibility''' '''(formerly called CJK Squared Words for U+3300-U+337F and CJK Squared Abbreviations for U+3380-33FF)''' (U+3300-U+33FF), containing 187 characters.
* '''Hangul''' (U+3400-U+3D2D), containing 2,350 characters.
* '''Private Use Area''' (U+E000-U+FDFF), reserved for 5,632 characters.
* '''CJK Compatibility Forms''' '''(formerly called CNS 11643 Compatibility)''' (U+FE30-U+FE4F), containing 28 characters.
* '''Small Form Variants''' '''(formerly called Small Variants)''' (U+FE50-U+FE6F), containing 26 characters.
* '''Arabic Presentation Forms-B''' '''(formerly called Basic Glyphs for Arabic Language)''' (U+FE70-U+FEFF), containing 140 characters.
* '''Halfwidth and Fullwidth Forms''' '''(formerly called Halfwidth and Fullwidth Variants)''' (U+FF00-U+FFEF), containing 216 characters.
* '''Specials''' '''(formerly called Special)''' (U+FFF0-U+FFFF), containing 1 character.
== Unicode 1.0.1 ==
Unicode 1.0.1 was released June 1992. It encoded 28,292 characters, adding 21,204 new characters and removing 6 characters, for a net increase of 21,198 characters.
=== New blocks ===
* '''CJK Unified Ideographs''' (U+4E00-U+9FFF), containing 20,902 Han Ideographs for Chinese, Japanese and Korean, was added.
* '''CJK Compatibility Ideographs''' (U+F900-U+FAFF), containing 302 Han Ideographs for compatibility with existing character sets, was added.
=== Removed characters ===
* Letters Ka and Kha with Ogonek (total 4 characters) were removed from '''Cyrillic'''. (U+04C5-U+04C6 and U+04C9-U+04CA)
* APL Compose Operator and APL Out (total 2 characters) were removed from '''Miscellaneous Technical'''. (U+2300-U+2301)
=== Rearranged characters ===
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
*'''Circled Katakana:''' ''The characters well be arranged in modern order: e.g., A, I, U, E, O, KA, KI'' (U+32D0-U+32FE)
*'''Basic Glyphs For Arabic Language:''' ''The character shapes will be arranged in different order: Isolate, Final, Initial and Medial'' (U+FE80-FEFC)
=== Characters with semantics changed ===
*'''Zero Width Non-Joiner''' [ZWNJ] (U+20DC)
*'''Zero Width Joiner''' [ZWJ] (U+20DD)
== Unicode 1.1 ==
Unicode 1.1 was released June 1993. It encoded 34,168 characters, adding 5,969 new characters and removing 93 characters, for a net increase of 5,876 characters. It finalized the long anticipated Han Unification.
=== New blocks ===
* '''Hangul Jamo''' (U+1100-U+11FF), containing 240 ''jamo'' for the Hangul script, was added.
* '''Latin Extended Additional''' (U+1E00-U+1EFF), containing 245 precomposed characters for transliteration and Vietnamese, was added.
* '''Greek Extended''' (U+1F00-U+1FFF), containing 233 precomposed characters for polytonic Greek, was added.
* '''Hangul Supplementary-A''' (U+3D2E-U+44B7), containing 1,930 precomposed syllables for the Hangul script, was added.
* '''Hangul Supplementary-B''' (U+44B8-U+4DFF), containing 2,376 precomposed syllables for the Hangul script, was added.
* '''Alphabetic Presentation Forms''' (U+FB00-U+FB4F), containing 57 precomposed characters and ligatures, was added.
* '''Arabic Presentation Forms-A''' (U+FB50-U+FDFF), containing 593 combinations of Arabic letters, was added.
* '''Combining Half Marks''' (U+FE20-U+FE2F), containing 4 halves of diacritical marks, was added.
=== Extended blocks ===
* The long S (ſ) (total 1 character) was added to '''Latin Extended-A'''. (U+017F)
* The Hungarian Dz, characters for transliteration purposes and precomposed characters with double grave and inverted breve (total 35 characters) were added to '''Latin Extended-B''' (U+01F1-U+01F5 and U+01FA-U+0217). The block was expanded from (U+0180-U+01FF) to (U+0180-U+024F)
* Diacritics for polytonic Greek and double width diacritics (total 6 characters) were added to '''Combining Diacritical Marks'''. (U+0342-U+0345 and U+0360-U+0361)
* Compatibility character now deprecated, Ano Teleia, and other characters (total 5 characters) were added to '''Greek and Coptic''' (U+0374-U+0375, U+037A, U+037E and U+0387).
* Additional characters for non-Slavic languages (total 38 characters) were added to '''Cyrillic'''. (U+04D0-U+04EB, U+04EE-U+04F5 and U+04F8-U+04F9)
* A ligature of Ech and Yiwn (և) (total 1 character) was added to '''Armenian'''. (U+0587)
* One deprecated compatibility character and several characters for biblical texts (total 25 characters) were added to '''Arabic'''. (U+066D and U+06D6-U+06ED)
* A sign Virama (total 1 character) was added to '''Gurmukhi''' (U+0A4D).
* Letters Candra O and E (total 3 characters) were added to '''Gujarati'''. (U+0A8D, U+0A91 and U+0AC9)
* An Ai Length mark (total 1 character) was added to '''Oriya'''. (U+0B56)
* An undertie, a pair of brackets and six formatting characters now deprecated (total 9 characters) were added to '''General Punctuation'''. (U+203F, U+2045-U+2046 and U+206A-U+206F)
* Some additional symbols and the complete set of APL functional symbols (total 79 characters) were added to '''Miscellaneous Technical'''. (U+2300 and U+232D-U+237A)
* A large circle (◯) (total 1 character) was added to '''Geometric Shapes'''. (U+25EF)
* The ideographic telegraph line feed separator symbol (〷) (total 1 character) was added to '''CJK Symbols and Punctuation'''. (U+3037)
* Four Katakana letters not in use since 1945 (total 4 characters) were added to '''Katakana'''. (U+30F7-U+30FA)
* Ideographic telegraph symbols for the twelve months (total 12 characters) were added to '''Enclosed CJK Letters and Months'''. (U+32C0-U+32CB)
* Ideographic telegraph symbols for hours and days and six additional measure units (total 62 characters) were added to '''CJK Compatibility'''. (U+3358-U+3376 and U+33E0-U+33FE)
* Some more space (total 2,304 characters) was added to the '''Private Use Area'''.
* Seven halfwidth geometric shapes (total 7 characters) were added to '''Halfwidth and Fullwidth Forms'''. (U+FFE8-U+FFEE)
=== Removed blocks ===
* '''Tibetan''', containing 71 letters for the Tibetan script, was removed from the Unicode standard.
=== Removed characters ===
* A total of 10 characters were removed from '''Greek and Coptic'''. (U+0370-U+0372, U+03D7-U+03D9, U+03DB, U+03DD, U+03DF, and U+03E1)
* Point Varika (total 1 character) was removed from ''Hebrew''. (U+05F5)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Thai'''. (U+0E70-U+0E74)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Lao'''. (U+0EF0-U+0EF4)
* An Ideographic Ditto Mark (total 1 character) was removed from '''CJK Symbols and Punctuation''' (U+3004) and merged with CJK Unified Ideograph-4EDD.
=== Rearranged characters ===
* Greek character U+03F3 was changed from Spacing Tonos to Letter Yot.
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
== Unicode 2.0 ==
Unicode 2.0 was released July 1996. It encoded 38,885 characters, adding 11,373 new characters and removing 6,656 characters, for a net increase of 4,717 characters. This was the first Unicode version to reserve blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Hangul Syllables''' (U+AC00-U+D7AF), containing 11,172 precomposed syllables for the Hangul script, was added.
* '''High Surrogates''' (U+D800-U+DB7F), setting aside 896 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''High Private Use Surrogates''' (U+DB80-U+DBFF), setting aside 128 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Low Surrogates''' (U+DC00-U+DFFF), setting aside 1,024 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Supplementary Private Use Area-A''' (U+F0000-U+FFFFF), reserving 65,534 characters for private use, was added.
* '''Supplementary Private Use Area-B''' (U+100000-U+10FFFF), reserving 65,534 characters for private use, was added.
=== Reinstated blocks ===
* '''Tibetan''' (U+0F00-U+0FFF), now containing 168 characters for the Tibetan script including religious signs, was readded.
=== Removed blocks ===
* '''Hangul''', containing 2,350 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-A''', containing 1,930 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-B''', containing 2,376 precomposed syllables for the Hangul script, was removed from the Unicode standard.
=== Extended blocks ===
* Cantillation marks for use in religious texts (total 31 characters) were added to '''Hebrew'''. (U+0591-U+05A1, U+05A3-U+05AF and U+05C4)
* A long S with Dot Above (total 1 character) was added to '''Latin Extended Additional'''. (U+1E9B)
* A Vietnamese Dong sign (total 1 character) was added to '''Currency Symbols'''. (U+20AB)
== Unicode 2.1 ==
Unicode 2.1 was released May 1998. It encoded 38,887 characters, adding only 2 new characters.
=== Extended blocks ===
* A Euro sign (total 1 character) was added to '''Currency Symbols'''. (U+20AC)
* An Object Replacement Character (total 1 character) was added to '''Specials'''. (U+FFFC)
== Unicode 3.0 ==
Unicode 3.0 was released September 1999. It was a big update and encoded 49,194 characters, adding 10,307 new characters.
=== New blocks ===
* '''Syriac''' (U+0700-U+074F), containing 71 characters used for writing in Syriac script, was added.
* '''Thaana''' (U+0780-U+07BF), containing 49 characters used for writing in Thaana script, was added.
* '''Sinhala''' (U+0D80-U+0DFF), containing 80 characters for the Sinhala script, was added.
* '''Myanmar''' (U+1000-U+109F), containing 78 characters for the Burmese script, was added.
* '''Ethiopic''' (U+1200-U+137F), containing 345 syllables and punctuation marks for the Ethiopic script, was added.
* '''Cherokee''' (U+13A0-U+13FF), containing 85 syllables for the Cherokee script, was added.
* '''Unified Canadian Aboriginal Syllabics''' (U+1400-U+167F), containing 630 syllables and punctuation marks for writing in indigenous languages of Canada, was added.
* '''Ogham''' (U+1680-U+169F), containing 29 characters for the ancient Ogham script, was added.
* '''Runic''' (U+16A0-U+16FF), containing 81 characters for the Germanic runes, was added.
* '''Khmer''' (U+1780-U+17FF), containing 103 characters for the Khmer script, was added.
* '''Mongolian''' (U+1800-U+18AF), containing 155 characters for the classical Mongolian script, was added.
* '''Braille Patterns''' (U+2800-U+28FF), containing 256 Braille letters, was added.
* '''CJK Radicals Supplement''' (U+2E80-U+2EFF), containing 115 non-Kangxi radicals, was added.
* '''Kangxi Radicals''' (U+2F00-U+2FDF), containing 214 radicals from the Kangxi dictionary, was added.
* '''Ideographic Description Characters''' (U+2FF0-U+2FFF), containing 12 characters used to describe a Han ideograph not available in the font, was added.
* '''Bopomofo Extended''' (U+31A0-U+31BF), containing 24 characters used for phonetic transcription of minority languages of Taiwan, was added.
* '''CJK Unified Ideographs Extension A''' (U+3400-U+4DBF), containing 6,582 additional Han Ideographs, was added.
* '''Yi Syllables''' (U+A000-U+A48F), containing 1,165 syllables of the modern Yi script, was added.
* '''Yi Radicals''' (U+A490-U+A4CF), containing 50 radicals of Yi Syllables, was added.
=== Extended blocks ===
* Additional precomposed characters, letters and capital letters of lowercase-only letters (total 30 characters) were added to '''Latin Extended-B'''. (U+01F6-U+01F9, U+0218-U+021F and U+0222-U+0233)
* Extensions for disordered speech (total 5 characters) were added to '''IPA Extensions'''. (U+02A9-U+02AD)
* Some additional modifier letters (total 6 characters) were added to '''Spacing Modifier Letters'''. (U+02DF and U+02EA-U+02EE)
* Additional combining diacritics for IPA (total 10 characters) were added to '''Combining Diacritical Marks'''. (U+0346-U+034E and U+0362)
* Lowercase versions of archaic letters and the Kai symbol (total 5 characters) were added to '''Greek and Coptic'''. (U+03D7, U+03DB, U+03DD, U+03DF and U+03E1)
* Nonstandard letters for Macedonian, combining numeral signs and three letters for Kildin Sami (total 12 characters) were added to '''Cyrillic'''. (U+0400, U+040D, U+0450, U+045D, U+0488-U+0489, U+048C-U+048F and U+04EC-U+04ED)
* A Hyphen (total 1 character) was added to '''Armenian'''. (U+058A)
* Combining hamza and maddah and nine additional Arabic characters (total 12 characters) were added to '''Arabic'''. (U+0653-U+0655, U+06B8-U+06B9, U+06BF, U+06CF and U+06FA-U+06FE)
* Additional letters and religious symbols (total 25 characters) were added to '''Tibetan'''. (U+0F6A, U+0F96, U+0FAE-U+0FB0, U+0FB8, U+0FBA-U+0FBC, U+0FBE-U+0FCC and U+0FCF)
* A narrow no-break space and 6 additional punctuation marks (total 7 characters) were added to '''General Punctuation'''. (U+202F and U+2048-U+204D)
* The Kip, Tugrik and Drachma sign (total 3 characters) were added to '''Currency Symbols'''. (U+20AD-U+20AF)
* An enclosing screen and an enclosing key (total 2 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E2-U+20E3)
* The information symbol and a rotated Q (total 2 characters) were added to '''Letterlike Symbols'''. (U+2139-U+213A)
* A mirrored Roman capital numeral hundred (Ↄ) (total 1 character) was added to '''Number Forms'''. (U+2183)
* Some additional arrows (total 9 characters) were added to '''Arrows'''. (U+21EB-U+21F3)
* Some additional technical symbols, including common keys on a 101 keyboard (total 33 characters) were added to '''Miscellaneous Technical'''. (U+2301, U+237B and U+237D-U+239A)
* Two additional control pictures (total 2 characters) were added to '''Control Pictures'''. (U+2425-U+2426)
* Squares and circles with quadrants (total 8 characters) were added to '''Geometric Shapes'''. (U+25F0-U+25F7)
* Two Syriac crosses and a signature mark (total 3 characters) were added to '''Miscellaneous Symbols'''. (U+2619 and U+2670-U+2671)
* Three Hangzhou numerals and a variation indicator (total 4 characters) were added to '''CJK Symbols and Punctuation'''. (U+3038-U+303A and U+303E)
* A ligature Yod with Hiriq (יִ) (total 1 character) was added to '''Alphabetic Presentation Forms'''. (U+FB1D)
* Three additional control characters for ruby markup (total 3 characters) were added to '''Specials'''. (U+FFF9-U+FFFB)
== Unicode 3.1 ==
Unicode 3.1 was released March 2001. It encoded 94,140 characters, adding 44,946 new characters, and mainly focused on blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Old Italic''' (U+10300-U+1032F), containing 35 letters for the Etruscan script, was added.
* '''Gothic''' (U+10330-U+1034F), containing 27 letters for the Gothic script, was added.
* '''Deseret''' (U+10400-U+1044F), containing 76 letters for the constructed Deseret script, was added.
* '''Byzantine Musical Symbols''' (U+1D000-U+1D0FF), containing 246 symbols for musical notation in Byzantine, was added.
* '''Musical Symbols''' (U+1D100-U+1D1FF), containing 219 characters for current musical notation, was added.
* '''Mathematical Alphanumeric Symbols''' (U+1D400-U+1D7FF), containing 991 Latin and Greek letters in serif, sans-serif, bold, italic, double-struck, script and Fraktur/Blackletter, was added.
* '''CJK Unified Ideographs Extension B''' (U+20000-U+2A6DF), containing 42,711 additional Chinese Ideographs, was added.
* '''CJK Compatibility Ideographs Supplement''' (U+2F800-U+2FA1F), containing 542 additional Chinese Ideographs for compatibility purposes, was added.
* '''Tags''', containing 97 language tags, was added. (U+E0000-U+E007F)
=== Extended noncharacters ===
* The Noncharacters range: U+FDD0..U+FDEF were added to '''Arabic Presentation Forms-A'''.
=== Extended blocks ===
* The capital Theta symbol and the Lunate Epsilon symbol (total 2 characters) were added to '''Greek and Coptic'''. (U+03F4-U+03F5)
=== Characters and Scripts Under Investigation or Rejected ===
* Khmer Sign Laak Was Rejected. (U+17DD) From '''Khmer.'''
* Georgian Letter U-Brjuu Was Rejected. From '''Georgian.'''
== Unicode 3.2 ==
Unicode 3.2 was released March 2002. It encoded 95,156 characters, adding 1,016 new characters.
=== New blocks ===
* '''Cyrillic Supplementary (now Cyrillic Supplement)''' (U+0500-U+052F), containing 16 characters used for the Komi language, was added.
* '''Tagalog''' (U+1700-U+171F), containing 20 characters for the Baybayin script, was added.
* '''Hanunoo''' (U+1720-U+173F), containing 23 characters and punctuation for the Hanunó'o script, was added.
* '''Buhid''' (U+1740-U+175F), containing 20 characters for the Buhid script, was added.
* '''Tagbanwa''' (U+1760-U+177F), containing 18 characters for the Tagbanwa script, was added.
* '''Miscellaneous Mathematical Symbols-A''' (U+27C0-U+27EF), containing 28 symbols used in math notation, was added.
* '''Supplemental Arrows-A''' (U+27F0-U+27FF), containing 16 additional arrows, was added.
* '''Supplemental Arrows-B''' (U+2900-U+297F), containing 128 special arrows, was added.
* '''Miscellaneous Mathematical Symbols-B''' (U+2980-U+29FF), containing 128 additional mathematical symbols, was added.
* '''Supplemental Mathematical Operators''' (U+2A00-U+2AFF), containing 256 additional mathematical operators, was added.
* '''Katakana Phonetic Extensions''' (U+31F0-U+31FF), containing 16 Katakana letters used for Ainu, was added.
* '''Variation Selectors''' (U+FE00-U+FE0F), containing 16 symbols used for indicating variations, was added.
=== Extended blocks ===
* A capital letter N with Long Right Leg (total 1 character) was added to '''Latin Extended-B'''. (U+0220)
* The combining grapheme joiner and combining Latin letters used in medieval texts (total 14 characters) were added to '''Combining Diacritical Marks'''. (U+034F and U+0363-U+036F)
* The Qoppa and a reversed lunate epsilon symbol (total 3 characters) were added to '''Greek and Coptic'''. (U+03D8-U+03D9 and U+03F6)
* Four additional letters used for the Kildin Sami language (total 8 characters) were added to '''Cyrillic'''. (U+048A-U+048B, U+04C5-U+04C6, U+04C9-U+04CA and U+04CD-U+04CE)
* A dotless Beh and a dotless Qaf (total 2 characters) were added to '''Arabic'''. (U+066E-U+066F)
* A Letter for Addu dialect (total 1 character) was added to '''Thaana'''. (U+07B1)
* The letters Yn and Elifi (total 2 characters) were added to '''Georgian'''. (U+10F7-U+10F8)
* Some additional punctuation marks and control characters (total 12 characters) were added to '''General Punctuation'''. (U+2047, U+204E-U+2052, U+2057 and U+205F-U+2063)
* A superscript letter I (total 1 character) was added to '''Superscripts and Subscripts'''. (U+2071)
* German Penny and Peso sign (total 2 characters) were added to '''Currency Symbols'''. (U+20B0-U+20B1)
* Some additional combining characters (total 7 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E4-U+20EA)
* Some double-struck and reversed/turned letters (total 15 characters) were added to '''Letterlike Symbols'''. (U+213D-U+214B)
* Some additional arrows (total 12 characters) were added to '''Arrows'''. (U+21F4-U+21FF)
* Some additional mathematical operators (total 14 characters) were added to '''Mathematical Operators'''. (U+22F2-U+22FF)
* Variable-width and additional symbols (total 53 characters) were added to '''Miscellaneous Technical'''. (U+237C and U+239B-U+23CE)
* Black and double circled numerals (total 20 characters) were added to '''Enclosed Alphanumerics'''. U+24EB-U+24FE)
* Quadrant elements (total 10 characters) were added to '''Block Elements'''. (U+2596-U+259F)
* Some additional triangles and squares (total 8 characters) were added to '''Geometric Shapes'''. (U+25F8-U+25FF)
* Shogi pieces ,recycling symbols, dices and dotted circles (total 24 characters) were added to '''Miscellaneous Symbols'''. (U+2616-U+2617, U+2672-U+267D and U+2680-U+2689)
* Additional parenthesis (total 14 characters) were added to '''Dingbats'''. (U+2768-U+2775)
* Three additional marks (total 3 characters) were added to '''CJK Symbols and Punctuation'''. (U+303B-U+303D)
* A digraph and two additional characters (total 3 characters) were added to '''Hiragana'''. (U+3095-U+3096 and U+309F)
* A digraph and a double hyphen (total 2 characters) were added to '''Katakana'''. (U+30A0 and U+30FF)
* Additional circled numerals (total 30 characters) were added to '''Enclosed CJK Letters and Months'''. (U+3251-U+325F and U+32B1-U+32BF
* Five missing radicals (total 5 characters) were added to '''Yi Radicals'''. (U+A4A2-U+A4A3, U+A4B4, U+A4C1, U+A4C5)
* Additional compatibility characters (total 59 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA30-U+FA6A)
* A Rial sign (total 1 character) was added to '''Arabic Presentation Forms-A'''. (U+FDFC)
* Two sesame dots (total 2 characters) were added to '''CJK Compatibility Forms'''. (U+FE45-U+FE46)
* A tail fragment (total 1 character) was added to '''Arabic Presentation Forms-B'''. (U+FE73)
* A pair of double parenthesis (total 2 characters) was added to '''Halfwidth and Fullwidth Forms'''. (U+FF5F-U+FF60)
== Unicode 4.0 ==
Unicode 4.0 was released April 2003. It encoded 96,382 characters, adding 1,226 new characters.
=== New blocks ===
* '''Limbu''', containing 66 characters for the Limbu abugida, was added.
* '''Tai Le''', containing 35 letters for the Tai Le script, was added.
* '''Khmer Symbols''', containing 32 symbols for the lunar calendar, was added.
* '''Phonetic Extensions''', containing 108 letters used in phonetic transcription, was added.
* '''Miscellaneous Symbols and Arrows''', containing 14 additional arrows, was added.
* '''Yijing Hexagram Symbols''', containing 64 hexagrams, was added.
* '''Linear B Syllabary''', containing 88 syllables of the ancient Linear B script, was added.
* '''Linear B Ideograms''', containing 123 ideograms of the ancient Linear B script, was added.
* '''Aegean Numbers''', containing 57 numerals used in the Aegean area, was added.
* '''Ugaritic''', containing 31 characters used in Ugaritic cuneiform, was added.
* '''Shavian''', containing 48 letters used for the artificial Shavian script, was added.
* '''Osmanya''', containing 40 characters used in the artificial Osmanya script, was added.
* '''Cypriot Syllabary''', containing 55 characters formerly used on Cyprus, was added.
* '''Tai Xuan Jing Symbols''', containing 87 symbols of Tai Xuan Jing, was added.
* '''Variation Selectors Supplement''', containing 240 additional variation selectors, was added.
=== Extended blocks ===
* Letters with curl used in Sinology (total 4 characters) were added to '''Latin Extended-B'''.
* Former IPA letters (total 2 characters) were added to '''IPA Extensions'''.
* Some additional characters (total 17 characters) were added to '''Spacing Modifier Letters'''.
* Additional combining double-width diacritics and diacritics corresponding to their spacing equivalent (total 11 characters) were added to '''Combining Diacritical Marks'''.
* The archaic letters Sho and San and the capital Lunate Sigma (total 5 characters) were added to '''Greek and Coptic'''.
* Some additional markers, biblical signs, and letters with inverted V (total 19 characters) were added to '''Arabic'''.
* Letters used for foreign words from Persian and Sogdian (total 6 characters) were added to '''Syriac'''.
* The short A (ऄ) (total 1 character) was added to '''Devanagari'''.
* The Avagraha sign (ঽ) (total 1 character) was added to '''Bengali'''.
* The Adak Bindi and Visarga signs (total 2 characters) were added to '''Gurmukhi'''.
* The vocalic l and ll and the Rupee sign (total 5 characters) were added to '''Gujarati'''.
* The letters Va and Wa (total 2 characters) were added to '''Oriya'''.
* Additional signs for date and finance environments (total 8 characters) were added to '''Tamil'''.
* The Nukta and Avagraha signs (total 2 characters) were added to '''Kannada'''.
* Some symbols and signs (total 11 characters) were added to '''Khmer'''.
* An inverted undertie and a swung dash (total 2 characters) were added to '''General Punctuation'''.
* The facsimile sign (℻) (total 1 character) was added to '''Letterlike Symbols'''.
* The eject symbol and a vertical line (total 2 characters) were added to '''Miscellaneous Technical'''.
* A black circled digit zero (⓿) (total 1 character) was added to '''Enclosed Alphanumerics'''.
* Monograms and diagrams, flags, warning and weather symbols and a cup of tea (total 12 characters) were added to '''Miscellaneous Symbols'''.
* Additional parenthesized and circled Korean characters and supplemental signs (total 9 characters) were added to '''Enclosed CJK Letters and Months'''.
* Additional measure units (total 7 characters) were added to '''CJK Compatibility'''.
* An additional Arabic sign (﷽) (total 1 character) was added to '''Arabic Presentation Forms-A'''.
* A pair of vertical parenthesis (total 2 characters) was added to '''CJK Compatibility Forms'''.
* The letters Oi and Ew (total 4 characters) were added to '''Deseret'''.
* A small script l (ℓ) (total 1 character) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 4.1 ==
Unicode 4.1 was released March 31, 2005. It encoded 97,655 characters, adding 1,273 new characters.
=== New blocks ===
* '''Arabic Supplement''', containing 30 characters for various languages written with the Arabic script, was added.
* '''Ethiopic Supplement''', containing 26 characters and signs for Sebatbeit, was added.
* '''New Tai Lue''', containing 80 characters for the New Tai Lue script, was added.
* '''Buginese''', containing 30 characters for the Lontara script, was added.
* '''Phonetic Extensions Supplement''', containing 64 additional letters for phonetic transcription, was added.
* '''Combining Diacritical Marks Supplement''', containing 4 additional diacritics, was added.
* '''Glagolitic''', containing 94 characters for the Glagolitic script, was added.
* '''Coptic''', containing 114 characters for the Coptic script, was added.
* '''Georgian Supplement''', containing 38 Nuskhuri letters, was added.
* '''Tifinagh''', containing 55 characters for the Tifinagh script, was added.
* '''Ethiopic Extended''', containing 79 additional Ethiopic syllables, was added.
* '''Supplemental Punctuation''', containing 26 additional punctuation marks, was added.
* '''CJK Strokes''', containing 16 strokes for Han Ideographs, was added.
* '''Modifier Tone Letters''', containing 23 letters for Chinese tones, was added.
* '''Syloti Nagri''', containing 44 characters for the Syloti Nagri abugida, was added.
* '''Vertical Forms''', containing 10 punctuation marks suited for vertical text, was added.
* '''Ancient Greek Numbers''', containing 75 numerals and signs used in Ancient Greek, was added.
* '''Old Persian''', containing 50 characters for Old Persian cuneiform, was added.
* '''Kharoshthi''', containing 65 characters for the Kharoshthi abugida, was added.
* '''Ancient Greek Musical Notation''', containing 70 musical signs used in Ancient Greek, was added.
=== Extended blocks ===
* Letters for Sencoten, digraphs, letters with swash tail and other additions (total 11 characters) were added to '''Latin Extended-B'''.
* Additional diacritics for transliteration (total 5 characters) were added to '''Combining Diacritical Marks'''.
* Rho with stroke, reversed and dotted Lunate Sigma (total 4 characters) were added to '''Greek and Coptic'''.
* Ghe with descender (Ӷ) (total 2 characters) was added to '''Cyrillic'''.
* An additional biblical mark and some punctuation marks (total 4 characters) were added to '''Hebrew'''.
* Additional biblical marks, punctuation marks and the Afghani sign (total 8 characters) were added to '''Arabic'''.
* A glottal stop (ॽ) (total 1 character) was added to '''Devanagari'''.
* The Khanda Ta letter (ৎ) (total 1 character) was added to '''Bengali'''.
* The letter Sha and the digit zero (total 2 characters) were added to '''Tamil'''.
* Two marks used in Bhutan (total 2 characters) were added to '''Tibetan'''.
* Two letters and a modifier letter (total 3 characters) were added to '''Georgian'''.
* Some additional syllables (total 11 characters) were added to '''Ethiopic'''.
* Additional phonetic symbols (total 20 characters) were added to '''Phonetic Extensions'''.
* A flower and dot punctuation marks (total 9 characters) were added to '''General Punctuation'''.
* Additional subscript letters (total 5 characters) were added to '''Superscripts and Subscripts'''.
* The Guarani, Austral, Hryvnia and Cedi signs (total 4 characters) were added to '''Currency Symbols'''.
* A combining long double solidus (total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* The per sign and a double-struck letter Pi (total 2 characters) were added to '''Letterlike Symbols'''.
* Metrical and electrical signs (total 11 characters) were added to '''Miscellaneous Technical'''.
* Additional gender and map symbols (total 30 characters) were added to '''Miscellaneous Symbols'''.
* Some additional mathematical symbols (total 7 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional arrows and squares (total 6 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* A circled Hangul character (㉾) (total 1 character) was added to '''Enclosed CJK Letters and Months'''.
* Additional Han Ideographs (total 22 characters) were added to '''CJK Unified Ideographs'''.
* Additional Compatibility Ideographs (total 106 characters) were added to '''CJK Compatibility Ideographs'''.
* Italic dotless small i and j (total 2 characters) were added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.0 ==
Unicode 5.0 was released July 14, 2006. It encoded 99,024 characters, adding 1,369 new characters.
=== New blocks ===
* '''N'Ko''', containing 59 characters for the N'Ko script, was added.
* '''Balinese''', containing 121 characters and musical signs for the Balinese abugida, was added.
* '''Latin Extended-C''', containing 17 letters for various languages, was added.
* '''Latin Extended-D''', containing 2 characters for UPA, was added.
* '''Phags-pa''', containing 56 characters for the Phags-pa script, was added.
* '''Phoenician''', containing 27 letters and numerals for the Phoenician script, was added.
* '''Cuneiform''', containing 879 signs for Sumero-Akkadian Cuneiform, was added.
* '''Cuneiform Numbers and Punctuation''', containing 103 numerals and punctuation signs for Sumero-Akkadian Cuneiform, was added.
* '''Counting Rod Numerals''', containing 18 numerals used with counting rods, was added.
=== Extended blocks ===
* Various letters used mainly for aboriginal languages (total 14 characters) were added to '''Latin Extended-B'''.
* Lowercase lunate sigma symbols (total 3 characters) were added to '''Greek and Coptic'''.
* Lowercase palochka and 3 letters used in Nivkh (total 7 characters) were added to '''Cyrillic'''.
* Two letters used in Khanty and other languages (total 4 characters) were added to '''Cyrillic Supplement'''.
* A specific point meant for Vav (total 1 character) was added to '''Hebrew'''.
* Four letters used in Sindhi (total 4 characters) were added to '''Devanagari'''.
* Four letters used in Sanskrit (total 4 characters) were added to '''Kannada'''.
* Additional IPA diacritics (total 9 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Four combining arrows (total 4 characters) were added to '''Combining Diacritical Marks for Symbols'''.
* A danish symbol and a lowercase turned F (total 2 characters) were added to '''Letterlike Symbols'''.
* A lowercase reversed C (ↄ) (total 1 character) was added to '''Number Forms'''.
* Vertical parenthesis, geometric forms and electrical symbols (total 12 characters) were added to '''Miscellaneous Technical'''.
* A neuter symbol (⚲) (total 1 character) was added to '''Miscellaneous Symbols'''.
* Four additional mathematical symbols (total 4 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional squares, pentagons and hexagons (total 11 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Four additional tone letters used in Chinantec (total 4 characters) were added to '''Modifier Tone Letters'''.
* Bold Digamma (𝟊/'''Ϝ''') (total 2 characters) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.1 ==
Unicode 5.1 was released April 4, 2008. It encoded 100,648 characters, adding 1,624 new characters.
=== New blocks ===
* '''Sundanese''', containing 55 letters for Sundanese script, was added.
* '''Lepcha''', containing 74 letters for Lepcha script, was added.
* '''Ol Chiki''', containing 48 letters for Ol Chiki script, was added.
* '''Cyrillic Extended-A''', containing 32 letters for combining Cyrillic letters, was added.
* '''Vai''', containing 300 letters for Vai script, was added.
* '''Cyrillic Extended-B''', containing 78 letters for additional Cyrillic characters, was added.
* '''Saurashtra''', containing 81 letters for Saurashtra script, was added.
* '''Kayah Li''', containing 48 letters for Kayah languages, was added.
* '''Rejang''', containing 37 letters for Rejang script, was added.
* '''Cham''', containing 83 letters for Cham script, was added.
* '''Ancient Symbols''', containing 12 characters for weights and measures and other Ancient symbols, was added.
* '''Phaistos Disc''', containing 46 hieroglyphs for Phaistos, was added.
* '''Lycian''', containing 29 letters for Lycian script, was added.
* '''Carian''', containing 49 letters for Carian script, was added.
* '''Lydian''', containing 27 letters for Lydian script, was added.
* '''Mahjong Tiles''', containing 44 mahjong tiles, was added.
* '''Domino Tiles''', containing 100 domino tiles, was added.
=== Extended blocks ===
* Archaic letters and capital kai symbol (total 7 characters) were added to '''Greek and Coptic'''.
* Combining Pokrytie (total 1 character) was added to '''Cyrillic'''.
* Mordvin, Kurdish, Aleut and Chuvash letters (total 16 characters) were added to '''Cyrillic Supplement'''.
* Radix symbols, Letterlike, punctuation, Koranic annotation signs and additions for early Persian and Azerbaijani (total 15 characters) were added to '''Arabic'''.
* Additional letters in Torwali, Burushaski and early Persian (total 18 characters) were added to '''Arabic Supplement'''.
* High spacing dot and candra a (total 2 characters) were added to '''Devanagari'''.
* Udaat and yakash signs (total 2 characters) were added to '''Gurmukhi'''.
* Vocalic rr, l and ll (total 3 characters) were added to '''Oriya'''.
* Om symbol (ௐ) (total 1 character) was added to '''Tamil'''.
* Avagraha, additional phonetic letters, vocalic l and ll, fractional signs and tuumu (total 13 characters) were added to '''Telugu'''.
* Avagraha, vocalic rr, l and ll, Malayalam numerics and fractions and chillu letters (total 17 characters) were added to '''Malayalam'''.
* Letters for Balti and various symbols (total 6 characters) were added to '''Tibetan'''.
* Characters for various languages (total 78 characters) were added to '''Myanmar'''.
* Manchu Ali Gali lha (ᢪ) (total 1 character) was added to '''Mongolian'''.
* Miscellaneous combining marks (total 28 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Medievalist latin letters and miscellaneous letters (total 10 characters) were added to '''Latin Extended Additional'''.
* Invisible plus (+) (total 1 character) was added to '''General Punctuation'''.
* Combining asterisk above ( ⃰)(total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* Symbol for Samaritan Source (⅏) (total 1 character) was added to '''Letterlike Symbols'''.
* Archaic Roman Numerals (total 4 characters) were added to '''Number Forms'''.
* Outlined white star and other signs (total 15 characters) were added to '''Miscellaneous Symbols'''.
* Long division and additional mathematical brackets (total 5 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Miscellaneous signs (total 51 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Additional latin letters (total 12 characters) were added to '''Latin Extended-C'''.
* Additional punctuation (total 23 characters) were added to '''Supplemental Punctuation'''.
* Letter ih (ㄭ) (total 1 character) was added to '''Bopomofo'''.
* Other strokes (total 20 characters) were added to '''CJK Strokes'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Africanist tone letters (total 5 characters) were added to '''Modifier Tone Letters'''.
* Miscellaneous letters and symbols (total 112 characters) were added to '''Latin Extended-D'''.
* Continuous macrons for Coptic (total 3 characters) were added to '''Combining Half Marks'''.
* Musical symbol multiple measure rest (𝄩) (total 1 character) was added to '''Musical Symbols'''.
== Unicode 5.2 ==
Unicode 5.2 was released in October 1, 2009. It encoded 107,296 characters, adding 6,648 new characters.
=== New blocks ===
* '''Samaritan''', containing 61 letters for Samaritan script, was added.
* '''Unified Canadian Aboriginal Syllabics Extended''', containing 70 syllables for various cree languages, was added.
* '''Tai Tham''', containing 127 letters for Tai Tham script, was added.
* '''Vedic Extensions''', containing 35 characters for tone marks and signs, was added.
* '''Lisu''', containing 48 letters for Lisu (Fraser) script, was added.
* '''Bamum''', containing 88 letters for Bamum script, was added.
* '''Common Indic Number Forms''', containing 10 fractions and marks, was added.
* '''Devanagari Extended''', containing 28 additional marks, was added.
* '''Hangul Jamo Extended-A''', containing 29 characters for additional old initial consonants in hangul jamo, was added.
* '''Javanese''', containing 91 letters for Javanese script, was added.
* '''Myanmar Extended-A''', containing 28 letters for Khamti Shan in Myanmar, was added.
* '''Tai Viet''', containing 72 letters for Tai Viet script, was added.
* '''Meetei Mayek''', containing 56 letters for Meetei Mayek script, was added.
* '''Hangul Jamo Extended-B''', containing 72 characters for additional old medieval vowels and final consonants in hangul jamo, was added.
* '''Imperial Aramaic''', containing 31 characters for Old Aramaic, was added.
* '''Old South Arabian''', containing 32 letters and numbers for South Arabian, was added.
* '''Avestan''', containing 61 characters for Avestan script, was added.
* '''Inscriptional Parthian''', containing 30 characters for Inscriptional Parthian script, was added.
* '''Inscriptional Pahlavi''', containing 27 characters for Inscriptional Pahlavi script, was added.
* '''Old Turkic''', containing 73 characters for Orkhon script, was added.
* '''Rumi Numeral Symbols''', containing 31 numeric characters used in Fez, Morocco, and elsewhere in North Africa and the Iberian peninsula, between the tenth and seventeenth centuries, was added.
* '''Kaithi''', containing 66 letters for Kaithi script, was added.
* '''Egyptian Hieroglyphs''', containing 1,071 hieroglyphs for Egyptian, was added.
* '''Enclosed Alphanumeric Supplement''', containing 63 additional circled, parenthesized and squared alphanumerics, was added.
* '''Enclosed Ideographic Supplement''', containing 44 squared and tortoised shell bracketed ideographs, was added.
* '''CJK Unified Ideographs Extension C''', containing 4,149 additional Chinese Ideographs, was added.
=== Extended blocks ===
* Abhaz letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Inverted Candrabinbu and additional signs and letters (total 5 characters) were added to '''Devanagari'''.
* Ganda Mark (৻) (total 1 character) was added to '''Bengali'''.
* Religious svasti signs (total 4 characters) were added to '''Tibetan'''.
* Extensions for Khamti Shan and Alton and Phake (total 4 characters) were added to '''Myanmar'''.
* Additional old initial consonants, medival vowels, and old final consonants (total 16 characters) were added to '''Hangul Jamo'''.
* Hyphen and additional syllables (total 10 characters) were added to '''Unified Canadian Aboriginal Syllabics'''.
* Letter Sua and Tham Digit One (total 3 characters) were added to '''New Tai Lue'''.
* Combing Almost Equal to Below ( ᷽) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* The Live Tournosis, Spesmillo and Tenge signs (total 3 characters) were added to '''Currency Symbols'''.
* Additional vulgar fractions from ARIB STD B24 (total 4 characters) were added to '''Number Forms'''.
* Decimal exponent symbol (⏨) from ARIB STD B24 (total 1 characters) was added to '''Miscellaneous Technical'''.
* A soccer ball and symbols from ARIB STD B24 (total 59 characters) were added to '''Miscellaneous Symbols'''.
* Heavy exclamation mark symbol (❗) from ARIB STD B24 (total 1 character) was added to '''Dingbats'''.
* Traffic sign, dictionary and map symbols from ARIB STD B24 (total 5 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Capital letter turned alpha and additions for shona (total 3 characters) were added to '''Latin Extended-C'''.
* Cryptogrammic letters and combining marks (total 7 characters) were added to '''Coptic'''.
* Word separator middle dot used in Avestan (⸱) (total 1 character) was added to '''Supplemental Punctuation'''.
* Circled ideographs and numbers on black squares from ARIB STD B24 (total 12 characters) were added to '''Enclosed CJK Letters and Months'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Miscellaneous additions for compatibility (total 3 characters) were added to '''CJK Compatibility Ideographs'''.
* Number two and three (total 2 characters) were added to '''Phoenician'''.
== Unicode 6.0 ==
Unicode 6.0 was released in October 11, 2010. It encoded 109,384 characters, adding 2,088 new characters.
=== New blocks ===
* '''Mandaic''', containing 29 letters for Mandaic script, was added.
* '''Batak''', containing 56 letters for Batak script, was added.
* '''Ethiopic Extended-A''', containing 32 letters for Gamo-Gofa-Dawro, Basketo and Gumuz Ethiophic syllables, was added.
* '''Brahmi''', containing 108 characters for ancient Brahmi abugida, was added.
* '''Bamum Supplement''', containing 761 letters for additional Bamum script, was added.
* '''Kana Supplement''', containing 2 characters for archaic katakana, was added.
* '''Playing Cards''', containing 59 playing cards, was added.
* '''Miscellaneous Symbols and Pictographs''', containing 529 additional symbols, was added.
* '''Emoticons''', containing 63 faces, cat faces and gesture symbols, was added.
* '''Transport and Map Symbols''', containing 70 transportation, traffic signs and other symbols, was added.
* '''Alchemical Symbols''', containing 116 symbols for elements, was added.
* '''CJK Unified Ideographs Extension D''', containing 222 miscellaneous Han ideographs, was added.
=== Extended blocks ===
* Azerbaijani letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Kashmiri Yeh and Wavy hamza below (total 2 characters) were added to '''Arabic'''.
* Dependent vowel signs and letters used in Kashmiri and Bihari (total 10 characters) were added to '''Devanagari'''.
* Fraction signs (total 6 characters) were added to '''Oriya'''.
* Letters used in scholarly only and letter dot reph (total 3 characters) were added to '''Malayalam'''.
* Leading and Trailing Mchan Rtags (total 6 characters) were added to '''Tibetan'''.
* Additional combining marks (total 2 characters) were added to '''Ethiopic'''.
* Combining Double Inverted Breve Below (᷼) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* Miscellaneous subscript letters (total 8 characters) were added to '''Superscripts and Subscripts'''.
* Indian Rupee Sign (₹) (total 1 character) was added to '''Currency Symbols'''.
* Pointing double triangle and additional mechanical symbols (total 11 characters) were added to '''Miscellaneous Technical'''.
* Ophiucisus, astronomical symbol for uranus and pentagrams (total 6 characters) were added to '''Miscellaneous Symbols'''.
* Additional heavy punctation marks, raised fist, raised hand, sparkles, heavy arithmetic symbols and curly loops (total 16 characters) were added to '''Dingbats'''.
* Squared logicals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Separator mark and consonant joiner (total 2 characters) were added to '''Tifinagh'''.
* Bopomofo for Hmu and Ge (total 3 characters) were added to '''Bopomofo Extended'''.
* Reversed Tse (total 2 characters) were added to '''Cyrillic Extended-B'''.
* Additional letters (total 15 characters) were added to '''Latin Extended-D'''.
* Pedagogical symbols (total 16 characters) were added to '''Arabic Presentation Forms-A'''.
* Additional squared, black circled and squared letters and regional indicator letters (total 107 characters) were added to '''Enclosed Alphanumeric Supplement'''.
* Squared katakana, squared ideographs and circled advantage and accept (total 13 characters) were added to '''Enclosed Ideographic Supplement'''.
== Unicode 6.1 ==
Unicode 6.1 was released in January 31, 2012. It encoded 110,116 characters, adding 732 new characters.
=== New blocks ===
* '''Arabic Extended-A''' (U+08A0-U+08FF), containing 39 characters, was added.
* '''Sundanese Supplement''' (U+1CC0-U+1CCF), containing 8 characters, was added.
* '''Meetei Mayek Extensions''' (U+AAE0-U+AAFF), containing 23 characters, was added.
* '''Meroitic Hieroglyphs''' (U+10980-U+1099F), containing 32 characters, was added.
* '''Meroitic Cursive''' (U+109A0-U+109FF), containing 26 characters, was added.
* '''Sora Sompeng''' (U+110D0-U+110FF), containing 35 characters, was added.
* '''Chakma''' (U+11100-U+1114F), containing 67 characters, was added.
* '''Sharada''' (U+11180-U+111DF), containing 83 characters, was added.
* '''Takri''' (U+11680-U+116CF), containing 66 characters, was added.
* '''Miao''' (U+16F00-U+16F9F), containing 133 characters, was added.
* '''Arabic Mathematical Alphabetic Symbols''' (U+1EE00-U+1EEFF), containing 143 characters, was added.
=== Extended blocks ===
* An Armenian Dram sign (total 1 character) was added to '''Armenian'''. (U+058F)
* A sign Samvat (total 1 character) was added to '''Arabic'''. (U+0604)
* An Abbreviation mark (total 1 character) was added to '''Gujarati'''. (U+0AF0)
* Letters for Khmu (total 2 characters) were added to '''Lao'''. (U+0EDE-U+0EDF)
* Capital letter Yn, letter Aen, Hard and Labial sign (total 5 characters) were added to '''Georgian'''. (U+10C7, U+10CD and U+10FD-U+10FF)
* Letters and signs for Old Sundanese (total 9 characters) were added to '''Sundanese'''. (U+1BAB-U+1BAD and U+1BBA-U+1BBF)
* Sign Rotated Ardhavisarga, Candra Above, Jihvamuliya and Uphadhmaniya (total 4 characters) were added to '''Vedic Extensions'''. (U+1CF3-U+1CF6)
* Mathematical diagonals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''. (U+27CB and U+27CD)
* A letter Bohairic Khei (total 2 characters) were added to '''Coptic'''. (U+2CF2-U+2CF3)
* Small letters Yn and Aen (total 2 characters) were added to '''Georgian Supplement'''. (U+2D27 and U+2D2D)
* Letters Ye and Yo (total 2 characters) were added to '''Tifinagh'''. (U+2D66-U+2D67)
* (total 10 characters) were added to '''Supplemental Punctuation'''. (U+2E32-U+2E3B)
* An additional ideograph for Kanji (total 1 character) was added to '''CJK Unified Ideographs'''. (U+9FCC)
* Combining letter for Slavonic (total 9 characters) were added to '''Cyrillic Extended-B'''. (U+A674-U+A67B and U+A69F)
* Letter C with Bar, capital letter H with Hook and modifier letters for extended IPA (total 5 characters) were added to '''Latin Extended-D'''. (U+A792-U+A793, U+A7AA and U+A7F8-U+A7F9)
* Some additional ideographs for Korea (total 2 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA2E-U+FA2F)
* Symbols for Canadian legal use (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F16A-U+1F16B)
* Typikon symbols (total 4 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F540-U+1F543)
* (total 13 characters) were added to '''Emoticons'''. (U+1F600, U+1F611, U+1F615, U+1F617, U+1F619, U+1F61B, U+1F61F, U+1F626-U+1F627, U+1F62C, U+1F62E-U+1F62F and U+1F634)
== Unicode 6.2 ==
Unicode 6.2 was released in September 26, 2012. It encoded 110,117 characters, adding only 1 new character.
=== Extended blocks ===
* A Turkish Lira sign (total 1 character) was added to '''Currency Symbols'''. (U+20BA)
== Unicode 6.3 ==
Unicode 6.3 was released in September 30, 2013. It encoded 110,122 characters, adding only 5 new characters.
=== Extended blocks ===
* A Letter mark (total 1 character) was added to '''Arabic'''. (U+061C)
* Isolate directional format characters (total 4 characters) were added to '''General Punctuation'''. (U+2066-U+2069)
== Unicode 7.0 ==
Unicode 7.0 was released in June 16, 2014. It encoded 112,956 characters, adding 2,834 new characters.
=== New blocks ===
* '''Combining Diacritical Marks Extended''' (U+1AB0-U+1AFF), containing 15 marks, was added.
* '''Myanmar Extended-B''' (U+A9E0-U+A9FF), containing 31 letters, was added.
* '''Latin Extended-E''' (U+AB30-U+AB6F), containing 50 letters, was added.
* '''Coptic Epact Numbers''' (U+102E0-U+102FF), containing 28 numbers, was added.
* '''Old Permic''' (U+10350-U+1037F), containing 43 letters, was added.
* '''Elbasan''' (U+10500-U+1052F), containing 50 letters, was added.
* '''Caucasian Albanian''' (U+10530-U+1056F), containing 53 letters and marks, was added.
* '''Linear A''' (U+10600-U+1077F), containing 341 signs, was added.
* '''Palmyrene''' (U+10860-U+1087F), containing 32 letters, was added.
* '''Nabataean''' (U+10880-U+108AF), containing 40 letters and numbers, was added.
* '''Old North Arabian''' (U+10A80-U+10A9F), containing 32 letters and numbers, was added.
* '''Manichaean''' (U+10AC0-U+10AFF), containing 51 characters, was added.
* '''Psalter Pahlavi''' (U+10B80-U+10BAF), containing 29 characters, was added.
* '''Mahajani''' (U+11150-U+1117F), containing 39 letters and signs, was added.
* '''Sinhala Archaic Numbers''' (U+111E0-U+111FF), containing 20 numbers, was added.
* '''Khojki''' (U+11200-U+1124F), containing 61 characters, was added.
* '''Khudawadi''' (U+112B0-U+112FF), containing 69 characters, was added.
* '''Grantha''' (U+11300-U+1137F), containing 83 characters, was added.
* '''Tirhuta''' (U+11480-U+114DF), containing 82 characters, was added.
* '''Siddham''' (U+11580-U+115FF), containing 72 characters, was added.
* '''Modi''' (U+11600-U+1165F), containing 79 characters, was added.
* '''Warang Citi''' (U+118A0-U+118FF), containing 84 letters and numbers, was added.
* '''Pau Cin Hau''' (U+11AC0-U+11AFF), containing 57 characters, was added.
* '''Mro''' (U+16A40-U+16A6F), containing 43 characters, was added.
* '''Bassa Vah''' (U+16AD0-U+16AFF), containing 36 characters, was added.
* '''Pahawh Hmong''' (U+16B00-U+16B8F), containing 127 letters and signs, was added.
* '''Duployan''' (U+1BC00-U+1BC9F), containing 143 characters, was added.
* '''Shorthand Format Controls''' (U+1BCA0-U+1BCAF), containing 4 format characters, was added.
* '''Mende Kikakui''' (U+1E800-U+1E8DF), containing 213 syllables and numbers, was added.
* '''Ornamental Dingbats''' (U+1F650-U+1F67F), containing 48 pictographic characters, was added.
* '''Geometric Shapes Extended''' (U+1F780-U+1F7FF), containing 85 pictographic characters, was added.
* '''Supplemental Arrows-C''' (U+1F800-U+1F8FF), containing 148 pictographic characters, was added.
=== Extended blocks ===
* A capital letter Yot (total 1 character) was added to '''Greek and Coptic'''. (U+037F)
* Letters for Orok, Komi and Khanty (total 8 characters) were added to '''Cyrillic Supplement'''. (U+0528-U+052F)
* An Eternity sign (total 2 characters) were added to '''Armenian'''. (U+058D-U+058E)
* A Number Mark Above (total 1 character) was added to '''Arabic'''. (U+0605)
* Letters for African, Philippine, Turkic, Berber, Belarusian, Palula and Shina languages (total 8 characters) were added to '''Arabic Extended-A'''. (U+08A1, U+08AD-U+08B2 and U+08FF)
* A letter for Marwari (total 1 character) was added to '''Devanagari'''. (U+0978)
* A sign Anji (total 1 character) was added to '''Bengali'''. (U+0980)
* Sign Candrabindu and letter Llla (total 2 characters) were added to '''Telugu'''. (U+0C00 and U+0C34)
* A Sign Candrabindu (total 1 character) was added to '''Kannada'''. (U+0C81)
* A Sign Candrabindu (total 1 character) was added to '''Malayalam'''. (U+0D01)
* Lith Numerals (total 10 characters) were added to '''Sinhala'''. (U+0DE6-U+0DEF)
* Additional Old English runes (total 8 characters) were added to '''Runic'''. (U+16F1-U+16F8)
* Letters Gyan and Tra (total 2 characters) were added to '''Limbu'''. (U+191D-U+191E)
* Signs for Jaiminiya Sama Veda (total 2 characters) were added to '''Vedic Extensions'''. (U+1CF8-U+1CF9)
* Marks for Germanic and American lexicology (total 15 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DE7-U+1DF5)
* Nordic Mark, Manat and Ruble sign (total 3 characters) were added to '''Currency Symbols'''. (U+20BB-U+20BD)
* Playback symbols from Webdings font (total 7 characters) were added to '''Miscellaneous Technical'''. (U+23F4-U+23FA)
* A Scissors symbol from Wingdings 2 font (total 1 character) was added to '''Dingbats'''. (U+2700)
* Arrows for Lithuanian dialectology and symbols from Wingdings 3 font (total 115 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2B4D-U+2B4F, U+2B5A-U+2B5F, U+2B60-U+2B73, U+2B76-U+2B95, U+2B98-U+2BB9, U+2BBD-U+2BC8 and U+2BCA-U+2BD1)
* (total 7 characters) were added to '''Supplemental Punctuation'''. (U+2E3C-U+2E42)
* Early Cyrillic letters and letters for Lithuanian dialectology (total 6 characters) were added to '''Cyrillic Extended-B'''. (U+A698-U+A69D)
* Letters for European, American and African orthography (total 18 characters) were added to '''Latin Extended-D'''. (U+A794-U+A79F, U+A7AB-U+A7AD, U+A7B0-U+A7B1 and U+A7F7)
* Tone marks for Tai Laing and letters for Shwe Palaung (total 4 characters) were added to '''Myanmar Extended-A'''. (U+AA7C-U+AA7F)
* Combining phonetic marks (total 7 characters) were added to '''Combining Half Marks'''. (U+FE27-U+FE2D)
* Additional mathematical symbols (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018B-U+1018C)
* A Greek Tau Rho symbol (total 1 character) was added to '''Ancient Symbols'''. (U+101A0)
* A letter Ess (total 1 character) was added to '''Old Italic'''. (U+1031F)
* A Number Joiner (total 1 character) was added to '''Brahmi'''. (U+1107F)
* Sutra mark and sign Ekam (total 2 characters) were added to '''Sharada'''. (U+111CD and U+111DA)
* Additional cuneiform signs (total 42 characters) were added to '''Cuneiform'''. (U+1236F-U+12398)
* Additional numbers, vulgar fractions and a punctuation mark (total 13 characters) were added to '''Cuneiform Numbers and Punctuation'''. (U+12463-U+1246E and U+12474)
* Red Joker, Fool and trumps (total 23 characters) were added to '''Playing Cards'''. (U+1F0BF and U+1F0E0-U+1F0F5)
* Dingbat normal and negative sans-serif digit zero (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10B-U+1F10C)
* Symbols from Webdings, Wingdings 1 and 2 font (total 209 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F321-U+1F32C, U+1F336, U+1F37D, U+1F394-U+1F39F, U+1F3C5, U+1F3CB-U+1F3CE, U+1F3D4-U+1F3DF, U+1F3F1-U+1F3F7, U+1F43F, U+1F441, U+1F4F8, U+1F4FD-U+1F4FE, U+1F53E-U+1F53F, U+1F544-U+1F54A, U+1F568-U+1F579, U+1F57B-U+1F5A3 and U+1F5A5-U+1F5FA)
* Slightly frowning and smiling faces emoji (total 2 characters) were added to '''Emoticons'''. (U+1F641-U+1F642)
* Symbols from Webdings and Wingdings 2 font (total 27 characters) were added to '''Transport and Map Symbols'''. (U+1F6C6-U+1F6CF, U+1F6E0-U+1F6EC and U+1F6F0-U+1F6F3)
== Unicode 8.0 ==
Unicode 8.0 was released in June 17, 2015. It encoded 120,672 characters, adding 7,716 new characters.
=== New blocks ===
* '''Cherokee Supplement''' (U+AB70-U+ABBF), containing 80 lowercase letters, was added.
* '''Hatran''' (U+108E0-U+108FF), containing 26 letters, was added.
* '''Old Hungarian''' (U+10C80-U+10CFF), containing 108 letters, was added.
* '''Multani''' (U+11280-U+112AF), containing 38 letters, was added.
* '''Ahom''' (U+11700-U+1173F), containing 57 letters, was added.
* '''Early Dynastic Cuneiform''' (U+12480-U+1254F), containing 196 characters, was added.
* '''Anatolian Hieroglyphs''' (U+14400-U+1467F), containing 583 characters, was added.
* '''Sutton SignWriting''' (U+1D800-U+1DAAF), containing 672 signs, was added.
* '''Supplemental Symbols and Pictographs''' (U+1F900-U+1F9FF), containing 15 pictographic characters, was added.
* '''CJK Unified Ideographs Extension E''' (U+2B820-U+2CEAF), containing 5762 characters, was added.
=== Extended blocks ===
* Letters for Arwi (total 3 characters) were added to '''Arabic Extended-A'''. (U+08B3-U+08B4 and U+08E3)
* A letter for Avestan transliteration (total 1 character) was added to '''Gujarati'''. (U+0AF9)
* A letter for Andhra Pradesh (total 1 character) was added to '''Telugu'''. (U+0C5A)
* An archaic letter II (total 1 character) was added to '''Malayalam'''. (U+0D5F)
* A letter Mv and small letters (total 7 characters) were added to '''Cherokee'''. (U+13F5 and U+13F8-U+13FD)
* A Georgian Lari sign (total 1 character) was added to '''Currency Symbols'''. (U+20BE)
* Turned digits (total 2 characters) were added to '''Number Forms'''. (U+218A-U+218B)
* Two headed arrows with triangle arrowheads (total 4 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BEC-U+2BEF)
* Some additional ideographs (total 9 characters) were added to '''CJK Unified Ideographs'''. (U+9FCD-U+9FD5)
* A combining letter Ef (total 1 character) was added to '''Cyrillic Extended-B'''. (U+A69E)
* Sinological dot, phonetic extension for African languages, letters for American and Gabonese orthography (total 7 characters) were added to '''Latin Extended-D'''. (U+A78F and U+A7B2-U+A7B7)
* Sign Siddham and letter Jain Om (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FC-U+A8FD)
* Letters for Yakut transliteration (total 4 characters) were added to '''Latin Extended-E'''. (U+AB60-U+AB63)
* A combining mark for Church Slavonic (total 2 characters) were added to '''Combining Half Marks'''. (U+FE2E-U+FE2F)
* Numerals and vulgar fractions (total 64 characters) were added to '''Meroitic Cursive'''. (U+109BC-U+109BD, U+109C0-U+109CF and U+109D2-U+109FF)
* Sandhi mark, diacritical marks for Kashmiri, sign Siddham and punctuation marks (total 9 characters) were added to '''Sharada'''. (U+111C9-U+111CC and U+111DB-U+111DF)
* Combining Anusvara Above and letter Om (total 2 characters) were added to '''Grantha'''. (U+11300 and U+11350)
* Section marks and alternate letters (total 20 characters) were added to '''Siddham'''. (U+115CA-U+115DD)
* An additional sign (total 1 character) was added to '''Cuneiform'''. (U+12399)
* East-Slavic musical symbols (total 11 characters) were added to '''Musical Symbols'''. (U+1D1DE-U+1D1E8)
* (total 24 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F32D-U+1F32F, U+1F37E-U+1F37F, U+1F3CF-U+1F3D3, U+1F3F8-U+1F3FF, U+1F4FF and U+1F54B-U+1F54F)
* Upside Down Face and Face With Rolling Eyes emoji (total 2 characters) were added to '''Emoticons'''. (U+1F643-U+1F644)
* A Place of Worship emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D0)
== Unicode 9.0 ==
Unicode 9.0, was released in June 21, 2016. It encoded 128,172 characters, adding 7,500 new characters.
=== New blocks ===
* '''Cyrillic Extended-C''' (U+1C80-U+1C8F), containing 9 letters, was added.
* '''Osage''' (U+104B0-U+104FF), containing 72 letters, was added.
* '''Newa''' (U+11400-U+1147F), containing 92 letters, was added.
* '''Mongolian Supplement''' (U+11660-U+1167F), containing 13 letters, was added.
* '''Bhaiksuki''' (U+11C00-U+11C6F), containing 97 letters, was added.
* '''Marchen''' (U+11C70-U+11CBF), containing 68 letters, was added.
* '''Ideographic Symbols and Punctuation''' (U+16FE0-U+16FFF), containing 1 letter, was added.
* '''Tangut''' (U+17000-U+187FF), containing 6125 letters, was added.
* '''Tangut Components''' (U+18800-U+18AFF), containing 755 letters, was added.
* '''Glagolitic Supplement''' (U+1E000-U+1E02F), containing 38 letters, was added.
* '''Adlam''' (U+1E900-U+1E95F), containing 87 letters, was added.
=== Extended blocks ===
* Letters for Bravanese, Warsh and Quranic marks used in Pakistan (total 23 characters) were added to '''Arabic Extended-A'''. (U+08B6-U+08BD and U+08D4-U+08E2)
* A sign Spacing Candrabindu (total 1 character) were added to '''Kannada'''. (U+0C80)
* Sign Para, Chillu letters and vulgar fractions (total 14 characters) were added to '''Malayalam'''. (U+0D4F, U+0D54-U+0D56, U+0D58-U+0D5E and U+0D76-U+0D78)
* A diacritical mark for Newa (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFB)
* Power symbols (total 4 characters) were added to '''Miscellaneous Technical'''. (U+23FB-U+23FE)
* Punctuation marks for Church Slavonic (total 2 characters) were added to '''Supplemental Punctuation'''. (U+2E43-U+2E44)
* A letter for Unifon (total 1 character) was added to '''Latin Extended-D'''. (U+A7AE)
* A sign Candrabindu (total 1 character) was added to '''Saurashtra'''. (U+A8C5)
* Indiction sign and a currency symbol (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018D-U+1018E)
* A sign Sukun (total 1 character) was added to '''Khojki'''. (U+1123E)
* Japanese TV symbols (total 18 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F19B-U+1F1AC)
* A Japanese TV symbol (total 1 character) was added to '''Enclosed Ideographic Supplement'''. (U+1F23B)
* A dancing man and Black Heart emoji (total 2 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F57A and U+1F5A4)
* Octagonal Sign, Shopping Trolley, scooters and a Canoe emoji (total 5 characters) were added to '''Transport and Map Symbols'''. (U+1F6D1-U+1F6D2 and U+1F6F4-U+1F6F6)
* (total 67 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F919-U+1F91E, U+1F920-U+1F927, U+1F930, U+1F933-U+1F93E, U+1F940-U+1F94B, U+1F950-U+1F95E and U+1F985-U+1F991)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|0030 FE00
|
|short diagonal stroke form # DIGIT ZERO
|-
|1000 FE00
|
|dotted form # MYANMAR LETTER KA
|-
|1002 FE00
|
|dotted form # MYANMAR LETTER GA
|-
|1004 FE00
|
|dotted form # MYANMAR LETTER NGA
|-
|1010 FE00
|
|dotted form # MYANMAR LETTER TA
|-
|1011 FE00
|
|dotted form # MYANMAR LETTER THA
|-
|1015 FE00
|
|dotted form # MYANMAR LETTER PA
|-
|1019 FE00
|
|dotted form # MYANMAR LETTER MA
|-
|101A FE00
|
|dotted form # MYANMAR LETTER YA
|-
|101C FE00
|
|dotted form # MYANMAR LETTER LA
|-
|101D FE00
|
|dotted form # MYANMAR LETTER WA
|-
|1022 FE00
|
|dotted form # MYANMAR LETTER SHAN A
|-
|1031 FE00
|
|dotted form # MYANMAR VOWEL SIGN E
|-
|1075 FE00
|
|dotted form # MYANMAR LETTER SHAN KA
|-
|1078 FE00
|
|dotted form # MYANMAR LETTER SHAN CA
|-
|107A FE00
|
|dotted form # MYANMAR LETTER SHAN NYA
|-
|1080 FE00
|
|dotted form # MYANMAR LETTER SHAN THA
|-
|2205 FE00
|
|zero with long diagonal stroke overlay form # EMPTY SET
|-
|AA60 FE00
|
|dotted form # MYANMAR LETTER KHAMTI GA
|-
|AA61 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CA
|-
|AA62 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CHA
|-
|AA63 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JA
|-
|AA64 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JHA
|-
|AA65 FE00
|
|dotted form # MYANMAR LETTER KHAMTI NYA
|-
|AA66 FE00
|
|dotted form # MYANMAR LETTER KHAMTI TTA
|-
|AA6B FE00
|
|dotted form # MYANMAR LETTER KHAMTI NA
|-
|AA6C FE00
|
|dotted form # MYANMAR LETTER KHAMTI SA
|-
|AA6F FE00
|
|dotted form # MYANMAR LETTER KHAMTI FA
|-
|AA7A FE00
|
|dotted form # MYANMAR LETTER AITON RA
|-
|…
|
|278 additional emoji variation sequences
|}
== Unicode 10.0 ==
Unicode 10.0, was released in June 20, 2017. It encoded 136,690 characters, adding 8,518 new characters.
=== New blocks ===
* '''Syriac Supplement''' (U+0860-U+086F), containing 11 characters, was added.
* '''Zanabazar Square''' (U+11A00-U+11A4F), containing 72 characters, was added.
* '''Soyombo''' (U+11A50-U+11AAF), containing 80 characters, was added.
* '''Masaram Gondi''' (U+11D00-U+11D5F), containing 75 characters, was added.
* '''Kana Extended-A''' (U+1B100-U+1B12F), containing 31 characters, was added.
* '''Nushu''' (U+1B170-U+1B2FF), containing 396 characters, was added.
* '''CJK Unified Ideographs Extension F''' (U+2CEB0-U+2EBEF), containing 7,473 characters, was added.
=== Extended blocks ===
* A Vedic Anusvara and Abbreviation mark (total 2 characters) were added to '''Bengali'''. (U+09FC-U+09FD)
* Letters for Arabic transliteration (total 6 characters) were added to '''Gujarati'''. (U+0AFA-U+0AFF)
* A combining Anusvara Above and Viramas (total 3 characters) were added to '''Malayalam'''. (U+0D00 and U+0D3B-U+0D3C)
* A sign Atikrama (total 1 character) was added to '''Vedic Extensions'''. (U+1CF7)
* Combining diacritical marks for Church Slavonic (total 4 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DF6-U+1DF9)
* A Bitcoin sign (total 1 character) was added to '''Currency Symbols'''. (U+20BF)
* An Observe Eye symbol (total 1 character) was added to '''Miscellaneous Technical'''. (U+23FF)
* A Group mark (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2BD2)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E45-U+2E49)
* A letter O with Dot Above (total 1 character) was added to '''Bopomofo'''. (U+312E)
* Ideographs for Slavonic transliteration (total 21 characters) were added to '''CJK Unified Ideographs'''. (U+9FD6-U+9FEA)
* Letters for North Italic (total 3 characters) were added to '''Old Italic'''. (U+1032D-U+1032F)
* An Iteration mark for Nushu (total 1 character) was added to '''Ideographic Symbols and Punctuation'''. (U+16FE1)
* Letters for Hentaigana (total 254 characters) were added to '''Kana Supplement'''. (U+1B002-U+1B0FF)
* Symbols for Chinese Folk religion (total 6 characters) were added to '''Enclosed Ideographic Supplement'''. (U+1F260-U+1F265)
* Stupa, Pagoda, Sled and Flying Saucer emoji (total 4 characters) were added to '''Transport and Map Symbols'''. (U+1F6D3-U+1F6D4 and U+1F6F7-U+1F6F8)
* (total 66 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F900-U+1F90B, U+1F91F, U+1F928-U+1F92F, U+1F931-U+1F932, U+1F94C, U+1F95F-U+1F96B, U+1F992-U+1F997 and U+1F9D0-U+1F9E6)
== Unicode 11.0 ==
Unicode 11.0, was released in June 5, 2018. It encoded 137,374 characters, adding 684 new characters.
=== New blocks ===
* '''Georgian Extended''' (U+1C90-U+1CBF), containing 46 characters, was added.
* '''Hanifi Rohingya''' (U+10D00-U+10D3F), containing 50 characters, was added.
* '''Old Sogdian''' (U+10F00-U+10F2F), containing 40 characters, was added.
* '''Sogdian''' (U+10F30-U+10F6F), containing 42 characters, was added.
* '''Dogra''' (U+11800-U+1184F), containing 60 characters, was added.
* '''Gunjala Gondi''' (U+11D60-U+11DAF), containing 63 characters, was added.
* '''Makasar''' (U+11EE0-U+11EFF), containing 25 characters, was added.
* '''Medefaidrin''' (U+16E40-U+16E9F), containing 91 characters, was added.
* '''Mayan Numerals''' (U+1D2E0-U+1D2FF), containing 20 characters, was added.
* '''Indic Siyaq Numbers''' (U+1EC70-U+1ECBF), containing 68 characters, was added.
* '''Chess Symbols''' (U+1FA00-U+1FA6F), containing 14 characters, was added.
=== Extended blocks ===
* Small letters Turned Ayb and Yi with Stroke (total 2 characters) were added to '''Armenian'''. (U+0560 and U+0588)
* A triangle Yod (total 1 character) were added to '''Hebrew'''. (U+05EF)
* A Dantayalan and currency symbols (total 3 characters) were added to '''N'Ko'''. (U+07FD-U+07FF)
* A Small Low Waw (total 1 character) was added to '''Arabic Extended-A'''. (U+08D3)
* A Sandhi mark (total 1 character) was added to '''Bengali'''. (U+09FE)
* An Abbreviation mark (total 1 character) was added to '''Gurmukhi'''. (U+0A76)
* A combining Anusvara Above (total 1 character) was added to '''Telugu'''. (U+0C04)
* A sign Siddham (total 1 character) was added to '''Kannada'''. (U+0C84)
* A letter for Buryat (total 1 character) was added to '''Mongolian'''. (U+1878)
* Symbols for chess notation, astrological and half star symbols (total 43 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BBA-U+2BBC, U+2BD3-U+2BEB and 2BF0-U+2BFE)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E4A-U+2E4E)
* A letter NN (total 1 character) was added to '''Bopomofo'''. (U+312F)
* Some ideographs for Kanji (total 5 characters) were added to '''CJK Unified Ideographs'''. (U+9FEB-U+9FEF)
* A small capital Q and a letter for Mazahua (total 3 characters) were added to '''Latin Extended-D'''. (U+A7AF and U+A7B8-U+A7B9)
* Letter and vowel sign Ay (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FE-U+A8FF)
* Letters Ttta, Vha and a vulgar fraction (total 3 characters) were added to '''Kharoshthi'''. (U+10A34-U+10A35 and U+10A48)
* A Number Sign Above (total 1 character) was added to '''Kaithi'''. (U+110CD)
* Letter Lhaa, vowel sign Aa and Ei (total 3 characters) were added to '''Chakma'''. (U+11144-U+11146)
* A combining Bindu Below (total 1 character) was added to '''Grantha'''. (U+1133B)
* A Sandhi mark (total 1 character) was added to '''Newa'''. (U+1145E)
* An alternate letter Ba (total 1 character) was added to '''Ahom'''. (U+1171A)
* A mark Pluta (total 1 character) was added to '''Soyombo'''. (U+11A9D)
* Additional ideographs (total 5 characters) were added to '''Tangut'''. (U+187ED-U+187F1)
* Tally marks (total 7 characters) were added to '''Counting Rod Numerals'''. (U+1D372-U+1D378)
* A Copyleft symbol (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F12F)
* A Skateboard emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6F9)
* Normal and negative circled shapes (total 4 characters) were added to '''Geometric Shapes Extended'''. (U+1F7D5-U+1F7D8)
* (total 65 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F94D-U+1F94F, U+1F96C-U+1F970, U+1F973-U+1F976, U+1F97A, U+1F97C-U+1F97F, U+1F998-U+1F99F, U+1F9A0-U+1F9A2, U+1F9B0-U+1F9B9, U+1F9C1-U+1F9C2 and U+1F9E7-U+1F9FF)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|FF10 FE00
|
|short diagonal stroke form # FULLWIDTH DIGIT ZERO
|}
== Unicode 12.0 ==
Unicode 12.0 was released on March 5, 2019. It encoded 137,928 characters, adding 554 new characters.
=== New blocks ===
* '''Elymaic''' (U+10FE0-U+10FFF), containing 23 characters, was added.
* '''Nandinagari''' (U+119A0-U+119FF), containing 65 characters, was added.
* '''Tamil Supplement''' (U+11FC0-U+11FFF), containing 51 characters, was added.
* '''Egyptian Hieroglyph Format Controls''' (U+13430-U+1343F), containing 9 characters, was added.
* '''Small Kana Extension''' (U+1B130-U+1B16F), containing 7 characters, was added.
* '''Nyiakeng Puachue Hmong''' (U+1E100-U+1E14F), containing 71 characters, was added.
* '''Wancho''' (U+1E2C0-U+1E2FF), containing 59 characters, was added.
* '''Ottoman Siyaq Numbers''' (U+1ED00-U+1ED4F), containing 61 characters, was added.
* '''Symbols and Pictographs Extended-A''' (U+1FA70-U+1FAFF), containing 16 characters, was added.
=== Extended blocks ===
* A sign Siddham (total 1 character) was added to '''Telugu'''. (U+0C77)
* Letters for Pail and Sanskrit (total 15 characters) were added to '''Lao'''. (U+0E86, U+0E89, U+0E8C, U+0E8E-U+0E93, U+0E98, U+0EA0, U+0EA8-U+0EA9, U+0EAC and U+0EBA)
* A sign Double Anusvara Antargomukha (total 1 character) was added to '''Vedic Extensions'''. (U+1CFA)
* An astrological symbol and Hellschreiber Pause symbol (total 2 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BC9 and U+2BFF)
* A Cornish Verse Divider (total 1 character) was added to '''Supplemental Punctuation'''. (U+2E4F)
* Egyptological letters, Anglicana W and letters for early Pinyin (total 11 characters) were added to '''Latin Extended-D'''. (U+A7BA-U+A7BF and U+A7C2-U+A7C6)
*Sinological phonetic letters (total 2 characters) were added to '''Latin Extended-E'''. (U+AB66-U+AB67)
* A Vedic Anusvara (total 1 character) was added to '''Newa'''. (U+1145F)
* An archaic letter Kha (total 1 character) was added to '''Takri'''. (U+116B8)
* Sign Jihvamuliya and Uphadhmaniya (total 2 characters) were added to '''Soyombo'''. (U+11A84-U+11A85)
* Letters for various Yi and Miao languages (total 16 characters) were added to '''Miao'''. (U+16F45-U+16F4A, U+16F4F and U+16F7F-U+16F87)
* Marks for Ancient Chinese texts (total 2 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE2-U+16FE3)
* Some additional ideographs (total 6 characters) were added to '''Tangut'''. (U+187F2-U+187F7)
* A Nasalization mark (total 1 character) was added to '''Adlam'''. (U+1E94B)
* A Spanish and Portuguese register mark (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F16C)
* Hindu Temple and Auto Rickshaw emoji (total 2 characters) were added to '''Transport and Map Symbols'''. (U+1F6D5 and U+1F6FA)
* Large colored circles and boxes (total 12 characters) were added to '''Geometric Shapes Extended'''. (U+1F7E0-U+1F7EB)
* (total 31 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90D-U+1F90F, U+1F93F, U+1F971, U+1F97B, U+1F9A5-U+1F9AA, U+1F9AE-U+1F9AF, U+1F9BA-U+1F9BF, U+1F9C3-U+1F9CA and U+1F9CD-U+1F9CF)
* Heterodox chess symbols (total 84 characters) were added to '''Chess Symbols'''. (U+1FA00-U+1FA53)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Spacing Modifier Letters
|02EA, 02EB
|2
|-
|Vedic Extensions
|1CF2..1CF3
|2
|-
|Currency Symbols
|20A9
|1
|-
|CJK Symbols and Punctuation
|3001, 3002
|2
|-
|Bopomofo
|3105..312F
|43
|-
|Bopomofo Extended
|31A0..31BA
|27
|-
|CJK Unified Ideographs Extension A
|37C3, 3B9D, 3CFD, 3FE0, 44EC, 4A76
|6
|-
|CJK Unified Ideographs
|5344, 55B9, 6ABC, 6FF9, 809E, 80BC, 80E9, 8132, 8159, 841C, 891D, 8C6C, 915E, 9FD4
|14
|-
|Phags-pa
|A840..A877
|56
|-
|Halfwidth and Fullwidth Forms
|FF01, FF0C, FF0E, FF1A, FF1B, FF1F
|6
|-
|CJK Unified Ideographs Extension B
|200DD, 20164, 20BBF, 20C02, 20CED, 21D4C, 2278B, 23AB8, 2459B, 24A7D, 24FB9, 25ED7, 2677C, 26B4C, 26C21, 26CBE, 26E3D, 28834, 289A1, 289C0, 28A0F, 28B46
|22
|-
|CJK Unified Ideographs Extension C
|2A8FB, 2A917, 2AA30
|3
|-
|CJK Unified Ideographs Extension E
|2BA52, 2BD77, 2C494, 2C72F, 2C734, 2CB38
|6
|-
|CJK Unified Ideographs Extension F
|2D23B, 2E83A
|2
|-
! colspan="2" |Total
!192
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|3001 FE00
|
|corner-justified form # IDEOGRAPHIC COMMA
|-
|3001 FE01
|
|centered form # IDEOGRAPHIC COMMA
|-
|3002 FE00
|
|corner-justified form # IDEOGRAPHIC FULL STOP
|-
|3002 FE01
|
|centered form # IDEOGRAPHIC FULL STOP
|-
|FF01 FE00
|
|corner-justified form # FULLWIDTH EXCLAMATION MARK
|-
|FF01 FE01
|
|centered form # FULLWIDTH EXCLAMATION MARK
|-
|FF0C FE00
|
|corner-justified form # FULLWIDTH COMMA
|-
|FF0C FE01
|
|centered form # FULLWIDTH COMMA
|-
|FF0E FE00
|
|corner-justified form # FULLWIDTH FULL STOP
|-
|FF0E FE01
|
|centered form # FULLWIDTH FULL STOP
|-
|FF1A FE00
|
|corner-justified form # FULLWIDTH COLON
|-
|FF1A FE01
|
|centered form # FULLWIDTH COLON
|-
|FF1B FE00
|
|corner-justified form # FULLWIDTH SEMICOLON
|-
|FF1B FE01
|
|centered form # FULLWIDTH SEMICOLON
|-
|FF1F FE00
|
|corner-justified form # FULLWIDTH QUESTION MARK
|-
|FF1F FE01
|
|centered form # FULLWIDTH QUESTION MARK
|}
== Unicode 12.1 ==
Unicode 12.1 was released on May 7, 2019. It encoded 137,929 characters, adding only 1 new character.
=== Extended blocks ===
* A square era name Reiwa (total 1 character) was added to '''Enclosed CJK Letters and Months'''. (U+32FF)
== Unicode 13.0 ==
Unicode 13.0 was released on March 10, 2020. It encoded 143,859 characters, adding 5,930 new characters.
=== New blocks ===
* '''Yezidi''' (U+10E80-U+10EBF), containing 47 characters, was added.
* '''Chorasmian''' (U+10FB0-U+10FDF), containing 28 characters, was added.
* '''Dives Akuru''' (U+11900-U+1195F), containing 72 characters, was added.
* '''Lisu Supplement''' (U+11FB0-U+11FBF), containing 1 character, was added.
* '''Khitan Small Script''' (U+18B00-U+18CFF), containing 470 characters, was added.
* '''Tangut Supplement''' (U+18D00-U+18D08), containing 9 characters, was added.
* '''Symbols for Legacy Computing''' (U+1FB00-U+1FBFF), containing 212 characters, was added.
* '''CJK Unified Ideographs Extension G''' (U+30000-U+3134F), containing 4939 characters, was added.
=== Extended blocks ===
* Letters for African languages and Punjabi (total 10 characters) were added to '''Arabic Extended-A'''. (U+08BE-U+08C7)
* A sign Overline (total 1 character) was added to '''Oriya'''. (U+0B55)
* A Vedic Anusvara (total 1 character) was added to '''Malayalam'''. (U+0D04)
* A sign Candrabindu (total 1 character) was added to '''Sinhala'''. (U+0D81)
* Combining diacritical marks for Scottish phonology (total 2 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1ABF-U+1AC0)
* A Japanese symbol for Type A Electronics (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B97)
* Cross patties and a Tironian sign Capita Et (total 3 characters) were added to '''Supplemental Punctuation'''. (U+2E50-U+2E52)
* Letters for Taiwan and Cantonese language (total 5 characters) were added to '''Bopomofo Extended'''. (U+31BB-U+31BF)
* Some disunified ideographs (total 10 characters) were added to '''CJK Unified Ideographs Extension A'''. (U+4DB6-4DBF)
* Some ideographs for China (total 13 characters) were added to '''CJK Unified Ideographs'''. (U+9FF0-U+9FFC)
* Letters for Gaulish (total 6 characters) were added to '''Latin Extended-D'''. (U+A7C7-U+A7CA and U+A7F5-U+A7F6)
* An alternate sign Nasanta (total 1 character) was added to '''Syloti Nagri'''. (U+A82C)
* Letter R With Midle Tilde and modifier letters for Scottish phonology (total 4 characters) were added to '''Latin Extended-E'''. (U+AB68-U+AB6B)
* A symbol Ascia (total 1 character) was added to '''Ancient Symbols'''. (U+1019C)
* A letter for Pali (total 1 character) was added to '''Chakma'''. (U+11147)
* A vowel sign Prishthamatra E and Inverted Candrabindu (total 2 characters) were added to '''Sharada'''. (U+111CE and U+111CF)
* Double comma, sign Jihvamuliya and Uphadhmaniya (total 3 characters) were added to '''Newa'''. (U+1145A and U+11460-U+11461)
* Khitan Small Script Filler and reading marks for Vietnamese (total 3 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE4 and U+16FF0-U+16FF1)
* Some additional components (total 13 characters) were added to '''Tangut Components'''. (U+18AF3-U+18AFF)
* Creative Commons license symbols and Mask Work symbol (total 7 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10D-U+1F10F, U+1F16D-1F16F and U+1F1AD)
* Hut, Elevator, Pickup Truck and Roller Skate emoji (total 4 characters) were added to '''Transportation and Map Symbols'''. (U+1F6D6-U+1F6D7 and U+1F6FB-U+1F6FC)
* Arrows for legacy computing (total 2 characters) were added to '''Supplemental Arrows-C'''. (U+1F8B0-U+1F8B1)
* (total 10 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90C, U+1F972, U+1F977-U+1F978, U+1F9A3-U+1F9A4, U+1F9AB-U+1F9AD and U+1F9CB)
* (total 41 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA74, U+1FA83-U+1FA86, U+1FA96-U+1FAA8, U+1FAB0-U+1FAB6, U+1FAC0-U+1FAC2 and U+1FAD0-U+1FAD6)
* Gongche charaters for Kunqu Opera (total 7 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6D7-U+2A6DD)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Tagalog
|1700..170C, 170E..1714
|20
|-
|Mongolian
|1834, 1871, 1878
|3
|-
|Sundanese
|1BAB
|1
|-
|Currency Symbols
|20BF
|1
|-
|CJK Radicals Supplement
|2E80..2E99, 2E9B..2EF3
|115
|-
|Kangxi Radicals
|2F00..2FD5
|214
|-
|CJK Unified Ideographs Extension A
|3472, 38C7, 3DB8, 3FE0, 440B, 46E9
|6
|-
|CJK Unified Ideographs
|53FD, 6146, 6711, 671C, 6721, 6725, 6BD2, 7B9A, 87CE, 8956, 93BF, 9B97
|12
|-
|Latin Extended-D
|A764..A765
|2
|-
|Phags-pa
|A86D
|1
|-
|Tangut
|175F6, 17F0D, 17F8A, 17FA5, 180D6, 18139, 18147, 184F1, 18736
|9
|-
|Tangut Components
|18843, 18856, 1888C, 1890A, 18915, 1893B
|6
|-
|Adlam
|1E900..1E94A, 1E950..1E959, 1E95E..1E95F
|71
|-
|Miscellaneous Symbols and Pictographs
|1F3B1
|1
|-
|Supplemental Symbols and Pictographs
|1F995..1F998, 1F99B..1F99E, 1F9B0..1F9B3, 1F9E7
|13
|-
|CJK Unified Ideographs Extension B
|20219, 21249, 21827, 22C3A, 2327B, 23496, 2355E, 2363B, 236ED, 23839, 23FD5, 24261, 24726, 248F2, 2548E, 26657, 26C9E, 26FE1, 27334, 27C0E, 27CEF, 2A38C
|22
|-
|CJK Unified Ideographs Extension C
|2AED5, 2AEF3, 2AF76, 2B09F, 2B1C3, 2B1E5
|6
|-
|CJK Unified Ideographs Extension E
|2B83C, 2B8D9..2B8DA, 2B96F, 2BBD7, 2BD61, 2BE4A, 2BF1D, 2BF9D, 2C0B8, 2C142, 2C176, 2C316, 2C3FB, 2C402, 2C7AC, 2C82C, 2C83A, 2C9A1, 2CC88, 2CD68
|21
|-
|CJK Unified Ideographs Extension F
|2DC09, 2DE4A, 2EB7E, 2EB89
|4
|-
|CJK Compatibility Ideographs Supplement
|2F83B, 2F878, 2F8D6..2F8D7, 2F8DA, 2F8F0, 2F984, 2FA02
|8
|-
! colspan="2" |Total
!536
|}
== Unicode 14.0 ==
Unicode 14.0 was released on September 14, 2021. It encoded 144,697 characters, adding 838 new characters.
=== New blocks ===
* '''Arabic Extended-B''' (U+0870-U+089F), containing 41 characters, was added.
* '''Vithkuqi''' (U+10570-U+105BF), containing 70 characters, was added.
* '''Latin Extended-F''' (U+10780-U+107BF), containing 57 characters, was added.
* '''Old Uyghur''' (U+10F70-U+10FAF), containing 26 characters, was added.
* '''Unified Canadian Aboriginal Syllabics Extended-A''' (U+11AB0-U+11ABF), containing 16 characters, was added.
* '''Cypro-Minoan''' (U+12F90-U+12FFF), containing 99 characters, was added.
* '''Tangsa''' (U+16A70-U+16ACF), containing 89 characters, was added.
* '''Kana Extended-B''' (U+1AFF0-U+1AFFF), containing 13 characters, was added.
* '''Znamenny Musical Notation''' (U+1CF00-U+1CFFF), containing 185 characters, was added.
* '''Latin Extended-G''' (U+1DF00-U+1DFFF), containing 31 characters, was added.
* '''Toto''' (U+1E290-U+1E2BF), containing 31 characters, was added.
* '''Ethiopic Extended-B''' (U+1E7E0-U+1E7FF), containing 28 characters, was added.
=== Extended blocks ===
* An End of Text punctuation mark (total 1 character) was added to '''Arabic'''. (U+061D)
* Letters for Balti and Quranic orthography (total 12 characters) were added to '''Arabic Extended-A'''. (U+08B5 and U+08C8-U+08D2)
* A sign Nukta and letter Nakaara Pollu (total 2 characters) were added to '''Telugu'''. (U+0C3C and U+0C5D)
* A letter Nakaara Pollu (total 1 character) was added to '''Kannada'''. (U+0CDD)
* A letter Ra, sign Pamudpod and archaic letter Ra (total 3 characters) were added to '''Tagalog'''. (U+170D, U+1715 and U+171F)
* A fourth Free variation selector (total 1 character) was added to '''Mongolian'''. (U+180F)
* Combining diacritical marks for extended IPA (total 14 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1AC1-U+1ACE)
* An archaic ligature Jnya and punctuation marks (total 3 characters) were added to '''Balinese'''. (U+1B4C and U+1B7D-U+1B7E)
* A combining Dot Below Left (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFA)
* A Kyrgyz Som sign (total 1 character) was added to '''Currency Symbols'''. (U+20C0)
* A letter Caudate Chrivi (total 2 characters) were added to '''Glagolitic'''. (U+2C2F and U+2C5F)
* Medieval and phonetic punctuation marks (total 11 characters) were added to '''Supplemental Punctuation'''. (U+2E53-U+2E5D)
* Some ideographs for Macao (total 3 characters) were added to '''CJK Unified Ideographs'''. (U+9FFD-U+9FFF)
* Archaic European letters, modifier letters for Sokuon and Chatino orthography (total 13 characters) were added to '''Latin Extended-D'''. (U+A7C0-U+A7C1, U+A7D0-U+A7D1, U+A7D3, U+A7D5, U+A7D6-U+A7D9 and U+A7F2-U+A7F4)
* A modifier letter Wasla Above and honorifics (total 20 characters) were added to '''Arabic Presentation Forms-A'''. (U+FBC2, U+FD40-U+FD4F, U+FDCF and U+FDFE-U+FDFF)
* Letters for Old Tamil (total 6 characters) were added to '''Brahmi'''. (U+11070-U+11075)
* A vowel sign Vocalic R (total 1 character) was added to '''Khaiti'''. (U+110C2)
* An Abbreviation sign (total 1 character) was added to '''Takri'''. (U+116B9)
* Letters for Tai Ahom (total 7 characters) were added to '''Ahom'''. (U+11740-U+11746) The block was expanded from (U+11700-U+1173F) to (U+11700-U+1174F)
* Kana archaic letters (total 4 characters) were added to '''Kana Extended-A'''. (U+1B11F-U+1B122)
* Accidental symbols for Iranian classical music (total 2 characters) were added to '''Musical Symbols'''. (U+1D1E9-U+1D1EA)
* Playground Slide, Wheel and Ring Buoy emoji (total 3 characters) were added to '''Transportation and Map Symbols'''. (U+1F6DD-U+1F6DF)
* A Heavy Equals Sign emoji (total 1 character) was added to '''Geometric Shapes Extended'''. (U+1F7F0)
* A Troll and Face Holding Back Tears emoji (total 2 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F979 and U+1F9CC)
* (total 31 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA7B-U+1FA7C, U+1FAA9-U+1FAAC, U+1FAB7-U+1FABA, U+1FAC3-U+1FAC5, U+1FAD7-U+1FAD9, U+1FAE0-U+1FAE7 and U+1FAF0-U+1FAF6)
* Some ideographs for Macao (total 2 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6DE-U+2A6DF)
* Disunified ideographs and a G source ideograph for China, Hong Kong and Vietnam (total 4 characters) were added to '''CJK Unified Ideographs Extension C'''. (U+2B735-U+2B738)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Latin Extended-B
|0184..0185
|2
|-
|Arabic
|0674..0678, 06C5, 06C7, 06FE
|8
|-
|Letterlike Symbols
|210B, 2110, 2112, 211B, 212C, 2130..2131, 2133
|8
|-
|Enclosed Alphanumerics
|2460..24FF
|160
|-
|Dingbats
|2776..2793
|30
|-
|CJK Symbols and Punctuation
|3001..3029, 3030..303D, 303F
|56
|-
|CJK Strokes
|31C0..31E3
|36
|-
|Katakana Phonetic Extensions
|31F0..31FF
|16
|-
|Enclosed CJK Letters and Months
|3200..321E, 3220..32FF
|255
|-
|CJK Compatibiity
|3300..33FF
|256
|-
|CJK Unified Ideographs Extension A
|3777, 3B3F
|2
|-
|CJK Unified Ideographs
|5DD5, 652C, 6AC0
|3
|-
|Arabic Presentation Forms-A
|FBD7..FBD8, FBDD, FBE0..FBE1
|5
|-
|Vertical Forms
|FE10..FE19
|10
|-
|CJK Compatibiity Forms
|FE30..FE4F
|32
|-
|Small Form Variants
|FE50..FE52, FE54..FE66, FE68..FE6B
|26
|-
|Halfwidth and Fullwidth Forms
|FF01..FF9F, FFA1..FFBE, FFC2..FFC7, FFCA..FFCF, FFD2..FFD7, FFDA..FFDC, FFE0..FFE6, FFE8..FFEE
|225
|-
|Egyptian Hieroglyphs
|1300A, 13017, 1302D, 13032, 13034..13035, 13037..13038, 1303A..1303E, 1304E..1304F, 13055, 13057, 13068, 1309A, 130D2, 130D5, 130F6, 130FE, 13192, 1325F, 13267, 1326A, 13281, 13297, 1329E, 132B4, 132C1, 132E6, 13304, 1331F, 13378..1337B, 1337D..1337E, 133F3, 133FA..13403, 1340D, 13417, 1342B
|55
|-
|Mathematical Alphanumeric Symbols
|1D49C, 1D49E..1D49F, 1D4A2, 1D4A5..1D4A6, 1D4A9..1D4AC, 1D4AE..1D4B5
|18
|-
|Enclosed Alphanumeric Supplement
|1F100..1F1AD, 1F1E6..1F1FF
|200
|-
|Enclosed Ideographic Supplement
|1F200..1F202, 1F210..1F23B, 1F240..1F248, 1F250..1F251, 1F260..1F265
|64
|-
|Supplemental Symbols and Pictographs
|1F930
|1
|-
|CJK Unified Ideographs Extension B
|22ADC, 230F2, 25B27, 26F28
|4
|-
! colspan="2" |Total
!1472
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|1D49C FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE00
|
|chancery style # SCRIPT CAPITAL B
|-
|1D49E FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE00
|
|chancery style # SCRIPT CAPITAL E
|-
|2131 FE00
|
|chancery style # SCRIPT CAPITAL F
|-
|1D4A2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE00
|
|chancery style # SCRIPT CAPITAL H
|-
|2110 FE00
|
|chancery style # SCRIPT CAPITAL I
|-
|1D4A5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE00
|
|chancery style # SCRIPT CAPITAL L
|-
|2133 FE00
|
|chancery style # SCRIPT CAPITAL M
|-
|1D4A9 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE00
|
|chancery style # SCRIPT CAPITAL R
|-
|1D4AE FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Z
|-
|1D49C FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE01
|
|roundhand style # SCRIPT CAPITAL B
|-
|1D49E FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE01
|
|roundhand style # SCRIPT CAPITAL E
|-
|2131 FE01
|
|roundhand style # SCRIPT CAPITAL F
|-
|1D4A2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE01
|
|roundhand style # SCRIPT CAPITAL H
|-
|2110 FE01
|
|roundhand style # SCRIPT CAPITAL I
|-
|1D4A5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE01
|
|roundhand style # SCRIPT CAPITAL L
|-
|2133 FE01
|
|roundhand style # SCRIPT CAPITAL M
|-
|1D4A9 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE01
|
|roundhand style # SCRIPT CAPITAL R
|-
|1D4AE FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Z
|}
===Named Sequences===
Here is a table with new named character sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Name
|-
|0915 093C
|DEVANAGARI SEQUENCE FOR LETTER QA
|-
|0916 093C
|DEVANAGARI SEQUENCE FOR LETTER KHHA
|-
|0917 093C
|DEVANAGARI SEQUENCE FOR LETTER GHHA
|-
|091C 093C
|DEVANAGARI SEQUENCE FOR LETTER ZA
|-
|0921 093C
|DEVANAGARI SEQUENCE FOR LETTER DDDHA
|-
|0922 093C
|DEVANAGARI SEQUENCE FOR LETTER RHA
|-
|092B 093C
|DEVANAGARI SEQUENCE FOR LETTER FA
|-
|092F 093C
|DEVANAGARI SEQUENCE FOR LETTER YYA
|-
|09A1 09BC
|BENGALI SEQUENCE FOR LETTER RRA
|-
|09A2 09BC
|BENGALI SEQUENCE FOR LETTER RHA
|-
|09AF 09BC
|BENGALI SEQUENCE FOR LETTER YYA
|-
|0A32 0A3C
|GURMUKHI SEQUENCE FOR LETTER LLA
|-
|0A38 0A3C
|GURMUKHI SEQUENCE FOR LETTER SHA
|-
|0A16 0A3C
|GURMUKHI SEQUENCE FOR LETTER KHHA
|-
|0A17 0A3C
|GURMUKHI SEQUENCE FOR LETTER GHHA
|-
|0A1C 0A3C
|GURMUKHI SEQUENCE FOR LETTER ZA
|-
|0A2B 0A3C
|GURMUKHI SEQUENCE FOR LETTER FA
|-
|0B21 0B3C
|ORIYA SEQUENCE FOR LETTER RRA
|-
|0B22 0B3C
|ORIYA SEQUENCE FOR LETTER RHA
|}
== Unicode 15.0 ==
Unicode 15.0 was released on September 13, 2022. It encoded 149,186 characters, adding 4,489 new characters.
=== New blocks ===
* '''Arabic Extended-C''' (U+10EC0-U+10EFF), containing 3 characters, was added.
* '''Devanagari Extended-A''' (U+11B00-U+11B5F), containing 10 characters, was added.
* '''Kawi''' (U+11F00-U+11F5F), containing 86 characters, was added.
* '''Kaktovik Numerals''' (U+1D2C0-U+1D2DF), containing 20 characters, was added.
* '''Cyrillic Extended-D''' (U+1E030-U+1E08F), containing 63 characters, was added.
* '''Nag Mundari''' (U+1E4D0-U+1E4FF), containing 42 characters, was added.
* '''CJK Unified Ideographs Extension H''' (U+31350-U+323AF), containing 4192 characters, was added.
=== Extended blocks ===
* A Yamakkan (total 1 character) was added to '''Lao'''. (U+0ECE)
* A combining Anusvara Above Right (total 1 character) was added to '''Kannada'''. (U+0CF3)
* Letters Qa, Short I and Vocalic R (total 3 characters) were added to '''Khojki'''. (U+1123F-U+11241)
* An additional hieroglyph to Group V (total 1 character) was added to '''Egyptian Hieroglyphs'''
* Extended format controls (total 29 characters) were added to '''Egyptian Hieroglyph Format Controls'''. (U+13439-U+13455). The block was expanded from (U+13430-U+1343F) to (U+13430-U+1345F)
* Hiragana and Katakana Small Ko (total 2 characters) were added to '''Small Kana Extension'''. (U+1B132 and U+1B155)
* Letters for Malayalam transliteration (total 6 characters) were added to '''Latin Extended-G'''. (U+1DF25-U+1DF2A)
* A Wireless emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6DC)
* A Nine Pointed White Star (total 1 character) was be added to '''Geometric Shapes Extended'''. (U+1F7D9)
* A Lot of Fortune, eclipse symbols and symbols for dwarf planets (total 6 characters) were added to '''Alchemical symbols'''. (U+1F774-U+1F776 and U+1F77B-U+1F77F)
* (total 20 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA75-U+1FA77, U+1FA87-U+1FA88, U+1FAAD-U+1FAAF, U+1FABB-U+1FABF, U+1FACE-U+1FACF, U+1FADA-U+1FADB, U+1FAE8 and U+1FAF7-U+1FAF8)
* A disunified ideograph for Macao (total 1 character) was added to '''CJK Unified Ideographs Extension C'''. (U+2B739)
===Glyph Changes===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|IPA Extensions
|025E, 029A
|2
|-
|United Canadian Aboriginal Syllabics
|144B, 14D1, 1506, 15C0..15C3, 15E8..15EE, 1601, 1604..1607, 160A..160D, 1614..162D, 1630..163F, 1646..1647, 165A
|66
|-
|United Canadian Aboriginal Syllabics Extended
|18DB, 18EC, 18F1..18F2, 18F5
|5
|-
|Sundanese
|1BBF
|1
|-
|Optical Character Recognition
|2447
|1
|-
|CJK Unified Ideographs Extension A
|34DC, 3BF6, 3C43, 48B4, 4DBE
|5
|-
|CJK Unified Ideographs
|585F, 5F50, 6BC0, 7BC9, 833E
|5
|-
|Cyrillic Extended-B
|A66E
|1
|-
|Old Turkic
|10C47
|1
|-
|Egyptian Hieroglyphs
|various (new standardized variation sequences)
|94
|-
|Khitan Small Script
|18CCA
|1
|-
|Wancho (font update)
|1E2C0..1E2F9, 1E2FF
|59
|-
|Alchemical Symbols (font update)
|1F700..1F773
|116
|-
|CJK Unified Ideographs Extension B
|20048, 20A1C, 2143F, 21A5F, 21C08, 21FBA, 22ACF, 23392, 238A7, 23D8F, 23F4E, 25D20, 26E30, 27B48, 27C4F, 28633, 28B02, 28E9A, 29760, 2A60F
|20
|-
|CJK Unified Ideographs Extension C
|2B249
|1
|-
|CJK Unified Ideographs Extension E
|2BB37, 2BD7D, 2C151, 2C1E0, 2C2D6, 2C5CA, 2C810, 2CD34
|8
|-
|CJK Unified Ideographs Extension F
|2CF4E, 2D25D, 2D3EC, 2D6A7, 2D7BA, 2D979, 2DA74, 2DA97, 2DC13, 2DDC0, 2DF10, 2DF78, 2E05A, 2E0AE, 2E516, 2E640, 2E680, 2EA63
|18
|-
|CJK Compatibility Ideographs Supplement
|2F804, 2F805, 2F833, 2F835, 2F84C, 2F84F, 2F852, 2F855, 2F887, 2F88B, 2F899, 2F8A0, 2F8A6, 2F8A7, 2F8AD, 2F8B1, 2F8B4, 2F8B7, 2F8BA, 2F8D0, 2F8E0..2F8E2, 2F8E5, 2F8E6, 2F8FE, 2F900, 2F901, 2F907, 2F912, 2F922, 2F926, 2F936, 2F938, 2F94E, 2F959, 2F95F, 2F96C, 2F99F, 2F9B8, 2F9BA, 2F9D3, 2F9DB, 2F9DC, 2F9E8, 2F9EA, 2F9EE, 2FA00, 2FA0D, 2FA1B
|50
|-
|CJK Unified Ideographs Extension G
|302FC, 30723, 30A6D, 30CF7, 30DBF, 31006, 3105D
|7
|-
! colspan="2" |Total
!461
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|13091 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027
|-
|13092 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027A
|-
|13093 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D028
|-
|130A9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D047
|-
|1310F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F016
|-
|13117 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F023
|-
|1311C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F028
|-
|13121 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F032
|-
|13127 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F037A
|-
|13139 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13139 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13183 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH H005
|-
|13187 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH H008
|-
|131A0 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131A0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131B1 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B1 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B8 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M009
|-
|131B9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M010
|-
|131BA FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M010A
|-
|131CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M017
|-
|131EE FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131EE FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131F8 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N010
|-
|131F9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131F9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131FA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N012
|-
|131FA FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N012
|-
|13216 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH N035
|-
|13257 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O006
|-
|1327B FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH O029
|-
|1327F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O031
|-
|1327F FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O031
|-
|13285 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O036
|-
|1328C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O039
|-
|132A4 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132A4 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132AA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Q003
|-
|132CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH R024
|-
|132DC FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S010
|-
|132E7 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E7 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E9 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S020
|-
|132F8 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S033
|-
|132FD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S037
|-
|13302 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S042
|-
|13303 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S043
|-
|13307 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T001
|-
|13308 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T002
|-
|13310 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008
|-
|13311 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008A
|-
|13312 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13312 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13313 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13313 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13314 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T010
|-
|13314 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T010
|-
|1331B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331B FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T016A
|-
|13321 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13321 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13322 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13322 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13331 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T035
|-
|13331 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T035
|-
|1333B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U007
|-
|1333C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U008
|-
|1334A FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U022
|-
|13361 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U042
|-
|13373 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V007A
|-
|13377 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V010
|-
|13378 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V011
|-
|1337D FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V012A
|-
|13385 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V019
|-
|13399 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V026
|-
|1339A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V027
|-
|133AF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W001
|-
|133B0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W002
|-
|133BF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W014
|-
|133D3 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH X004A
|-
|133DD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH Y002
|-
|133F2 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z007
|-
|133F5 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z010
|-
|133F6 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z011
|-
|13403 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z015I
|-
|13416 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA008
|-
|13419 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|1341A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA012
|-
|13423 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA021
|-
|1342C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA030
|-
|1342E FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA032
|-
|13443 FE00
|
|expanded # EGYPTIAN HIEROGLYPH LOST SIGN
|-
|13444 FE00
|
|expanded # EGYPTIAN HIEROGLYPH HALF LOST SIGN
|-
|13445 FE00
|
|expanded # EGYPTIAN HIEROGLYPH TALL LOST SIGN
|-
|13446 FE00
|
|expanded # EGYPTIAN HIEROGLYPH WIDE LOST SIGN
|}
== Unicode 15.1 ==
Unicode 15.1 was released on September 12th, 2023. It encoded 149,813 characters, adding 627 new characters.
=== New Blocks ===
* '''CJK Unified Ideographs Extension I''' (U+2EBF0-U+2EE5F), containing 622 characters, was added.
=== Extended Blocks ===
* 4 Ideographic characters were added to '''Ideographic Description Characters'''. (U+2FFC-U+2FFF)
* An Ideographic subtraction (total 1 character) was added to '''CJK Strokes'''. (U+31EF)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|CJK Unified Ideographs Extension A
|357E, 358B..358E, 3599..359D, 35AF..35B0, 35B2..35B3, 35DF..35E1, 35EF, 360F, 3612, 3F94, 44D5, 48EE
|5
|-
|CJK Unified Ideographs
|5098, 512D, 517A, 5391, 54DB, 551C, 551F, 55B8, 55ED, 56AB, 591E, 594A, 5B2E, 5DFC..5DFD, 5EE4, 609E, 65B0, 65B3, 65D5, 65F2, 67B2, 6AB6, 6AEC, 6C69, 6FC2, 6FD3, 7019, 7361, 74BD, 7934, 820B, 826E, 83BB, 8412, 8456, 848A, 896F, 8E34, 8FD7, 9166, 9855, 985E, 9C4D
|5
|-
|Latin Extended-D
|A798
|1
|-
|Latin Extended-E
|AB5A
|1
|-
|Tangut
|17105, 172A4, 17BD1..17BD3, 17EF9, 18136
|59
|-
|Alchemical Symbols
|1F741, 1F747, 1F74C, 1F74F, 1F756, 1F758, 1F763, 1F768, 1F76D, 1F76E
|116
|-
|CJK Unified Ideographs Extension B
|20302, 2087A, 20C00, 230B7, 2339E, 236EF, 237C3, 23B87, 23CC0, 23CD9, 23E5E, 2486F, 249D6, 249E8, 24D6A, 2585E, 25D89, 26A5A..26A5B, 26A73, 26A82..26A83, 26A90, 26AA6, 26AA8, 26AD8, 27350, 279F8, 284A3, 28BBA, 29516, 29530
|20
|-
|CJK Unified Ideographs Extension C
|2A741, 2AB63, 2ACD8, 2AF6F, 2B173, 2B490
|1
|-
|CJK Unified Ideographs Extension E
|2BC2E, 2BF45, 2C04C, 2C13A, 2C43C, 2C43E, 2C816
|8
|-
|CJK Unified Ideographs Extension F
|2D1CC..2D1CD, 2D1DD, 2D1E4, 2D1F7, 2D203, 2D256, 2D266, 2D2A2, 2D2AC, 2D2DA
|18
|-
|CJK Unified Ideographs Extension G
|301D4, 301D9, 301E4, 301E8, 301FF..30200, 30205, 3020C, 30211, 30215..30217, 30220, 30234..30235, 30237
|7
|-
|CJK Unified Ideographs Extension H
|314B7, 31542, 31569, 31C7F, 31D5A, 31F68
|7
|-
! colspan="2" |Total
!164
|}
== Unicode 16.0 ==
Unicode 16.0 was released on September 10th, 2024. It encoded 154,998 characters, adding 5185 new characters.
=== New Blocks ===
* '''Todhri''' (U+105C0-U+105FF), containing 52 characters, was added.
* '''Garay''' (U+10D40-U+10D8F), containing 69 characters, was added.
* '''Tulu-Tigalari''' (U+11380-U+113FF), containing 80 characters, was added.
* '''Myanmar Extended-C''' (U+116D0-U+116FF), containing 20 characters, was added.
* '''Sunuwar''' (U+11BC0-U+11BFF), containing 44 characters, was added.
* '''Egyptian Hieroglyphs Extended-A''' (U+13460-U+143FF), containing 3995 characters, was added.
* '''Gurung Khema''' (U+16100-U+1613F), containing 58 characters, was added.
* '''Kirat Rai''' (U+16D40-U+16D7F), containing 58 characters, was added.
* '''Symbols for Legacy Computing Supplement''' (U+1CC00-U+1CEBF), containing 686 characters, was added.
* '''Ol Onal''' (U+1E5D0-U+1E5FF), containing 44 characters, was added.
=== Extended Blocks ===
* A combining diacritical mark for Jawi (total 1 character) was added to '''Arabic Extended-B'''. (U+0897)
* Inverted letters and a punctuation mark (total 3 characters) was added to '''Balinese'''. (U+1B4E-U+1B4F and U+1B7F)
* A letter Tje (total 2 characters) was added to '''Cyrillic Extended-C'''. (U+1C89-U+1C8A)
* Legacy computing symbols for Delete (total 3 characters) was added to '''Control Pictures'''. (U+2427-U+2429)
* CJK strokes HXG and SZP (total 2 characters) was added to '''CJK Strokes'''. (U+31E4-U+31E5)
* A capital Rams Horn, an S with Diagonal Stroke, Lamda Letters, and letters for Wakashan and Salishan Languages (total 6 characters) was added to '''Latin Extended-D'''. (U+A7CB-U+A7CD, U+A7DA-U+A7DC)
* A combining Alef overlay and letters with two dots vertically below (total 4 characters) was added to '''Arabic Extended-C'''. (U+10EC2-U+10EC4 and U+10EFC)
* A sign Nukta (total 1 character) was added to '''Kawi'''. (U+11F5A)
* A blank character (total 1 character) was added to '''Khitan Small Script'''. (U+18CFF)
* A rightwards arrow with hook, and arrows for legacy computing and arrows for Egyptology (total 12 characters) was added to '''Supplemental Arrows-C'''. (U+1F8B2-U+1F8BB, U+1F8C0-U+1F8C1)
* A Harp, Shovel, Leafless Tree, Fingerprint, Root Vegetable, Splatter, and Face with Bags Under Eyes (total 7 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA89, U+1FA8F, U+1FABE, U+1FAC6, U+1FADC, U+1FADF, and U+1FAE9)
* Graphic shapes for legacy computing (total 37 characters) was added to '''Symbols for Legacy Computing'''. (U+1FBCB-U+1FBEF)
== Unicode 17.0 ==
Unicode 17.0 was released on September 9th, 2025. It encoded 159,801 characters, adding 4,083 new characters.
=== New Blocks ===
* '''Sidetic''' (U+10940-U+1095F), containing 26 characters, was added.
* '''Sharada Supplement''' (U+11B60-U+11B7F), containing 8 characters, was added.
* '''Tolong Siki''' (U+11DB0-U+11DEF), containing 54 characters, was added.
* '''Beria Erfe''' (U+16EA0-U+16EDF), containing 50 characters, was added.
* '''Tangut Components Supplement''' (U+18D80-U+18DFF), containing 115 characters, was added.
* '''Miscellaneous Symbols Supplement''' (U+1CEC0-U+1CEFF), containing 34 characters, was added.
* '''Tai Yo''' (U+1E6C0-U+1E6FF), containing 55 characters, was added.
* '''CJK Unified Ideographs Extension J''' (U+323B0-U+3347F), containing 4298 characters, was added.
=== Extended Blocks ===
* A Noon with Ring Above (total 1 character) was added to '''Arabic Extended-B'''. (U+088F)
* An archaic ligature Shrii (total 1 character) was added to '''Telugu'''. (U+0C5C)
* An archaic ligature Shrii (total 1 character) was added to '''Kannada'''. (U+0CDC)
* Compound tone and harrington diacritics (total 26 characters) was to '''Combining Diacritical Marks Extended'''. (U+1ACF-U+1ADD, U+1AE0-U+1AEB)
* Saudi Riyal Sign (total 1 character) was added to '''Currency Symbols'''. (U+20C1)
* Equal Sign with Infinity Above (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B96)
* 2 capital letters for Middle English, Latin pharyngeal voiced fricative, and Modifier Letter Capital S (total 5 characters) was added to '''Latin Extended-D'''. (U+A7CE-U+A7CF, U+A7D2, U+A7D4, U+A7F1)
* Arabic Ligature Rahmatu Allaahi Alayh and Arabic Honorifics (total 25 characters) was added to '''Arabic Presentation Forms-A'''. (U+FBC3-U+FBD2, U+FD90, U+FD91, U+FDC8-U+FDCE)
* A Small Yeh Barree with Two Dots Below, Thin Noon, Biblical End of Verse, Yeh with Four Dots Below, Honorifics, Double Vertical Bar Below, and Small Low Noon (total 14 characters) was added to '''Arabic Extended-C'''. (U+10EC5-U+10EC7, U+10ED0-U+10ED8, U+10EFA-U+10EFB)
* Chinese Simplified and Traditional Er and Yangqin Slow Signs Two, Three, and Four (total 5 characters) was added to '''Ideographic Symbols and Punctuation'''. (U+16FF2-U+16FF6)
* Some additional ideographs (total 8 characters) was added to '''Tangut'''. (U+187F8-U+187FF)
* Additional ideographs (total 22 characters) was added to '''Tangut Supplement'''. (U+18D09-U+18D1E)
* Nine symbols (total 9 characters) was added to '''Symbols for Legacy Computing Supplement'''. (U+1CCFA-U+1CCFC, U+1CEBA-1CEBF)
* A Landslide (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D8)
* Historical asteroid symbols (total 4 characters) was added to '''Alchemical Symbols'''. (U+1F777-U+1F77A)
* Chemical symbols (total 9 characters) was added to '''Supplemental Arrows-C'''. (U+1F8D0-U+1F8D8)
* White and Black Chess Ferz and Alfil (total 4 characters) was added to '''Chess Symbols'''. (U+1FA54-U+1FA57)
* A trombone, treasure chest, hairy creature, orca, distorted face, and fight cloud (total 6 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA8A, U+1FA8E, U+1FAC8, U+1FACD, U+1FAEA, and U+1FAEF)
* An alarm bell symbol (total 1 character) was added to '''Symbols for Legacy Computing'''. (U+1FBFA)
* Additional ideographs (total 6 characters) was added to '''CJK Unified Ideographs Extension C'''. (U+2B73A-U+2B73F)
* Additional ideographs (total 12 characters) was added to '''CJK Unified Ideographs Extension E'''. (U+2CEA2-U+2CEAD)
== Unicode 18.0 ==
Unicode 18.0 will be released on September 16, 2026.
=== New Blocks ===
*'''Bengali Supplement''' (U+11DF0-U+11DFF), containing 2 characters, will be added.
* '''Archaic Cuneiform Numerals''' (U+12550-U+1268F), containing 311 characters, will be added.
* '''Jurchen''' (U+18E00-U+1919F), containing 914 characters, will be added.
* '''Jurchen Radicals''' (U+191A0-U+191DF), containing 51 characters, will be added.
* '''Musical Symbols Supplement''' (U+1D250-U+1D28F), containing 50 characters, will be added.
* '''Miscellaneous Symbols and Arrows Extended''' (U+1DB00-U+1DBFF), containing 29 characters, will be added.
* '''Seal Script''' (U+3D000-U+3FC3F), containing 11328 characters, will be added.
=== Extended Blocks ===
* Modifier letters Eh, Ini, and Yi (total 3 characters) will be added to '''Armenian'''. (U+0558, U+058B-U+058C)
* Hebrew Point Sheva Na Mudgash and Hebrew Point Dagesh Hazaq Mudgash (total 2 characters) will be added to '''Hebrew'''. (U+05C8-U+05C9)
* Signs for dot above and double dot above (total 2 characters) will be added to '''Oriya'''. (U+0B53-U+0B54)
* Alternate positioned IPA diacritics and diacritics for Chao and Khoe (total 7 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1ADE-U+1ADF, U+1AEC-U+1AF0)
* Latin subscript small letter w, y, and z and Modifier letter high and low vertical line (total 4 characters) will be added to '''Superscripts and Subscripts'''. (U+208F, U+209D-U+209F)
* Rufiyaa Sign, UAE Dirham Sign, and Omani Rial (total 3 characters) will be added to '''Currency Symbols'''. (U+20C2-U+20C4)
* Two Wiggly Exclamation Marks and Two Parenthesis with Middle Ring (total 4 characters) will be added to '''Supplemental Punctuation'''. (U+2E60-U+2E63)
* Latin capital letter closed omega and Latin capital letter r with long leg and (total 2 characters) will be added to '''Latin Extended-D'''. (U+A7DD and U+A7E2)
* Latin capital letter script r and script r with ring (total 2 characters) will be added to '''Latin Extended-E'''. (U+AB6C-U+AB6D)
* Latin modifier letters for clicks (total 5 characters) will be added to '''Latin Extended-F'''. (U+107BB-U+107BF)
* Arabic Crown Letters, Quranic Characters, and Arabic Crown (total 39 characters) will be added to '''Arabic Extended-C'''. (U+10EC9-U+10ECF, U+10ED9-U+10EEE, U+10EF0-U+10EF9)
* Devanagari Letter Alternate Ddda (total 1 character) will be added to '''Devanagari Extended-A'''. (U+11B0A)
* Extended Cuneiform Numeric Signs (total 12 characters) will be added to '''Cuneiform Numbers and Punctuation'''. (U+1246F, U+12475-U+1247F)
* Jurchen Small Script characters (total 5 characters) will be added to '''Khitan Small Script'''. (U+18CD6-U+18CDA)
* Two additional ideographs (total 2 characters) will be added to '''Tangut Supplement'''. (U+18D1F-U+18D20)
* Hiragana Digraph Koto, Katakana Diagraphs Toki, Tote, and Yori, letters alternate Ne, and Wi (total 6 characters) will be added to '''Kana Extended-A'''. (U+1B123-U+1B128)
* Katakana letter small archaic Ye (total 1 character) will be added to '''Small Kana Extension'''. (U+1B168)
* Leibnizian alchemical symbols, Leibnizian cossic characters, and Leibnizian mathematical signs and symbols (total 19 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED2-U+1CED4, U+1CEDD-U+1CEDF, U+1CEF1-U+1CEFD)
* Stein Zimmerman Symbols, Digit Slash Symbols, and other Symbols (total 23 characters) will be added to '''Musical Symbols'''. (U+1D127-U+1D128, U+1D1EB-U+1D1FF)
* Mathematical italic long s with descender s (U+1D6A6) will be added to '''Mathematical Alphanumeric Symbols'''.
* Affricate ligatures, letters with palatal hook, barred letters, RFE letters, Initial Teaching Alphabet, English Phonotypic Alphabet, Leibnizian cossic characters, and modifier letters (total 151 characters) will be added to '''Latin Extended-G'''. (U+1DF1F-U+1DF24, U+1DF2B-U+1DF81, U+1DF90-U+1DF96, U+1DFCD-U+1DFFF)
* A Tomobiki symbol (total 1 character) will be added to '''Enclosed Alphanumeric Supplement'''. (U+1F1AE)
* A lighthouse (total 1 character) will be added to '''Transport and Map Symbols'''. (U+1F6D9)
* A black circle with white vertical bar, and Extended Geometric Shapes (total 17 characters) will be added to '''Geometric Shapes Extended'''. (U+1F7DA-U+1F7DB, U+1F7F1-U+1F7FF)
* A meteor, eraser, net with handle, monarch butterfly, pickle, cracking face, leftwards thumb sign, and rightwards thumb sign (total 8 characters) will be added to '''Symbols and Pictographs Extended-A'''. (U+1FA8B-1FA8D, U+1FACC, U+1FADD, U+1FAEB, U+1FAF9-1FAFA)
* An additional ideograph (total 1 character) will be added to '''CJK Unified Ideographs Extension D'''. (U+2B81E)
== Unicode 19.0==
Unicode 19.0 will be released in late 2027. There are more characters targeted for this version, but they have not been confirmed yet.
=== New Blocks ===
* '''CJK Unified Ideographs Components-A''' (U+2FA20-U+2FA9F), containing 119 characters, will be added.
* '''CJK Unified Ideographs Components-B''' (U+2FAA0-U+2FC1F), containing 375 characters, will be added.
== Code Points Provisionally Assigned==
This is a section where you can add any upcoming Unicode characters that have been [https://www.unicode.org/alloc/Pipeline.html#codepoint_reservation provisionally assigned for mature proposals] (but not yet accepted) for a future update of The Unicode Standard.
=== New Blocks ===
* '''Arabic Extended-D''' (U+10D90-U+10E5F), containing 3 characters, will be added.
* '''Sirmauri''' (U+11850-U+1188F), containing 55 characters, will be added.
* '''Leke''' (U+11B80-U+11BBF), containing 55 characters, will be added.
* '''Proto-Cuneiform''' (U+12690-U+12ECF), containing 1392 characters, will be added.
* '''Chisoi''' (U+16D80-U+16DAF), containing 40 characters, will be added.
* '''Mwangwego''' (U+16E00-U+16E3F), containing 64 characters, will be added.
* '''Shaaldaa''' (U+1C800-U+1CB2F), containing 804 characters, will be added.
* '''Leibnizian Ambiguous Signs''' (U+1DC00-U+1DC3F), containing 54 characters, will be added.
=== Extended Blocks ===
* Telugu Sign Spacing Candrabindu (total 1 character) will be added to '''Telugu'''. (U+0C70)
* Kannada Signs Ardhanusvara and Combining Anusvara Above (total 1 character) will be added to '''Kannada'''. (U+0CF0 and U+0CF4)
* Mongolian Letter Manchu Alternative Ue (total 1 character) will be added to '''Mongolian'''. (U+1879)
* Combining Grave-Acute-Macron, Combining inverted lazy s Above, and Combining comma Above and acute (total 3 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1AF1-U+1AF3)
* Cyrillic small letter Yeru with connecting bar (total 1 character) will be added to '''Cyrillic Extended-C'''. (U+1C8B)
* Belarusian Ruble sign and Ruble sign with double vertical stem (total 2 characters) will be added to '''Currency Symbols'''. (U+20C5, U+20CF)
* Combining Long Triple Solidus Overlay and Combining Saltire Overlay (total 2 characters) will be added to '''Combining Diacritical Marks for Symbols'''. (U+20F1-U+20F2)
* Latin capital and small letter i with oblique stroke (total 2 characters) will be added to '''Latin Extended-D'''. (U+A7De-U+A7DF)
* Latin capital letter u with left hook (total 1 character) will be added to '''Latin Extended-E'''. (U+AB6E)
* Arabic Dotless Half-Yeh, Half-Yeh, Dotless Half-Jeem and Astronomical Kaf (total 4 characters) will be added to '''Arabic Extended-C'''. (U+10EC0-U+10EC1, U+10EC8, U+10EEF)
* Brahmi minimizing virama (total 1 character) will be added to '''Brahmi'''. (U+1107E)
* Tulu-Tigalari letter combining anusvara above, signs om pushpika with tail and shrii pushpika, and letter archaic II (total 5 characters) will be added to '''Tulu-Tigalari'''. (U+113CB, U+113D9-U+113DB)
* Newa Letter Heavy Ya (total 1 character) will be added to '''Newa'''. (U+11462)
* Dogra Signs Candrabindu and Avaragha (total 2 characters) will be added to '''Dogra'''. (U+1183C-U+1183D)
* Devanagari Jivamuliya and Upadhmaniya (total 2 characters) will be added to '''Devanagari Extended-A'''. (U+11B0B-U+11B0C)
* Alchemical Symbol for Calx-2 and Alchemical Symbol for Retort-2 (total 2 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED1, U+1CED5)
* Musical Symbol down arrowhead breath mark (total 1 character) will be added to '''Musical Symbols Supplement'''. (U+1D282)
* Small w with palatal hook, small n and r with double middle tilde, small capital i with retroflex hook, small open q, x with stroke, small wavy y, schwa with right hook, Romance dialectology symbols, zh ligature, Albanian letter edhe, Albanian Frashëri letters, Modifier letter capital y, and modifier letter accents (total 26 characters) will be added to '''Latin Extended-G'''. (U+1DF82-U+1DF8F, U+1DF97-U+1DFA3, U+1DFC4-U+1DFCD)
*Arabic Astronomical zero and five astronomical symbols (total 6 characters) will be added to Arabic Mathematical Alphabetic Symbols (U+1EEE0-U+1EEE5)
==Roadmap Blocks==
This is a section where proportional maps of proposed allocations to Unicode and ISO/IEC 10646 are presented. Italic indicates scripts for which detailed proposals have not yet been written.<ref>[https://unicode.org/roadmaps/smp/]</ref>
* '''Northern Palaeohispanic''' (U+10200-U+1023F)
* '''Southern Palaeohispanic''' (U+10240-U+1027F)
* '''''Shavian Quikscript''' (U+103E0-U+103FF)''
* '''Combining Diacritical Marks Extended-A''' (U+107C0-U+107FF)
* '''Proto-Sinaitic''' (U+108B0-U+108DF)
* '''''Numidian''' (U+10960-U+1097F)''
* '''Balti''' (U+10AA0-U+10ABF)
* '''Book Pahlavi''' (U+10BB0-U+10BDF)
* '''Baburi''' (U+10BE0-U+10BFF)
* '''Arabic Extended-D''' (U+10D90-U+10E5F)
* '''Landa''' (U+11250-U+1127F)
* '''Tani Lipi''' (U+114E0-U+114FF)
* '''Ranjana''' (U+11500-U+1157F)
* '''Zou''' (U+11750-U+117AF)
* '''Pyu''' (U+117B0-U+117FF)
* '''Vateluttu''' (U+11960-U+1199F)
* '''Balti-B''' (U+11CC0-U+11CFF)
* '''Tocharian''' (U+11E00-U+11E6F)
* '''Khotanese''' (U+11E70-U+11ECF)
* '''Pallava''' (U+11F60-U+11FAF)
* '''''Egyptian Hieroglyphs Extended-B''' (U+14680-U+151FF)''
* '''Mayan Hieroglyphs''' (U+15500-U+15AFF)
* '''Kore Sebeli''' (U+15B00-U+15B6F)<!--proposed to be accepted, 93 characters-->
* '''Mandombe''' (U+15B80-U+15FFF)
* '''Kurukh Banna''' (U+16140-U+1618F)
* '''Moon''' (U+161A0-U+161FF)
* '''Blissymbols''' (U+16200-U+167FF)
* '''Woleai''' (U+16B90-U+16BFF)
* '''Kpelle''' (U+16C00-U+16C7F)
* '''Tikamuli''' (U+16C80-U+16CBF)
* '''Tangsa (Khimhun)''' (U+16CD0-U+16CFF)
* '''Afaka''' (U+16D00-U+16D3F)
* '''Kulitan''' (U+16DD0-U+16DFF)
* '''''Bopomofo Extended-A''' (U+16FA0-U+16FAF)''
* '''Kanbun Extended-A''' (U+16FB0-U+16FDF)
* '''Khitan Large Script''' (U+19200-U+199FF)
* '''Pau Cin Hau Syllabary''' (U+19E00-U+1A2FF)
* '''Eskaya''' (U+1A300-U+1A75F)
* '''Rejang Extended''' (U+1A760-U+1A77F)
* '''''Kaida''''' (U+1A780-U+1A7FF)
* '''Naxi Dongba''' (U+1A800-U+1ACFF)
* '''''Naxi Geba''' (U+1AD00-U+1AFCF)''
* '''''Kana Extended-C''' (U+1AFD0-U+1AFEF)''
* '''Shuishu Logograms''' (U+1B300-U+1B5FF)
* '''Lisu Syllabic Script''' (U+1B600-U+1B9FF)
* '''Indus''' (U+1BA00-U+1BB8F)
* '''Pitman Shorthand''' (U+1BCB0-U+1BCFF)
* '''Proto-Elamite''' (U+1BE00-U+1C37F)
* '''Linear Elamite''' (U+1C380-U+1C4FF)
* '''Ndiko Jonam''' (U+1CB30-U+1CB7F)
* '''N<nowiki>'</nowiki>ti''' (U+1CB80-U+1CBAF)
* '''Old Chinese Musical Symbols (Flute and Pipa)''' (U+1D290-U+1D2BF)
* '''''Mathematical Alphanumeric Symbols Supplement''' (U+1D380-U+1D3FF)''
* '''Jianzi Format Controls''' (U+1DAE0-U+1DAFF)
* '''Eebee Hmong''' (U+1E150-U+1E1FF)
* '''Western Cham''' (U+1E200-U+1E26F)
* '''Loma''' (U+1E300-U+1E41F)
* '''Bagam''' (U+1E420-U+1E4CF)
* '''Pungchen''' (U+1E500-U+1E52F)
* '''''Pungchung''' (U+1E530-U+1E55F)''
* '''''Marchung''' (U+1E560-U+1E59F)''
* '''Brusha''' (U+1E5A0-U+1E5CF)
* '''''Chola''' (U+1E600-U+1E65F)''
* '''Box-Headed''' (U+1E660-U+1E6BF)
* '''Lampung''' (U+1E700-U+1E73F)
* '''Kerinci''' (U+1E740-U+1E76F)
* '''Buginese Supplement''' (U+1E770-U+1E7BF)
* '''''Lontara Bilang-Bilang''' (U+1E7C0-U+1E7DF)''
* '''N'Ko Supplement''' (U+1E960-1E97F)
* '''''Byblos''''' (U+1EB90-U+1EBFF)
* '''Persian Siyaq Numbers''' (U+1EC00-U+1EC7F)
* '''Diwani Siyaq Numbers''' (U+1ECC0-U+1ECFF)
* '''''Extended Pictographic Characters''' (U+1FC00-U+1FFFF)''
== References ==
{{reflist}}
nx923rbwrlugxfl10yux31jxqmtuk9t
4656285
4656284
2026-08-04T18:41:47Z
Alexlatham96
377450
/* Code Points Provisionally Assigned */
4656285
wikitext
text/x-wiki
{{pp-protected|small=yes}}
{{Unicode page}}
{{TOC right}}
{{refimprove|date=June 2017}}
This page is about each version specification, and the differences between the versions.
== Unicode 1.0 ==
Unicode 1.0 was the first version of Unicode, released October 1991. It encoded 7,094 new characters.
=== “Blocks” ===
This version of Unicode did not formally group characters in blocks. But in comparison with version 2.0, the following “blocks” were available:
U+0000-U+FFFD
51 Blocks
* '''Basic Latin (formerly called ASCII)''' (U+0000-U+007F), containing 128 characters.
* '''Latin-1 Supplement (formerly called Latin1)''' (U+0080-U+00FF), containing 128 characters.
* '''Latin Extended-A''' '''(formerly called European Latin)''' (U+0100-U+017F), containing 127 characters.
* '''Latin Extended-B''' '''(formerly called Extended Latin)''' (U+0180-U+01FF), containing 113 characters.
* '''IPA Extensions''' '''(formerly called Standard Phonetic)''' (U+0250-U+02AF), containing 89 characters.
* '''Spacing Modifier Letters''' '''(formerly called Modifier Letters)''' (U+02B0-U+02FF), containing 57 characters.
* '''Combining Diacritical Marks''' '''(formerly called Generic Diacritical Marks)''' (U+0300-U+036F), containing 66 characters.
* '''Greek and Coptic''' '''(formerly called Greek)''' (U+0370-U+03FF), containing 112 characters.
* '''Cyrillic''' (U+0400-U+04FF), containing 192 characters.
* '''Armenian''' (U+0530-U+058F), containing 84 characters.
* '''Hebrew''' (U+0590-U+05FF), containing 52 characters.
* '''Arabic''' (U+0600-U+06FF), containing 169 characters.
* '''Devanagari''' (U+0900-U+097F), containing 104 characters.
* '''Bengali''' (U+0980-U+09FF), containing 89 characters.
* '''Gurmukhi''' (U+0A00-U+0A7F), containing 74 characters.
* '''Gujarati''' (U+0A80-U+0AFF), containing 75 characters.
* '''Oriya''' (U+0B00-U+0B7F), containing 78 characters.
* '''Tamil''' (U+0B80-U+0BFF), containing 61 characters.
* '''Telugu''' (U+0C00-U+0C7F), containing 80 characters.
* '''Kannada''' (U+0C80-U+0CFF), containing 80 characters.
* '''Malayalam''' (U+0D00-U+0D7F), containing 78 characters.
* '''Thai''' (U+0E00-U+0E7F), containing 92 characters.
* '''Lao''' (U+0E80-U+0EFF), containing 70 characters.
* '''Tibetan''' (U+1000-U+105F), containing 71 characters.
* '''Georgian''' (U+10A0-U+10FF), containing 78 characters.
* '''General Punctuation''' (U+2000-U+206F), containing 67 characters.
* '''Superscripts and Subscripts''' (U+2070-U+209F), containing 28 characters.
* '''Currency Symbols''' (U+20A0-U+20CF), containing 11 characters.
* '''Combining Marks for Symbols''' '''(formerly called Diacritical Marks for Symbols)''' (U+20D0-U+20FF), containing 18 characters.
* '''Letterlike Symbols''' (U+2100-U+214F), containing 57 characters.
* '''Number Forms''' (U+2150-U+218F), containing 48 characters.
* '''Arrows''' (U+2190-U+21FF), containing 91 characters.
* '''Mathematical Operators''' (U+2200-U+22FF), containing 242 characters.
* '''Miscellaneous Technical''' (U+2300-U+23FF), containing 43 characters.
* '''Control Pictures''' '''(formerly called Pictures for Control Codes)''' (U+2400-U+243F), containing 37 characters.
* '''Optical Character Recognition''' (U+2440-U+245F), containing 11 characters.
* '''Enclosed Alphanumerics''' (U+2460-U+24FF), containing 139 characters.
* '''Box Drawing''' '''(formerly called Form and Chart Components)''' (U+2500-U+257F), containing 128 characters.
* '''Block Elements''' '''(formerly called Blocks)''' (U+2580-U+259F), containing 22 characters.
* '''Geometric Shapes''' (U+25A0-U+25FF), containing 79 characters.
* '''Miscellaneous Symbols''' '''(formerly called Miscellaneous Dingbats)''' (U+2600-U+26FF), containing 106 characters.
* '''Dingbats''' '''(formerly called Zapf Dingbats)''' (U+2700-U+27BF), containing 160 characters.
* '''CJK Symbols and Punctuation''' (U+3000-U+303F), containing 56 characters.
* '''Hiragana''' (U+3040-U+309F), containing 90 characters.
* '''Katakana''' (U+30A0-U+30FF), containing 90 characters.
* '''Bopomofo''' (U+3100-U+312F), containing 40 characters.
* '''Hangul Compatibility Jamo (formerly called Hangul Elements)''' (U+3130-U+318F), containing 94 characters.
* '''Kanbun (formerly called CJK Miscellaneous)''' (U+3190-U+31FF), containing 16 characters.
* '''Enclosed CJK Letters and Months''' '''(formerly called''' '''Enclosed CJK Letters and Ideographs)''' (U+3200-U+32FF), containing 191 characters.
* '''CJK Compatibility''' '''(formerly called CJK Squared Words for U+3300-U+337F and CJK Squared Abbreviations for U+3380-33FF)''' (U+3300-U+33FF), containing 187 characters.
* '''Hangul''' (U+3400-U+3D2D), containing 2,350 characters.
* '''Private Use Area''' (U+E000-U+FDFF), reserved for 5,632 characters.
* '''CJK Compatibility Forms''' '''(formerly called CNS 11643 Compatibility)''' (U+FE30-U+FE4F), containing 28 characters.
* '''Small Form Variants''' '''(formerly called Small Variants)''' (U+FE50-U+FE6F), containing 26 characters.
* '''Arabic Presentation Forms-B''' '''(formerly called Basic Glyphs for Arabic Language)''' (U+FE70-U+FEFF), containing 140 characters.
* '''Halfwidth and Fullwidth Forms''' '''(formerly called Halfwidth and Fullwidth Variants)''' (U+FF00-U+FFEF), containing 216 characters.
* '''Specials''' '''(formerly called Special)''' (U+FFF0-U+FFFF), containing 1 character.
== Unicode 1.0.1 ==
Unicode 1.0.1 was released June 1992. It encoded 28,292 characters, adding 21,204 new characters and removing 6 characters, for a net increase of 21,198 characters.
=== New blocks ===
* '''CJK Unified Ideographs''' (U+4E00-U+9FFF), containing 20,902 Han Ideographs for Chinese, Japanese and Korean, was added.
* '''CJK Compatibility Ideographs''' (U+F900-U+FAFF), containing 302 Han Ideographs for compatibility with existing character sets, was added.
=== Removed characters ===
* Letters Ka and Kha with Ogonek (total 4 characters) were removed from '''Cyrillic'''. (U+04C5-U+04C6 and U+04C9-U+04CA)
* APL Compose Operator and APL Out (total 2 characters) were removed from '''Miscellaneous Technical'''. (U+2300-U+2301)
=== Rearranged characters ===
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
*'''Circled Katakana:''' ''The characters well be arranged in modern order: e.g., A, I, U, E, O, KA, KI'' (U+32D0-U+32FE)
*'''Basic Glyphs For Arabic Language:''' ''The character shapes will be arranged in different order: Isolate, Final, Initial and Medial'' (U+FE80-FEFC)
=== Characters with semantics changed ===
*'''Zero Width Non-Joiner''' [ZWNJ] (U+20DC)
*'''Zero Width Joiner''' [ZWJ] (U+20DD)
== Unicode 1.1 ==
Unicode 1.1 was released June 1993. It encoded 34,168 characters, adding 5,969 new characters and removing 93 characters, for a net increase of 5,876 characters. It finalized the long anticipated Han Unification.
=== New blocks ===
* '''Hangul Jamo''' (U+1100-U+11FF), containing 240 ''jamo'' for the Hangul script, was added.
* '''Latin Extended Additional''' (U+1E00-U+1EFF), containing 245 precomposed characters for transliteration and Vietnamese, was added.
* '''Greek Extended''' (U+1F00-U+1FFF), containing 233 precomposed characters for polytonic Greek, was added.
* '''Hangul Supplementary-A''' (U+3D2E-U+44B7), containing 1,930 precomposed syllables for the Hangul script, was added.
* '''Hangul Supplementary-B''' (U+44B8-U+4DFF), containing 2,376 precomposed syllables for the Hangul script, was added.
* '''Alphabetic Presentation Forms''' (U+FB00-U+FB4F), containing 57 precomposed characters and ligatures, was added.
* '''Arabic Presentation Forms-A''' (U+FB50-U+FDFF), containing 593 combinations of Arabic letters, was added.
* '''Combining Half Marks''' (U+FE20-U+FE2F), containing 4 halves of diacritical marks, was added.
=== Extended blocks ===
* The long S (ſ) (total 1 character) was added to '''Latin Extended-A'''. (U+017F)
* The Hungarian Dz, characters for transliteration purposes and precomposed characters with double grave and inverted breve (total 35 characters) were added to '''Latin Extended-B''' (U+01F1-U+01F5 and U+01FA-U+0217). The block was expanded from (U+0180-U+01FF) to (U+0180-U+024F)
* Diacritics for polytonic Greek and double width diacritics (total 6 characters) were added to '''Combining Diacritical Marks'''. (U+0342-U+0345 and U+0360-U+0361)
* Compatibility character now deprecated, Ano Teleia, and other characters (total 5 characters) were added to '''Greek and Coptic''' (U+0374-U+0375, U+037A, U+037E and U+0387).
* Additional characters for non-Slavic languages (total 38 characters) were added to '''Cyrillic'''. (U+04D0-U+04EB, U+04EE-U+04F5 and U+04F8-U+04F9)
* A ligature of Ech and Yiwn (և) (total 1 character) was added to '''Armenian'''. (U+0587)
* One deprecated compatibility character and several characters for biblical texts (total 25 characters) were added to '''Arabic'''. (U+066D and U+06D6-U+06ED)
* A sign Virama (total 1 character) was added to '''Gurmukhi''' (U+0A4D).
* Letters Candra O and E (total 3 characters) were added to '''Gujarati'''. (U+0A8D, U+0A91 and U+0AC9)
* An Ai Length mark (total 1 character) was added to '''Oriya'''. (U+0B56)
* An undertie, a pair of brackets and six formatting characters now deprecated (total 9 characters) were added to '''General Punctuation'''. (U+203F, U+2045-U+2046 and U+206A-U+206F)
* Some additional symbols and the complete set of APL functional symbols (total 79 characters) were added to '''Miscellaneous Technical'''. (U+2300 and U+232D-U+237A)
* A large circle (◯) (total 1 character) was added to '''Geometric Shapes'''. (U+25EF)
* The ideographic telegraph line feed separator symbol (〷) (total 1 character) was added to '''CJK Symbols and Punctuation'''. (U+3037)
* Four Katakana letters not in use since 1945 (total 4 characters) were added to '''Katakana'''. (U+30F7-U+30FA)
* Ideographic telegraph symbols for the twelve months (total 12 characters) were added to '''Enclosed CJK Letters and Months'''. (U+32C0-U+32CB)
* Ideographic telegraph symbols for hours and days and six additional measure units (total 62 characters) were added to '''CJK Compatibility'''. (U+3358-U+3376 and U+33E0-U+33FE)
* Some more space (total 2,304 characters) was added to the '''Private Use Area'''.
* Seven halfwidth geometric shapes (total 7 characters) were added to '''Halfwidth and Fullwidth Forms'''. (U+FFE8-U+FFEE)
=== Removed blocks ===
* '''Tibetan''', containing 71 letters for the Tibetan script, was removed from the Unicode standard.
=== Removed characters ===
* A total of 10 characters were removed from '''Greek and Coptic'''. (U+0370-U+0372, U+03D7-U+03D9, U+03DB, U+03DD, U+03DF, and U+03E1)
* Point Varika (total 1 character) was removed from ''Hebrew''. (U+05F5)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Thai'''. (U+0E70-U+0E74)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Lao'''. (U+0EF0-U+0EF4)
* An Ideographic Ditto Mark (total 1 character) was removed from '''CJK Symbols and Punctuation''' (U+3004) and merged with CJK Unified Ideograph-4EDD.
=== Rearranged characters ===
* Greek character U+03F3 was changed from Spacing Tonos to Letter Yot.
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
== Unicode 2.0 ==
Unicode 2.0 was released July 1996. It encoded 38,885 characters, adding 11,373 new characters and removing 6,656 characters, for a net increase of 4,717 characters. This was the first Unicode version to reserve blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Hangul Syllables''' (U+AC00-U+D7AF), containing 11,172 precomposed syllables for the Hangul script, was added.
* '''High Surrogates''' (U+D800-U+DB7F), setting aside 896 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''High Private Use Surrogates''' (U+DB80-U+DBFF), setting aside 128 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Low Surrogates''' (U+DC00-U+DFFF), setting aside 1,024 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Supplementary Private Use Area-A''' (U+F0000-U+FFFFF), reserving 65,534 characters for private use, was added.
* '''Supplementary Private Use Area-B''' (U+100000-U+10FFFF), reserving 65,534 characters for private use, was added.
=== Reinstated blocks ===
* '''Tibetan''' (U+0F00-U+0FFF), now containing 168 characters for the Tibetan script including religious signs, was readded.
=== Removed blocks ===
* '''Hangul''', containing 2,350 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-A''', containing 1,930 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-B''', containing 2,376 precomposed syllables for the Hangul script, was removed from the Unicode standard.
=== Extended blocks ===
* Cantillation marks for use in religious texts (total 31 characters) were added to '''Hebrew'''. (U+0591-U+05A1, U+05A3-U+05AF and U+05C4)
* A long S with Dot Above (total 1 character) was added to '''Latin Extended Additional'''. (U+1E9B)
* A Vietnamese Dong sign (total 1 character) was added to '''Currency Symbols'''. (U+20AB)
== Unicode 2.1 ==
Unicode 2.1 was released May 1998. It encoded 38,887 characters, adding only 2 new characters.
=== Extended blocks ===
* A Euro sign (total 1 character) was added to '''Currency Symbols'''. (U+20AC)
* An Object Replacement Character (total 1 character) was added to '''Specials'''. (U+FFFC)
== Unicode 3.0 ==
Unicode 3.0 was released September 1999. It was a big update and encoded 49,194 characters, adding 10,307 new characters.
=== New blocks ===
* '''Syriac''' (U+0700-U+074F), containing 71 characters used for writing in Syriac script, was added.
* '''Thaana''' (U+0780-U+07BF), containing 49 characters used for writing in Thaana script, was added.
* '''Sinhala''' (U+0D80-U+0DFF), containing 80 characters for the Sinhala script, was added.
* '''Myanmar''' (U+1000-U+109F), containing 78 characters for the Burmese script, was added.
* '''Ethiopic''' (U+1200-U+137F), containing 345 syllables and punctuation marks for the Ethiopic script, was added.
* '''Cherokee''' (U+13A0-U+13FF), containing 85 syllables for the Cherokee script, was added.
* '''Unified Canadian Aboriginal Syllabics''' (U+1400-U+167F), containing 630 syllables and punctuation marks for writing in indigenous languages of Canada, was added.
* '''Ogham''' (U+1680-U+169F), containing 29 characters for the ancient Ogham script, was added.
* '''Runic''' (U+16A0-U+16FF), containing 81 characters for the Germanic runes, was added.
* '''Khmer''' (U+1780-U+17FF), containing 103 characters for the Khmer script, was added.
* '''Mongolian''' (U+1800-U+18AF), containing 155 characters for the classical Mongolian script, was added.
* '''Braille Patterns''' (U+2800-U+28FF), containing 256 Braille letters, was added.
* '''CJK Radicals Supplement''' (U+2E80-U+2EFF), containing 115 non-Kangxi radicals, was added.
* '''Kangxi Radicals''' (U+2F00-U+2FDF), containing 214 radicals from the Kangxi dictionary, was added.
* '''Ideographic Description Characters''' (U+2FF0-U+2FFF), containing 12 characters used to describe a Han ideograph not available in the font, was added.
* '''Bopomofo Extended''' (U+31A0-U+31BF), containing 24 characters used for phonetic transcription of minority languages of Taiwan, was added.
* '''CJK Unified Ideographs Extension A''' (U+3400-U+4DBF), containing 6,582 additional Han Ideographs, was added.
* '''Yi Syllables''' (U+A000-U+A48F), containing 1,165 syllables of the modern Yi script, was added.
* '''Yi Radicals''' (U+A490-U+A4CF), containing 50 radicals of Yi Syllables, was added.
=== Extended blocks ===
* Additional precomposed characters, letters and capital letters of lowercase-only letters (total 30 characters) were added to '''Latin Extended-B'''. (U+01F6-U+01F9, U+0218-U+021F and U+0222-U+0233)
* Extensions for disordered speech (total 5 characters) were added to '''IPA Extensions'''. (U+02A9-U+02AD)
* Some additional modifier letters (total 6 characters) were added to '''Spacing Modifier Letters'''. (U+02DF and U+02EA-U+02EE)
* Additional combining diacritics for IPA (total 10 characters) were added to '''Combining Diacritical Marks'''. (U+0346-U+034E and U+0362)
* Lowercase versions of archaic letters and the Kai symbol (total 5 characters) were added to '''Greek and Coptic'''. (U+03D7, U+03DB, U+03DD, U+03DF and U+03E1)
* Nonstandard letters for Macedonian, combining numeral signs and three letters for Kildin Sami (total 12 characters) were added to '''Cyrillic'''. (U+0400, U+040D, U+0450, U+045D, U+0488-U+0489, U+048C-U+048F and U+04EC-U+04ED)
* A Hyphen (total 1 character) was added to '''Armenian'''. (U+058A)
* Combining hamza and maddah and nine additional Arabic characters (total 12 characters) were added to '''Arabic'''. (U+0653-U+0655, U+06B8-U+06B9, U+06BF, U+06CF and U+06FA-U+06FE)
* Additional letters and religious symbols (total 25 characters) were added to '''Tibetan'''. (U+0F6A, U+0F96, U+0FAE-U+0FB0, U+0FB8, U+0FBA-U+0FBC, U+0FBE-U+0FCC and U+0FCF)
* A narrow no-break space and 6 additional punctuation marks (total 7 characters) were added to '''General Punctuation'''. (U+202F and U+2048-U+204D)
* The Kip, Tugrik and Drachma sign (total 3 characters) were added to '''Currency Symbols'''. (U+20AD-U+20AF)
* An enclosing screen and an enclosing key (total 2 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E2-U+20E3)
* The information symbol and a rotated Q (total 2 characters) were added to '''Letterlike Symbols'''. (U+2139-U+213A)
* A mirrored Roman capital numeral hundred (Ↄ) (total 1 character) was added to '''Number Forms'''. (U+2183)
* Some additional arrows (total 9 characters) were added to '''Arrows'''. (U+21EB-U+21F3)
* Some additional technical symbols, including common keys on a 101 keyboard (total 33 characters) were added to '''Miscellaneous Technical'''. (U+2301, U+237B and U+237D-U+239A)
* Two additional control pictures (total 2 characters) were added to '''Control Pictures'''. (U+2425-U+2426)
* Squares and circles with quadrants (total 8 characters) were added to '''Geometric Shapes'''. (U+25F0-U+25F7)
* Two Syriac crosses and a signature mark (total 3 characters) were added to '''Miscellaneous Symbols'''. (U+2619 and U+2670-U+2671)
* Three Hangzhou numerals and a variation indicator (total 4 characters) were added to '''CJK Symbols and Punctuation'''. (U+3038-U+303A and U+303E)
* A ligature Yod with Hiriq (יִ) (total 1 character) was added to '''Alphabetic Presentation Forms'''. (U+FB1D)
* Three additional control characters for ruby markup (total 3 characters) were added to '''Specials'''. (U+FFF9-U+FFFB)
== Unicode 3.1 ==
Unicode 3.1 was released March 2001. It encoded 94,140 characters, adding 44,946 new characters, and mainly focused on blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Old Italic''' (U+10300-U+1032F), containing 35 letters for the Etruscan script, was added.
* '''Gothic''' (U+10330-U+1034F), containing 27 letters for the Gothic script, was added.
* '''Deseret''' (U+10400-U+1044F), containing 76 letters for the constructed Deseret script, was added.
* '''Byzantine Musical Symbols''' (U+1D000-U+1D0FF), containing 246 symbols for musical notation in Byzantine, was added.
* '''Musical Symbols''' (U+1D100-U+1D1FF), containing 219 characters for current musical notation, was added.
* '''Mathematical Alphanumeric Symbols''' (U+1D400-U+1D7FF), containing 991 Latin and Greek letters in serif, sans-serif, bold, italic, double-struck, script and Fraktur/Blackletter, was added.
* '''CJK Unified Ideographs Extension B''' (U+20000-U+2A6DF), containing 42,711 additional Chinese Ideographs, was added.
* '''CJK Compatibility Ideographs Supplement''' (U+2F800-U+2FA1F), containing 542 additional Chinese Ideographs for compatibility purposes, was added.
* '''Tags''', containing 97 language tags, was added. (U+E0000-U+E007F)
=== Extended noncharacters ===
* The Noncharacters range: U+FDD0..U+FDEF were added to '''Arabic Presentation Forms-A'''.
=== Extended blocks ===
* The capital Theta symbol and the Lunate Epsilon symbol (total 2 characters) were added to '''Greek and Coptic'''. (U+03F4-U+03F5)
=== Characters and Scripts Under Investigation or Rejected ===
* Khmer Sign Laak Was Rejected. (U+17DD) From '''Khmer.'''
* Georgian Letter U-Brjuu Was Rejected. From '''Georgian.'''
== Unicode 3.2 ==
Unicode 3.2 was released March 2002. It encoded 95,156 characters, adding 1,016 new characters.
=== New blocks ===
* '''Cyrillic Supplementary (now Cyrillic Supplement)''' (U+0500-U+052F), containing 16 characters used for the Komi language, was added.
* '''Tagalog''' (U+1700-U+171F), containing 20 characters for the Baybayin script, was added.
* '''Hanunoo''' (U+1720-U+173F), containing 23 characters and punctuation for the Hanunó'o script, was added.
* '''Buhid''' (U+1740-U+175F), containing 20 characters for the Buhid script, was added.
* '''Tagbanwa''' (U+1760-U+177F), containing 18 characters for the Tagbanwa script, was added.
* '''Miscellaneous Mathematical Symbols-A''' (U+27C0-U+27EF), containing 28 symbols used in math notation, was added.
* '''Supplemental Arrows-A''' (U+27F0-U+27FF), containing 16 additional arrows, was added.
* '''Supplemental Arrows-B''' (U+2900-U+297F), containing 128 special arrows, was added.
* '''Miscellaneous Mathematical Symbols-B''' (U+2980-U+29FF), containing 128 additional mathematical symbols, was added.
* '''Supplemental Mathematical Operators''' (U+2A00-U+2AFF), containing 256 additional mathematical operators, was added.
* '''Katakana Phonetic Extensions''' (U+31F0-U+31FF), containing 16 Katakana letters used for Ainu, was added.
* '''Variation Selectors''' (U+FE00-U+FE0F), containing 16 symbols used for indicating variations, was added.
=== Extended blocks ===
* A capital letter N with Long Right Leg (total 1 character) was added to '''Latin Extended-B'''. (U+0220)
* The combining grapheme joiner and combining Latin letters used in medieval texts (total 14 characters) were added to '''Combining Diacritical Marks'''. (U+034F and U+0363-U+036F)
* The Qoppa and a reversed lunate epsilon symbol (total 3 characters) were added to '''Greek and Coptic'''. (U+03D8-U+03D9 and U+03F6)
* Four additional letters used for the Kildin Sami language (total 8 characters) were added to '''Cyrillic'''. (U+048A-U+048B, U+04C5-U+04C6, U+04C9-U+04CA and U+04CD-U+04CE)
* A dotless Beh and a dotless Qaf (total 2 characters) were added to '''Arabic'''. (U+066E-U+066F)
* A Letter for Addu dialect (total 1 character) was added to '''Thaana'''. (U+07B1)
* The letters Yn and Elifi (total 2 characters) were added to '''Georgian'''. (U+10F7-U+10F8)
* Some additional punctuation marks and control characters (total 12 characters) were added to '''General Punctuation'''. (U+2047, U+204E-U+2052, U+2057 and U+205F-U+2063)
* A superscript letter I (total 1 character) was added to '''Superscripts and Subscripts'''. (U+2071)
* German Penny and Peso sign (total 2 characters) were added to '''Currency Symbols'''. (U+20B0-U+20B1)
* Some additional combining characters (total 7 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E4-U+20EA)
* Some double-struck and reversed/turned letters (total 15 characters) were added to '''Letterlike Symbols'''. (U+213D-U+214B)
* Some additional arrows (total 12 characters) were added to '''Arrows'''. (U+21F4-U+21FF)
* Some additional mathematical operators (total 14 characters) were added to '''Mathematical Operators'''. (U+22F2-U+22FF)
* Variable-width and additional symbols (total 53 characters) were added to '''Miscellaneous Technical'''. (U+237C and U+239B-U+23CE)
* Black and double circled numerals (total 20 characters) were added to '''Enclosed Alphanumerics'''. U+24EB-U+24FE)
* Quadrant elements (total 10 characters) were added to '''Block Elements'''. (U+2596-U+259F)
* Some additional triangles and squares (total 8 characters) were added to '''Geometric Shapes'''. (U+25F8-U+25FF)
* Shogi pieces ,recycling symbols, dices and dotted circles (total 24 characters) were added to '''Miscellaneous Symbols'''. (U+2616-U+2617, U+2672-U+267D and U+2680-U+2689)
* Additional parenthesis (total 14 characters) were added to '''Dingbats'''. (U+2768-U+2775)
* Three additional marks (total 3 characters) were added to '''CJK Symbols and Punctuation'''. (U+303B-U+303D)
* A digraph and two additional characters (total 3 characters) were added to '''Hiragana'''. (U+3095-U+3096 and U+309F)
* A digraph and a double hyphen (total 2 characters) were added to '''Katakana'''. (U+30A0 and U+30FF)
* Additional circled numerals (total 30 characters) were added to '''Enclosed CJK Letters and Months'''. (U+3251-U+325F and U+32B1-U+32BF
* Five missing radicals (total 5 characters) were added to '''Yi Radicals'''. (U+A4A2-U+A4A3, U+A4B4, U+A4C1, U+A4C5)
* Additional compatibility characters (total 59 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA30-U+FA6A)
* A Rial sign (total 1 character) was added to '''Arabic Presentation Forms-A'''. (U+FDFC)
* Two sesame dots (total 2 characters) were added to '''CJK Compatibility Forms'''. (U+FE45-U+FE46)
* A tail fragment (total 1 character) was added to '''Arabic Presentation Forms-B'''. (U+FE73)
* A pair of double parenthesis (total 2 characters) was added to '''Halfwidth and Fullwidth Forms'''. (U+FF5F-U+FF60)
== Unicode 4.0 ==
Unicode 4.0 was released April 2003. It encoded 96,382 characters, adding 1,226 new characters.
=== New blocks ===
* '''Limbu''', containing 66 characters for the Limbu abugida, was added.
* '''Tai Le''', containing 35 letters for the Tai Le script, was added.
* '''Khmer Symbols''', containing 32 symbols for the lunar calendar, was added.
* '''Phonetic Extensions''', containing 108 letters used in phonetic transcription, was added.
* '''Miscellaneous Symbols and Arrows''', containing 14 additional arrows, was added.
* '''Yijing Hexagram Symbols''', containing 64 hexagrams, was added.
* '''Linear B Syllabary''', containing 88 syllables of the ancient Linear B script, was added.
* '''Linear B Ideograms''', containing 123 ideograms of the ancient Linear B script, was added.
* '''Aegean Numbers''', containing 57 numerals used in the Aegean area, was added.
* '''Ugaritic''', containing 31 characters used in Ugaritic cuneiform, was added.
* '''Shavian''', containing 48 letters used for the artificial Shavian script, was added.
* '''Osmanya''', containing 40 characters used in the artificial Osmanya script, was added.
* '''Cypriot Syllabary''', containing 55 characters formerly used on Cyprus, was added.
* '''Tai Xuan Jing Symbols''', containing 87 symbols of Tai Xuan Jing, was added.
* '''Variation Selectors Supplement''', containing 240 additional variation selectors, was added.
=== Extended blocks ===
* Letters with curl used in Sinology (total 4 characters) were added to '''Latin Extended-B'''.
* Former IPA letters (total 2 characters) were added to '''IPA Extensions'''.
* Some additional characters (total 17 characters) were added to '''Spacing Modifier Letters'''.
* Additional combining double-width diacritics and diacritics corresponding to their spacing equivalent (total 11 characters) were added to '''Combining Diacritical Marks'''.
* The archaic letters Sho and San and the capital Lunate Sigma (total 5 characters) were added to '''Greek and Coptic'''.
* Some additional markers, biblical signs, and letters with inverted V (total 19 characters) were added to '''Arabic'''.
* Letters used for foreign words from Persian and Sogdian (total 6 characters) were added to '''Syriac'''.
* The short A (ऄ) (total 1 character) was added to '''Devanagari'''.
* The Avagraha sign (ঽ) (total 1 character) was added to '''Bengali'''.
* The Adak Bindi and Visarga signs (total 2 characters) were added to '''Gurmukhi'''.
* The vocalic l and ll and the Rupee sign (total 5 characters) were added to '''Gujarati'''.
* The letters Va and Wa (total 2 characters) were added to '''Oriya'''.
* Additional signs for date and finance environments (total 8 characters) were added to '''Tamil'''.
* The Nukta and Avagraha signs (total 2 characters) were added to '''Kannada'''.
* Some symbols and signs (total 11 characters) were added to '''Khmer'''.
* An inverted undertie and a swung dash (total 2 characters) were added to '''General Punctuation'''.
* The facsimile sign (℻) (total 1 character) was added to '''Letterlike Symbols'''.
* The eject symbol and a vertical line (total 2 characters) were added to '''Miscellaneous Technical'''.
* A black circled digit zero (⓿) (total 1 character) was added to '''Enclosed Alphanumerics'''.
* Monograms and diagrams, flags, warning and weather symbols and a cup of tea (total 12 characters) were added to '''Miscellaneous Symbols'''.
* Additional parenthesized and circled Korean characters and supplemental signs (total 9 characters) were added to '''Enclosed CJK Letters and Months'''.
* Additional measure units (total 7 characters) were added to '''CJK Compatibility'''.
* An additional Arabic sign (﷽) (total 1 character) was added to '''Arabic Presentation Forms-A'''.
* A pair of vertical parenthesis (total 2 characters) was added to '''CJK Compatibility Forms'''.
* The letters Oi and Ew (total 4 characters) were added to '''Deseret'''.
* A small script l (ℓ) (total 1 character) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 4.1 ==
Unicode 4.1 was released March 31, 2005. It encoded 97,655 characters, adding 1,273 new characters.
=== New blocks ===
* '''Arabic Supplement''', containing 30 characters for various languages written with the Arabic script, was added.
* '''Ethiopic Supplement''', containing 26 characters and signs for Sebatbeit, was added.
* '''New Tai Lue''', containing 80 characters for the New Tai Lue script, was added.
* '''Buginese''', containing 30 characters for the Lontara script, was added.
* '''Phonetic Extensions Supplement''', containing 64 additional letters for phonetic transcription, was added.
* '''Combining Diacritical Marks Supplement''', containing 4 additional diacritics, was added.
* '''Glagolitic''', containing 94 characters for the Glagolitic script, was added.
* '''Coptic''', containing 114 characters for the Coptic script, was added.
* '''Georgian Supplement''', containing 38 Nuskhuri letters, was added.
* '''Tifinagh''', containing 55 characters for the Tifinagh script, was added.
* '''Ethiopic Extended''', containing 79 additional Ethiopic syllables, was added.
* '''Supplemental Punctuation''', containing 26 additional punctuation marks, was added.
* '''CJK Strokes''', containing 16 strokes for Han Ideographs, was added.
* '''Modifier Tone Letters''', containing 23 letters for Chinese tones, was added.
* '''Syloti Nagri''', containing 44 characters for the Syloti Nagri abugida, was added.
* '''Vertical Forms''', containing 10 punctuation marks suited for vertical text, was added.
* '''Ancient Greek Numbers''', containing 75 numerals and signs used in Ancient Greek, was added.
* '''Old Persian''', containing 50 characters for Old Persian cuneiform, was added.
* '''Kharoshthi''', containing 65 characters for the Kharoshthi abugida, was added.
* '''Ancient Greek Musical Notation''', containing 70 musical signs used in Ancient Greek, was added.
=== Extended blocks ===
* Letters for Sencoten, digraphs, letters with swash tail and other additions (total 11 characters) were added to '''Latin Extended-B'''.
* Additional diacritics for transliteration (total 5 characters) were added to '''Combining Diacritical Marks'''.
* Rho with stroke, reversed and dotted Lunate Sigma (total 4 characters) were added to '''Greek and Coptic'''.
* Ghe with descender (Ӷ) (total 2 characters) was added to '''Cyrillic'''.
* An additional biblical mark and some punctuation marks (total 4 characters) were added to '''Hebrew'''.
* Additional biblical marks, punctuation marks and the Afghani sign (total 8 characters) were added to '''Arabic'''.
* A glottal stop (ॽ) (total 1 character) was added to '''Devanagari'''.
* The Khanda Ta letter (ৎ) (total 1 character) was added to '''Bengali'''.
* The letter Sha and the digit zero (total 2 characters) were added to '''Tamil'''.
* Two marks used in Bhutan (total 2 characters) were added to '''Tibetan'''.
* Two letters and a modifier letter (total 3 characters) were added to '''Georgian'''.
* Some additional syllables (total 11 characters) were added to '''Ethiopic'''.
* Additional phonetic symbols (total 20 characters) were added to '''Phonetic Extensions'''.
* A flower and dot punctuation marks (total 9 characters) were added to '''General Punctuation'''.
* Additional subscript letters (total 5 characters) were added to '''Superscripts and Subscripts'''.
* The Guarani, Austral, Hryvnia and Cedi signs (total 4 characters) were added to '''Currency Symbols'''.
* A combining long double solidus (total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* The per sign and a double-struck letter Pi (total 2 characters) were added to '''Letterlike Symbols'''.
* Metrical and electrical signs (total 11 characters) were added to '''Miscellaneous Technical'''.
* Additional gender and map symbols (total 30 characters) were added to '''Miscellaneous Symbols'''.
* Some additional mathematical symbols (total 7 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional arrows and squares (total 6 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* A circled Hangul character (㉾) (total 1 character) was added to '''Enclosed CJK Letters and Months'''.
* Additional Han Ideographs (total 22 characters) were added to '''CJK Unified Ideographs'''.
* Additional Compatibility Ideographs (total 106 characters) were added to '''CJK Compatibility Ideographs'''.
* Italic dotless small i and j (total 2 characters) were added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.0 ==
Unicode 5.0 was released July 14, 2006. It encoded 99,024 characters, adding 1,369 new characters.
=== New blocks ===
* '''N'Ko''', containing 59 characters for the N'Ko script, was added.
* '''Balinese''', containing 121 characters and musical signs for the Balinese abugida, was added.
* '''Latin Extended-C''', containing 17 letters for various languages, was added.
* '''Latin Extended-D''', containing 2 characters for UPA, was added.
* '''Phags-pa''', containing 56 characters for the Phags-pa script, was added.
* '''Phoenician''', containing 27 letters and numerals for the Phoenician script, was added.
* '''Cuneiform''', containing 879 signs for Sumero-Akkadian Cuneiform, was added.
* '''Cuneiform Numbers and Punctuation''', containing 103 numerals and punctuation signs for Sumero-Akkadian Cuneiform, was added.
* '''Counting Rod Numerals''', containing 18 numerals used with counting rods, was added.
=== Extended blocks ===
* Various letters used mainly for aboriginal languages (total 14 characters) were added to '''Latin Extended-B'''.
* Lowercase lunate sigma symbols (total 3 characters) were added to '''Greek and Coptic'''.
* Lowercase palochka and 3 letters used in Nivkh (total 7 characters) were added to '''Cyrillic'''.
* Two letters used in Khanty and other languages (total 4 characters) were added to '''Cyrillic Supplement'''.
* A specific point meant for Vav (total 1 character) was added to '''Hebrew'''.
* Four letters used in Sindhi (total 4 characters) were added to '''Devanagari'''.
* Four letters used in Sanskrit (total 4 characters) were added to '''Kannada'''.
* Additional IPA diacritics (total 9 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Four combining arrows (total 4 characters) were added to '''Combining Diacritical Marks for Symbols'''.
* A danish symbol and a lowercase turned F (total 2 characters) were added to '''Letterlike Symbols'''.
* A lowercase reversed C (ↄ) (total 1 character) was added to '''Number Forms'''.
* Vertical parenthesis, geometric forms and electrical symbols (total 12 characters) were added to '''Miscellaneous Technical'''.
* A neuter symbol (⚲) (total 1 character) was added to '''Miscellaneous Symbols'''.
* Four additional mathematical symbols (total 4 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional squares, pentagons and hexagons (total 11 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Four additional tone letters used in Chinantec (total 4 characters) were added to '''Modifier Tone Letters'''.
* Bold Digamma (𝟊/'''Ϝ''') (total 2 characters) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.1 ==
Unicode 5.1 was released April 4, 2008. It encoded 100,648 characters, adding 1,624 new characters.
=== New blocks ===
* '''Sundanese''', containing 55 letters for Sundanese script, was added.
* '''Lepcha''', containing 74 letters for Lepcha script, was added.
* '''Ol Chiki''', containing 48 letters for Ol Chiki script, was added.
* '''Cyrillic Extended-A''', containing 32 letters for combining Cyrillic letters, was added.
* '''Vai''', containing 300 letters for Vai script, was added.
* '''Cyrillic Extended-B''', containing 78 letters for additional Cyrillic characters, was added.
* '''Saurashtra''', containing 81 letters for Saurashtra script, was added.
* '''Kayah Li''', containing 48 letters for Kayah languages, was added.
* '''Rejang''', containing 37 letters for Rejang script, was added.
* '''Cham''', containing 83 letters for Cham script, was added.
* '''Ancient Symbols''', containing 12 characters for weights and measures and other Ancient symbols, was added.
* '''Phaistos Disc''', containing 46 hieroglyphs for Phaistos, was added.
* '''Lycian''', containing 29 letters for Lycian script, was added.
* '''Carian''', containing 49 letters for Carian script, was added.
* '''Lydian''', containing 27 letters for Lydian script, was added.
* '''Mahjong Tiles''', containing 44 mahjong tiles, was added.
* '''Domino Tiles''', containing 100 domino tiles, was added.
=== Extended blocks ===
* Archaic letters and capital kai symbol (total 7 characters) were added to '''Greek and Coptic'''.
* Combining Pokrytie (total 1 character) was added to '''Cyrillic'''.
* Mordvin, Kurdish, Aleut and Chuvash letters (total 16 characters) were added to '''Cyrillic Supplement'''.
* Radix symbols, Letterlike, punctuation, Koranic annotation signs and additions for early Persian and Azerbaijani (total 15 characters) were added to '''Arabic'''.
* Additional letters in Torwali, Burushaski and early Persian (total 18 characters) were added to '''Arabic Supplement'''.
* High spacing dot and candra a (total 2 characters) were added to '''Devanagari'''.
* Udaat and yakash signs (total 2 characters) were added to '''Gurmukhi'''.
* Vocalic rr, l and ll (total 3 characters) were added to '''Oriya'''.
* Om symbol (ௐ) (total 1 character) was added to '''Tamil'''.
* Avagraha, additional phonetic letters, vocalic l and ll, fractional signs and tuumu (total 13 characters) were added to '''Telugu'''.
* Avagraha, vocalic rr, l and ll, Malayalam numerics and fractions and chillu letters (total 17 characters) were added to '''Malayalam'''.
* Letters for Balti and various symbols (total 6 characters) were added to '''Tibetan'''.
* Characters for various languages (total 78 characters) were added to '''Myanmar'''.
* Manchu Ali Gali lha (ᢪ) (total 1 character) was added to '''Mongolian'''.
* Miscellaneous combining marks (total 28 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Medievalist latin letters and miscellaneous letters (total 10 characters) were added to '''Latin Extended Additional'''.
* Invisible plus (+) (total 1 character) was added to '''General Punctuation'''.
* Combining asterisk above ( ⃰)(total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* Symbol for Samaritan Source (⅏) (total 1 character) was added to '''Letterlike Symbols'''.
* Archaic Roman Numerals (total 4 characters) were added to '''Number Forms'''.
* Outlined white star and other signs (total 15 characters) were added to '''Miscellaneous Symbols'''.
* Long division and additional mathematical brackets (total 5 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Miscellaneous signs (total 51 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Additional latin letters (total 12 characters) were added to '''Latin Extended-C'''.
* Additional punctuation (total 23 characters) were added to '''Supplemental Punctuation'''.
* Letter ih (ㄭ) (total 1 character) was added to '''Bopomofo'''.
* Other strokes (total 20 characters) were added to '''CJK Strokes'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Africanist tone letters (total 5 characters) were added to '''Modifier Tone Letters'''.
* Miscellaneous letters and symbols (total 112 characters) were added to '''Latin Extended-D'''.
* Continuous macrons for Coptic (total 3 characters) were added to '''Combining Half Marks'''.
* Musical symbol multiple measure rest (𝄩) (total 1 character) was added to '''Musical Symbols'''.
== Unicode 5.2 ==
Unicode 5.2 was released in October 1, 2009. It encoded 107,296 characters, adding 6,648 new characters.
=== New blocks ===
* '''Samaritan''', containing 61 letters for Samaritan script, was added.
* '''Unified Canadian Aboriginal Syllabics Extended''', containing 70 syllables for various cree languages, was added.
* '''Tai Tham''', containing 127 letters for Tai Tham script, was added.
* '''Vedic Extensions''', containing 35 characters for tone marks and signs, was added.
* '''Lisu''', containing 48 letters for Lisu (Fraser) script, was added.
* '''Bamum''', containing 88 letters for Bamum script, was added.
* '''Common Indic Number Forms''', containing 10 fractions and marks, was added.
* '''Devanagari Extended''', containing 28 additional marks, was added.
* '''Hangul Jamo Extended-A''', containing 29 characters for additional old initial consonants in hangul jamo, was added.
* '''Javanese''', containing 91 letters for Javanese script, was added.
* '''Myanmar Extended-A''', containing 28 letters for Khamti Shan in Myanmar, was added.
* '''Tai Viet''', containing 72 letters for Tai Viet script, was added.
* '''Meetei Mayek''', containing 56 letters for Meetei Mayek script, was added.
* '''Hangul Jamo Extended-B''', containing 72 characters for additional old medieval vowels and final consonants in hangul jamo, was added.
* '''Imperial Aramaic''', containing 31 characters for Old Aramaic, was added.
* '''Old South Arabian''', containing 32 letters and numbers for South Arabian, was added.
* '''Avestan''', containing 61 characters for Avestan script, was added.
* '''Inscriptional Parthian''', containing 30 characters for Inscriptional Parthian script, was added.
* '''Inscriptional Pahlavi''', containing 27 characters for Inscriptional Pahlavi script, was added.
* '''Old Turkic''', containing 73 characters for Orkhon script, was added.
* '''Rumi Numeral Symbols''', containing 31 numeric characters used in Fez, Morocco, and elsewhere in North Africa and the Iberian peninsula, between the tenth and seventeenth centuries, was added.
* '''Kaithi''', containing 66 letters for Kaithi script, was added.
* '''Egyptian Hieroglyphs''', containing 1,071 hieroglyphs for Egyptian, was added.
* '''Enclosed Alphanumeric Supplement''', containing 63 additional circled, parenthesized and squared alphanumerics, was added.
* '''Enclosed Ideographic Supplement''', containing 44 squared and tortoised shell bracketed ideographs, was added.
* '''CJK Unified Ideographs Extension C''', containing 4,149 additional Chinese Ideographs, was added.
=== Extended blocks ===
* Abhaz letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Inverted Candrabinbu and additional signs and letters (total 5 characters) were added to '''Devanagari'''.
* Ganda Mark (৻) (total 1 character) was added to '''Bengali'''.
* Religious svasti signs (total 4 characters) were added to '''Tibetan'''.
* Extensions for Khamti Shan and Alton and Phake (total 4 characters) were added to '''Myanmar'''.
* Additional old initial consonants, medival vowels, and old final consonants (total 16 characters) were added to '''Hangul Jamo'''.
* Hyphen and additional syllables (total 10 characters) were added to '''Unified Canadian Aboriginal Syllabics'''.
* Letter Sua and Tham Digit One (total 3 characters) were added to '''New Tai Lue'''.
* Combing Almost Equal to Below ( ᷽) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* The Live Tournosis, Spesmillo and Tenge signs (total 3 characters) were added to '''Currency Symbols'''.
* Additional vulgar fractions from ARIB STD B24 (total 4 characters) were added to '''Number Forms'''.
* Decimal exponent symbol (⏨) from ARIB STD B24 (total 1 characters) was added to '''Miscellaneous Technical'''.
* A soccer ball and symbols from ARIB STD B24 (total 59 characters) were added to '''Miscellaneous Symbols'''.
* Heavy exclamation mark symbol (❗) from ARIB STD B24 (total 1 character) was added to '''Dingbats'''.
* Traffic sign, dictionary and map symbols from ARIB STD B24 (total 5 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Capital letter turned alpha and additions for shona (total 3 characters) were added to '''Latin Extended-C'''.
* Cryptogrammic letters and combining marks (total 7 characters) were added to '''Coptic'''.
* Word separator middle dot used in Avestan (⸱) (total 1 character) was added to '''Supplemental Punctuation'''.
* Circled ideographs and numbers on black squares from ARIB STD B24 (total 12 characters) were added to '''Enclosed CJK Letters and Months'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Miscellaneous additions for compatibility (total 3 characters) were added to '''CJK Compatibility Ideographs'''.
* Number two and three (total 2 characters) were added to '''Phoenician'''.
== Unicode 6.0 ==
Unicode 6.0 was released in October 11, 2010. It encoded 109,384 characters, adding 2,088 new characters.
=== New blocks ===
* '''Mandaic''', containing 29 letters for Mandaic script, was added.
* '''Batak''', containing 56 letters for Batak script, was added.
* '''Ethiopic Extended-A''', containing 32 letters for Gamo-Gofa-Dawro, Basketo and Gumuz Ethiophic syllables, was added.
* '''Brahmi''', containing 108 characters for ancient Brahmi abugida, was added.
* '''Bamum Supplement''', containing 761 letters for additional Bamum script, was added.
* '''Kana Supplement''', containing 2 characters for archaic katakana, was added.
* '''Playing Cards''', containing 59 playing cards, was added.
* '''Miscellaneous Symbols and Pictographs''', containing 529 additional symbols, was added.
* '''Emoticons''', containing 63 faces, cat faces and gesture symbols, was added.
* '''Transport and Map Symbols''', containing 70 transportation, traffic signs and other symbols, was added.
* '''Alchemical Symbols''', containing 116 symbols for elements, was added.
* '''CJK Unified Ideographs Extension D''', containing 222 miscellaneous Han ideographs, was added.
=== Extended blocks ===
* Azerbaijani letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Kashmiri Yeh and Wavy hamza below (total 2 characters) were added to '''Arabic'''.
* Dependent vowel signs and letters used in Kashmiri and Bihari (total 10 characters) were added to '''Devanagari'''.
* Fraction signs (total 6 characters) were added to '''Oriya'''.
* Letters used in scholarly only and letter dot reph (total 3 characters) were added to '''Malayalam'''.
* Leading and Trailing Mchan Rtags (total 6 characters) were added to '''Tibetan'''.
* Additional combining marks (total 2 characters) were added to '''Ethiopic'''.
* Combining Double Inverted Breve Below (᷼) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* Miscellaneous subscript letters (total 8 characters) were added to '''Superscripts and Subscripts'''.
* Indian Rupee Sign (₹) (total 1 character) was added to '''Currency Symbols'''.
* Pointing double triangle and additional mechanical symbols (total 11 characters) were added to '''Miscellaneous Technical'''.
* Ophiucisus, astronomical symbol for uranus and pentagrams (total 6 characters) were added to '''Miscellaneous Symbols'''.
* Additional heavy punctation marks, raised fist, raised hand, sparkles, heavy arithmetic symbols and curly loops (total 16 characters) were added to '''Dingbats'''.
* Squared logicals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Separator mark and consonant joiner (total 2 characters) were added to '''Tifinagh'''.
* Bopomofo for Hmu and Ge (total 3 characters) were added to '''Bopomofo Extended'''.
* Reversed Tse (total 2 characters) were added to '''Cyrillic Extended-B'''.
* Additional letters (total 15 characters) were added to '''Latin Extended-D'''.
* Pedagogical symbols (total 16 characters) were added to '''Arabic Presentation Forms-A'''.
* Additional squared, black circled and squared letters and regional indicator letters (total 107 characters) were added to '''Enclosed Alphanumeric Supplement'''.
* Squared katakana, squared ideographs and circled advantage and accept (total 13 characters) were added to '''Enclosed Ideographic Supplement'''.
== Unicode 6.1 ==
Unicode 6.1 was released in January 31, 2012. It encoded 110,116 characters, adding 732 new characters.
=== New blocks ===
* '''Arabic Extended-A''' (U+08A0-U+08FF), containing 39 characters, was added.
* '''Sundanese Supplement''' (U+1CC0-U+1CCF), containing 8 characters, was added.
* '''Meetei Mayek Extensions''' (U+AAE0-U+AAFF), containing 23 characters, was added.
* '''Meroitic Hieroglyphs''' (U+10980-U+1099F), containing 32 characters, was added.
* '''Meroitic Cursive''' (U+109A0-U+109FF), containing 26 characters, was added.
* '''Sora Sompeng''' (U+110D0-U+110FF), containing 35 characters, was added.
* '''Chakma''' (U+11100-U+1114F), containing 67 characters, was added.
* '''Sharada''' (U+11180-U+111DF), containing 83 characters, was added.
* '''Takri''' (U+11680-U+116CF), containing 66 characters, was added.
* '''Miao''' (U+16F00-U+16F9F), containing 133 characters, was added.
* '''Arabic Mathematical Alphabetic Symbols''' (U+1EE00-U+1EEFF), containing 143 characters, was added.
=== Extended blocks ===
* An Armenian Dram sign (total 1 character) was added to '''Armenian'''. (U+058F)
* A sign Samvat (total 1 character) was added to '''Arabic'''. (U+0604)
* An Abbreviation mark (total 1 character) was added to '''Gujarati'''. (U+0AF0)
* Letters for Khmu (total 2 characters) were added to '''Lao'''. (U+0EDE-U+0EDF)
* Capital letter Yn, letter Aen, Hard and Labial sign (total 5 characters) were added to '''Georgian'''. (U+10C7, U+10CD and U+10FD-U+10FF)
* Letters and signs for Old Sundanese (total 9 characters) were added to '''Sundanese'''. (U+1BAB-U+1BAD and U+1BBA-U+1BBF)
* Sign Rotated Ardhavisarga, Candra Above, Jihvamuliya and Uphadhmaniya (total 4 characters) were added to '''Vedic Extensions'''. (U+1CF3-U+1CF6)
* Mathematical diagonals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''. (U+27CB and U+27CD)
* A letter Bohairic Khei (total 2 characters) were added to '''Coptic'''. (U+2CF2-U+2CF3)
* Small letters Yn and Aen (total 2 characters) were added to '''Georgian Supplement'''. (U+2D27 and U+2D2D)
* Letters Ye and Yo (total 2 characters) were added to '''Tifinagh'''. (U+2D66-U+2D67)
* (total 10 characters) were added to '''Supplemental Punctuation'''. (U+2E32-U+2E3B)
* An additional ideograph for Kanji (total 1 character) was added to '''CJK Unified Ideographs'''. (U+9FCC)
* Combining letter for Slavonic (total 9 characters) were added to '''Cyrillic Extended-B'''. (U+A674-U+A67B and U+A69F)
* Letter C with Bar, capital letter H with Hook and modifier letters for extended IPA (total 5 characters) were added to '''Latin Extended-D'''. (U+A792-U+A793, U+A7AA and U+A7F8-U+A7F9)
* Some additional ideographs for Korea (total 2 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA2E-U+FA2F)
* Symbols for Canadian legal use (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F16A-U+1F16B)
* Typikon symbols (total 4 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F540-U+1F543)
* (total 13 characters) were added to '''Emoticons'''. (U+1F600, U+1F611, U+1F615, U+1F617, U+1F619, U+1F61B, U+1F61F, U+1F626-U+1F627, U+1F62C, U+1F62E-U+1F62F and U+1F634)
== Unicode 6.2 ==
Unicode 6.2 was released in September 26, 2012. It encoded 110,117 characters, adding only 1 new character.
=== Extended blocks ===
* A Turkish Lira sign (total 1 character) was added to '''Currency Symbols'''. (U+20BA)
== Unicode 6.3 ==
Unicode 6.3 was released in September 30, 2013. It encoded 110,122 characters, adding only 5 new characters.
=== Extended blocks ===
* A Letter mark (total 1 character) was added to '''Arabic'''. (U+061C)
* Isolate directional format characters (total 4 characters) were added to '''General Punctuation'''. (U+2066-U+2069)
== Unicode 7.0 ==
Unicode 7.0 was released in June 16, 2014. It encoded 112,956 characters, adding 2,834 new characters.
=== New blocks ===
* '''Combining Diacritical Marks Extended''' (U+1AB0-U+1AFF), containing 15 marks, was added.
* '''Myanmar Extended-B''' (U+A9E0-U+A9FF), containing 31 letters, was added.
* '''Latin Extended-E''' (U+AB30-U+AB6F), containing 50 letters, was added.
* '''Coptic Epact Numbers''' (U+102E0-U+102FF), containing 28 numbers, was added.
* '''Old Permic''' (U+10350-U+1037F), containing 43 letters, was added.
* '''Elbasan''' (U+10500-U+1052F), containing 50 letters, was added.
* '''Caucasian Albanian''' (U+10530-U+1056F), containing 53 letters and marks, was added.
* '''Linear A''' (U+10600-U+1077F), containing 341 signs, was added.
* '''Palmyrene''' (U+10860-U+1087F), containing 32 letters, was added.
* '''Nabataean''' (U+10880-U+108AF), containing 40 letters and numbers, was added.
* '''Old North Arabian''' (U+10A80-U+10A9F), containing 32 letters and numbers, was added.
* '''Manichaean''' (U+10AC0-U+10AFF), containing 51 characters, was added.
* '''Psalter Pahlavi''' (U+10B80-U+10BAF), containing 29 characters, was added.
* '''Mahajani''' (U+11150-U+1117F), containing 39 letters and signs, was added.
* '''Sinhala Archaic Numbers''' (U+111E0-U+111FF), containing 20 numbers, was added.
* '''Khojki''' (U+11200-U+1124F), containing 61 characters, was added.
* '''Khudawadi''' (U+112B0-U+112FF), containing 69 characters, was added.
* '''Grantha''' (U+11300-U+1137F), containing 83 characters, was added.
* '''Tirhuta''' (U+11480-U+114DF), containing 82 characters, was added.
* '''Siddham''' (U+11580-U+115FF), containing 72 characters, was added.
* '''Modi''' (U+11600-U+1165F), containing 79 characters, was added.
* '''Warang Citi''' (U+118A0-U+118FF), containing 84 letters and numbers, was added.
* '''Pau Cin Hau''' (U+11AC0-U+11AFF), containing 57 characters, was added.
* '''Mro''' (U+16A40-U+16A6F), containing 43 characters, was added.
* '''Bassa Vah''' (U+16AD0-U+16AFF), containing 36 characters, was added.
* '''Pahawh Hmong''' (U+16B00-U+16B8F), containing 127 letters and signs, was added.
* '''Duployan''' (U+1BC00-U+1BC9F), containing 143 characters, was added.
* '''Shorthand Format Controls''' (U+1BCA0-U+1BCAF), containing 4 format characters, was added.
* '''Mende Kikakui''' (U+1E800-U+1E8DF), containing 213 syllables and numbers, was added.
* '''Ornamental Dingbats''' (U+1F650-U+1F67F), containing 48 pictographic characters, was added.
* '''Geometric Shapes Extended''' (U+1F780-U+1F7FF), containing 85 pictographic characters, was added.
* '''Supplemental Arrows-C''' (U+1F800-U+1F8FF), containing 148 pictographic characters, was added.
=== Extended blocks ===
* A capital letter Yot (total 1 character) was added to '''Greek and Coptic'''. (U+037F)
* Letters for Orok, Komi and Khanty (total 8 characters) were added to '''Cyrillic Supplement'''. (U+0528-U+052F)
* An Eternity sign (total 2 characters) were added to '''Armenian'''. (U+058D-U+058E)
* A Number Mark Above (total 1 character) was added to '''Arabic'''. (U+0605)
* Letters for African, Philippine, Turkic, Berber, Belarusian, Palula and Shina languages (total 8 characters) were added to '''Arabic Extended-A'''. (U+08A1, U+08AD-U+08B2 and U+08FF)
* A letter for Marwari (total 1 character) was added to '''Devanagari'''. (U+0978)
* A sign Anji (total 1 character) was added to '''Bengali'''. (U+0980)
* Sign Candrabindu and letter Llla (total 2 characters) were added to '''Telugu'''. (U+0C00 and U+0C34)
* A Sign Candrabindu (total 1 character) was added to '''Kannada'''. (U+0C81)
* A Sign Candrabindu (total 1 character) was added to '''Malayalam'''. (U+0D01)
* Lith Numerals (total 10 characters) were added to '''Sinhala'''. (U+0DE6-U+0DEF)
* Additional Old English runes (total 8 characters) were added to '''Runic'''. (U+16F1-U+16F8)
* Letters Gyan and Tra (total 2 characters) were added to '''Limbu'''. (U+191D-U+191E)
* Signs for Jaiminiya Sama Veda (total 2 characters) were added to '''Vedic Extensions'''. (U+1CF8-U+1CF9)
* Marks for Germanic and American lexicology (total 15 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DE7-U+1DF5)
* Nordic Mark, Manat and Ruble sign (total 3 characters) were added to '''Currency Symbols'''. (U+20BB-U+20BD)
* Playback symbols from Webdings font (total 7 characters) were added to '''Miscellaneous Technical'''. (U+23F4-U+23FA)
* A Scissors symbol from Wingdings 2 font (total 1 character) was added to '''Dingbats'''. (U+2700)
* Arrows for Lithuanian dialectology and symbols from Wingdings 3 font (total 115 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2B4D-U+2B4F, U+2B5A-U+2B5F, U+2B60-U+2B73, U+2B76-U+2B95, U+2B98-U+2BB9, U+2BBD-U+2BC8 and U+2BCA-U+2BD1)
* (total 7 characters) were added to '''Supplemental Punctuation'''. (U+2E3C-U+2E42)
* Early Cyrillic letters and letters for Lithuanian dialectology (total 6 characters) were added to '''Cyrillic Extended-B'''. (U+A698-U+A69D)
* Letters for European, American and African orthography (total 18 characters) were added to '''Latin Extended-D'''. (U+A794-U+A79F, U+A7AB-U+A7AD, U+A7B0-U+A7B1 and U+A7F7)
* Tone marks for Tai Laing and letters for Shwe Palaung (total 4 characters) were added to '''Myanmar Extended-A'''. (U+AA7C-U+AA7F)
* Combining phonetic marks (total 7 characters) were added to '''Combining Half Marks'''. (U+FE27-U+FE2D)
* Additional mathematical symbols (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018B-U+1018C)
* A Greek Tau Rho symbol (total 1 character) was added to '''Ancient Symbols'''. (U+101A0)
* A letter Ess (total 1 character) was added to '''Old Italic'''. (U+1031F)
* A Number Joiner (total 1 character) was added to '''Brahmi'''. (U+1107F)
* Sutra mark and sign Ekam (total 2 characters) were added to '''Sharada'''. (U+111CD and U+111DA)
* Additional cuneiform signs (total 42 characters) were added to '''Cuneiform'''. (U+1236F-U+12398)
* Additional numbers, vulgar fractions and a punctuation mark (total 13 characters) were added to '''Cuneiform Numbers and Punctuation'''. (U+12463-U+1246E and U+12474)
* Red Joker, Fool and trumps (total 23 characters) were added to '''Playing Cards'''. (U+1F0BF and U+1F0E0-U+1F0F5)
* Dingbat normal and negative sans-serif digit zero (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10B-U+1F10C)
* Symbols from Webdings, Wingdings 1 and 2 font (total 209 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F321-U+1F32C, U+1F336, U+1F37D, U+1F394-U+1F39F, U+1F3C5, U+1F3CB-U+1F3CE, U+1F3D4-U+1F3DF, U+1F3F1-U+1F3F7, U+1F43F, U+1F441, U+1F4F8, U+1F4FD-U+1F4FE, U+1F53E-U+1F53F, U+1F544-U+1F54A, U+1F568-U+1F579, U+1F57B-U+1F5A3 and U+1F5A5-U+1F5FA)
* Slightly frowning and smiling faces emoji (total 2 characters) were added to '''Emoticons'''. (U+1F641-U+1F642)
* Symbols from Webdings and Wingdings 2 font (total 27 characters) were added to '''Transport and Map Symbols'''. (U+1F6C6-U+1F6CF, U+1F6E0-U+1F6EC and U+1F6F0-U+1F6F3)
== Unicode 8.0 ==
Unicode 8.0 was released in June 17, 2015. It encoded 120,672 characters, adding 7,716 new characters.
=== New blocks ===
* '''Cherokee Supplement''' (U+AB70-U+ABBF), containing 80 lowercase letters, was added.
* '''Hatran''' (U+108E0-U+108FF), containing 26 letters, was added.
* '''Old Hungarian''' (U+10C80-U+10CFF), containing 108 letters, was added.
* '''Multani''' (U+11280-U+112AF), containing 38 letters, was added.
* '''Ahom''' (U+11700-U+1173F), containing 57 letters, was added.
* '''Early Dynastic Cuneiform''' (U+12480-U+1254F), containing 196 characters, was added.
* '''Anatolian Hieroglyphs''' (U+14400-U+1467F), containing 583 characters, was added.
* '''Sutton SignWriting''' (U+1D800-U+1DAAF), containing 672 signs, was added.
* '''Supplemental Symbols and Pictographs''' (U+1F900-U+1F9FF), containing 15 pictographic characters, was added.
* '''CJK Unified Ideographs Extension E''' (U+2B820-U+2CEAF), containing 5762 characters, was added.
=== Extended blocks ===
* Letters for Arwi (total 3 characters) were added to '''Arabic Extended-A'''. (U+08B3-U+08B4 and U+08E3)
* A letter for Avestan transliteration (total 1 character) was added to '''Gujarati'''. (U+0AF9)
* A letter for Andhra Pradesh (total 1 character) was added to '''Telugu'''. (U+0C5A)
* An archaic letter II (total 1 character) was added to '''Malayalam'''. (U+0D5F)
* A letter Mv and small letters (total 7 characters) were added to '''Cherokee'''. (U+13F5 and U+13F8-U+13FD)
* A Georgian Lari sign (total 1 character) was added to '''Currency Symbols'''. (U+20BE)
* Turned digits (total 2 characters) were added to '''Number Forms'''. (U+218A-U+218B)
* Two headed arrows with triangle arrowheads (total 4 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BEC-U+2BEF)
* Some additional ideographs (total 9 characters) were added to '''CJK Unified Ideographs'''. (U+9FCD-U+9FD5)
* A combining letter Ef (total 1 character) was added to '''Cyrillic Extended-B'''. (U+A69E)
* Sinological dot, phonetic extension for African languages, letters for American and Gabonese orthography (total 7 characters) were added to '''Latin Extended-D'''. (U+A78F and U+A7B2-U+A7B7)
* Sign Siddham and letter Jain Om (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FC-U+A8FD)
* Letters for Yakut transliteration (total 4 characters) were added to '''Latin Extended-E'''. (U+AB60-U+AB63)
* A combining mark for Church Slavonic (total 2 characters) were added to '''Combining Half Marks'''. (U+FE2E-U+FE2F)
* Numerals and vulgar fractions (total 64 characters) were added to '''Meroitic Cursive'''. (U+109BC-U+109BD, U+109C0-U+109CF and U+109D2-U+109FF)
* Sandhi mark, diacritical marks for Kashmiri, sign Siddham and punctuation marks (total 9 characters) were added to '''Sharada'''. (U+111C9-U+111CC and U+111DB-U+111DF)
* Combining Anusvara Above and letter Om (total 2 characters) were added to '''Grantha'''. (U+11300 and U+11350)
* Section marks and alternate letters (total 20 characters) were added to '''Siddham'''. (U+115CA-U+115DD)
* An additional sign (total 1 character) was added to '''Cuneiform'''. (U+12399)
* East-Slavic musical symbols (total 11 characters) were added to '''Musical Symbols'''. (U+1D1DE-U+1D1E8)
* (total 24 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F32D-U+1F32F, U+1F37E-U+1F37F, U+1F3CF-U+1F3D3, U+1F3F8-U+1F3FF, U+1F4FF and U+1F54B-U+1F54F)
* Upside Down Face and Face With Rolling Eyes emoji (total 2 characters) were added to '''Emoticons'''. (U+1F643-U+1F644)
* A Place of Worship emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D0)
== Unicode 9.0 ==
Unicode 9.0, was released in June 21, 2016. It encoded 128,172 characters, adding 7,500 new characters.
=== New blocks ===
* '''Cyrillic Extended-C''' (U+1C80-U+1C8F), containing 9 letters, was added.
* '''Osage''' (U+104B0-U+104FF), containing 72 letters, was added.
* '''Newa''' (U+11400-U+1147F), containing 92 letters, was added.
* '''Mongolian Supplement''' (U+11660-U+1167F), containing 13 letters, was added.
* '''Bhaiksuki''' (U+11C00-U+11C6F), containing 97 letters, was added.
* '''Marchen''' (U+11C70-U+11CBF), containing 68 letters, was added.
* '''Ideographic Symbols and Punctuation''' (U+16FE0-U+16FFF), containing 1 letter, was added.
* '''Tangut''' (U+17000-U+187FF), containing 6125 letters, was added.
* '''Tangut Components''' (U+18800-U+18AFF), containing 755 letters, was added.
* '''Glagolitic Supplement''' (U+1E000-U+1E02F), containing 38 letters, was added.
* '''Adlam''' (U+1E900-U+1E95F), containing 87 letters, was added.
=== Extended blocks ===
* Letters for Bravanese, Warsh and Quranic marks used in Pakistan (total 23 characters) were added to '''Arabic Extended-A'''. (U+08B6-U+08BD and U+08D4-U+08E2)
* A sign Spacing Candrabindu (total 1 character) were added to '''Kannada'''. (U+0C80)
* Sign Para, Chillu letters and vulgar fractions (total 14 characters) were added to '''Malayalam'''. (U+0D4F, U+0D54-U+0D56, U+0D58-U+0D5E and U+0D76-U+0D78)
* A diacritical mark for Newa (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFB)
* Power symbols (total 4 characters) were added to '''Miscellaneous Technical'''. (U+23FB-U+23FE)
* Punctuation marks for Church Slavonic (total 2 characters) were added to '''Supplemental Punctuation'''. (U+2E43-U+2E44)
* A letter for Unifon (total 1 character) was added to '''Latin Extended-D'''. (U+A7AE)
* A sign Candrabindu (total 1 character) was added to '''Saurashtra'''. (U+A8C5)
* Indiction sign and a currency symbol (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018D-U+1018E)
* A sign Sukun (total 1 character) was added to '''Khojki'''. (U+1123E)
* Japanese TV symbols (total 18 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F19B-U+1F1AC)
* A Japanese TV symbol (total 1 character) was added to '''Enclosed Ideographic Supplement'''. (U+1F23B)
* A dancing man and Black Heart emoji (total 2 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F57A and U+1F5A4)
* Octagonal Sign, Shopping Trolley, scooters and a Canoe emoji (total 5 characters) were added to '''Transport and Map Symbols'''. (U+1F6D1-U+1F6D2 and U+1F6F4-U+1F6F6)
* (total 67 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F919-U+1F91E, U+1F920-U+1F927, U+1F930, U+1F933-U+1F93E, U+1F940-U+1F94B, U+1F950-U+1F95E and U+1F985-U+1F991)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|0030 FE00
|
|short diagonal stroke form # DIGIT ZERO
|-
|1000 FE00
|
|dotted form # MYANMAR LETTER KA
|-
|1002 FE00
|
|dotted form # MYANMAR LETTER GA
|-
|1004 FE00
|
|dotted form # MYANMAR LETTER NGA
|-
|1010 FE00
|
|dotted form # MYANMAR LETTER TA
|-
|1011 FE00
|
|dotted form # MYANMAR LETTER THA
|-
|1015 FE00
|
|dotted form # MYANMAR LETTER PA
|-
|1019 FE00
|
|dotted form # MYANMAR LETTER MA
|-
|101A FE00
|
|dotted form # MYANMAR LETTER YA
|-
|101C FE00
|
|dotted form # MYANMAR LETTER LA
|-
|101D FE00
|
|dotted form # MYANMAR LETTER WA
|-
|1022 FE00
|
|dotted form # MYANMAR LETTER SHAN A
|-
|1031 FE00
|
|dotted form # MYANMAR VOWEL SIGN E
|-
|1075 FE00
|
|dotted form # MYANMAR LETTER SHAN KA
|-
|1078 FE00
|
|dotted form # MYANMAR LETTER SHAN CA
|-
|107A FE00
|
|dotted form # MYANMAR LETTER SHAN NYA
|-
|1080 FE00
|
|dotted form # MYANMAR LETTER SHAN THA
|-
|2205 FE00
|
|zero with long diagonal stroke overlay form # EMPTY SET
|-
|AA60 FE00
|
|dotted form # MYANMAR LETTER KHAMTI GA
|-
|AA61 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CA
|-
|AA62 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CHA
|-
|AA63 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JA
|-
|AA64 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JHA
|-
|AA65 FE00
|
|dotted form # MYANMAR LETTER KHAMTI NYA
|-
|AA66 FE00
|
|dotted form # MYANMAR LETTER KHAMTI TTA
|-
|AA6B FE00
|
|dotted form # MYANMAR LETTER KHAMTI NA
|-
|AA6C FE00
|
|dotted form # MYANMAR LETTER KHAMTI SA
|-
|AA6F FE00
|
|dotted form # MYANMAR LETTER KHAMTI FA
|-
|AA7A FE00
|
|dotted form # MYANMAR LETTER AITON RA
|-
|…
|
|278 additional emoji variation sequences
|}
== Unicode 10.0 ==
Unicode 10.0, was released in June 20, 2017. It encoded 136,690 characters, adding 8,518 new characters.
=== New blocks ===
* '''Syriac Supplement''' (U+0860-U+086F), containing 11 characters, was added.
* '''Zanabazar Square''' (U+11A00-U+11A4F), containing 72 characters, was added.
* '''Soyombo''' (U+11A50-U+11AAF), containing 80 characters, was added.
* '''Masaram Gondi''' (U+11D00-U+11D5F), containing 75 characters, was added.
* '''Kana Extended-A''' (U+1B100-U+1B12F), containing 31 characters, was added.
* '''Nushu''' (U+1B170-U+1B2FF), containing 396 characters, was added.
* '''CJK Unified Ideographs Extension F''' (U+2CEB0-U+2EBEF), containing 7,473 characters, was added.
=== Extended blocks ===
* A Vedic Anusvara and Abbreviation mark (total 2 characters) were added to '''Bengali'''. (U+09FC-U+09FD)
* Letters for Arabic transliteration (total 6 characters) were added to '''Gujarati'''. (U+0AFA-U+0AFF)
* A combining Anusvara Above and Viramas (total 3 characters) were added to '''Malayalam'''. (U+0D00 and U+0D3B-U+0D3C)
* A sign Atikrama (total 1 character) was added to '''Vedic Extensions'''. (U+1CF7)
* Combining diacritical marks for Church Slavonic (total 4 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DF6-U+1DF9)
* A Bitcoin sign (total 1 character) was added to '''Currency Symbols'''. (U+20BF)
* An Observe Eye symbol (total 1 character) was added to '''Miscellaneous Technical'''. (U+23FF)
* A Group mark (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2BD2)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E45-U+2E49)
* A letter O with Dot Above (total 1 character) was added to '''Bopomofo'''. (U+312E)
* Ideographs for Slavonic transliteration (total 21 characters) were added to '''CJK Unified Ideographs'''. (U+9FD6-U+9FEA)
* Letters for North Italic (total 3 characters) were added to '''Old Italic'''. (U+1032D-U+1032F)
* An Iteration mark for Nushu (total 1 character) was added to '''Ideographic Symbols and Punctuation'''. (U+16FE1)
* Letters for Hentaigana (total 254 characters) were added to '''Kana Supplement'''. (U+1B002-U+1B0FF)
* Symbols for Chinese Folk religion (total 6 characters) were added to '''Enclosed Ideographic Supplement'''. (U+1F260-U+1F265)
* Stupa, Pagoda, Sled and Flying Saucer emoji (total 4 characters) were added to '''Transport and Map Symbols'''. (U+1F6D3-U+1F6D4 and U+1F6F7-U+1F6F8)
* (total 66 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F900-U+1F90B, U+1F91F, U+1F928-U+1F92F, U+1F931-U+1F932, U+1F94C, U+1F95F-U+1F96B, U+1F992-U+1F997 and U+1F9D0-U+1F9E6)
== Unicode 11.0 ==
Unicode 11.0, was released in June 5, 2018. It encoded 137,374 characters, adding 684 new characters.
=== New blocks ===
* '''Georgian Extended''' (U+1C90-U+1CBF), containing 46 characters, was added.
* '''Hanifi Rohingya''' (U+10D00-U+10D3F), containing 50 characters, was added.
* '''Old Sogdian''' (U+10F00-U+10F2F), containing 40 characters, was added.
* '''Sogdian''' (U+10F30-U+10F6F), containing 42 characters, was added.
* '''Dogra''' (U+11800-U+1184F), containing 60 characters, was added.
* '''Gunjala Gondi''' (U+11D60-U+11DAF), containing 63 characters, was added.
* '''Makasar''' (U+11EE0-U+11EFF), containing 25 characters, was added.
* '''Medefaidrin''' (U+16E40-U+16E9F), containing 91 characters, was added.
* '''Mayan Numerals''' (U+1D2E0-U+1D2FF), containing 20 characters, was added.
* '''Indic Siyaq Numbers''' (U+1EC70-U+1ECBF), containing 68 characters, was added.
* '''Chess Symbols''' (U+1FA00-U+1FA6F), containing 14 characters, was added.
=== Extended blocks ===
* Small letters Turned Ayb and Yi with Stroke (total 2 characters) were added to '''Armenian'''. (U+0560 and U+0588)
* A triangle Yod (total 1 character) were added to '''Hebrew'''. (U+05EF)
* A Dantayalan and currency symbols (total 3 characters) were added to '''N'Ko'''. (U+07FD-U+07FF)
* A Small Low Waw (total 1 character) was added to '''Arabic Extended-A'''. (U+08D3)
* A Sandhi mark (total 1 character) was added to '''Bengali'''. (U+09FE)
* An Abbreviation mark (total 1 character) was added to '''Gurmukhi'''. (U+0A76)
* A combining Anusvara Above (total 1 character) was added to '''Telugu'''. (U+0C04)
* A sign Siddham (total 1 character) was added to '''Kannada'''. (U+0C84)
* A letter for Buryat (total 1 character) was added to '''Mongolian'''. (U+1878)
* Symbols for chess notation, astrological and half star symbols (total 43 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BBA-U+2BBC, U+2BD3-U+2BEB and 2BF0-U+2BFE)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E4A-U+2E4E)
* A letter NN (total 1 character) was added to '''Bopomofo'''. (U+312F)
* Some ideographs for Kanji (total 5 characters) were added to '''CJK Unified Ideographs'''. (U+9FEB-U+9FEF)
* A small capital Q and a letter for Mazahua (total 3 characters) were added to '''Latin Extended-D'''. (U+A7AF and U+A7B8-U+A7B9)
* Letter and vowel sign Ay (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FE-U+A8FF)
* Letters Ttta, Vha and a vulgar fraction (total 3 characters) were added to '''Kharoshthi'''. (U+10A34-U+10A35 and U+10A48)
* A Number Sign Above (total 1 character) was added to '''Kaithi'''. (U+110CD)
* Letter Lhaa, vowel sign Aa and Ei (total 3 characters) were added to '''Chakma'''. (U+11144-U+11146)
* A combining Bindu Below (total 1 character) was added to '''Grantha'''. (U+1133B)
* A Sandhi mark (total 1 character) was added to '''Newa'''. (U+1145E)
* An alternate letter Ba (total 1 character) was added to '''Ahom'''. (U+1171A)
* A mark Pluta (total 1 character) was added to '''Soyombo'''. (U+11A9D)
* Additional ideographs (total 5 characters) were added to '''Tangut'''. (U+187ED-U+187F1)
* Tally marks (total 7 characters) were added to '''Counting Rod Numerals'''. (U+1D372-U+1D378)
* A Copyleft symbol (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F12F)
* A Skateboard emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6F9)
* Normal and negative circled shapes (total 4 characters) were added to '''Geometric Shapes Extended'''. (U+1F7D5-U+1F7D8)
* (total 65 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F94D-U+1F94F, U+1F96C-U+1F970, U+1F973-U+1F976, U+1F97A, U+1F97C-U+1F97F, U+1F998-U+1F99F, U+1F9A0-U+1F9A2, U+1F9B0-U+1F9B9, U+1F9C1-U+1F9C2 and U+1F9E7-U+1F9FF)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|FF10 FE00
|
|short diagonal stroke form # FULLWIDTH DIGIT ZERO
|}
== Unicode 12.0 ==
Unicode 12.0 was released on March 5, 2019. It encoded 137,928 characters, adding 554 new characters.
=== New blocks ===
* '''Elymaic''' (U+10FE0-U+10FFF), containing 23 characters, was added.
* '''Nandinagari''' (U+119A0-U+119FF), containing 65 characters, was added.
* '''Tamil Supplement''' (U+11FC0-U+11FFF), containing 51 characters, was added.
* '''Egyptian Hieroglyph Format Controls''' (U+13430-U+1343F), containing 9 characters, was added.
* '''Small Kana Extension''' (U+1B130-U+1B16F), containing 7 characters, was added.
* '''Nyiakeng Puachue Hmong''' (U+1E100-U+1E14F), containing 71 characters, was added.
* '''Wancho''' (U+1E2C0-U+1E2FF), containing 59 characters, was added.
* '''Ottoman Siyaq Numbers''' (U+1ED00-U+1ED4F), containing 61 characters, was added.
* '''Symbols and Pictographs Extended-A''' (U+1FA70-U+1FAFF), containing 16 characters, was added.
=== Extended blocks ===
* A sign Siddham (total 1 character) was added to '''Telugu'''. (U+0C77)
* Letters for Pail and Sanskrit (total 15 characters) were added to '''Lao'''. (U+0E86, U+0E89, U+0E8C, U+0E8E-U+0E93, U+0E98, U+0EA0, U+0EA8-U+0EA9, U+0EAC and U+0EBA)
* A sign Double Anusvara Antargomukha (total 1 character) was added to '''Vedic Extensions'''. (U+1CFA)
* An astrological symbol and Hellschreiber Pause symbol (total 2 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BC9 and U+2BFF)
* A Cornish Verse Divider (total 1 character) was added to '''Supplemental Punctuation'''. (U+2E4F)
* Egyptological letters, Anglicana W and letters for early Pinyin (total 11 characters) were added to '''Latin Extended-D'''. (U+A7BA-U+A7BF and U+A7C2-U+A7C6)
*Sinological phonetic letters (total 2 characters) were added to '''Latin Extended-E'''. (U+AB66-U+AB67)
* A Vedic Anusvara (total 1 character) was added to '''Newa'''. (U+1145F)
* An archaic letter Kha (total 1 character) was added to '''Takri'''. (U+116B8)
* Sign Jihvamuliya and Uphadhmaniya (total 2 characters) were added to '''Soyombo'''. (U+11A84-U+11A85)
* Letters for various Yi and Miao languages (total 16 characters) were added to '''Miao'''. (U+16F45-U+16F4A, U+16F4F and U+16F7F-U+16F87)
* Marks for Ancient Chinese texts (total 2 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE2-U+16FE3)
* Some additional ideographs (total 6 characters) were added to '''Tangut'''. (U+187F2-U+187F7)
* A Nasalization mark (total 1 character) was added to '''Adlam'''. (U+1E94B)
* A Spanish and Portuguese register mark (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F16C)
* Hindu Temple and Auto Rickshaw emoji (total 2 characters) were added to '''Transport and Map Symbols'''. (U+1F6D5 and U+1F6FA)
* Large colored circles and boxes (total 12 characters) were added to '''Geometric Shapes Extended'''. (U+1F7E0-U+1F7EB)
* (total 31 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90D-U+1F90F, U+1F93F, U+1F971, U+1F97B, U+1F9A5-U+1F9AA, U+1F9AE-U+1F9AF, U+1F9BA-U+1F9BF, U+1F9C3-U+1F9CA and U+1F9CD-U+1F9CF)
* Heterodox chess symbols (total 84 characters) were added to '''Chess Symbols'''. (U+1FA00-U+1FA53)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Spacing Modifier Letters
|02EA, 02EB
|2
|-
|Vedic Extensions
|1CF2..1CF3
|2
|-
|Currency Symbols
|20A9
|1
|-
|CJK Symbols and Punctuation
|3001, 3002
|2
|-
|Bopomofo
|3105..312F
|43
|-
|Bopomofo Extended
|31A0..31BA
|27
|-
|CJK Unified Ideographs Extension A
|37C3, 3B9D, 3CFD, 3FE0, 44EC, 4A76
|6
|-
|CJK Unified Ideographs
|5344, 55B9, 6ABC, 6FF9, 809E, 80BC, 80E9, 8132, 8159, 841C, 891D, 8C6C, 915E, 9FD4
|14
|-
|Phags-pa
|A840..A877
|56
|-
|Halfwidth and Fullwidth Forms
|FF01, FF0C, FF0E, FF1A, FF1B, FF1F
|6
|-
|CJK Unified Ideographs Extension B
|200DD, 20164, 20BBF, 20C02, 20CED, 21D4C, 2278B, 23AB8, 2459B, 24A7D, 24FB9, 25ED7, 2677C, 26B4C, 26C21, 26CBE, 26E3D, 28834, 289A1, 289C0, 28A0F, 28B46
|22
|-
|CJK Unified Ideographs Extension C
|2A8FB, 2A917, 2AA30
|3
|-
|CJK Unified Ideographs Extension E
|2BA52, 2BD77, 2C494, 2C72F, 2C734, 2CB38
|6
|-
|CJK Unified Ideographs Extension F
|2D23B, 2E83A
|2
|-
! colspan="2" |Total
!192
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|3001 FE00
|
|corner-justified form # IDEOGRAPHIC COMMA
|-
|3001 FE01
|
|centered form # IDEOGRAPHIC COMMA
|-
|3002 FE00
|
|corner-justified form # IDEOGRAPHIC FULL STOP
|-
|3002 FE01
|
|centered form # IDEOGRAPHIC FULL STOP
|-
|FF01 FE00
|
|corner-justified form # FULLWIDTH EXCLAMATION MARK
|-
|FF01 FE01
|
|centered form # FULLWIDTH EXCLAMATION MARK
|-
|FF0C FE00
|
|corner-justified form # FULLWIDTH COMMA
|-
|FF0C FE01
|
|centered form # FULLWIDTH COMMA
|-
|FF0E FE00
|
|corner-justified form # FULLWIDTH FULL STOP
|-
|FF0E FE01
|
|centered form # FULLWIDTH FULL STOP
|-
|FF1A FE00
|
|corner-justified form # FULLWIDTH COLON
|-
|FF1A FE01
|
|centered form # FULLWIDTH COLON
|-
|FF1B FE00
|
|corner-justified form # FULLWIDTH SEMICOLON
|-
|FF1B FE01
|
|centered form # FULLWIDTH SEMICOLON
|-
|FF1F FE00
|
|corner-justified form # FULLWIDTH QUESTION MARK
|-
|FF1F FE01
|
|centered form # FULLWIDTH QUESTION MARK
|}
== Unicode 12.1 ==
Unicode 12.1 was released on May 7, 2019. It encoded 137,929 characters, adding only 1 new character.
=== Extended blocks ===
* A square era name Reiwa (total 1 character) was added to '''Enclosed CJK Letters and Months'''. (U+32FF)
== Unicode 13.0 ==
Unicode 13.0 was released on March 10, 2020. It encoded 143,859 characters, adding 5,930 new characters.
=== New blocks ===
* '''Yezidi''' (U+10E80-U+10EBF), containing 47 characters, was added.
* '''Chorasmian''' (U+10FB0-U+10FDF), containing 28 characters, was added.
* '''Dives Akuru''' (U+11900-U+1195F), containing 72 characters, was added.
* '''Lisu Supplement''' (U+11FB0-U+11FBF), containing 1 character, was added.
* '''Khitan Small Script''' (U+18B00-U+18CFF), containing 470 characters, was added.
* '''Tangut Supplement''' (U+18D00-U+18D08), containing 9 characters, was added.
* '''Symbols for Legacy Computing''' (U+1FB00-U+1FBFF), containing 212 characters, was added.
* '''CJK Unified Ideographs Extension G''' (U+30000-U+3134F), containing 4939 characters, was added.
=== Extended blocks ===
* Letters for African languages and Punjabi (total 10 characters) were added to '''Arabic Extended-A'''. (U+08BE-U+08C7)
* A sign Overline (total 1 character) was added to '''Oriya'''. (U+0B55)
* A Vedic Anusvara (total 1 character) was added to '''Malayalam'''. (U+0D04)
* A sign Candrabindu (total 1 character) was added to '''Sinhala'''. (U+0D81)
* Combining diacritical marks for Scottish phonology (total 2 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1ABF-U+1AC0)
* A Japanese symbol for Type A Electronics (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B97)
* Cross patties and a Tironian sign Capita Et (total 3 characters) were added to '''Supplemental Punctuation'''. (U+2E50-U+2E52)
* Letters for Taiwan and Cantonese language (total 5 characters) were added to '''Bopomofo Extended'''. (U+31BB-U+31BF)
* Some disunified ideographs (total 10 characters) were added to '''CJK Unified Ideographs Extension A'''. (U+4DB6-4DBF)
* Some ideographs for China (total 13 characters) were added to '''CJK Unified Ideographs'''. (U+9FF0-U+9FFC)
* Letters for Gaulish (total 6 characters) were added to '''Latin Extended-D'''. (U+A7C7-U+A7CA and U+A7F5-U+A7F6)
* An alternate sign Nasanta (total 1 character) was added to '''Syloti Nagri'''. (U+A82C)
* Letter R With Midle Tilde and modifier letters for Scottish phonology (total 4 characters) were added to '''Latin Extended-E'''. (U+AB68-U+AB6B)
* A symbol Ascia (total 1 character) was added to '''Ancient Symbols'''. (U+1019C)
* A letter for Pali (total 1 character) was added to '''Chakma'''. (U+11147)
* A vowel sign Prishthamatra E and Inverted Candrabindu (total 2 characters) were added to '''Sharada'''. (U+111CE and U+111CF)
* Double comma, sign Jihvamuliya and Uphadhmaniya (total 3 characters) were added to '''Newa'''. (U+1145A and U+11460-U+11461)
* Khitan Small Script Filler and reading marks for Vietnamese (total 3 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE4 and U+16FF0-U+16FF1)
* Some additional components (total 13 characters) were added to '''Tangut Components'''. (U+18AF3-U+18AFF)
* Creative Commons license symbols and Mask Work symbol (total 7 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10D-U+1F10F, U+1F16D-1F16F and U+1F1AD)
* Hut, Elevator, Pickup Truck and Roller Skate emoji (total 4 characters) were added to '''Transportation and Map Symbols'''. (U+1F6D6-U+1F6D7 and U+1F6FB-U+1F6FC)
* Arrows for legacy computing (total 2 characters) were added to '''Supplemental Arrows-C'''. (U+1F8B0-U+1F8B1)
* (total 10 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90C, U+1F972, U+1F977-U+1F978, U+1F9A3-U+1F9A4, U+1F9AB-U+1F9AD and U+1F9CB)
* (total 41 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA74, U+1FA83-U+1FA86, U+1FA96-U+1FAA8, U+1FAB0-U+1FAB6, U+1FAC0-U+1FAC2 and U+1FAD0-U+1FAD6)
* Gongche charaters for Kunqu Opera (total 7 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6D7-U+2A6DD)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Tagalog
|1700..170C, 170E..1714
|20
|-
|Mongolian
|1834, 1871, 1878
|3
|-
|Sundanese
|1BAB
|1
|-
|Currency Symbols
|20BF
|1
|-
|CJK Radicals Supplement
|2E80..2E99, 2E9B..2EF3
|115
|-
|Kangxi Radicals
|2F00..2FD5
|214
|-
|CJK Unified Ideographs Extension A
|3472, 38C7, 3DB8, 3FE0, 440B, 46E9
|6
|-
|CJK Unified Ideographs
|53FD, 6146, 6711, 671C, 6721, 6725, 6BD2, 7B9A, 87CE, 8956, 93BF, 9B97
|12
|-
|Latin Extended-D
|A764..A765
|2
|-
|Phags-pa
|A86D
|1
|-
|Tangut
|175F6, 17F0D, 17F8A, 17FA5, 180D6, 18139, 18147, 184F1, 18736
|9
|-
|Tangut Components
|18843, 18856, 1888C, 1890A, 18915, 1893B
|6
|-
|Adlam
|1E900..1E94A, 1E950..1E959, 1E95E..1E95F
|71
|-
|Miscellaneous Symbols and Pictographs
|1F3B1
|1
|-
|Supplemental Symbols and Pictographs
|1F995..1F998, 1F99B..1F99E, 1F9B0..1F9B3, 1F9E7
|13
|-
|CJK Unified Ideographs Extension B
|20219, 21249, 21827, 22C3A, 2327B, 23496, 2355E, 2363B, 236ED, 23839, 23FD5, 24261, 24726, 248F2, 2548E, 26657, 26C9E, 26FE1, 27334, 27C0E, 27CEF, 2A38C
|22
|-
|CJK Unified Ideographs Extension C
|2AED5, 2AEF3, 2AF76, 2B09F, 2B1C3, 2B1E5
|6
|-
|CJK Unified Ideographs Extension E
|2B83C, 2B8D9..2B8DA, 2B96F, 2BBD7, 2BD61, 2BE4A, 2BF1D, 2BF9D, 2C0B8, 2C142, 2C176, 2C316, 2C3FB, 2C402, 2C7AC, 2C82C, 2C83A, 2C9A1, 2CC88, 2CD68
|21
|-
|CJK Unified Ideographs Extension F
|2DC09, 2DE4A, 2EB7E, 2EB89
|4
|-
|CJK Compatibility Ideographs Supplement
|2F83B, 2F878, 2F8D6..2F8D7, 2F8DA, 2F8F0, 2F984, 2FA02
|8
|-
! colspan="2" |Total
!536
|}
== Unicode 14.0 ==
Unicode 14.0 was released on September 14, 2021. It encoded 144,697 characters, adding 838 new characters.
=== New blocks ===
* '''Arabic Extended-B''' (U+0870-U+089F), containing 41 characters, was added.
* '''Vithkuqi''' (U+10570-U+105BF), containing 70 characters, was added.
* '''Latin Extended-F''' (U+10780-U+107BF), containing 57 characters, was added.
* '''Old Uyghur''' (U+10F70-U+10FAF), containing 26 characters, was added.
* '''Unified Canadian Aboriginal Syllabics Extended-A''' (U+11AB0-U+11ABF), containing 16 characters, was added.
* '''Cypro-Minoan''' (U+12F90-U+12FFF), containing 99 characters, was added.
* '''Tangsa''' (U+16A70-U+16ACF), containing 89 characters, was added.
* '''Kana Extended-B''' (U+1AFF0-U+1AFFF), containing 13 characters, was added.
* '''Znamenny Musical Notation''' (U+1CF00-U+1CFFF), containing 185 characters, was added.
* '''Latin Extended-G''' (U+1DF00-U+1DFFF), containing 31 characters, was added.
* '''Toto''' (U+1E290-U+1E2BF), containing 31 characters, was added.
* '''Ethiopic Extended-B''' (U+1E7E0-U+1E7FF), containing 28 characters, was added.
=== Extended blocks ===
* An End of Text punctuation mark (total 1 character) was added to '''Arabic'''. (U+061D)
* Letters for Balti and Quranic orthography (total 12 characters) were added to '''Arabic Extended-A'''. (U+08B5 and U+08C8-U+08D2)
* A sign Nukta and letter Nakaara Pollu (total 2 characters) were added to '''Telugu'''. (U+0C3C and U+0C5D)
* A letter Nakaara Pollu (total 1 character) was added to '''Kannada'''. (U+0CDD)
* A letter Ra, sign Pamudpod and archaic letter Ra (total 3 characters) were added to '''Tagalog'''. (U+170D, U+1715 and U+171F)
* A fourth Free variation selector (total 1 character) was added to '''Mongolian'''. (U+180F)
* Combining diacritical marks for extended IPA (total 14 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1AC1-U+1ACE)
* An archaic ligature Jnya and punctuation marks (total 3 characters) were added to '''Balinese'''. (U+1B4C and U+1B7D-U+1B7E)
* A combining Dot Below Left (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFA)
* A Kyrgyz Som sign (total 1 character) was added to '''Currency Symbols'''. (U+20C0)
* A letter Caudate Chrivi (total 2 characters) were added to '''Glagolitic'''. (U+2C2F and U+2C5F)
* Medieval and phonetic punctuation marks (total 11 characters) were added to '''Supplemental Punctuation'''. (U+2E53-U+2E5D)
* Some ideographs for Macao (total 3 characters) were added to '''CJK Unified Ideographs'''. (U+9FFD-U+9FFF)
* Archaic European letters, modifier letters for Sokuon and Chatino orthography (total 13 characters) were added to '''Latin Extended-D'''. (U+A7C0-U+A7C1, U+A7D0-U+A7D1, U+A7D3, U+A7D5, U+A7D6-U+A7D9 and U+A7F2-U+A7F4)
* A modifier letter Wasla Above and honorifics (total 20 characters) were added to '''Arabic Presentation Forms-A'''. (U+FBC2, U+FD40-U+FD4F, U+FDCF and U+FDFE-U+FDFF)
* Letters for Old Tamil (total 6 characters) were added to '''Brahmi'''. (U+11070-U+11075)
* A vowel sign Vocalic R (total 1 character) was added to '''Khaiti'''. (U+110C2)
* An Abbreviation sign (total 1 character) was added to '''Takri'''. (U+116B9)
* Letters for Tai Ahom (total 7 characters) were added to '''Ahom'''. (U+11740-U+11746) The block was expanded from (U+11700-U+1173F) to (U+11700-U+1174F)
* Kana archaic letters (total 4 characters) were added to '''Kana Extended-A'''. (U+1B11F-U+1B122)
* Accidental symbols for Iranian classical music (total 2 characters) were added to '''Musical Symbols'''. (U+1D1E9-U+1D1EA)
* Playground Slide, Wheel and Ring Buoy emoji (total 3 characters) were added to '''Transportation and Map Symbols'''. (U+1F6DD-U+1F6DF)
* A Heavy Equals Sign emoji (total 1 character) was added to '''Geometric Shapes Extended'''. (U+1F7F0)
* A Troll and Face Holding Back Tears emoji (total 2 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F979 and U+1F9CC)
* (total 31 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA7B-U+1FA7C, U+1FAA9-U+1FAAC, U+1FAB7-U+1FABA, U+1FAC3-U+1FAC5, U+1FAD7-U+1FAD9, U+1FAE0-U+1FAE7 and U+1FAF0-U+1FAF6)
* Some ideographs for Macao (total 2 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6DE-U+2A6DF)
* Disunified ideographs and a G source ideograph for China, Hong Kong and Vietnam (total 4 characters) were added to '''CJK Unified Ideographs Extension C'''. (U+2B735-U+2B738)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Latin Extended-B
|0184..0185
|2
|-
|Arabic
|0674..0678, 06C5, 06C7, 06FE
|8
|-
|Letterlike Symbols
|210B, 2110, 2112, 211B, 212C, 2130..2131, 2133
|8
|-
|Enclosed Alphanumerics
|2460..24FF
|160
|-
|Dingbats
|2776..2793
|30
|-
|CJK Symbols and Punctuation
|3001..3029, 3030..303D, 303F
|56
|-
|CJK Strokes
|31C0..31E3
|36
|-
|Katakana Phonetic Extensions
|31F0..31FF
|16
|-
|Enclosed CJK Letters and Months
|3200..321E, 3220..32FF
|255
|-
|CJK Compatibiity
|3300..33FF
|256
|-
|CJK Unified Ideographs Extension A
|3777, 3B3F
|2
|-
|CJK Unified Ideographs
|5DD5, 652C, 6AC0
|3
|-
|Arabic Presentation Forms-A
|FBD7..FBD8, FBDD, FBE0..FBE1
|5
|-
|Vertical Forms
|FE10..FE19
|10
|-
|CJK Compatibiity Forms
|FE30..FE4F
|32
|-
|Small Form Variants
|FE50..FE52, FE54..FE66, FE68..FE6B
|26
|-
|Halfwidth and Fullwidth Forms
|FF01..FF9F, FFA1..FFBE, FFC2..FFC7, FFCA..FFCF, FFD2..FFD7, FFDA..FFDC, FFE0..FFE6, FFE8..FFEE
|225
|-
|Egyptian Hieroglyphs
|1300A, 13017, 1302D, 13032, 13034..13035, 13037..13038, 1303A..1303E, 1304E..1304F, 13055, 13057, 13068, 1309A, 130D2, 130D5, 130F6, 130FE, 13192, 1325F, 13267, 1326A, 13281, 13297, 1329E, 132B4, 132C1, 132E6, 13304, 1331F, 13378..1337B, 1337D..1337E, 133F3, 133FA..13403, 1340D, 13417, 1342B
|55
|-
|Mathematical Alphanumeric Symbols
|1D49C, 1D49E..1D49F, 1D4A2, 1D4A5..1D4A6, 1D4A9..1D4AC, 1D4AE..1D4B5
|18
|-
|Enclosed Alphanumeric Supplement
|1F100..1F1AD, 1F1E6..1F1FF
|200
|-
|Enclosed Ideographic Supplement
|1F200..1F202, 1F210..1F23B, 1F240..1F248, 1F250..1F251, 1F260..1F265
|64
|-
|Supplemental Symbols and Pictographs
|1F930
|1
|-
|CJK Unified Ideographs Extension B
|22ADC, 230F2, 25B27, 26F28
|4
|-
! colspan="2" |Total
!1472
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|1D49C FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE00
|
|chancery style # SCRIPT CAPITAL B
|-
|1D49E FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE00
|
|chancery style # SCRIPT CAPITAL E
|-
|2131 FE00
|
|chancery style # SCRIPT CAPITAL F
|-
|1D4A2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE00
|
|chancery style # SCRIPT CAPITAL H
|-
|2110 FE00
|
|chancery style # SCRIPT CAPITAL I
|-
|1D4A5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE00
|
|chancery style # SCRIPT CAPITAL L
|-
|2133 FE00
|
|chancery style # SCRIPT CAPITAL M
|-
|1D4A9 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE00
|
|chancery style # SCRIPT CAPITAL R
|-
|1D4AE FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Z
|-
|1D49C FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE01
|
|roundhand style # SCRIPT CAPITAL B
|-
|1D49E FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE01
|
|roundhand style # SCRIPT CAPITAL E
|-
|2131 FE01
|
|roundhand style # SCRIPT CAPITAL F
|-
|1D4A2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE01
|
|roundhand style # SCRIPT CAPITAL H
|-
|2110 FE01
|
|roundhand style # SCRIPT CAPITAL I
|-
|1D4A5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE01
|
|roundhand style # SCRIPT CAPITAL L
|-
|2133 FE01
|
|roundhand style # SCRIPT CAPITAL M
|-
|1D4A9 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE01
|
|roundhand style # SCRIPT CAPITAL R
|-
|1D4AE FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Z
|}
===Named Sequences===
Here is a table with new named character sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Name
|-
|0915 093C
|DEVANAGARI SEQUENCE FOR LETTER QA
|-
|0916 093C
|DEVANAGARI SEQUENCE FOR LETTER KHHA
|-
|0917 093C
|DEVANAGARI SEQUENCE FOR LETTER GHHA
|-
|091C 093C
|DEVANAGARI SEQUENCE FOR LETTER ZA
|-
|0921 093C
|DEVANAGARI SEQUENCE FOR LETTER DDDHA
|-
|0922 093C
|DEVANAGARI SEQUENCE FOR LETTER RHA
|-
|092B 093C
|DEVANAGARI SEQUENCE FOR LETTER FA
|-
|092F 093C
|DEVANAGARI SEQUENCE FOR LETTER YYA
|-
|09A1 09BC
|BENGALI SEQUENCE FOR LETTER RRA
|-
|09A2 09BC
|BENGALI SEQUENCE FOR LETTER RHA
|-
|09AF 09BC
|BENGALI SEQUENCE FOR LETTER YYA
|-
|0A32 0A3C
|GURMUKHI SEQUENCE FOR LETTER LLA
|-
|0A38 0A3C
|GURMUKHI SEQUENCE FOR LETTER SHA
|-
|0A16 0A3C
|GURMUKHI SEQUENCE FOR LETTER KHHA
|-
|0A17 0A3C
|GURMUKHI SEQUENCE FOR LETTER GHHA
|-
|0A1C 0A3C
|GURMUKHI SEQUENCE FOR LETTER ZA
|-
|0A2B 0A3C
|GURMUKHI SEQUENCE FOR LETTER FA
|-
|0B21 0B3C
|ORIYA SEQUENCE FOR LETTER RRA
|-
|0B22 0B3C
|ORIYA SEQUENCE FOR LETTER RHA
|}
== Unicode 15.0 ==
Unicode 15.0 was released on September 13, 2022. It encoded 149,186 characters, adding 4,489 new characters.
=== New blocks ===
* '''Arabic Extended-C''' (U+10EC0-U+10EFF), containing 3 characters, was added.
* '''Devanagari Extended-A''' (U+11B00-U+11B5F), containing 10 characters, was added.
* '''Kawi''' (U+11F00-U+11F5F), containing 86 characters, was added.
* '''Kaktovik Numerals''' (U+1D2C0-U+1D2DF), containing 20 characters, was added.
* '''Cyrillic Extended-D''' (U+1E030-U+1E08F), containing 63 characters, was added.
* '''Nag Mundari''' (U+1E4D0-U+1E4FF), containing 42 characters, was added.
* '''CJK Unified Ideographs Extension H''' (U+31350-U+323AF), containing 4192 characters, was added.
=== Extended blocks ===
* A Yamakkan (total 1 character) was added to '''Lao'''. (U+0ECE)
* A combining Anusvara Above Right (total 1 character) was added to '''Kannada'''. (U+0CF3)
* Letters Qa, Short I and Vocalic R (total 3 characters) were added to '''Khojki'''. (U+1123F-U+11241)
* An additional hieroglyph to Group V (total 1 character) was added to '''Egyptian Hieroglyphs'''
* Extended format controls (total 29 characters) were added to '''Egyptian Hieroglyph Format Controls'''. (U+13439-U+13455). The block was expanded from (U+13430-U+1343F) to (U+13430-U+1345F)
* Hiragana and Katakana Small Ko (total 2 characters) were added to '''Small Kana Extension'''. (U+1B132 and U+1B155)
* Letters for Malayalam transliteration (total 6 characters) were added to '''Latin Extended-G'''. (U+1DF25-U+1DF2A)
* A Wireless emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6DC)
* A Nine Pointed White Star (total 1 character) was be added to '''Geometric Shapes Extended'''. (U+1F7D9)
* A Lot of Fortune, eclipse symbols and symbols for dwarf planets (total 6 characters) were added to '''Alchemical symbols'''. (U+1F774-U+1F776 and U+1F77B-U+1F77F)
* (total 20 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA75-U+1FA77, U+1FA87-U+1FA88, U+1FAAD-U+1FAAF, U+1FABB-U+1FABF, U+1FACE-U+1FACF, U+1FADA-U+1FADB, U+1FAE8 and U+1FAF7-U+1FAF8)
* A disunified ideograph for Macao (total 1 character) was added to '''CJK Unified Ideographs Extension C'''. (U+2B739)
===Glyph Changes===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|IPA Extensions
|025E, 029A
|2
|-
|United Canadian Aboriginal Syllabics
|144B, 14D1, 1506, 15C0..15C3, 15E8..15EE, 1601, 1604..1607, 160A..160D, 1614..162D, 1630..163F, 1646..1647, 165A
|66
|-
|United Canadian Aboriginal Syllabics Extended
|18DB, 18EC, 18F1..18F2, 18F5
|5
|-
|Sundanese
|1BBF
|1
|-
|Optical Character Recognition
|2447
|1
|-
|CJK Unified Ideographs Extension A
|34DC, 3BF6, 3C43, 48B4, 4DBE
|5
|-
|CJK Unified Ideographs
|585F, 5F50, 6BC0, 7BC9, 833E
|5
|-
|Cyrillic Extended-B
|A66E
|1
|-
|Old Turkic
|10C47
|1
|-
|Egyptian Hieroglyphs
|various (new standardized variation sequences)
|94
|-
|Khitan Small Script
|18CCA
|1
|-
|Wancho (font update)
|1E2C0..1E2F9, 1E2FF
|59
|-
|Alchemical Symbols (font update)
|1F700..1F773
|116
|-
|CJK Unified Ideographs Extension B
|20048, 20A1C, 2143F, 21A5F, 21C08, 21FBA, 22ACF, 23392, 238A7, 23D8F, 23F4E, 25D20, 26E30, 27B48, 27C4F, 28633, 28B02, 28E9A, 29760, 2A60F
|20
|-
|CJK Unified Ideographs Extension C
|2B249
|1
|-
|CJK Unified Ideographs Extension E
|2BB37, 2BD7D, 2C151, 2C1E0, 2C2D6, 2C5CA, 2C810, 2CD34
|8
|-
|CJK Unified Ideographs Extension F
|2CF4E, 2D25D, 2D3EC, 2D6A7, 2D7BA, 2D979, 2DA74, 2DA97, 2DC13, 2DDC0, 2DF10, 2DF78, 2E05A, 2E0AE, 2E516, 2E640, 2E680, 2EA63
|18
|-
|CJK Compatibility Ideographs Supplement
|2F804, 2F805, 2F833, 2F835, 2F84C, 2F84F, 2F852, 2F855, 2F887, 2F88B, 2F899, 2F8A0, 2F8A6, 2F8A7, 2F8AD, 2F8B1, 2F8B4, 2F8B7, 2F8BA, 2F8D0, 2F8E0..2F8E2, 2F8E5, 2F8E6, 2F8FE, 2F900, 2F901, 2F907, 2F912, 2F922, 2F926, 2F936, 2F938, 2F94E, 2F959, 2F95F, 2F96C, 2F99F, 2F9B8, 2F9BA, 2F9D3, 2F9DB, 2F9DC, 2F9E8, 2F9EA, 2F9EE, 2FA00, 2FA0D, 2FA1B
|50
|-
|CJK Unified Ideographs Extension G
|302FC, 30723, 30A6D, 30CF7, 30DBF, 31006, 3105D
|7
|-
! colspan="2" |Total
!461
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|13091 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027
|-
|13092 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027A
|-
|13093 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D028
|-
|130A9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D047
|-
|1310F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F016
|-
|13117 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F023
|-
|1311C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F028
|-
|13121 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F032
|-
|13127 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F037A
|-
|13139 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13139 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13183 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH H005
|-
|13187 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH H008
|-
|131A0 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131A0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131B1 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B1 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B8 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M009
|-
|131B9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M010
|-
|131BA FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M010A
|-
|131CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M017
|-
|131EE FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131EE FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131F8 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N010
|-
|131F9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131F9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131FA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N012
|-
|131FA FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N012
|-
|13216 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH N035
|-
|13257 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O006
|-
|1327B FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH O029
|-
|1327F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O031
|-
|1327F FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O031
|-
|13285 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O036
|-
|1328C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O039
|-
|132A4 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132A4 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132AA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Q003
|-
|132CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH R024
|-
|132DC FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S010
|-
|132E7 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E7 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E9 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S020
|-
|132F8 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S033
|-
|132FD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S037
|-
|13302 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S042
|-
|13303 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S043
|-
|13307 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T001
|-
|13308 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T002
|-
|13310 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008
|-
|13311 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008A
|-
|13312 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13312 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13313 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13313 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13314 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T010
|-
|13314 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T010
|-
|1331B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331B FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T016A
|-
|13321 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13321 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13322 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13322 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13331 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T035
|-
|13331 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T035
|-
|1333B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U007
|-
|1333C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U008
|-
|1334A FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U022
|-
|13361 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U042
|-
|13373 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V007A
|-
|13377 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V010
|-
|13378 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V011
|-
|1337D FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V012A
|-
|13385 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V019
|-
|13399 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V026
|-
|1339A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V027
|-
|133AF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W001
|-
|133B0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W002
|-
|133BF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W014
|-
|133D3 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH X004A
|-
|133DD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH Y002
|-
|133F2 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z007
|-
|133F5 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z010
|-
|133F6 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z011
|-
|13403 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z015I
|-
|13416 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA008
|-
|13419 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|1341A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA012
|-
|13423 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA021
|-
|1342C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA030
|-
|1342E FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA032
|-
|13443 FE00
|
|expanded # EGYPTIAN HIEROGLYPH LOST SIGN
|-
|13444 FE00
|
|expanded # EGYPTIAN HIEROGLYPH HALF LOST SIGN
|-
|13445 FE00
|
|expanded # EGYPTIAN HIEROGLYPH TALL LOST SIGN
|-
|13446 FE00
|
|expanded # EGYPTIAN HIEROGLYPH WIDE LOST SIGN
|}
== Unicode 15.1 ==
Unicode 15.1 was released on September 12th, 2023. It encoded 149,813 characters, adding 627 new characters.
=== New Blocks ===
* '''CJK Unified Ideographs Extension I''' (U+2EBF0-U+2EE5F), containing 622 characters, was added.
=== Extended Blocks ===
* 4 Ideographic characters were added to '''Ideographic Description Characters'''. (U+2FFC-U+2FFF)
* An Ideographic subtraction (total 1 character) was added to '''CJK Strokes'''. (U+31EF)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|CJK Unified Ideographs Extension A
|357E, 358B..358E, 3599..359D, 35AF..35B0, 35B2..35B3, 35DF..35E1, 35EF, 360F, 3612, 3F94, 44D5, 48EE
|5
|-
|CJK Unified Ideographs
|5098, 512D, 517A, 5391, 54DB, 551C, 551F, 55B8, 55ED, 56AB, 591E, 594A, 5B2E, 5DFC..5DFD, 5EE4, 609E, 65B0, 65B3, 65D5, 65F2, 67B2, 6AB6, 6AEC, 6C69, 6FC2, 6FD3, 7019, 7361, 74BD, 7934, 820B, 826E, 83BB, 8412, 8456, 848A, 896F, 8E34, 8FD7, 9166, 9855, 985E, 9C4D
|5
|-
|Latin Extended-D
|A798
|1
|-
|Latin Extended-E
|AB5A
|1
|-
|Tangut
|17105, 172A4, 17BD1..17BD3, 17EF9, 18136
|59
|-
|Alchemical Symbols
|1F741, 1F747, 1F74C, 1F74F, 1F756, 1F758, 1F763, 1F768, 1F76D, 1F76E
|116
|-
|CJK Unified Ideographs Extension B
|20302, 2087A, 20C00, 230B7, 2339E, 236EF, 237C3, 23B87, 23CC0, 23CD9, 23E5E, 2486F, 249D6, 249E8, 24D6A, 2585E, 25D89, 26A5A..26A5B, 26A73, 26A82..26A83, 26A90, 26AA6, 26AA8, 26AD8, 27350, 279F8, 284A3, 28BBA, 29516, 29530
|20
|-
|CJK Unified Ideographs Extension C
|2A741, 2AB63, 2ACD8, 2AF6F, 2B173, 2B490
|1
|-
|CJK Unified Ideographs Extension E
|2BC2E, 2BF45, 2C04C, 2C13A, 2C43C, 2C43E, 2C816
|8
|-
|CJK Unified Ideographs Extension F
|2D1CC..2D1CD, 2D1DD, 2D1E4, 2D1F7, 2D203, 2D256, 2D266, 2D2A2, 2D2AC, 2D2DA
|18
|-
|CJK Unified Ideographs Extension G
|301D4, 301D9, 301E4, 301E8, 301FF..30200, 30205, 3020C, 30211, 30215..30217, 30220, 30234..30235, 30237
|7
|-
|CJK Unified Ideographs Extension H
|314B7, 31542, 31569, 31C7F, 31D5A, 31F68
|7
|-
! colspan="2" |Total
!164
|}
== Unicode 16.0 ==
Unicode 16.0 was released on September 10th, 2024. It encoded 154,998 characters, adding 5185 new characters.
=== New Blocks ===
* '''Todhri''' (U+105C0-U+105FF), containing 52 characters, was added.
* '''Garay''' (U+10D40-U+10D8F), containing 69 characters, was added.
* '''Tulu-Tigalari''' (U+11380-U+113FF), containing 80 characters, was added.
* '''Myanmar Extended-C''' (U+116D0-U+116FF), containing 20 characters, was added.
* '''Sunuwar''' (U+11BC0-U+11BFF), containing 44 characters, was added.
* '''Egyptian Hieroglyphs Extended-A''' (U+13460-U+143FF), containing 3995 characters, was added.
* '''Gurung Khema''' (U+16100-U+1613F), containing 58 characters, was added.
* '''Kirat Rai''' (U+16D40-U+16D7F), containing 58 characters, was added.
* '''Symbols for Legacy Computing Supplement''' (U+1CC00-U+1CEBF), containing 686 characters, was added.
* '''Ol Onal''' (U+1E5D0-U+1E5FF), containing 44 characters, was added.
=== Extended Blocks ===
* A combining diacritical mark for Jawi (total 1 character) was added to '''Arabic Extended-B'''. (U+0897)
* Inverted letters and a punctuation mark (total 3 characters) was added to '''Balinese'''. (U+1B4E-U+1B4F and U+1B7F)
* A letter Tje (total 2 characters) was added to '''Cyrillic Extended-C'''. (U+1C89-U+1C8A)
* Legacy computing symbols for Delete (total 3 characters) was added to '''Control Pictures'''. (U+2427-U+2429)
* CJK strokes HXG and SZP (total 2 characters) was added to '''CJK Strokes'''. (U+31E4-U+31E5)
* A capital Rams Horn, an S with Diagonal Stroke, Lamda Letters, and letters for Wakashan and Salishan Languages (total 6 characters) was added to '''Latin Extended-D'''. (U+A7CB-U+A7CD, U+A7DA-U+A7DC)
* A combining Alef overlay and letters with two dots vertically below (total 4 characters) was added to '''Arabic Extended-C'''. (U+10EC2-U+10EC4 and U+10EFC)
* A sign Nukta (total 1 character) was added to '''Kawi'''. (U+11F5A)
* A blank character (total 1 character) was added to '''Khitan Small Script'''. (U+18CFF)
* A rightwards arrow with hook, and arrows for legacy computing and arrows for Egyptology (total 12 characters) was added to '''Supplemental Arrows-C'''. (U+1F8B2-U+1F8BB, U+1F8C0-U+1F8C1)
* A Harp, Shovel, Leafless Tree, Fingerprint, Root Vegetable, Splatter, and Face with Bags Under Eyes (total 7 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA89, U+1FA8F, U+1FABE, U+1FAC6, U+1FADC, U+1FADF, and U+1FAE9)
* Graphic shapes for legacy computing (total 37 characters) was added to '''Symbols for Legacy Computing'''. (U+1FBCB-U+1FBEF)
== Unicode 17.0 ==
Unicode 17.0 was released on September 9th, 2025. It encoded 159,801 characters, adding 4,083 new characters.
=== New Blocks ===
* '''Sidetic''' (U+10940-U+1095F), containing 26 characters, was added.
* '''Sharada Supplement''' (U+11B60-U+11B7F), containing 8 characters, was added.
* '''Tolong Siki''' (U+11DB0-U+11DEF), containing 54 characters, was added.
* '''Beria Erfe''' (U+16EA0-U+16EDF), containing 50 characters, was added.
* '''Tangut Components Supplement''' (U+18D80-U+18DFF), containing 115 characters, was added.
* '''Miscellaneous Symbols Supplement''' (U+1CEC0-U+1CEFF), containing 34 characters, was added.
* '''Tai Yo''' (U+1E6C0-U+1E6FF), containing 55 characters, was added.
* '''CJK Unified Ideographs Extension J''' (U+323B0-U+3347F), containing 4298 characters, was added.
=== Extended Blocks ===
* A Noon with Ring Above (total 1 character) was added to '''Arabic Extended-B'''. (U+088F)
* An archaic ligature Shrii (total 1 character) was added to '''Telugu'''. (U+0C5C)
* An archaic ligature Shrii (total 1 character) was added to '''Kannada'''. (U+0CDC)
* Compound tone and harrington diacritics (total 26 characters) was to '''Combining Diacritical Marks Extended'''. (U+1ACF-U+1ADD, U+1AE0-U+1AEB)
* Saudi Riyal Sign (total 1 character) was added to '''Currency Symbols'''. (U+20C1)
* Equal Sign with Infinity Above (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B96)
* 2 capital letters for Middle English, Latin pharyngeal voiced fricative, and Modifier Letter Capital S (total 5 characters) was added to '''Latin Extended-D'''. (U+A7CE-U+A7CF, U+A7D2, U+A7D4, U+A7F1)
* Arabic Ligature Rahmatu Allaahi Alayh and Arabic Honorifics (total 25 characters) was added to '''Arabic Presentation Forms-A'''. (U+FBC3-U+FBD2, U+FD90, U+FD91, U+FDC8-U+FDCE)
* A Small Yeh Barree with Two Dots Below, Thin Noon, Biblical End of Verse, Yeh with Four Dots Below, Honorifics, Double Vertical Bar Below, and Small Low Noon (total 14 characters) was added to '''Arabic Extended-C'''. (U+10EC5-U+10EC7, U+10ED0-U+10ED8, U+10EFA-U+10EFB)
* Chinese Simplified and Traditional Er and Yangqin Slow Signs Two, Three, and Four (total 5 characters) was added to '''Ideographic Symbols and Punctuation'''. (U+16FF2-U+16FF6)
* Some additional ideographs (total 8 characters) was added to '''Tangut'''. (U+187F8-U+187FF)
* Additional ideographs (total 22 characters) was added to '''Tangut Supplement'''. (U+18D09-U+18D1E)
* Nine symbols (total 9 characters) was added to '''Symbols for Legacy Computing Supplement'''. (U+1CCFA-U+1CCFC, U+1CEBA-1CEBF)
* A Landslide (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D8)
* Historical asteroid symbols (total 4 characters) was added to '''Alchemical Symbols'''. (U+1F777-U+1F77A)
* Chemical symbols (total 9 characters) was added to '''Supplemental Arrows-C'''. (U+1F8D0-U+1F8D8)
* White and Black Chess Ferz and Alfil (total 4 characters) was added to '''Chess Symbols'''. (U+1FA54-U+1FA57)
* A trombone, treasure chest, hairy creature, orca, distorted face, and fight cloud (total 6 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA8A, U+1FA8E, U+1FAC8, U+1FACD, U+1FAEA, and U+1FAEF)
* An alarm bell symbol (total 1 character) was added to '''Symbols for Legacy Computing'''. (U+1FBFA)
* Additional ideographs (total 6 characters) was added to '''CJK Unified Ideographs Extension C'''. (U+2B73A-U+2B73F)
* Additional ideographs (total 12 characters) was added to '''CJK Unified Ideographs Extension E'''. (U+2CEA2-U+2CEAD)
== Unicode 18.0 ==
Unicode 18.0 will be released on September 16, 2026.
=== New Blocks ===
*'''Bengali Supplement''' (U+11DF0-U+11DFF), containing 2 characters, will be added.
* '''Archaic Cuneiform Numerals''' (U+12550-U+1268F), containing 311 characters, will be added.
* '''Jurchen''' (U+18E00-U+1919F), containing 914 characters, will be added.
* '''Jurchen Radicals''' (U+191A0-U+191DF), containing 51 characters, will be added.
* '''Musical Symbols Supplement''' (U+1D250-U+1D28F), containing 50 characters, will be added.
* '''Miscellaneous Symbols and Arrows Extended''' (U+1DB00-U+1DBFF), containing 29 characters, will be added.
* '''Seal Script''' (U+3D000-U+3FC3F), containing 11328 characters, will be added.
=== Extended Blocks ===
* Modifier letters Eh, Ini, and Yi (total 3 characters) will be added to '''Armenian'''. (U+0558, U+058B-U+058C)
* Hebrew Point Sheva Na Mudgash and Hebrew Point Dagesh Hazaq Mudgash (total 2 characters) will be added to '''Hebrew'''. (U+05C8-U+05C9)
* Signs for dot above and double dot above (total 2 characters) will be added to '''Oriya'''. (U+0B53-U+0B54)
* Alternate positioned IPA diacritics and diacritics for Chao and Khoe (total 7 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1ADE-U+1ADF, U+1AEC-U+1AF0)
* Latin subscript small letter w, y, and z and Modifier letter high and low vertical line (total 4 characters) will be added to '''Superscripts and Subscripts'''. (U+208F, U+209D-U+209F)
* Rufiyaa Sign, UAE Dirham Sign, and Omani Rial (total 3 characters) will be added to '''Currency Symbols'''. (U+20C2-U+20C4)
* Two Wiggly Exclamation Marks and Two Parenthesis with Middle Ring (total 4 characters) will be added to '''Supplemental Punctuation'''. (U+2E60-U+2E63)
* Latin capital letter closed omega and Latin capital letter r with long leg and (total 2 characters) will be added to '''Latin Extended-D'''. (U+A7DD and U+A7E2)
* Latin capital letter script r and script r with ring (total 2 characters) will be added to '''Latin Extended-E'''. (U+AB6C-U+AB6D)
* Latin modifier letters for clicks (total 5 characters) will be added to '''Latin Extended-F'''. (U+107BB-U+107BF)
* Arabic Crown Letters, Quranic Characters, and Arabic Crown (total 39 characters) will be added to '''Arabic Extended-C'''. (U+10EC9-U+10ECF, U+10ED9-U+10EEE, U+10EF0-U+10EF9)
* Devanagari Letter Alternate Ddda (total 1 character) will be added to '''Devanagari Extended-A'''. (U+11B0A)
* Extended Cuneiform Numeric Signs (total 12 characters) will be added to '''Cuneiform Numbers and Punctuation'''. (U+1246F, U+12475-U+1247F)
* Jurchen Small Script characters (total 5 characters) will be added to '''Khitan Small Script'''. (U+18CD6-U+18CDA)
* Two additional ideographs (total 2 characters) will be added to '''Tangut Supplement'''. (U+18D1F-U+18D20)
* Hiragana Digraph Koto, Katakana Diagraphs Toki, Tote, and Yori, letters alternate Ne, and Wi (total 6 characters) will be added to '''Kana Extended-A'''. (U+1B123-U+1B128)
* Katakana letter small archaic Ye (total 1 character) will be added to '''Small Kana Extension'''. (U+1B168)
* Leibnizian alchemical symbols, Leibnizian cossic characters, and Leibnizian mathematical signs and symbols (total 19 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED2-U+1CED4, U+1CEDD-U+1CEDF, U+1CEF1-U+1CEFD)
* Stein Zimmerman Symbols, Digit Slash Symbols, and other Symbols (total 23 characters) will be added to '''Musical Symbols'''. (U+1D127-U+1D128, U+1D1EB-U+1D1FF)
* Mathematical italic long s with descender s (U+1D6A6) will be added to '''Mathematical Alphanumeric Symbols'''.
* Affricate ligatures, letters with palatal hook, barred letters, RFE letters, Initial Teaching Alphabet, English Phonotypic Alphabet, Leibnizian cossic characters, and modifier letters (total 151 characters) will be added to '''Latin Extended-G'''. (U+1DF1F-U+1DF24, U+1DF2B-U+1DF81, U+1DF90-U+1DF96, U+1DFCD-U+1DFFF)
* A Tomobiki symbol (total 1 character) will be added to '''Enclosed Alphanumeric Supplement'''. (U+1F1AE)
* A lighthouse (total 1 character) will be added to '''Transport and Map Symbols'''. (U+1F6D9)
* A black circle with white vertical bar, and Extended Geometric Shapes (total 17 characters) will be added to '''Geometric Shapes Extended'''. (U+1F7DA-U+1F7DB, U+1F7F1-U+1F7FF)
* A meteor, eraser, net with handle, monarch butterfly, pickle, cracking face, leftwards thumb sign, and rightwards thumb sign (total 8 characters) will be added to '''Symbols and Pictographs Extended-A'''. (U+1FA8B-1FA8D, U+1FACC, U+1FADD, U+1FAEB, U+1FAF9-1FAFA)
* An additional ideograph (total 1 character) will be added to '''CJK Unified Ideographs Extension D'''. (U+2B81E)
== Unicode 19.0==
Unicode 19.0 will be released in late 2027. There are more characters targeted for this version, but they have not been confirmed yet.
=== New Blocks ===
* '''CJK Unified Ideographs Components-A''' (U+2FA20-U+2FA9F), containing 119 characters, will be added.
* '''CJK Unified Ideographs Components-B''' (U+2FAA0-U+2FC1F), containing 375 characters, will be added.
== Code Points Provisionally Assigned==
This is a section where you can add any upcoming Unicode characters that have been [https://www.unicode.org/alloc/Pipeline.html#codepoint_reservation provisionally assigned for mature proposals] (but not yet accepted) for a future update of The Unicode Standard.
=== New Blocks ===
* '''Arabic Extended-D''' (U+10D90-U+10E5F), containing 3 characters, will be added.
* '''Sirmauri''' (U+11850-U+1188F), containing 55 characters, will be added.<!--target: 19.0-->
* '''Leke''' (U+11B80-U+11BBF), containing 55 characters, will be added.
* '''Proto-Cuneiform''' (U+12690-U+12ECF), containing 1392 characters, will be added.<!--target: 19.0-->
* '''Chisoi''' (U+16D80-U+16DAF), containing 40 characters, will be added.<!--target: 19.0-->
* '''Mwangwego''' (U+16E00-U+16E3F), containing 64 characters, will be added.
* '''Shaaldaa''' (U+1C800-U+1CB2F), containing 804 characters, will be added.
* '''Leibnizian Ambiguous Signs''' (U+1DC00-U+1DC3F), containing 54 characters, will be added.)<!--target: 19.0-->
=== Extended Blocks ===
* Telugu Sign Spacing Candrabindu (total 1 character) will be added to '''Telugu'''. (U+0C70)<!--target: 19.0-->
* Kannada Signs Ardhanusvara and Combining Anusvara Above (total 1 character) will be added to '''Kannada'''. (U+0CF0 and U+0CF4)<!--target: 19.0-->
* Mongolian Letter Manchu Alternative Ue (total 1 character) will be added to '''Mongolian'''. (U+1879)
* Combining Grave-Acute-Macron, Combining inverted lazy s Above, and Combining comma Above and acute (total 3 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1AF1-U+1AF3)
* Cyrillic small letter Yeru with connecting bar (total 1 character) will be added to '''Cyrillic Extended-C'''. (U+1C8B)<!--target: 19.0-->
* Belarusian Ruble sign and Ruble sign with double vertical stem (total 2 characters) will be added to '''Currency Symbols'''. (U+20C5, U+20CF)<!--20C5 target: 19.0-->
* Combining Long Triple Solidus Overlay and Combining Saltire Overlay (total 2 characters) will be added to '''Combining Diacritical Marks for Symbols'''. (U+20F1-U+20F2)<!--target: 19.0-->
* Latin capital and small letter i with oblique stroke (total 2 characters) will be added to '''Latin Extended-D'''. (U+A7DE-U+A7DF)
* Latin capital letter u with left hook (total 1 character) will be added to '''Latin Extended-E'''. (U+AB6E)<!--target: 19.0-->
* Arabic Dotless Half-Yeh, Half-Yeh, Dotless Half-Jeem and Astronomical Kaf (total 4 characters) will be added to '''Arabic Extended-C'''. (U+10EC0-U+10EC1, U+10EC8, U+10EEF)<!--10EC0-10EC1 target: 19.0-->
* Brahmi minimizing virama (total 1 character) will be added to '''Brahmi'''. (U+1107E)<!--target: 19.0-->
* Tulu-Tigalari letter combining anusvara above, signs om pushpika with tail and shrii pushpika, and letter archaic II (total 5 characters) will be added to '''Tulu-Tigalari'''. (U+113CB, U+113D9-U+113DB)<!--target: 19.0-->
* Newa Letter Heavy Ya (total 1 character) will be added to '''Newa'''. (U+11462)
* Dogra Signs Candrabindu and Avaragha (total 2 characters) will be added to '''Dogra'''. (U+1183C-U+1183D)<!--target: 19.0-->
* Devanagari Jivamuliya and Upadhmaniya (total 2 characters) will be added to '''Devanagari Extended-A'''. (U+11B0B-U+11B0C)<!--target: 19.0-->
* White Ideographic Comma and Double Ideographic Full Stop (total 2 characters) will be added to '''Ideographic Symbols and Punctuation'''. (U+16FE5-U+16FE6)<!--target: 19.0-->
* Alchemical Symbol for Calx-2 and Alchemical Symbol for Retort-2 (total 2 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED1, U+1CED5)<!--target: 19.0-->
* Musical Symbol down arrowhead breath mark (total 1 character) will be added to '''Musical Symbols Supplement'''. (U+1D282)
* Small w with palatal hook, small n and r with double middle tilde, small capital i with retroflex hook, small open q, x with stroke, small wavy y, schwa with right hook, Romance dialectology symbols, zh ligature, Albanian letter edhe, Albanian Frashëri letters, Modifier letter capital y, and modifier letter accents (total 26 characters) will be added to '''Latin Extended-G'''. (U+1DF82-U+1DF8F, U+1DF97-U+1DFA3, U+1DFC4-U+1DFCC)<!--1DF82-1DF8A, 1DFC5-1DFCC target: 19.0-->
*Arabic Astronomical zero and five astronomical symbols (total 6 characters) will be added to Arabic Mathematical Alphabetic Symbols (U+1EEE0-U+1EEE5)
==Roadmap Blocks==
This is a section where proportional maps of proposed allocations to Unicode and ISO/IEC 10646 are presented. Italic indicates scripts for which detailed proposals have not yet been written.<ref>[https://unicode.org/roadmaps/smp/]</ref>
* '''Northern Palaeohispanic''' (U+10200-U+1023F)
* '''Southern Palaeohispanic''' (U+10240-U+1027F)
* '''''Shavian Quikscript''' (U+103E0-U+103FF)''
* '''Combining Diacritical Marks Extended-A''' (U+107C0-U+107FF)
* '''Proto-Sinaitic''' (U+108B0-U+108DF)
* '''''Numidian''' (U+10960-U+1097F)''
* '''Balti''' (U+10AA0-U+10ABF)
* '''Book Pahlavi''' (U+10BB0-U+10BDF)
* '''Baburi''' (U+10BE0-U+10BFF)
* '''Arabic Extended-D''' (U+10D90-U+10E5F)
* '''Landa''' (U+11250-U+1127F)
* '''Tani Lipi''' (U+114E0-U+114FF)
* '''Ranjana''' (U+11500-U+1157F)
* '''Zou''' (U+11750-U+117AF)
* '''Pyu''' (U+117B0-U+117FF)
* '''Vateluttu''' (U+11960-U+1199F)
* '''Balti-B''' (U+11CC0-U+11CFF)
* '''Tocharian''' (U+11E00-U+11E6F)
* '''Khotanese''' (U+11E70-U+11ECF)
* '''Pallava''' (U+11F60-U+11FAF)
* '''''Egyptian Hieroglyphs Extended-B''' (U+14680-U+151FF)''
* '''Mayan Hieroglyphs''' (U+15500-U+15AFF)
* '''Kore Sebeli''' (U+15B00-U+15B6F)<!--proposed to be accepted, 93 characters-->
* '''Mandombe''' (U+15B80-U+15FFF)
* '''Kurukh Banna''' (U+16140-U+1618F)
* '''Moon''' (U+161A0-U+161FF)
* '''Blissymbols''' (U+16200-U+167FF)
* '''Woleai''' (U+16B90-U+16BFF)
* '''Kpelle''' (U+16C00-U+16C7F)
* '''Tikamuli''' (U+16C80-U+16CBF)
* '''Tangsa (Khimhun)''' (U+16CD0-U+16CFF)
* '''Afaka''' (U+16D00-U+16D3F)
* '''Kulitan''' (U+16DD0-U+16DFF)
* '''''Bopomofo Extended-A''' (U+16FA0-U+16FAF)''
* '''Kanbun Extended-A''' (U+16FB0-U+16FDF)
* '''Khitan Large Script''' (U+19200-U+199FF)
* '''Pau Cin Hau Syllabary''' (U+19E00-U+1A2FF)
* '''Eskaya''' (U+1A300-U+1A75F)
* '''Rejang Extended''' (U+1A760-U+1A77F)
* '''''Kaida''''' (U+1A780-U+1A7FF)
* '''Naxi Dongba''' (U+1A800-U+1ACFF)
* '''''Naxi Geba''' (U+1AD00-U+1AFCF)''
* '''''Kana Extended-C''' (U+1AFD0-U+1AFEF)''
* '''Shuishu Logograms''' (U+1B300-U+1B5FF)
* '''Lisu Syllabic Script''' (U+1B600-U+1B9FF)
* '''Indus''' (U+1BA00-U+1BB8F)
* '''Pitman Shorthand''' (U+1BCB0-U+1BCFF)
* '''Proto-Elamite''' (U+1BE00-U+1C37F)
* '''Linear Elamite''' (U+1C380-U+1C4FF)
* '''Ndiko Jonam''' (U+1CB30-U+1CB7F)
* '''N<nowiki>'</nowiki>ti''' (U+1CB80-U+1CBAF)
* '''Old Chinese Musical Symbols (Flute and Pipa)''' (U+1D290-U+1D2BF)
* '''''Mathematical Alphanumeric Symbols Supplement''' (U+1D380-U+1D3FF)''
* '''Jianzi Format Controls''' (U+1DAE0-U+1DAFF)
* '''Eebee Hmong''' (U+1E150-U+1E1FF)
* '''Western Cham''' (U+1E200-U+1E26F)
* '''Loma''' (U+1E300-U+1E41F)
* '''Bagam''' (U+1E420-U+1E4CF)
* '''Pungchen''' (U+1E500-U+1E52F)
* '''''Pungchung''' (U+1E530-U+1E55F)''
* '''''Marchung''' (U+1E560-U+1E59F)''
* '''Brusha''' (U+1E5A0-U+1E5CF)
* '''''Chola''' (U+1E600-U+1E65F)''
* '''Box-Headed''' (U+1E660-U+1E6BF)
* '''Lampung''' (U+1E700-U+1E73F)
* '''Kerinci''' (U+1E740-U+1E76F)
* '''Buginese Supplement''' (U+1E770-U+1E7BF)
* '''''Lontara Bilang-Bilang''' (U+1E7C0-U+1E7DF)''
* '''N'Ko Supplement''' (U+1E960-1E97F)
* '''''Byblos''''' (U+1EB90-U+1EBFF)
* '''Persian Siyaq Numbers''' (U+1EC00-U+1EC7F)
* '''Diwani Siyaq Numbers''' (U+1ECC0-U+1ECFF)
* '''''Extended Pictographic Characters''' (U+1FC00-U+1FFFF)''
== References ==
{{reflist}}
ltetvg1dbs318d0n6iwati5q2myzlax
4656286
4656285
2026-08-04T18:42:42Z
Alexlatham96
377450
/* Roadmap Blocks */ Kore Sebeli, N'ti, and Ndiko Jonam not ready per WG2
4656286
wikitext
text/x-wiki
{{pp-protected|small=yes}}
{{Unicode page}}
{{TOC right}}
{{refimprove|date=June 2017}}
This page is about each version specification, and the differences between the versions.
== Unicode 1.0 ==
Unicode 1.0 was the first version of Unicode, released October 1991. It encoded 7,094 new characters.
=== “Blocks” ===
This version of Unicode did not formally group characters in blocks. But in comparison with version 2.0, the following “blocks” were available:
U+0000-U+FFFD
51 Blocks
* '''Basic Latin (formerly called ASCII)''' (U+0000-U+007F), containing 128 characters.
* '''Latin-1 Supplement (formerly called Latin1)''' (U+0080-U+00FF), containing 128 characters.
* '''Latin Extended-A''' '''(formerly called European Latin)''' (U+0100-U+017F), containing 127 characters.
* '''Latin Extended-B''' '''(formerly called Extended Latin)''' (U+0180-U+01FF), containing 113 characters.
* '''IPA Extensions''' '''(formerly called Standard Phonetic)''' (U+0250-U+02AF), containing 89 characters.
* '''Spacing Modifier Letters''' '''(formerly called Modifier Letters)''' (U+02B0-U+02FF), containing 57 characters.
* '''Combining Diacritical Marks''' '''(formerly called Generic Diacritical Marks)''' (U+0300-U+036F), containing 66 characters.
* '''Greek and Coptic''' '''(formerly called Greek)''' (U+0370-U+03FF), containing 112 characters.
* '''Cyrillic''' (U+0400-U+04FF), containing 192 characters.
* '''Armenian''' (U+0530-U+058F), containing 84 characters.
* '''Hebrew''' (U+0590-U+05FF), containing 52 characters.
* '''Arabic''' (U+0600-U+06FF), containing 169 characters.
* '''Devanagari''' (U+0900-U+097F), containing 104 characters.
* '''Bengali''' (U+0980-U+09FF), containing 89 characters.
* '''Gurmukhi''' (U+0A00-U+0A7F), containing 74 characters.
* '''Gujarati''' (U+0A80-U+0AFF), containing 75 characters.
* '''Oriya''' (U+0B00-U+0B7F), containing 78 characters.
* '''Tamil''' (U+0B80-U+0BFF), containing 61 characters.
* '''Telugu''' (U+0C00-U+0C7F), containing 80 characters.
* '''Kannada''' (U+0C80-U+0CFF), containing 80 characters.
* '''Malayalam''' (U+0D00-U+0D7F), containing 78 characters.
* '''Thai''' (U+0E00-U+0E7F), containing 92 characters.
* '''Lao''' (U+0E80-U+0EFF), containing 70 characters.
* '''Tibetan''' (U+1000-U+105F), containing 71 characters.
* '''Georgian''' (U+10A0-U+10FF), containing 78 characters.
* '''General Punctuation''' (U+2000-U+206F), containing 67 characters.
* '''Superscripts and Subscripts''' (U+2070-U+209F), containing 28 characters.
* '''Currency Symbols''' (U+20A0-U+20CF), containing 11 characters.
* '''Combining Marks for Symbols''' '''(formerly called Diacritical Marks for Symbols)''' (U+20D0-U+20FF), containing 18 characters.
* '''Letterlike Symbols''' (U+2100-U+214F), containing 57 characters.
* '''Number Forms''' (U+2150-U+218F), containing 48 characters.
* '''Arrows''' (U+2190-U+21FF), containing 91 characters.
* '''Mathematical Operators''' (U+2200-U+22FF), containing 242 characters.
* '''Miscellaneous Technical''' (U+2300-U+23FF), containing 43 characters.
* '''Control Pictures''' '''(formerly called Pictures for Control Codes)''' (U+2400-U+243F), containing 37 characters.
* '''Optical Character Recognition''' (U+2440-U+245F), containing 11 characters.
* '''Enclosed Alphanumerics''' (U+2460-U+24FF), containing 139 characters.
* '''Box Drawing''' '''(formerly called Form and Chart Components)''' (U+2500-U+257F), containing 128 characters.
* '''Block Elements''' '''(formerly called Blocks)''' (U+2580-U+259F), containing 22 characters.
* '''Geometric Shapes''' (U+25A0-U+25FF), containing 79 characters.
* '''Miscellaneous Symbols''' '''(formerly called Miscellaneous Dingbats)''' (U+2600-U+26FF), containing 106 characters.
* '''Dingbats''' '''(formerly called Zapf Dingbats)''' (U+2700-U+27BF), containing 160 characters.
* '''CJK Symbols and Punctuation''' (U+3000-U+303F), containing 56 characters.
* '''Hiragana''' (U+3040-U+309F), containing 90 characters.
* '''Katakana''' (U+30A0-U+30FF), containing 90 characters.
* '''Bopomofo''' (U+3100-U+312F), containing 40 characters.
* '''Hangul Compatibility Jamo (formerly called Hangul Elements)''' (U+3130-U+318F), containing 94 characters.
* '''Kanbun (formerly called CJK Miscellaneous)''' (U+3190-U+31FF), containing 16 characters.
* '''Enclosed CJK Letters and Months''' '''(formerly called''' '''Enclosed CJK Letters and Ideographs)''' (U+3200-U+32FF), containing 191 characters.
* '''CJK Compatibility''' '''(formerly called CJK Squared Words for U+3300-U+337F and CJK Squared Abbreviations for U+3380-33FF)''' (U+3300-U+33FF), containing 187 characters.
* '''Hangul''' (U+3400-U+3D2D), containing 2,350 characters.
* '''Private Use Area''' (U+E000-U+FDFF), reserved for 5,632 characters.
* '''CJK Compatibility Forms''' '''(formerly called CNS 11643 Compatibility)''' (U+FE30-U+FE4F), containing 28 characters.
* '''Small Form Variants''' '''(formerly called Small Variants)''' (U+FE50-U+FE6F), containing 26 characters.
* '''Arabic Presentation Forms-B''' '''(formerly called Basic Glyphs for Arabic Language)''' (U+FE70-U+FEFF), containing 140 characters.
* '''Halfwidth and Fullwidth Forms''' '''(formerly called Halfwidth and Fullwidth Variants)''' (U+FF00-U+FFEF), containing 216 characters.
* '''Specials''' '''(formerly called Special)''' (U+FFF0-U+FFFF), containing 1 character.
== Unicode 1.0.1 ==
Unicode 1.0.1 was released June 1992. It encoded 28,292 characters, adding 21,204 new characters and removing 6 characters, for a net increase of 21,198 characters.
=== New blocks ===
* '''CJK Unified Ideographs''' (U+4E00-U+9FFF), containing 20,902 Han Ideographs for Chinese, Japanese and Korean, was added.
* '''CJK Compatibility Ideographs''' (U+F900-U+FAFF), containing 302 Han Ideographs for compatibility with existing character sets, was added.
=== Removed characters ===
* Letters Ka and Kha with Ogonek (total 4 characters) were removed from '''Cyrillic'''. (U+04C5-U+04C6 and U+04C9-U+04CA)
* APL Compose Operator and APL Out (total 2 characters) were removed from '''Miscellaneous Technical'''. (U+2300-U+2301)
=== Rearranged characters ===
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
*'''Circled Katakana:''' ''The characters well be arranged in modern order: e.g., A, I, U, E, O, KA, KI'' (U+32D0-U+32FE)
*'''Basic Glyphs For Arabic Language:''' ''The character shapes will be arranged in different order: Isolate, Final, Initial and Medial'' (U+FE80-FEFC)
=== Characters with semantics changed ===
*'''Zero Width Non-Joiner''' [ZWNJ] (U+20DC)
*'''Zero Width Joiner''' [ZWJ] (U+20DD)
== Unicode 1.1 ==
Unicode 1.1 was released June 1993. It encoded 34,168 characters, adding 5,969 new characters and removing 93 characters, for a net increase of 5,876 characters. It finalized the long anticipated Han Unification.
=== New blocks ===
* '''Hangul Jamo''' (U+1100-U+11FF), containing 240 ''jamo'' for the Hangul script, was added.
* '''Latin Extended Additional''' (U+1E00-U+1EFF), containing 245 precomposed characters for transliteration and Vietnamese, was added.
* '''Greek Extended''' (U+1F00-U+1FFF), containing 233 precomposed characters for polytonic Greek, was added.
* '''Hangul Supplementary-A''' (U+3D2E-U+44B7), containing 1,930 precomposed syllables for the Hangul script, was added.
* '''Hangul Supplementary-B''' (U+44B8-U+4DFF), containing 2,376 precomposed syllables for the Hangul script, was added.
* '''Alphabetic Presentation Forms''' (U+FB00-U+FB4F), containing 57 precomposed characters and ligatures, was added.
* '''Arabic Presentation Forms-A''' (U+FB50-U+FDFF), containing 593 combinations of Arabic letters, was added.
* '''Combining Half Marks''' (U+FE20-U+FE2F), containing 4 halves of diacritical marks, was added.
=== Extended blocks ===
* The long S (ſ) (total 1 character) was added to '''Latin Extended-A'''. (U+017F)
* The Hungarian Dz, characters for transliteration purposes and precomposed characters with double grave and inverted breve (total 35 characters) were added to '''Latin Extended-B''' (U+01F1-U+01F5 and U+01FA-U+0217). The block was expanded from (U+0180-U+01FF) to (U+0180-U+024F)
* Diacritics for polytonic Greek and double width diacritics (total 6 characters) were added to '''Combining Diacritical Marks'''. (U+0342-U+0345 and U+0360-U+0361)
* Compatibility character now deprecated, Ano Teleia, and other characters (total 5 characters) were added to '''Greek and Coptic''' (U+0374-U+0375, U+037A, U+037E and U+0387).
* Additional characters for non-Slavic languages (total 38 characters) were added to '''Cyrillic'''. (U+04D0-U+04EB, U+04EE-U+04F5 and U+04F8-U+04F9)
* A ligature of Ech and Yiwn (և) (total 1 character) was added to '''Armenian'''. (U+0587)
* One deprecated compatibility character and several characters for biblical texts (total 25 characters) were added to '''Arabic'''. (U+066D and U+06D6-U+06ED)
* A sign Virama (total 1 character) was added to '''Gurmukhi''' (U+0A4D).
* Letters Candra O and E (total 3 characters) were added to '''Gujarati'''. (U+0A8D, U+0A91 and U+0AC9)
* An Ai Length mark (total 1 character) was added to '''Oriya'''. (U+0B56)
* An undertie, a pair of brackets and six formatting characters now deprecated (total 9 characters) were added to '''General Punctuation'''. (U+203F, U+2045-U+2046 and U+206A-U+206F)
* Some additional symbols and the complete set of APL functional symbols (total 79 characters) were added to '''Miscellaneous Technical'''. (U+2300 and U+232D-U+237A)
* A large circle (◯) (total 1 character) was added to '''Geometric Shapes'''. (U+25EF)
* The ideographic telegraph line feed separator symbol (〷) (total 1 character) was added to '''CJK Symbols and Punctuation'''. (U+3037)
* Four Katakana letters not in use since 1945 (total 4 characters) were added to '''Katakana'''. (U+30F7-U+30FA)
* Ideographic telegraph symbols for the twelve months (total 12 characters) were added to '''Enclosed CJK Letters and Months'''. (U+32C0-U+32CB)
* Ideographic telegraph symbols for hours and days and six additional measure units (total 62 characters) were added to '''CJK Compatibility'''. (U+3358-U+3376 and U+33E0-U+33FE)
* Some more space (total 2,304 characters) was added to the '''Private Use Area'''.
* Seven halfwidth geometric shapes (total 7 characters) were added to '''Halfwidth and Fullwidth Forms'''. (U+FFE8-U+FFEE)
=== Removed blocks ===
* '''Tibetan''', containing 71 letters for the Tibetan script, was removed from the Unicode standard.
=== Removed characters ===
* A total of 10 characters were removed from '''Greek and Coptic'''. (U+0370-U+0372, U+03D7-U+03D9, U+03DB, U+03DD, U+03DF, and U+03E1)
* Point Varika (total 1 character) was removed from ''Hebrew''. (U+05F5)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Thai'''. (U+0E70-U+0E74)
* Phonetic Order Vowel Signs (total 5 characters) were removed from '''Lao'''. (U+0EF0-U+0EF4)
* An Ideographic Ditto Mark (total 1 character) was removed from '''CJK Symbols and Punctuation''' (U+3004) and merged with CJK Unified Ideograph-4EDD.
=== Rearranged characters ===
* Greek character U+03F3 was changed from Spacing Tonos to Letter Yot.
* A Japanese Industrial Standard symbol (〄) was moved from '''Enclosed CJK Letters and Months''' (U+32FF) to '''CJK Symbols and Punctuation'''. (U+3004)
== Unicode 2.0 ==
Unicode 2.0 was released July 1996. It encoded 38,885 characters, adding 11,373 new characters and removing 6,656 characters, for a net increase of 4,717 characters. This was the first Unicode version to reserve blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Hangul Syllables''' (U+AC00-U+D7AF), containing 11,172 precomposed syllables for the Hangul script, was added.
* '''High Surrogates''' (U+D800-U+DB7F), setting aside 896 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''High Private Use Surrogates''' (U+DB80-U+DBFF), setting aside 128 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Low Surrogates''' (U+DC00-U+DFFF), setting aside 1,024 codepoints for encoding UTF-16 surrogate pairs, was added.
* '''Supplementary Private Use Area-A''' (U+F0000-U+FFFFF), reserving 65,534 characters for private use, was added.
* '''Supplementary Private Use Area-B''' (U+100000-U+10FFFF), reserving 65,534 characters for private use, was added.
=== Reinstated blocks ===
* '''Tibetan''' (U+0F00-U+0FFF), now containing 168 characters for the Tibetan script including religious signs, was readded.
=== Removed blocks ===
* '''Hangul''', containing 2,350 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-A''', containing 1,930 precomposed syllables for the Hangul script, was removed from the Unicode standard.
* '''Hangul Supplementary-B''', containing 2,376 precomposed syllables for the Hangul script, was removed from the Unicode standard.
=== Extended blocks ===
* Cantillation marks for use in religious texts (total 31 characters) were added to '''Hebrew'''. (U+0591-U+05A1, U+05A3-U+05AF and U+05C4)
* A long S with Dot Above (total 1 character) was added to '''Latin Extended Additional'''. (U+1E9B)
* A Vietnamese Dong sign (total 1 character) was added to '''Currency Symbols'''. (U+20AB)
== Unicode 2.1 ==
Unicode 2.1 was released May 1998. It encoded 38,887 characters, adding only 2 new characters.
=== Extended blocks ===
* A Euro sign (total 1 character) was added to '''Currency Symbols'''. (U+20AC)
* An Object Replacement Character (total 1 character) was added to '''Specials'''. (U+FFFC)
== Unicode 3.0 ==
Unicode 3.0 was released September 1999. It was a big update and encoded 49,194 characters, adding 10,307 new characters.
=== New blocks ===
* '''Syriac''' (U+0700-U+074F), containing 71 characters used for writing in Syriac script, was added.
* '''Thaana''' (U+0780-U+07BF), containing 49 characters used for writing in Thaana script, was added.
* '''Sinhala''' (U+0D80-U+0DFF), containing 80 characters for the Sinhala script, was added.
* '''Myanmar''' (U+1000-U+109F), containing 78 characters for the Burmese script, was added.
* '''Ethiopic''' (U+1200-U+137F), containing 345 syllables and punctuation marks for the Ethiopic script, was added.
* '''Cherokee''' (U+13A0-U+13FF), containing 85 syllables for the Cherokee script, was added.
* '''Unified Canadian Aboriginal Syllabics''' (U+1400-U+167F), containing 630 syllables and punctuation marks for writing in indigenous languages of Canada, was added.
* '''Ogham''' (U+1680-U+169F), containing 29 characters for the ancient Ogham script, was added.
* '''Runic''' (U+16A0-U+16FF), containing 81 characters for the Germanic runes, was added.
* '''Khmer''' (U+1780-U+17FF), containing 103 characters for the Khmer script, was added.
* '''Mongolian''' (U+1800-U+18AF), containing 155 characters for the classical Mongolian script, was added.
* '''Braille Patterns''' (U+2800-U+28FF), containing 256 Braille letters, was added.
* '''CJK Radicals Supplement''' (U+2E80-U+2EFF), containing 115 non-Kangxi radicals, was added.
* '''Kangxi Radicals''' (U+2F00-U+2FDF), containing 214 radicals from the Kangxi dictionary, was added.
* '''Ideographic Description Characters''' (U+2FF0-U+2FFF), containing 12 characters used to describe a Han ideograph not available in the font, was added.
* '''Bopomofo Extended''' (U+31A0-U+31BF), containing 24 characters used for phonetic transcription of minority languages of Taiwan, was added.
* '''CJK Unified Ideographs Extension A''' (U+3400-U+4DBF), containing 6,582 additional Han Ideographs, was added.
* '''Yi Syllables''' (U+A000-U+A48F), containing 1,165 syllables of the modern Yi script, was added.
* '''Yi Radicals''' (U+A490-U+A4CF), containing 50 radicals of Yi Syllables, was added.
=== Extended blocks ===
* Additional precomposed characters, letters and capital letters of lowercase-only letters (total 30 characters) were added to '''Latin Extended-B'''. (U+01F6-U+01F9, U+0218-U+021F and U+0222-U+0233)
* Extensions for disordered speech (total 5 characters) were added to '''IPA Extensions'''. (U+02A9-U+02AD)
* Some additional modifier letters (total 6 characters) were added to '''Spacing Modifier Letters'''. (U+02DF and U+02EA-U+02EE)
* Additional combining diacritics for IPA (total 10 characters) were added to '''Combining Diacritical Marks'''. (U+0346-U+034E and U+0362)
* Lowercase versions of archaic letters and the Kai symbol (total 5 characters) were added to '''Greek and Coptic'''. (U+03D7, U+03DB, U+03DD, U+03DF and U+03E1)
* Nonstandard letters for Macedonian, combining numeral signs and three letters for Kildin Sami (total 12 characters) were added to '''Cyrillic'''. (U+0400, U+040D, U+0450, U+045D, U+0488-U+0489, U+048C-U+048F and U+04EC-U+04ED)
* A Hyphen (total 1 character) was added to '''Armenian'''. (U+058A)
* Combining hamza and maddah and nine additional Arabic characters (total 12 characters) were added to '''Arabic'''. (U+0653-U+0655, U+06B8-U+06B9, U+06BF, U+06CF and U+06FA-U+06FE)
* Additional letters and religious symbols (total 25 characters) were added to '''Tibetan'''. (U+0F6A, U+0F96, U+0FAE-U+0FB0, U+0FB8, U+0FBA-U+0FBC, U+0FBE-U+0FCC and U+0FCF)
* A narrow no-break space and 6 additional punctuation marks (total 7 characters) were added to '''General Punctuation'''. (U+202F and U+2048-U+204D)
* The Kip, Tugrik and Drachma sign (total 3 characters) were added to '''Currency Symbols'''. (U+20AD-U+20AF)
* An enclosing screen and an enclosing key (total 2 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E2-U+20E3)
* The information symbol and a rotated Q (total 2 characters) were added to '''Letterlike Symbols'''. (U+2139-U+213A)
* A mirrored Roman capital numeral hundred (Ↄ) (total 1 character) was added to '''Number Forms'''. (U+2183)
* Some additional arrows (total 9 characters) were added to '''Arrows'''. (U+21EB-U+21F3)
* Some additional technical symbols, including common keys on a 101 keyboard (total 33 characters) were added to '''Miscellaneous Technical'''. (U+2301, U+237B and U+237D-U+239A)
* Two additional control pictures (total 2 characters) were added to '''Control Pictures'''. (U+2425-U+2426)
* Squares and circles with quadrants (total 8 characters) were added to '''Geometric Shapes'''. (U+25F0-U+25F7)
* Two Syriac crosses and a signature mark (total 3 characters) were added to '''Miscellaneous Symbols'''. (U+2619 and U+2670-U+2671)
* Three Hangzhou numerals and a variation indicator (total 4 characters) were added to '''CJK Symbols and Punctuation'''. (U+3038-U+303A and U+303E)
* A ligature Yod with Hiriq (יִ) (total 1 character) was added to '''Alphabetic Presentation Forms'''. (U+FB1D)
* Three additional control characters for ruby markup (total 3 characters) were added to '''Specials'''. (U+FFF9-U+FFFB)
== Unicode 3.1 ==
Unicode 3.1 was released March 2001. It encoded 94,140 characters, adding 44,946 new characters, and mainly focused on blocks outside of the Basic Multilingual Plane.
=== New blocks ===
* '''Old Italic''' (U+10300-U+1032F), containing 35 letters for the Etruscan script, was added.
* '''Gothic''' (U+10330-U+1034F), containing 27 letters for the Gothic script, was added.
* '''Deseret''' (U+10400-U+1044F), containing 76 letters for the constructed Deseret script, was added.
* '''Byzantine Musical Symbols''' (U+1D000-U+1D0FF), containing 246 symbols for musical notation in Byzantine, was added.
* '''Musical Symbols''' (U+1D100-U+1D1FF), containing 219 characters for current musical notation, was added.
* '''Mathematical Alphanumeric Symbols''' (U+1D400-U+1D7FF), containing 991 Latin and Greek letters in serif, sans-serif, bold, italic, double-struck, script and Fraktur/Blackletter, was added.
* '''CJK Unified Ideographs Extension B''' (U+20000-U+2A6DF), containing 42,711 additional Chinese Ideographs, was added.
* '''CJK Compatibility Ideographs Supplement''' (U+2F800-U+2FA1F), containing 542 additional Chinese Ideographs for compatibility purposes, was added.
* '''Tags''', containing 97 language tags, was added. (U+E0000-U+E007F)
=== Extended noncharacters ===
* The Noncharacters range: U+FDD0..U+FDEF were added to '''Arabic Presentation Forms-A'''.
=== Extended blocks ===
* The capital Theta symbol and the Lunate Epsilon symbol (total 2 characters) were added to '''Greek and Coptic'''. (U+03F4-U+03F5)
=== Characters and Scripts Under Investigation or Rejected ===
* Khmer Sign Laak Was Rejected. (U+17DD) From '''Khmer.'''
* Georgian Letter U-Brjuu Was Rejected. From '''Georgian.'''
== Unicode 3.2 ==
Unicode 3.2 was released March 2002. It encoded 95,156 characters, adding 1,016 new characters.
=== New blocks ===
* '''Cyrillic Supplementary (now Cyrillic Supplement)''' (U+0500-U+052F), containing 16 characters used for the Komi language, was added.
* '''Tagalog''' (U+1700-U+171F), containing 20 characters for the Baybayin script, was added.
* '''Hanunoo''' (U+1720-U+173F), containing 23 characters and punctuation for the Hanunó'o script, was added.
* '''Buhid''' (U+1740-U+175F), containing 20 characters for the Buhid script, was added.
* '''Tagbanwa''' (U+1760-U+177F), containing 18 characters for the Tagbanwa script, was added.
* '''Miscellaneous Mathematical Symbols-A''' (U+27C0-U+27EF), containing 28 symbols used in math notation, was added.
* '''Supplemental Arrows-A''' (U+27F0-U+27FF), containing 16 additional arrows, was added.
* '''Supplemental Arrows-B''' (U+2900-U+297F), containing 128 special arrows, was added.
* '''Miscellaneous Mathematical Symbols-B''' (U+2980-U+29FF), containing 128 additional mathematical symbols, was added.
* '''Supplemental Mathematical Operators''' (U+2A00-U+2AFF), containing 256 additional mathematical operators, was added.
* '''Katakana Phonetic Extensions''' (U+31F0-U+31FF), containing 16 Katakana letters used for Ainu, was added.
* '''Variation Selectors''' (U+FE00-U+FE0F), containing 16 symbols used for indicating variations, was added.
=== Extended blocks ===
* A capital letter N with Long Right Leg (total 1 character) was added to '''Latin Extended-B'''. (U+0220)
* The combining grapheme joiner and combining Latin letters used in medieval texts (total 14 characters) were added to '''Combining Diacritical Marks'''. (U+034F and U+0363-U+036F)
* The Qoppa and a reversed lunate epsilon symbol (total 3 characters) were added to '''Greek and Coptic'''. (U+03D8-U+03D9 and U+03F6)
* Four additional letters used for the Kildin Sami language (total 8 characters) were added to '''Cyrillic'''. (U+048A-U+048B, U+04C5-U+04C6, U+04C9-U+04CA and U+04CD-U+04CE)
* A dotless Beh and a dotless Qaf (total 2 characters) were added to '''Arabic'''. (U+066E-U+066F)
* A Letter for Addu dialect (total 1 character) was added to '''Thaana'''. (U+07B1)
* The letters Yn and Elifi (total 2 characters) were added to '''Georgian'''. (U+10F7-U+10F8)
* Some additional punctuation marks and control characters (total 12 characters) were added to '''General Punctuation'''. (U+2047, U+204E-U+2052, U+2057 and U+205F-U+2063)
* A superscript letter I (total 1 character) was added to '''Superscripts and Subscripts'''. (U+2071)
* German Penny and Peso sign (total 2 characters) were added to '''Currency Symbols'''. (U+20B0-U+20B1)
* Some additional combining characters (total 7 characters) were added to '''Combining Diacritical Marks for Symbols'''. (U+20E4-U+20EA)
* Some double-struck and reversed/turned letters (total 15 characters) were added to '''Letterlike Symbols'''. (U+213D-U+214B)
* Some additional arrows (total 12 characters) were added to '''Arrows'''. (U+21F4-U+21FF)
* Some additional mathematical operators (total 14 characters) were added to '''Mathematical Operators'''. (U+22F2-U+22FF)
* Variable-width and additional symbols (total 53 characters) were added to '''Miscellaneous Technical'''. (U+237C and U+239B-U+23CE)
* Black and double circled numerals (total 20 characters) were added to '''Enclosed Alphanumerics'''. U+24EB-U+24FE)
* Quadrant elements (total 10 characters) were added to '''Block Elements'''. (U+2596-U+259F)
* Some additional triangles and squares (total 8 characters) were added to '''Geometric Shapes'''. (U+25F8-U+25FF)
* Shogi pieces ,recycling symbols, dices and dotted circles (total 24 characters) were added to '''Miscellaneous Symbols'''. (U+2616-U+2617, U+2672-U+267D and U+2680-U+2689)
* Additional parenthesis (total 14 characters) were added to '''Dingbats'''. (U+2768-U+2775)
* Three additional marks (total 3 characters) were added to '''CJK Symbols and Punctuation'''. (U+303B-U+303D)
* A digraph and two additional characters (total 3 characters) were added to '''Hiragana'''. (U+3095-U+3096 and U+309F)
* A digraph and a double hyphen (total 2 characters) were added to '''Katakana'''. (U+30A0 and U+30FF)
* Additional circled numerals (total 30 characters) were added to '''Enclosed CJK Letters and Months'''. (U+3251-U+325F and U+32B1-U+32BF
* Five missing radicals (total 5 characters) were added to '''Yi Radicals'''. (U+A4A2-U+A4A3, U+A4B4, U+A4C1, U+A4C5)
* Additional compatibility characters (total 59 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA30-U+FA6A)
* A Rial sign (total 1 character) was added to '''Arabic Presentation Forms-A'''. (U+FDFC)
* Two sesame dots (total 2 characters) were added to '''CJK Compatibility Forms'''. (U+FE45-U+FE46)
* A tail fragment (total 1 character) was added to '''Arabic Presentation Forms-B'''. (U+FE73)
* A pair of double parenthesis (total 2 characters) was added to '''Halfwidth and Fullwidth Forms'''. (U+FF5F-U+FF60)
== Unicode 4.0 ==
Unicode 4.0 was released April 2003. It encoded 96,382 characters, adding 1,226 new characters.
=== New blocks ===
* '''Limbu''', containing 66 characters for the Limbu abugida, was added.
* '''Tai Le''', containing 35 letters for the Tai Le script, was added.
* '''Khmer Symbols''', containing 32 symbols for the lunar calendar, was added.
* '''Phonetic Extensions''', containing 108 letters used in phonetic transcription, was added.
* '''Miscellaneous Symbols and Arrows''', containing 14 additional arrows, was added.
* '''Yijing Hexagram Symbols''', containing 64 hexagrams, was added.
* '''Linear B Syllabary''', containing 88 syllables of the ancient Linear B script, was added.
* '''Linear B Ideograms''', containing 123 ideograms of the ancient Linear B script, was added.
* '''Aegean Numbers''', containing 57 numerals used in the Aegean area, was added.
* '''Ugaritic''', containing 31 characters used in Ugaritic cuneiform, was added.
* '''Shavian''', containing 48 letters used for the artificial Shavian script, was added.
* '''Osmanya''', containing 40 characters used in the artificial Osmanya script, was added.
* '''Cypriot Syllabary''', containing 55 characters formerly used on Cyprus, was added.
* '''Tai Xuan Jing Symbols''', containing 87 symbols of Tai Xuan Jing, was added.
* '''Variation Selectors Supplement''', containing 240 additional variation selectors, was added.
=== Extended blocks ===
* Letters with curl used in Sinology (total 4 characters) were added to '''Latin Extended-B'''.
* Former IPA letters (total 2 characters) were added to '''IPA Extensions'''.
* Some additional characters (total 17 characters) were added to '''Spacing Modifier Letters'''.
* Additional combining double-width diacritics and diacritics corresponding to their spacing equivalent (total 11 characters) were added to '''Combining Diacritical Marks'''.
* The archaic letters Sho and San and the capital Lunate Sigma (total 5 characters) were added to '''Greek and Coptic'''.
* Some additional markers, biblical signs, and letters with inverted V (total 19 characters) were added to '''Arabic'''.
* Letters used for foreign words from Persian and Sogdian (total 6 characters) were added to '''Syriac'''.
* The short A (ऄ) (total 1 character) was added to '''Devanagari'''.
* The Avagraha sign (ঽ) (total 1 character) was added to '''Bengali'''.
* The Adak Bindi and Visarga signs (total 2 characters) were added to '''Gurmukhi'''.
* The vocalic l and ll and the Rupee sign (total 5 characters) were added to '''Gujarati'''.
* The letters Va and Wa (total 2 characters) were added to '''Oriya'''.
* Additional signs for date and finance environments (total 8 characters) were added to '''Tamil'''.
* The Nukta and Avagraha signs (total 2 characters) were added to '''Kannada'''.
* Some symbols and signs (total 11 characters) were added to '''Khmer'''.
* An inverted undertie and a swung dash (total 2 characters) were added to '''General Punctuation'''.
* The facsimile sign (℻) (total 1 character) was added to '''Letterlike Symbols'''.
* The eject symbol and a vertical line (total 2 characters) were added to '''Miscellaneous Technical'''.
* A black circled digit zero (⓿) (total 1 character) was added to '''Enclosed Alphanumerics'''.
* Monograms and diagrams, flags, warning and weather symbols and a cup of tea (total 12 characters) were added to '''Miscellaneous Symbols'''.
* Additional parenthesized and circled Korean characters and supplemental signs (total 9 characters) were added to '''Enclosed CJK Letters and Months'''.
* Additional measure units (total 7 characters) were added to '''CJK Compatibility'''.
* An additional Arabic sign (﷽) (total 1 character) was added to '''Arabic Presentation Forms-A'''.
* A pair of vertical parenthesis (total 2 characters) was added to '''CJK Compatibility Forms'''.
* The letters Oi and Ew (total 4 characters) were added to '''Deseret'''.
* A small script l (ℓ) (total 1 character) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 4.1 ==
Unicode 4.1 was released March 31, 2005. It encoded 97,655 characters, adding 1,273 new characters.
=== New blocks ===
* '''Arabic Supplement''', containing 30 characters for various languages written with the Arabic script, was added.
* '''Ethiopic Supplement''', containing 26 characters and signs for Sebatbeit, was added.
* '''New Tai Lue''', containing 80 characters for the New Tai Lue script, was added.
* '''Buginese''', containing 30 characters for the Lontara script, was added.
* '''Phonetic Extensions Supplement''', containing 64 additional letters for phonetic transcription, was added.
* '''Combining Diacritical Marks Supplement''', containing 4 additional diacritics, was added.
* '''Glagolitic''', containing 94 characters for the Glagolitic script, was added.
* '''Coptic''', containing 114 characters for the Coptic script, was added.
* '''Georgian Supplement''', containing 38 Nuskhuri letters, was added.
* '''Tifinagh''', containing 55 characters for the Tifinagh script, was added.
* '''Ethiopic Extended''', containing 79 additional Ethiopic syllables, was added.
* '''Supplemental Punctuation''', containing 26 additional punctuation marks, was added.
* '''CJK Strokes''', containing 16 strokes for Han Ideographs, was added.
* '''Modifier Tone Letters''', containing 23 letters for Chinese tones, was added.
* '''Syloti Nagri''', containing 44 characters for the Syloti Nagri abugida, was added.
* '''Vertical Forms''', containing 10 punctuation marks suited for vertical text, was added.
* '''Ancient Greek Numbers''', containing 75 numerals and signs used in Ancient Greek, was added.
* '''Old Persian''', containing 50 characters for Old Persian cuneiform, was added.
* '''Kharoshthi''', containing 65 characters for the Kharoshthi abugida, was added.
* '''Ancient Greek Musical Notation''', containing 70 musical signs used in Ancient Greek, was added.
=== Extended blocks ===
* Letters for Sencoten, digraphs, letters with swash tail and other additions (total 11 characters) were added to '''Latin Extended-B'''.
* Additional diacritics for transliteration (total 5 characters) were added to '''Combining Diacritical Marks'''.
* Rho with stroke, reversed and dotted Lunate Sigma (total 4 characters) were added to '''Greek and Coptic'''.
* Ghe with descender (Ӷ) (total 2 characters) was added to '''Cyrillic'''.
* An additional biblical mark and some punctuation marks (total 4 characters) were added to '''Hebrew'''.
* Additional biblical marks, punctuation marks and the Afghani sign (total 8 characters) were added to '''Arabic'''.
* A glottal stop (ॽ) (total 1 character) was added to '''Devanagari'''.
* The Khanda Ta letter (ৎ) (total 1 character) was added to '''Bengali'''.
* The letter Sha and the digit zero (total 2 characters) were added to '''Tamil'''.
* Two marks used in Bhutan (total 2 characters) were added to '''Tibetan'''.
* Two letters and a modifier letter (total 3 characters) were added to '''Georgian'''.
* Some additional syllables (total 11 characters) were added to '''Ethiopic'''.
* Additional phonetic symbols (total 20 characters) were added to '''Phonetic Extensions'''.
* A flower and dot punctuation marks (total 9 characters) were added to '''General Punctuation'''.
* Additional subscript letters (total 5 characters) were added to '''Superscripts and Subscripts'''.
* The Guarani, Austral, Hryvnia and Cedi signs (total 4 characters) were added to '''Currency Symbols'''.
* A combining long double solidus (total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* The per sign and a double-struck letter Pi (total 2 characters) were added to '''Letterlike Symbols'''.
* Metrical and electrical signs (total 11 characters) were added to '''Miscellaneous Technical'''.
* Additional gender and map symbols (total 30 characters) were added to '''Miscellaneous Symbols'''.
* Some additional mathematical symbols (total 7 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional arrows and squares (total 6 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* A circled Hangul character (㉾) (total 1 character) was added to '''Enclosed CJK Letters and Months'''.
* Additional Han Ideographs (total 22 characters) were added to '''CJK Unified Ideographs'''.
* Additional Compatibility Ideographs (total 106 characters) were added to '''CJK Compatibility Ideographs'''.
* Italic dotless small i and j (total 2 characters) were added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.0 ==
Unicode 5.0 was released July 14, 2006. It encoded 99,024 characters, adding 1,369 new characters.
=== New blocks ===
* '''N'Ko''', containing 59 characters for the N'Ko script, was added.
* '''Balinese''', containing 121 characters and musical signs for the Balinese abugida, was added.
* '''Latin Extended-C''', containing 17 letters for various languages, was added.
* '''Latin Extended-D''', containing 2 characters for UPA, was added.
* '''Phags-pa''', containing 56 characters for the Phags-pa script, was added.
* '''Phoenician''', containing 27 letters and numerals for the Phoenician script, was added.
* '''Cuneiform''', containing 879 signs for Sumero-Akkadian Cuneiform, was added.
* '''Cuneiform Numbers and Punctuation''', containing 103 numerals and punctuation signs for Sumero-Akkadian Cuneiform, was added.
* '''Counting Rod Numerals''', containing 18 numerals used with counting rods, was added.
=== Extended blocks ===
* Various letters used mainly for aboriginal languages (total 14 characters) were added to '''Latin Extended-B'''.
* Lowercase lunate sigma symbols (total 3 characters) were added to '''Greek and Coptic'''.
* Lowercase palochka and 3 letters used in Nivkh (total 7 characters) were added to '''Cyrillic'''.
* Two letters used in Khanty and other languages (total 4 characters) were added to '''Cyrillic Supplement'''.
* A specific point meant for Vav (total 1 character) was added to '''Hebrew'''.
* Four letters used in Sindhi (total 4 characters) were added to '''Devanagari'''.
* Four letters used in Sanskrit (total 4 characters) were added to '''Kannada'''.
* Additional IPA diacritics (total 9 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Four combining arrows (total 4 characters) were added to '''Combining Diacritical Marks for Symbols'''.
* A danish symbol and a lowercase turned F (total 2 characters) were added to '''Letterlike Symbols'''.
* A lowercase reversed C (ↄ) (total 1 character) was added to '''Number Forms'''.
* Vertical parenthesis, geometric forms and electrical symbols (total 12 characters) were added to '''Miscellaneous Technical'''.
* A neuter symbol (⚲) (total 1 character) was added to '''Miscellaneous Symbols'''.
* Four additional mathematical symbols (total 4 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Additional squares, pentagons and hexagons (total 11 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Four additional tone letters used in Chinantec (total 4 characters) were added to '''Modifier Tone Letters'''.
* Bold Digamma (𝟊/'''Ϝ''') (total 2 characters) was added to '''Mathematical Alphanumeric Symbols'''.
== Unicode 5.1 ==
Unicode 5.1 was released April 4, 2008. It encoded 100,648 characters, adding 1,624 new characters.
=== New blocks ===
* '''Sundanese''', containing 55 letters for Sundanese script, was added.
* '''Lepcha''', containing 74 letters for Lepcha script, was added.
* '''Ol Chiki''', containing 48 letters for Ol Chiki script, was added.
* '''Cyrillic Extended-A''', containing 32 letters for combining Cyrillic letters, was added.
* '''Vai''', containing 300 letters for Vai script, was added.
* '''Cyrillic Extended-B''', containing 78 letters for additional Cyrillic characters, was added.
* '''Saurashtra''', containing 81 letters for Saurashtra script, was added.
* '''Kayah Li''', containing 48 letters for Kayah languages, was added.
* '''Rejang''', containing 37 letters for Rejang script, was added.
* '''Cham''', containing 83 letters for Cham script, was added.
* '''Ancient Symbols''', containing 12 characters for weights and measures and other Ancient symbols, was added.
* '''Phaistos Disc''', containing 46 hieroglyphs for Phaistos, was added.
* '''Lycian''', containing 29 letters for Lycian script, was added.
* '''Carian''', containing 49 letters for Carian script, was added.
* '''Lydian''', containing 27 letters for Lydian script, was added.
* '''Mahjong Tiles''', containing 44 mahjong tiles, was added.
* '''Domino Tiles''', containing 100 domino tiles, was added.
=== Extended blocks ===
* Archaic letters and capital kai symbol (total 7 characters) were added to '''Greek and Coptic'''.
* Combining Pokrytie (total 1 character) was added to '''Cyrillic'''.
* Mordvin, Kurdish, Aleut and Chuvash letters (total 16 characters) were added to '''Cyrillic Supplement'''.
* Radix symbols, Letterlike, punctuation, Koranic annotation signs and additions for early Persian and Azerbaijani (total 15 characters) were added to '''Arabic'''.
* Additional letters in Torwali, Burushaski and early Persian (total 18 characters) were added to '''Arabic Supplement'''.
* High spacing dot and candra a (total 2 characters) were added to '''Devanagari'''.
* Udaat and yakash signs (total 2 characters) were added to '''Gurmukhi'''.
* Vocalic rr, l and ll (total 3 characters) were added to '''Oriya'''.
* Om symbol (ௐ) (total 1 character) was added to '''Tamil'''.
* Avagraha, additional phonetic letters, vocalic l and ll, fractional signs and tuumu (total 13 characters) were added to '''Telugu'''.
* Avagraha, vocalic rr, l and ll, Malayalam numerics and fractions and chillu letters (total 17 characters) were added to '''Malayalam'''.
* Letters for Balti and various symbols (total 6 characters) were added to '''Tibetan'''.
* Characters for various languages (total 78 characters) were added to '''Myanmar'''.
* Manchu Ali Gali lha (ᢪ) (total 1 character) was added to '''Mongolian'''.
* Miscellaneous combining marks (total 28 characters) were added to '''Combining Diacritical Marks Supplement'''.
* Medievalist latin letters and miscellaneous letters (total 10 characters) were added to '''Latin Extended Additional'''.
* Invisible plus (+) (total 1 character) was added to '''General Punctuation'''.
* Combining asterisk above ( ⃰)(total 1 character) was added to '''Combining Diacritical Marks for Symbols'''.
* Symbol for Samaritan Source (⅏) (total 1 character) was added to '''Letterlike Symbols'''.
* Archaic Roman Numerals (total 4 characters) were added to '''Number Forms'''.
* Outlined white star and other signs (total 15 characters) were added to '''Miscellaneous Symbols'''.
* Long division and additional mathematical brackets (total 5 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Miscellaneous signs (total 51 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Additional latin letters (total 12 characters) were added to '''Latin Extended-C'''.
* Additional punctuation (total 23 characters) were added to '''Supplemental Punctuation'''.
* Letter ih (ㄭ) (total 1 character) was added to '''Bopomofo'''.
* Other strokes (total 20 characters) were added to '''CJK Strokes'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Africanist tone letters (total 5 characters) were added to '''Modifier Tone Letters'''.
* Miscellaneous letters and symbols (total 112 characters) were added to '''Latin Extended-D'''.
* Continuous macrons for Coptic (total 3 characters) were added to '''Combining Half Marks'''.
* Musical symbol multiple measure rest (𝄩) (total 1 character) was added to '''Musical Symbols'''.
== Unicode 5.2 ==
Unicode 5.2 was released in October 1, 2009. It encoded 107,296 characters, adding 6,648 new characters.
=== New blocks ===
* '''Samaritan''', containing 61 letters for Samaritan script, was added.
* '''Unified Canadian Aboriginal Syllabics Extended''', containing 70 syllables for various cree languages, was added.
* '''Tai Tham''', containing 127 letters for Tai Tham script, was added.
* '''Vedic Extensions''', containing 35 characters for tone marks and signs, was added.
* '''Lisu''', containing 48 letters for Lisu (Fraser) script, was added.
* '''Bamum''', containing 88 letters for Bamum script, was added.
* '''Common Indic Number Forms''', containing 10 fractions and marks, was added.
* '''Devanagari Extended''', containing 28 additional marks, was added.
* '''Hangul Jamo Extended-A''', containing 29 characters for additional old initial consonants in hangul jamo, was added.
* '''Javanese''', containing 91 letters for Javanese script, was added.
* '''Myanmar Extended-A''', containing 28 letters for Khamti Shan in Myanmar, was added.
* '''Tai Viet''', containing 72 letters for Tai Viet script, was added.
* '''Meetei Mayek''', containing 56 letters for Meetei Mayek script, was added.
* '''Hangul Jamo Extended-B''', containing 72 characters for additional old medieval vowels and final consonants in hangul jamo, was added.
* '''Imperial Aramaic''', containing 31 characters for Old Aramaic, was added.
* '''Old South Arabian''', containing 32 letters and numbers for South Arabian, was added.
* '''Avestan''', containing 61 characters for Avestan script, was added.
* '''Inscriptional Parthian''', containing 30 characters for Inscriptional Parthian script, was added.
* '''Inscriptional Pahlavi''', containing 27 characters for Inscriptional Pahlavi script, was added.
* '''Old Turkic''', containing 73 characters for Orkhon script, was added.
* '''Rumi Numeral Symbols''', containing 31 numeric characters used in Fez, Morocco, and elsewhere in North Africa and the Iberian peninsula, between the tenth and seventeenth centuries, was added.
* '''Kaithi''', containing 66 letters for Kaithi script, was added.
* '''Egyptian Hieroglyphs''', containing 1,071 hieroglyphs for Egyptian, was added.
* '''Enclosed Alphanumeric Supplement''', containing 63 additional circled, parenthesized and squared alphanumerics, was added.
* '''Enclosed Ideographic Supplement''', containing 44 squared and tortoised shell bracketed ideographs, was added.
* '''CJK Unified Ideographs Extension C''', containing 4,149 additional Chinese Ideographs, was added.
=== Extended blocks ===
* Abhaz letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Inverted Candrabinbu and additional signs and letters (total 5 characters) were added to '''Devanagari'''.
* Ganda Mark (৻) (total 1 character) was added to '''Bengali'''.
* Religious svasti signs (total 4 characters) were added to '''Tibetan'''.
* Extensions for Khamti Shan and Alton and Phake (total 4 characters) were added to '''Myanmar'''.
* Additional old initial consonants, medival vowels, and old final consonants (total 16 characters) were added to '''Hangul Jamo'''.
* Hyphen and additional syllables (total 10 characters) were added to '''Unified Canadian Aboriginal Syllabics'''.
* Letter Sua and Tham Digit One (total 3 characters) were added to '''New Tai Lue'''.
* Combing Almost Equal to Below ( ᷽) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* The Live Tournosis, Spesmillo and Tenge signs (total 3 characters) were added to '''Currency Symbols'''.
* Additional vulgar fractions from ARIB STD B24 (total 4 characters) were added to '''Number Forms'''.
* Decimal exponent symbol (⏨) from ARIB STD B24 (total 1 characters) was added to '''Miscellaneous Technical'''.
* A soccer ball and symbols from ARIB STD B24 (total 59 characters) were added to '''Miscellaneous Symbols'''.
* Heavy exclamation mark symbol (❗) from ARIB STD B24 (total 1 character) was added to '''Dingbats'''.
* Traffic sign, dictionary and map symbols from ARIB STD B24 (total 5 characters) were added to '''Miscellaneous Symbols and Arrows'''.
* Capital letter turned alpha and additions for shona (total 3 characters) were added to '''Latin Extended-C'''.
* Cryptogrammic letters and combining marks (total 7 characters) were added to '''Coptic'''.
* Word separator middle dot used in Avestan (⸱) (total 1 character) was added to '''Supplemental Punctuation'''.
* Circled ideographs and numbers on black squares from ARIB STD B24 (total 12 characters) were added to '''Enclosed CJK Letters and Months'''.
* Miscellaneous additions (total 8 characters) were added to '''CJK Unified Ideographs'''.
* Miscellaneous additions for compatibility (total 3 characters) were added to '''CJK Compatibility Ideographs'''.
* Number two and three (total 2 characters) were added to '''Phoenician'''.
== Unicode 6.0 ==
Unicode 6.0 was released in October 11, 2010. It encoded 109,384 characters, adding 2,088 new characters.
=== New blocks ===
* '''Mandaic''', containing 29 letters for Mandaic script, was added.
* '''Batak''', containing 56 letters for Batak script, was added.
* '''Ethiopic Extended-A''', containing 32 letters for Gamo-Gofa-Dawro, Basketo and Gumuz Ethiophic syllables, was added.
* '''Brahmi''', containing 108 characters for ancient Brahmi abugida, was added.
* '''Bamum Supplement''', containing 761 letters for additional Bamum script, was added.
* '''Kana Supplement''', containing 2 characters for archaic katakana, was added.
* '''Playing Cards''', containing 59 playing cards, was added.
* '''Miscellaneous Symbols and Pictographs''', containing 529 additional symbols, was added.
* '''Emoticons''', containing 63 faces, cat faces and gesture symbols, was added.
* '''Transport and Map Symbols''', containing 70 transportation, traffic signs and other symbols, was added.
* '''Alchemical Symbols''', containing 116 symbols for elements, was added.
* '''CJK Unified Ideographs Extension D''', containing 222 miscellaneous Han ideographs, was added.
=== Extended blocks ===
* Azerbaijani letters (total 2 characters) were added to '''Cyrillic Supplement'''.
* Kashmiri Yeh and Wavy hamza below (total 2 characters) were added to '''Arabic'''.
* Dependent vowel signs and letters used in Kashmiri and Bihari (total 10 characters) were added to '''Devanagari'''.
* Fraction signs (total 6 characters) were added to '''Oriya'''.
* Letters used in scholarly only and letter dot reph (total 3 characters) were added to '''Malayalam'''.
* Leading and Trailing Mchan Rtags (total 6 characters) were added to '''Tibetan'''.
* Additional combining marks (total 2 characters) were added to '''Ethiopic'''.
* Combining Double Inverted Breve Below (᷼) (total 1 character) was added to '''Combining Diacritical Marks Supplement'''.
* Miscellaneous subscript letters (total 8 characters) were added to '''Superscripts and Subscripts'''.
* Indian Rupee Sign (₹) (total 1 character) was added to '''Currency Symbols'''.
* Pointing double triangle and additional mechanical symbols (total 11 characters) were added to '''Miscellaneous Technical'''.
* Ophiucisus, astronomical symbol for uranus and pentagrams (total 6 characters) were added to '''Miscellaneous Symbols'''.
* Additional heavy punctation marks, raised fist, raised hand, sparkles, heavy arithmetic symbols and curly loops (total 16 characters) were added to '''Dingbats'''.
* Squared logicals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''.
* Separator mark and consonant joiner (total 2 characters) were added to '''Tifinagh'''.
* Bopomofo for Hmu and Ge (total 3 characters) were added to '''Bopomofo Extended'''.
* Reversed Tse (total 2 characters) were added to '''Cyrillic Extended-B'''.
* Additional letters (total 15 characters) were added to '''Latin Extended-D'''.
* Pedagogical symbols (total 16 characters) were added to '''Arabic Presentation Forms-A'''.
* Additional squared, black circled and squared letters and regional indicator letters (total 107 characters) were added to '''Enclosed Alphanumeric Supplement'''.
* Squared katakana, squared ideographs and circled advantage and accept (total 13 characters) were added to '''Enclosed Ideographic Supplement'''.
== Unicode 6.1 ==
Unicode 6.1 was released in January 31, 2012. It encoded 110,116 characters, adding 732 new characters.
=== New blocks ===
* '''Arabic Extended-A''' (U+08A0-U+08FF), containing 39 characters, was added.
* '''Sundanese Supplement''' (U+1CC0-U+1CCF), containing 8 characters, was added.
* '''Meetei Mayek Extensions''' (U+AAE0-U+AAFF), containing 23 characters, was added.
* '''Meroitic Hieroglyphs''' (U+10980-U+1099F), containing 32 characters, was added.
* '''Meroitic Cursive''' (U+109A0-U+109FF), containing 26 characters, was added.
* '''Sora Sompeng''' (U+110D0-U+110FF), containing 35 characters, was added.
* '''Chakma''' (U+11100-U+1114F), containing 67 characters, was added.
* '''Sharada''' (U+11180-U+111DF), containing 83 characters, was added.
* '''Takri''' (U+11680-U+116CF), containing 66 characters, was added.
* '''Miao''' (U+16F00-U+16F9F), containing 133 characters, was added.
* '''Arabic Mathematical Alphabetic Symbols''' (U+1EE00-U+1EEFF), containing 143 characters, was added.
=== Extended blocks ===
* An Armenian Dram sign (total 1 character) was added to '''Armenian'''. (U+058F)
* A sign Samvat (total 1 character) was added to '''Arabic'''. (U+0604)
* An Abbreviation mark (total 1 character) was added to '''Gujarati'''. (U+0AF0)
* Letters for Khmu (total 2 characters) were added to '''Lao'''. (U+0EDE-U+0EDF)
* Capital letter Yn, letter Aen, Hard and Labial sign (total 5 characters) were added to '''Georgian'''. (U+10C7, U+10CD and U+10FD-U+10FF)
* Letters and signs for Old Sundanese (total 9 characters) were added to '''Sundanese'''. (U+1BAB-U+1BAD and U+1BBA-U+1BBF)
* Sign Rotated Ardhavisarga, Candra Above, Jihvamuliya and Uphadhmaniya (total 4 characters) were added to '''Vedic Extensions'''. (U+1CF3-U+1CF6)
* Mathematical diagonals (total 2 characters) were added to '''Miscellaneous Mathematical Symbols-A'''. (U+27CB and U+27CD)
* A letter Bohairic Khei (total 2 characters) were added to '''Coptic'''. (U+2CF2-U+2CF3)
* Small letters Yn and Aen (total 2 characters) were added to '''Georgian Supplement'''. (U+2D27 and U+2D2D)
* Letters Ye and Yo (total 2 characters) were added to '''Tifinagh'''. (U+2D66-U+2D67)
* (total 10 characters) were added to '''Supplemental Punctuation'''. (U+2E32-U+2E3B)
* An additional ideograph for Kanji (total 1 character) was added to '''CJK Unified Ideographs'''. (U+9FCC)
* Combining letter for Slavonic (total 9 characters) were added to '''Cyrillic Extended-B'''. (U+A674-U+A67B and U+A69F)
* Letter C with Bar, capital letter H with Hook and modifier letters for extended IPA (total 5 characters) were added to '''Latin Extended-D'''. (U+A792-U+A793, U+A7AA and U+A7F8-U+A7F9)
* Some additional ideographs for Korea (total 2 characters) were added to '''CJK Compatibility Ideographs'''. (U+FA2E-U+FA2F)
* Symbols for Canadian legal use (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F16A-U+1F16B)
* Typikon symbols (total 4 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F540-U+1F543)
* (total 13 characters) were added to '''Emoticons'''. (U+1F600, U+1F611, U+1F615, U+1F617, U+1F619, U+1F61B, U+1F61F, U+1F626-U+1F627, U+1F62C, U+1F62E-U+1F62F and U+1F634)
== Unicode 6.2 ==
Unicode 6.2 was released in September 26, 2012. It encoded 110,117 characters, adding only 1 new character.
=== Extended blocks ===
* A Turkish Lira sign (total 1 character) was added to '''Currency Symbols'''. (U+20BA)
== Unicode 6.3 ==
Unicode 6.3 was released in September 30, 2013. It encoded 110,122 characters, adding only 5 new characters.
=== Extended blocks ===
* A Letter mark (total 1 character) was added to '''Arabic'''. (U+061C)
* Isolate directional format characters (total 4 characters) were added to '''General Punctuation'''. (U+2066-U+2069)
== Unicode 7.0 ==
Unicode 7.0 was released in June 16, 2014. It encoded 112,956 characters, adding 2,834 new characters.
=== New blocks ===
* '''Combining Diacritical Marks Extended''' (U+1AB0-U+1AFF), containing 15 marks, was added.
* '''Myanmar Extended-B''' (U+A9E0-U+A9FF), containing 31 letters, was added.
* '''Latin Extended-E''' (U+AB30-U+AB6F), containing 50 letters, was added.
* '''Coptic Epact Numbers''' (U+102E0-U+102FF), containing 28 numbers, was added.
* '''Old Permic''' (U+10350-U+1037F), containing 43 letters, was added.
* '''Elbasan''' (U+10500-U+1052F), containing 50 letters, was added.
* '''Caucasian Albanian''' (U+10530-U+1056F), containing 53 letters and marks, was added.
* '''Linear A''' (U+10600-U+1077F), containing 341 signs, was added.
* '''Palmyrene''' (U+10860-U+1087F), containing 32 letters, was added.
* '''Nabataean''' (U+10880-U+108AF), containing 40 letters and numbers, was added.
* '''Old North Arabian''' (U+10A80-U+10A9F), containing 32 letters and numbers, was added.
* '''Manichaean''' (U+10AC0-U+10AFF), containing 51 characters, was added.
* '''Psalter Pahlavi''' (U+10B80-U+10BAF), containing 29 characters, was added.
* '''Mahajani''' (U+11150-U+1117F), containing 39 letters and signs, was added.
* '''Sinhala Archaic Numbers''' (U+111E0-U+111FF), containing 20 numbers, was added.
* '''Khojki''' (U+11200-U+1124F), containing 61 characters, was added.
* '''Khudawadi''' (U+112B0-U+112FF), containing 69 characters, was added.
* '''Grantha''' (U+11300-U+1137F), containing 83 characters, was added.
* '''Tirhuta''' (U+11480-U+114DF), containing 82 characters, was added.
* '''Siddham''' (U+11580-U+115FF), containing 72 characters, was added.
* '''Modi''' (U+11600-U+1165F), containing 79 characters, was added.
* '''Warang Citi''' (U+118A0-U+118FF), containing 84 letters and numbers, was added.
* '''Pau Cin Hau''' (U+11AC0-U+11AFF), containing 57 characters, was added.
* '''Mro''' (U+16A40-U+16A6F), containing 43 characters, was added.
* '''Bassa Vah''' (U+16AD0-U+16AFF), containing 36 characters, was added.
* '''Pahawh Hmong''' (U+16B00-U+16B8F), containing 127 letters and signs, was added.
* '''Duployan''' (U+1BC00-U+1BC9F), containing 143 characters, was added.
* '''Shorthand Format Controls''' (U+1BCA0-U+1BCAF), containing 4 format characters, was added.
* '''Mende Kikakui''' (U+1E800-U+1E8DF), containing 213 syllables and numbers, was added.
* '''Ornamental Dingbats''' (U+1F650-U+1F67F), containing 48 pictographic characters, was added.
* '''Geometric Shapes Extended''' (U+1F780-U+1F7FF), containing 85 pictographic characters, was added.
* '''Supplemental Arrows-C''' (U+1F800-U+1F8FF), containing 148 pictographic characters, was added.
=== Extended blocks ===
* A capital letter Yot (total 1 character) was added to '''Greek and Coptic'''. (U+037F)
* Letters for Orok, Komi and Khanty (total 8 characters) were added to '''Cyrillic Supplement'''. (U+0528-U+052F)
* An Eternity sign (total 2 characters) were added to '''Armenian'''. (U+058D-U+058E)
* A Number Mark Above (total 1 character) was added to '''Arabic'''. (U+0605)
* Letters for African, Philippine, Turkic, Berber, Belarusian, Palula and Shina languages (total 8 characters) were added to '''Arabic Extended-A'''. (U+08A1, U+08AD-U+08B2 and U+08FF)
* A letter for Marwari (total 1 character) was added to '''Devanagari'''. (U+0978)
* A sign Anji (total 1 character) was added to '''Bengali'''. (U+0980)
* Sign Candrabindu and letter Llla (total 2 characters) were added to '''Telugu'''. (U+0C00 and U+0C34)
* A Sign Candrabindu (total 1 character) was added to '''Kannada'''. (U+0C81)
* A Sign Candrabindu (total 1 character) was added to '''Malayalam'''. (U+0D01)
* Lith Numerals (total 10 characters) were added to '''Sinhala'''. (U+0DE6-U+0DEF)
* Additional Old English runes (total 8 characters) were added to '''Runic'''. (U+16F1-U+16F8)
* Letters Gyan and Tra (total 2 characters) were added to '''Limbu'''. (U+191D-U+191E)
* Signs for Jaiminiya Sama Veda (total 2 characters) were added to '''Vedic Extensions'''. (U+1CF8-U+1CF9)
* Marks for Germanic and American lexicology (total 15 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DE7-U+1DF5)
* Nordic Mark, Manat and Ruble sign (total 3 characters) were added to '''Currency Symbols'''. (U+20BB-U+20BD)
* Playback symbols from Webdings font (total 7 characters) were added to '''Miscellaneous Technical'''. (U+23F4-U+23FA)
* A Scissors symbol from Wingdings 2 font (total 1 character) was added to '''Dingbats'''. (U+2700)
* Arrows for Lithuanian dialectology and symbols from Wingdings 3 font (total 115 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2B4D-U+2B4F, U+2B5A-U+2B5F, U+2B60-U+2B73, U+2B76-U+2B95, U+2B98-U+2BB9, U+2BBD-U+2BC8 and U+2BCA-U+2BD1)
* (total 7 characters) were added to '''Supplemental Punctuation'''. (U+2E3C-U+2E42)
* Early Cyrillic letters and letters for Lithuanian dialectology (total 6 characters) were added to '''Cyrillic Extended-B'''. (U+A698-U+A69D)
* Letters for European, American and African orthography (total 18 characters) were added to '''Latin Extended-D'''. (U+A794-U+A79F, U+A7AB-U+A7AD, U+A7B0-U+A7B1 and U+A7F7)
* Tone marks for Tai Laing and letters for Shwe Palaung (total 4 characters) were added to '''Myanmar Extended-A'''. (U+AA7C-U+AA7F)
* Combining phonetic marks (total 7 characters) were added to '''Combining Half Marks'''. (U+FE27-U+FE2D)
* Additional mathematical symbols (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018B-U+1018C)
* A Greek Tau Rho symbol (total 1 character) was added to '''Ancient Symbols'''. (U+101A0)
* A letter Ess (total 1 character) was added to '''Old Italic'''. (U+1031F)
* A Number Joiner (total 1 character) was added to '''Brahmi'''. (U+1107F)
* Sutra mark and sign Ekam (total 2 characters) were added to '''Sharada'''. (U+111CD and U+111DA)
* Additional cuneiform signs (total 42 characters) were added to '''Cuneiform'''. (U+1236F-U+12398)
* Additional numbers, vulgar fractions and a punctuation mark (total 13 characters) were added to '''Cuneiform Numbers and Punctuation'''. (U+12463-U+1246E and U+12474)
* Red Joker, Fool and trumps (total 23 characters) were added to '''Playing Cards'''. (U+1F0BF and U+1F0E0-U+1F0F5)
* Dingbat normal and negative sans-serif digit zero (total 2 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10B-U+1F10C)
* Symbols from Webdings, Wingdings 1 and 2 font (total 209 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F321-U+1F32C, U+1F336, U+1F37D, U+1F394-U+1F39F, U+1F3C5, U+1F3CB-U+1F3CE, U+1F3D4-U+1F3DF, U+1F3F1-U+1F3F7, U+1F43F, U+1F441, U+1F4F8, U+1F4FD-U+1F4FE, U+1F53E-U+1F53F, U+1F544-U+1F54A, U+1F568-U+1F579, U+1F57B-U+1F5A3 and U+1F5A5-U+1F5FA)
* Slightly frowning and smiling faces emoji (total 2 characters) were added to '''Emoticons'''. (U+1F641-U+1F642)
* Symbols from Webdings and Wingdings 2 font (total 27 characters) were added to '''Transport and Map Symbols'''. (U+1F6C6-U+1F6CF, U+1F6E0-U+1F6EC and U+1F6F0-U+1F6F3)
== Unicode 8.0 ==
Unicode 8.0 was released in June 17, 2015. It encoded 120,672 characters, adding 7,716 new characters.
=== New blocks ===
* '''Cherokee Supplement''' (U+AB70-U+ABBF), containing 80 lowercase letters, was added.
* '''Hatran''' (U+108E0-U+108FF), containing 26 letters, was added.
* '''Old Hungarian''' (U+10C80-U+10CFF), containing 108 letters, was added.
* '''Multani''' (U+11280-U+112AF), containing 38 letters, was added.
* '''Ahom''' (U+11700-U+1173F), containing 57 letters, was added.
* '''Early Dynastic Cuneiform''' (U+12480-U+1254F), containing 196 characters, was added.
* '''Anatolian Hieroglyphs''' (U+14400-U+1467F), containing 583 characters, was added.
* '''Sutton SignWriting''' (U+1D800-U+1DAAF), containing 672 signs, was added.
* '''Supplemental Symbols and Pictographs''' (U+1F900-U+1F9FF), containing 15 pictographic characters, was added.
* '''CJK Unified Ideographs Extension E''' (U+2B820-U+2CEAF), containing 5762 characters, was added.
=== Extended blocks ===
* Letters for Arwi (total 3 characters) were added to '''Arabic Extended-A'''. (U+08B3-U+08B4 and U+08E3)
* A letter for Avestan transliteration (total 1 character) was added to '''Gujarati'''. (U+0AF9)
* A letter for Andhra Pradesh (total 1 character) was added to '''Telugu'''. (U+0C5A)
* An archaic letter II (total 1 character) was added to '''Malayalam'''. (U+0D5F)
* A letter Mv and small letters (total 7 characters) were added to '''Cherokee'''. (U+13F5 and U+13F8-U+13FD)
* A Georgian Lari sign (total 1 character) was added to '''Currency Symbols'''. (U+20BE)
* Turned digits (total 2 characters) were added to '''Number Forms'''. (U+218A-U+218B)
* Two headed arrows with triangle arrowheads (total 4 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BEC-U+2BEF)
* Some additional ideographs (total 9 characters) were added to '''CJK Unified Ideographs'''. (U+9FCD-U+9FD5)
* A combining letter Ef (total 1 character) was added to '''Cyrillic Extended-B'''. (U+A69E)
* Sinological dot, phonetic extension for African languages, letters for American and Gabonese orthography (total 7 characters) were added to '''Latin Extended-D'''. (U+A78F and U+A7B2-U+A7B7)
* Sign Siddham and letter Jain Om (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FC-U+A8FD)
* Letters for Yakut transliteration (total 4 characters) were added to '''Latin Extended-E'''. (U+AB60-U+AB63)
* A combining mark for Church Slavonic (total 2 characters) were added to '''Combining Half Marks'''. (U+FE2E-U+FE2F)
* Numerals and vulgar fractions (total 64 characters) were added to '''Meroitic Cursive'''. (U+109BC-U+109BD, U+109C0-U+109CF and U+109D2-U+109FF)
* Sandhi mark, diacritical marks for Kashmiri, sign Siddham and punctuation marks (total 9 characters) were added to '''Sharada'''. (U+111C9-U+111CC and U+111DB-U+111DF)
* Combining Anusvara Above and letter Om (total 2 characters) were added to '''Grantha'''. (U+11300 and U+11350)
* Section marks and alternate letters (total 20 characters) were added to '''Siddham'''. (U+115CA-U+115DD)
* An additional sign (total 1 character) was added to '''Cuneiform'''. (U+12399)
* East-Slavic musical symbols (total 11 characters) were added to '''Musical Symbols'''. (U+1D1DE-U+1D1E8)
* (total 24 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F32D-U+1F32F, U+1F37E-U+1F37F, U+1F3CF-U+1F3D3, U+1F3F8-U+1F3FF, U+1F4FF and U+1F54B-U+1F54F)
* Upside Down Face and Face With Rolling Eyes emoji (total 2 characters) were added to '''Emoticons'''. (U+1F643-U+1F644)
* A Place of Worship emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D0)
== Unicode 9.0 ==
Unicode 9.0, was released in June 21, 2016. It encoded 128,172 characters, adding 7,500 new characters.
=== New blocks ===
* '''Cyrillic Extended-C''' (U+1C80-U+1C8F), containing 9 letters, was added.
* '''Osage''' (U+104B0-U+104FF), containing 72 letters, was added.
* '''Newa''' (U+11400-U+1147F), containing 92 letters, was added.
* '''Mongolian Supplement''' (U+11660-U+1167F), containing 13 letters, was added.
* '''Bhaiksuki''' (U+11C00-U+11C6F), containing 97 letters, was added.
* '''Marchen''' (U+11C70-U+11CBF), containing 68 letters, was added.
* '''Ideographic Symbols and Punctuation''' (U+16FE0-U+16FFF), containing 1 letter, was added.
* '''Tangut''' (U+17000-U+187FF), containing 6125 letters, was added.
* '''Tangut Components''' (U+18800-U+18AFF), containing 755 letters, was added.
* '''Glagolitic Supplement''' (U+1E000-U+1E02F), containing 38 letters, was added.
* '''Adlam''' (U+1E900-U+1E95F), containing 87 letters, was added.
=== Extended blocks ===
* Letters for Bravanese, Warsh and Quranic marks used in Pakistan (total 23 characters) were added to '''Arabic Extended-A'''. (U+08B6-U+08BD and U+08D4-U+08E2)
* A sign Spacing Candrabindu (total 1 character) were added to '''Kannada'''. (U+0C80)
* Sign Para, Chillu letters and vulgar fractions (total 14 characters) were added to '''Malayalam'''. (U+0D4F, U+0D54-U+0D56, U+0D58-U+0D5E and U+0D76-U+0D78)
* A diacritical mark for Newa (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFB)
* Power symbols (total 4 characters) were added to '''Miscellaneous Technical'''. (U+23FB-U+23FE)
* Punctuation marks for Church Slavonic (total 2 characters) were added to '''Supplemental Punctuation'''. (U+2E43-U+2E44)
* A letter for Unifon (total 1 character) was added to '''Latin Extended-D'''. (U+A7AE)
* A sign Candrabindu (total 1 character) was added to '''Saurashtra'''. (U+A8C5)
* Indiction sign and a currency symbol (total 2 characters) were added to '''Ancient Greek Numbers'''. (U+1018D-U+1018E)
* A sign Sukun (total 1 character) was added to '''Khojki'''. (U+1123E)
* Japanese TV symbols (total 18 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F19B-U+1F1AC)
* A Japanese TV symbol (total 1 character) was added to '''Enclosed Ideographic Supplement'''. (U+1F23B)
* A dancing man and Black Heart emoji (total 2 characters) were added to '''Miscellaneous Symbols and Pictographs'''. (U+1F57A and U+1F5A4)
* Octagonal Sign, Shopping Trolley, scooters and a Canoe emoji (total 5 characters) were added to '''Transport and Map Symbols'''. (U+1F6D1-U+1F6D2 and U+1F6F4-U+1F6F6)
* (total 67 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F919-U+1F91E, U+1F920-U+1F927, U+1F930, U+1F933-U+1F93E, U+1F940-U+1F94B, U+1F950-U+1F95E and U+1F985-U+1F991)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|0030 FE00
|
|short diagonal stroke form # DIGIT ZERO
|-
|1000 FE00
|
|dotted form # MYANMAR LETTER KA
|-
|1002 FE00
|
|dotted form # MYANMAR LETTER GA
|-
|1004 FE00
|
|dotted form # MYANMAR LETTER NGA
|-
|1010 FE00
|
|dotted form # MYANMAR LETTER TA
|-
|1011 FE00
|
|dotted form # MYANMAR LETTER THA
|-
|1015 FE00
|
|dotted form # MYANMAR LETTER PA
|-
|1019 FE00
|
|dotted form # MYANMAR LETTER MA
|-
|101A FE00
|
|dotted form # MYANMAR LETTER YA
|-
|101C FE00
|
|dotted form # MYANMAR LETTER LA
|-
|101D FE00
|
|dotted form # MYANMAR LETTER WA
|-
|1022 FE00
|
|dotted form # MYANMAR LETTER SHAN A
|-
|1031 FE00
|
|dotted form # MYANMAR VOWEL SIGN E
|-
|1075 FE00
|
|dotted form # MYANMAR LETTER SHAN KA
|-
|1078 FE00
|
|dotted form # MYANMAR LETTER SHAN CA
|-
|107A FE00
|
|dotted form # MYANMAR LETTER SHAN NYA
|-
|1080 FE00
|
|dotted form # MYANMAR LETTER SHAN THA
|-
|2205 FE00
|
|zero with long diagonal stroke overlay form # EMPTY SET
|-
|AA60 FE00
|
|dotted form # MYANMAR LETTER KHAMTI GA
|-
|AA61 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CA
|-
|AA62 FE00
|
|dotted form # MYANMAR LETTER KHAMTI CHA
|-
|AA63 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JA
|-
|AA64 FE00
|
|dotted form # MYANMAR LETTER KHAMTI JHA
|-
|AA65 FE00
|
|dotted form # MYANMAR LETTER KHAMTI NYA
|-
|AA66 FE00
|
|dotted form # MYANMAR LETTER KHAMTI TTA
|-
|AA6B FE00
|
|dotted form # MYANMAR LETTER KHAMTI NA
|-
|AA6C FE00
|
|dotted form # MYANMAR LETTER KHAMTI SA
|-
|AA6F FE00
|
|dotted form # MYANMAR LETTER KHAMTI FA
|-
|AA7A FE00
|
|dotted form # MYANMAR LETTER AITON RA
|-
|…
|
|278 additional emoji variation sequences
|}
== Unicode 10.0 ==
Unicode 10.0, was released in June 20, 2017. It encoded 136,690 characters, adding 8,518 new characters.
=== New blocks ===
* '''Syriac Supplement''' (U+0860-U+086F), containing 11 characters, was added.
* '''Zanabazar Square''' (U+11A00-U+11A4F), containing 72 characters, was added.
* '''Soyombo''' (U+11A50-U+11AAF), containing 80 characters, was added.
* '''Masaram Gondi''' (U+11D00-U+11D5F), containing 75 characters, was added.
* '''Kana Extended-A''' (U+1B100-U+1B12F), containing 31 characters, was added.
* '''Nushu''' (U+1B170-U+1B2FF), containing 396 characters, was added.
* '''CJK Unified Ideographs Extension F''' (U+2CEB0-U+2EBEF), containing 7,473 characters, was added.
=== Extended blocks ===
* A Vedic Anusvara and Abbreviation mark (total 2 characters) were added to '''Bengali'''. (U+09FC-U+09FD)
* Letters for Arabic transliteration (total 6 characters) were added to '''Gujarati'''. (U+0AFA-U+0AFF)
* A combining Anusvara Above and Viramas (total 3 characters) were added to '''Malayalam'''. (U+0D00 and U+0D3B-U+0D3C)
* A sign Atikrama (total 1 character) was added to '''Vedic Extensions'''. (U+1CF7)
* Combining diacritical marks for Church Slavonic (total 4 characters) were added to '''Combining Diacritical Marks Supplement'''. (U+1DF6-U+1DF9)
* A Bitcoin sign (total 1 character) was added to '''Currency Symbols'''. (U+20BF)
* An Observe Eye symbol (total 1 character) was added to '''Miscellaneous Technical'''. (U+23FF)
* A Group mark (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2BD2)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E45-U+2E49)
* A letter O with Dot Above (total 1 character) was added to '''Bopomofo'''. (U+312E)
* Ideographs for Slavonic transliteration (total 21 characters) were added to '''CJK Unified Ideographs'''. (U+9FD6-U+9FEA)
* Letters for North Italic (total 3 characters) were added to '''Old Italic'''. (U+1032D-U+1032F)
* An Iteration mark for Nushu (total 1 character) was added to '''Ideographic Symbols and Punctuation'''. (U+16FE1)
* Letters for Hentaigana (total 254 characters) were added to '''Kana Supplement'''. (U+1B002-U+1B0FF)
* Symbols for Chinese Folk religion (total 6 characters) were added to '''Enclosed Ideographic Supplement'''. (U+1F260-U+1F265)
* Stupa, Pagoda, Sled and Flying Saucer emoji (total 4 characters) were added to '''Transport and Map Symbols'''. (U+1F6D3-U+1F6D4 and U+1F6F7-U+1F6F8)
* (total 66 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F900-U+1F90B, U+1F91F, U+1F928-U+1F92F, U+1F931-U+1F932, U+1F94C, U+1F95F-U+1F96B, U+1F992-U+1F997 and U+1F9D0-U+1F9E6)
== Unicode 11.0 ==
Unicode 11.0, was released in June 5, 2018. It encoded 137,374 characters, adding 684 new characters.
=== New blocks ===
* '''Georgian Extended''' (U+1C90-U+1CBF), containing 46 characters, was added.
* '''Hanifi Rohingya''' (U+10D00-U+10D3F), containing 50 characters, was added.
* '''Old Sogdian''' (U+10F00-U+10F2F), containing 40 characters, was added.
* '''Sogdian''' (U+10F30-U+10F6F), containing 42 characters, was added.
* '''Dogra''' (U+11800-U+1184F), containing 60 characters, was added.
* '''Gunjala Gondi''' (U+11D60-U+11DAF), containing 63 characters, was added.
* '''Makasar''' (U+11EE0-U+11EFF), containing 25 characters, was added.
* '''Medefaidrin''' (U+16E40-U+16E9F), containing 91 characters, was added.
* '''Mayan Numerals''' (U+1D2E0-U+1D2FF), containing 20 characters, was added.
* '''Indic Siyaq Numbers''' (U+1EC70-U+1ECBF), containing 68 characters, was added.
* '''Chess Symbols''' (U+1FA00-U+1FA6F), containing 14 characters, was added.
=== Extended blocks ===
* Small letters Turned Ayb and Yi with Stroke (total 2 characters) were added to '''Armenian'''. (U+0560 and U+0588)
* A triangle Yod (total 1 character) were added to '''Hebrew'''. (U+05EF)
* A Dantayalan and currency symbols (total 3 characters) were added to '''N'Ko'''. (U+07FD-U+07FF)
* A Small Low Waw (total 1 character) was added to '''Arabic Extended-A'''. (U+08D3)
* A Sandhi mark (total 1 character) was added to '''Bengali'''. (U+09FE)
* An Abbreviation mark (total 1 character) was added to '''Gurmukhi'''. (U+0A76)
* A combining Anusvara Above (total 1 character) was added to '''Telugu'''. (U+0C04)
* A sign Siddham (total 1 character) was added to '''Kannada'''. (U+0C84)
* A letter for Buryat (total 1 character) was added to '''Mongolian'''. (U+1878)
* Symbols for chess notation, astrological and half star symbols (total 43 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BBA-U+2BBC, U+2BD3-U+2BEB and 2BF0-U+2BFE)
* Medieval punctuation marks (total 5 characters) were added to '''Supplemental Punctuation'''. (U+2E4A-U+2E4E)
* A letter NN (total 1 character) was added to '''Bopomofo'''. (U+312F)
* Some ideographs for Kanji (total 5 characters) were added to '''CJK Unified Ideographs'''. (U+9FEB-U+9FEF)
* A small capital Q and a letter for Mazahua (total 3 characters) were added to '''Latin Extended-D'''. (U+A7AF and U+A7B8-U+A7B9)
* Letter and vowel sign Ay (total 2 characters) were added to '''Devanagari Extended'''. (U+A8FE-U+A8FF)
* Letters Ttta, Vha and a vulgar fraction (total 3 characters) were added to '''Kharoshthi'''. (U+10A34-U+10A35 and U+10A48)
* A Number Sign Above (total 1 character) was added to '''Kaithi'''. (U+110CD)
* Letter Lhaa, vowel sign Aa and Ei (total 3 characters) were added to '''Chakma'''. (U+11144-U+11146)
* A combining Bindu Below (total 1 character) was added to '''Grantha'''. (U+1133B)
* A Sandhi mark (total 1 character) was added to '''Newa'''. (U+1145E)
* An alternate letter Ba (total 1 character) was added to '''Ahom'''. (U+1171A)
* A mark Pluta (total 1 character) was added to '''Soyombo'''. (U+11A9D)
* Additional ideographs (total 5 characters) were added to '''Tangut'''. (U+187ED-U+187F1)
* Tally marks (total 7 characters) were added to '''Counting Rod Numerals'''. (U+1D372-U+1D378)
* A Copyleft symbol (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F12F)
* A Skateboard emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6F9)
* Normal and negative circled shapes (total 4 characters) were added to '''Geometric Shapes Extended'''. (U+1F7D5-U+1F7D8)
* (total 65 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F94D-U+1F94F, U+1F96C-U+1F970, U+1F973-U+1F976, U+1F97A, U+1F97C-U+1F97F, U+1F998-U+1F99F, U+1F9A0-U+1F9A2, U+1F9B0-U+1F9B9, U+1F9C1-U+1F9C2 and U+1F9E7-U+1F9FF)
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|FF10 FE00
|
|short diagonal stroke form # FULLWIDTH DIGIT ZERO
|}
== Unicode 12.0 ==
Unicode 12.0 was released on March 5, 2019. It encoded 137,928 characters, adding 554 new characters.
=== New blocks ===
* '''Elymaic''' (U+10FE0-U+10FFF), containing 23 characters, was added.
* '''Nandinagari''' (U+119A0-U+119FF), containing 65 characters, was added.
* '''Tamil Supplement''' (U+11FC0-U+11FFF), containing 51 characters, was added.
* '''Egyptian Hieroglyph Format Controls''' (U+13430-U+1343F), containing 9 characters, was added.
* '''Small Kana Extension''' (U+1B130-U+1B16F), containing 7 characters, was added.
* '''Nyiakeng Puachue Hmong''' (U+1E100-U+1E14F), containing 71 characters, was added.
* '''Wancho''' (U+1E2C0-U+1E2FF), containing 59 characters, was added.
* '''Ottoman Siyaq Numbers''' (U+1ED00-U+1ED4F), containing 61 characters, was added.
* '''Symbols and Pictographs Extended-A''' (U+1FA70-U+1FAFF), containing 16 characters, was added.
=== Extended blocks ===
* A sign Siddham (total 1 character) was added to '''Telugu'''. (U+0C77)
* Letters for Pail and Sanskrit (total 15 characters) were added to '''Lao'''. (U+0E86, U+0E89, U+0E8C, U+0E8E-U+0E93, U+0E98, U+0EA0, U+0EA8-U+0EA9, U+0EAC and U+0EBA)
* A sign Double Anusvara Antargomukha (total 1 character) was added to '''Vedic Extensions'''. (U+1CFA)
* An astrological symbol and Hellschreiber Pause symbol (total 2 characters) were added to '''Miscellaneous Symbols and Arrows'''. (U+2BC9 and U+2BFF)
* A Cornish Verse Divider (total 1 character) was added to '''Supplemental Punctuation'''. (U+2E4F)
* Egyptological letters, Anglicana W and letters for early Pinyin (total 11 characters) were added to '''Latin Extended-D'''. (U+A7BA-U+A7BF and U+A7C2-U+A7C6)
*Sinological phonetic letters (total 2 characters) were added to '''Latin Extended-E'''. (U+AB66-U+AB67)
* A Vedic Anusvara (total 1 character) was added to '''Newa'''. (U+1145F)
* An archaic letter Kha (total 1 character) was added to '''Takri'''. (U+116B8)
* Sign Jihvamuliya and Uphadhmaniya (total 2 characters) were added to '''Soyombo'''. (U+11A84-U+11A85)
* Letters for various Yi and Miao languages (total 16 characters) were added to '''Miao'''. (U+16F45-U+16F4A, U+16F4F and U+16F7F-U+16F87)
* Marks for Ancient Chinese texts (total 2 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE2-U+16FE3)
* Some additional ideographs (total 6 characters) were added to '''Tangut'''. (U+187F2-U+187F7)
* A Nasalization mark (total 1 character) was added to '''Adlam'''. (U+1E94B)
* A Spanish and Portuguese register mark (total 1 character) was added to '''Enclosed Alphanumeric Supplement'''. (U+1F16C)
* Hindu Temple and Auto Rickshaw emoji (total 2 characters) were added to '''Transport and Map Symbols'''. (U+1F6D5 and U+1F6FA)
* Large colored circles and boxes (total 12 characters) were added to '''Geometric Shapes Extended'''. (U+1F7E0-U+1F7EB)
* (total 31 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90D-U+1F90F, U+1F93F, U+1F971, U+1F97B, U+1F9A5-U+1F9AA, U+1F9AE-U+1F9AF, U+1F9BA-U+1F9BF, U+1F9C3-U+1F9CA and U+1F9CD-U+1F9CF)
* Heterodox chess symbols (total 84 characters) were added to '''Chess Symbols'''. (U+1FA00-U+1FA53)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Spacing Modifier Letters
|02EA, 02EB
|2
|-
|Vedic Extensions
|1CF2..1CF3
|2
|-
|Currency Symbols
|20A9
|1
|-
|CJK Symbols and Punctuation
|3001, 3002
|2
|-
|Bopomofo
|3105..312F
|43
|-
|Bopomofo Extended
|31A0..31BA
|27
|-
|CJK Unified Ideographs Extension A
|37C3, 3B9D, 3CFD, 3FE0, 44EC, 4A76
|6
|-
|CJK Unified Ideographs
|5344, 55B9, 6ABC, 6FF9, 809E, 80BC, 80E9, 8132, 8159, 841C, 891D, 8C6C, 915E, 9FD4
|14
|-
|Phags-pa
|A840..A877
|56
|-
|Halfwidth and Fullwidth Forms
|FF01, FF0C, FF0E, FF1A, FF1B, FF1F
|6
|-
|CJK Unified Ideographs Extension B
|200DD, 20164, 20BBF, 20C02, 20CED, 21D4C, 2278B, 23AB8, 2459B, 24A7D, 24FB9, 25ED7, 2677C, 26B4C, 26C21, 26CBE, 26E3D, 28834, 289A1, 289C0, 28A0F, 28B46
|22
|-
|CJK Unified Ideographs Extension C
|2A8FB, 2A917, 2AA30
|3
|-
|CJK Unified Ideographs Extension E
|2BA52, 2BD77, 2C494, 2C72F, 2C734, 2CB38
|6
|-
|CJK Unified Ideographs Extension F
|2D23B, 2E83A
|2
|-
! colspan="2" |Total
!192
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|3001 FE00
|
|corner-justified form # IDEOGRAPHIC COMMA
|-
|3001 FE01
|
|centered form # IDEOGRAPHIC COMMA
|-
|3002 FE00
|
|corner-justified form # IDEOGRAPHIC FULL STOP
|-
|3002 FE01
|
|centered form # IDEOGRAPHIC FULL STOP
|-
|FF01 FE00
|
|corner-justified form # FULLWIDTH EXCLAMATION MARK
|-
|FF01 FE01
|
|centered form # FULLWIDTH EXCLAMATION MARK
|-
|FF0C FE00
|
|corner-justified form # FULLWIDTH COMMA
|-
|FF0C FE01
|
|centered form # FULLWIDTH COMMA
|-
|FF0E FE00
|
|corner-justified form # FULLWIDTH FULL STOP
|-
|FF0E FE01
|
|centered form # FULLWIDTH FULL STOP
|-
|FF1A FE00
|
|corner-justified form # FULLWIDTH COLON
|-
|FF1A FE01
|
|centered form # FULLWIDTH COLON
|-
|FF1B FE00
|
|corner-justified form # FULLWIDTH SEMICOLON
|-
|FF1B FE01
|
|centered form # FULLWIDTH SEMICOLON
|-
|FF1F FE00
|
|corner-justified form # FULLWIDTH QUESTION MARK
|-
|FF1F FE01
|
|centered form # FULLWIDTH QUESTION MARK
|}
== Unicode 12.1 ==
Unicode 12.1 was released on May 7, 2019. It encoded 137,929 characters, adding only 1 new character.
=== Extended blocks ===
* A square era name Reiwa (total 1 character) was added to '''Enclosed CJK Letters and Months'''. (U+32FF)
== Unicode 13.0 ==
Unicode 13.0 was released on March 10, 2020. It encoded 143,859 characters, adding 5,930 new characters.
=== New blocks ===
* '''Yezidi''' (U+10E80-U+10EBF), containing 47 characters, was added.
* '''Chorasmian''' (U+10FB0-U+10FDF), containing 28 characters, was added.
* '''Dives Akuru''' (U+11900-U+1195F), containing 72 characters, was added.
* '''Lisu Supplement''' (U+11FB0-U+11FBF), containing 1 character, was added.
* '''Khitan Small Script''' (U+18B00-U+18CFF), containing 470 characters, was added.
* '''Tangut Supplement''' (U+18D00-U+18D08), containing 9 characters, was added.
* '''Symbols for Legacy Computing''' (U+1FB00-U+1FBFF), containing 212 characters, was added.
* '''CJK Unified Ideographs Extension G''' (U+30000-U+3134F), containing 4939 characters, was added.
=== Extended blocks ===
* Letters for African languages and Punjabi (total 10 characters) were added to '''Arabic Extended-A'''. (U+08BE-U+08C7)
* A sign Overline (total 1 character) was added to '''Oriya'''. (U+0B55)
* A Vedic Anusvara (total 1 character) was added to '''Malayalam'''. (U+0D04)
* A sign Candrabindu (total 1 character) was added to '''Sinhala'''. (U+0D81)
* Combining diacritical marks for Scottish phonology (total 2 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1ABF-U+1AC0)
* A Japanese symbol for Type A Electronics (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B97)
* Cross patties and a Tironian sign Capita Et (total 3 characters) were added to '''Supplemental Punctuation'''. (U+2E50-U+2E52)
* Letters for Taiwan and Cantonese language (total 5 characters) were added to '''Bopomofo Extended'''. (U+31BB-U+31BF)
* Some disunified ideographs (total 10 characters) were added to '''CJK Unified Ideographs Extension A'''. (U+4DB6-4DBF)
* Some ideographs for China (total 13 characters) were added to '''CJK Unified Ideographs'''. (U+9FF0-U+9FFC)
* Letters for Gaulish (total 6 characters) were added to '''Latin Extended-D'''. (U+A7C7-U+A7CA and U+A7F5-U+A7F6)
* An alternate sign Nasanta (total 1 character) was added to '''Syloti Nagri'''. (U+A82C)
* Letter R With Midle Tilde and modifier letters for Scottish phonology (total 4 characters) were added to '''Latin Extended-E'''. (U+AB68-U+AB6B)
* A symbol Ascia (total 1 character) was added to '''Ancient Symbols'''. (U+1019C)
* A letter for Pali (total 1 character) was added to '''Chakma'''. (U+11147)
* A vowel sign Prishthamatra E and Inverted Candrabindu (total 2 characters) were added to '''Sharada'''. (U+111CE and U+111CF)
* Double comma, sign Jihvamuliya and Uphadhmaniya (total 3 characters) were added to '''Newa'''. (U+1145A and U+11460-U+11461)
* Khitan Small Script Filler and reading marks for Vietnamese (total 3 characters) were added to '''Ideographic Symbols and Punctuation'''. (U+16FE4 and U+16FF0-U+16FF1)
* Some additional components (total 13 characters) were added to '''Tangut Components'''. (U+18AF3-U+18AFF)
* Creative Commons license symbols and Mask Work symbol (total 7 characters) were added to '''Enclosed Alphanumeric Supplement'''. (U+1F10D-U+1F10F, U+1F16D-1F16F and U+1F1AD)
* Hut, Elevator, Pickup Truck and Roller Skate emoji (total 4 characters) were added to '''Transportation and Map Symbols'''. (U+1F6D6-U+1F6D7 and U+1F6FB-U+1F6FC)
* Arrows for legacy computing (total 2 characters) were added to '''Supplemental Arrows-C'''. (U+1F8B0-U+1F8B1)
* (total 10 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F90C, U+1F972, U+1F977-U+1F978, U+1F9A3-U+1F9A4, U+1F9AB-U+1F9AD and U+1F9CB)
* (total 41 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA74, U+1FA83-U+1FA86, U+1FA96-U+1FAA8, U+1FAB0-U+1FAB6, U+1FAC0-U+1FAC2 and U+1FAD0-U+1FAD6)
* Gongche charaters for Kunqu Opera (total 7 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6D7-U+2A6DD)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Tagalog
|1700..170C, 170E..1714
|20
|-
|Mongolian
|1834, 1871, 1878
|3
|-
|Sundanese
|1BAB
|1
|-
|Currency Symbols
|20BF
|1
|-
|CJK Radicals Supplement
|2E80..2E99, 2E9B..2EF3
|115
|-
|Kangxi Radicals
|2F00..2FD5
|214
|-
|CJK Unified Ideographs Extension A
|3472, 38C7, 3DB8, 3FE0, 440B, 46E9
|6
|-
|CJK Unified Ideographs
|53FD, 6146, 6711, 671C, 6721, 6725, 6BD2, 7B9A, 87CE, 8956, 93BF, 9B97
|12
|-
|Latin Extended-D
|A764..A765
|2
|-
|Phags-pa
|A86D
|1
|-
|Tangut
|175F6, 17F0D, 17F8A, 17FA5, 180D6, 18139, 18147, 184F1, 18736
|9
|-
|Tangut Components
|18843, 18856, 1888C, 1890A, 18915, 1893B
|6
|-
|Adlam
|1E900..1E94A, 1E950..1E959, 1E95E..1E95F
|71
|-
|Miscellaneous Symbols and Pictographs
|1F3B1
|1
|-
|Supplemental Symbols and Pictographs
|1F995..1F998, 1F99B..1F99E, 1F9B0..1F9B3, 1F9E7
|13
|-
|CJK Unified Ideographs Extension B
|20219, 21249, 21827, 22C3A, 2327B, 23496, 2355E, 2363B, 236ED, 23839, 23FD5, 24261, 24726, 248F2, 2548E, 26657, 26C9E, 26FE1, 27334, 27C0E, 27CEF, 2A38C
|22
|-
|CJK Unified Ideographs Extension C
|2AED5, 2AEF3, 2AF76, 2B09F, 2B1C3, 2B1E5
|6
|-
|CJK Unified Ideographs Extension E
|2B83C, 2B8D9..2B8DA, 2B96F, 2BBD7, 2BD61, 2BE4A, 2BF1D, 2BF9D, 2C0B8, 2C142, 2C176, 2C316, 2C3FB, 2C402, 2C7AC, 2C82C, 2C83A, 2C9A1, 2CC88, 2CD68
|21
|-
|CJK Unified Ideographs Extension F
|2DC09, 2DE4A, 2EB7E, 2EB89
|4
|-
|CJK Compatibility Ideographs Supplement
|2F83B, 2F878, 2F8D6..2F8D7, 2F8DA, 2F8F0, 2F984, 2FA02
|8
|-
! colspan="2" |Total
!536
|}
== Unicode 14.0 ==
Unicode 14.0 was released on September 14, 2021. It encoded 144,697 characters, adding 838 new characters.
=== New blocks ===
* '''Arabic Extended-B''' (U+0870-U+089F), containing 41 characters, was added.
* '''Vithkuqi''' (U+10570-U+105BF), containing 70 characters, was added.
* '''Latin Extended-F''' (U+10780-U+107BF), containing 57 characters, was added.
* '''Old Uyghur''' (U+10F70-U+10FAF), containing 26 characters, was added.
* '''Unified Canadian Aboriginal Syllabics Extended-A''' (U+11AB0-U+11ABF), containing 16 characters, was added.
* '''Cypro-Minoan''' (U+12F90-U+12FFF), containing 99 characters, was added.
* '''Tangsa''' (U+16A70-U+16ACF), containing 89 characters, was added.
* '''Kana Extended-B''' (U+1AFF0-U+1AFFF), containing 13 characters, was added.
* '''Znamenny Musical Notation''' (U+1CF00-U+1CFFF), containing 185 characters, was added.
* '''Latin Extended-G''' (U+1DF00-U+1DFFF), containing 31 characters, was added.
* '''Toto''' (U+1E290-U+1E2BF), containing 31 characters, was added.
* '''Ethiopic Extended-B''' (U+1E7E0-U+1E7FF), containing 28 characters, was added.
=== Extended blocks ===
* An End of Text punctuation mark (total 1 character) was added to '''Arabic'''. (U+061D)
* Letters for Balti and Quranic orthography (total 12 characters) were added to '''Arabic Extended-A'''. (U+08B5 and U+08C8-U+08D2)
* A sign Nukta and letter Nakaara Pollu (total 2 characters) were added to '''Telugu'''. (U+0C3C and U+0C5D)
* A letter Nakaara Pollu (total 1 character) was added to '''Kannada'''. (U+0CDD)
* A letter Ra, sign Pamudpod and archaic letter Ra (total 3 characters) were added to '''Tagalog'''. (U+170D, U+1715 and U+171F)
* A fourth Free variation selector (total 1 character) was added to '''Mongolian'''. (U+180F)
* Combining diacritical marks for extended IPA (total 14 characters) were added to '''Combining Diacritical Marks Extended'''. (U+1AC1-U+1ACE)
* An archaic ligature Jnya and punctuation marks (total 3 characters) were added to '''Balinese'''. (U+1B4C and U+1B7D-U+1B7E)
* A combining Dot Below Left (total 1 character) was added to '''Combining Diacritical Marks Supplement'''. (U+1DFA)
* A Kyrgyz Som sign (total 1 character) was added to '''Currency Symbols'''. (U+20C0)
* A letter Caudate Chrivi (total 2 characters) were added to '''Glagolitic'''. (U+2C2F and U+2C5F)
* Medieval and phonetic punctuation marks (total 11 characters) were added to '''Supplemental Punctuation'''. (U+2E53-U+2E5D)
* Some ideographs for Macao (total 3 characters) were added to '''CJK Unified Ideographs'''. (U+9FFD-U+9FFF)
* Archaic European letters, modifier letters for Sokuon and Chatino orthography (total 13 characters) were added to '''Latin Extended-D'''. (U+A7C0-U+A7C1, U+A7D0-U+A7D1, U+A7D3, U+A7D5, U+A7D6-U+A7D9 and U+A7F2-U+A7F4)
* A modifier letter Wasla Above and honorifics (total 20 characters) were added to '''Arabic Presentation Forms-A'''. (U+FBC2, U+FD40-U+FD4F, U+FDCF and U+FDFE-U+FDFF)
* Letters for Old Tamil (total 6 characters) were added to '''Brahmi'''. (U+11070-U+11075)
* A vowel sign Vocalic R (total 1 character) was added to '''Khaiti'''. (U+110C2)
* An Abbreviation sign (total 1 character) was added to '''Takri'''. (U+116B9)
* Letters for Tai Ahom (total 7 characters) were added to '''Ahom'''. (U+11740-U+11746) The block was expanded from (U+11700-U+1173F) to (U+11700-U+1174F)
* Kana archaic letters (total 4 characters) were added to '''Kana Extended-A'''. (U+1B11F-U+1B122)
* Accidental symbols for Iranian classical music (total 2 characters) were added to '''Musical Symbols'''. (U+1D1E9-U+1D1EA)
* Playground Slide, Wheel and Ring Buoy emoji (total 3 characters) were added to '''Transportation and Map Symbols'''. (U+1F6DD-U+1F6DF)
* A Heavy Equals Sign emoji (total 1 character) was added to '''Geometric Shapes Extended'''. (U+1F7F0)
* A Troll and Face Holding Back Tears emoji (total 2 characters) were added to '''Supplemental Symbols and Pictographs'''. (U+1F979 and U+1F9CC)
* (total 31 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA7B-U+1FA7C, U+1FAA9-U+1FAAC, U+1FAB7-U+1FABA, U+1FAC3-U+1FAC5, U+1FAD7-U+1FAD9, U+1FAE0-U+1FAE7 and U+1FAF0-U+1FAF6)
* Some ideographs for Macao (total 2 characters) were added to '''CJK Unified Ideographs Extension B'''. (U+2A6DE-U+2A6DF)
* Disunified ideographs and a G source ideograph for China, Hong Kong and Vietnam (total 4 characters) were added to '''CJK Unified Ideographs Extension C'''. (U+2B735-U+2B738)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|Latin Extended-B
|0184..0185
|2
|-
|Arabic
|0674..0678, 06C5, 06C7, 06FE
|8
|-
|Letterlike Symbols
|210B, 2110, 2112, 211B, 212C, 2130..2131, 2133
|8
|-
|Enclosed Alphanumerics
|2460..24FF
|160
|-
|Dingbats
|2776..2793
|30
|-
|CJK Symbols and Punctuation
|3001..3029, 3030..303D, 303F
|56
|-
|CJK Strokes
|31C0..31E3
|36
|-
|Katakana Phonetic Extensions
|31F0..31FF
|16
|-
|Enclosed CJK Letters and Months
|3200..321E, 3220..32FF
|255
|-
|CJK Compatibiity
|3300..33FF
|256
|-
|CJK Unified Ideographs Extension A
|3777, 3B3F
|2
|-
|CJK Unified Ideographs
|5DD5, 652C, 6AC0
|3
|-
|Arabic Presentation Forms-A
|FBD7..FBD8, FBDD, FBE0..FBE1
|5
|-
|Vertical Forms
|FE10..FE19
|10
|-
|CJK Compatibiity Forms
|FE30..FE4F
|32
|-
|Small Form Variants
|FE50..FE52, FE54..FE66, FE68..FE6B
|26
|-
|Halfwidth and Fullwidth Forms
|FF01..FF9F, FFA1..FFBE, FFC2..FFC7, FFCA..FFCF, FFD2..FFD7, FFDA..FFDC, FFE0..FFE6, FFE8..FFEE
|225
|-
|Egyptian Hieroglyphs
|1300A, 13017, 1302D, 13032, 13034..13035, 13037..13038, 1303A..1303E, 1304E..1304F, 13055, 13057, 13068, 1309A, 130D2, 130D5, 130F6, 130FE, 13192, 1325F, 13267, 1326A, 13281, 13297, 1329E, 132B4, 132C1, 132E6, 13304, 1331F, 13378..1337B, 1337D..1337E, 133F3, 133FA..13403, 1340D, 13417, 1342B
|55
|-
|Mathematical Alphanumeric Symbols
|1D49C, 1D49E..1D49F, 1D4A2, 1D4A5..1D4A6, 1D4A9..1D4AC, 1D4AE..1D4B5
|18
|-
|Enclosed Alphanumeric Supplement
|1F100..1F1AD, 1F1E6..1F1FF
|200
|-
|Enclosed Ideographic Supplement
|1F200..1F202, 1F210..1F23B, 1F240..1F248, 1F250..1F251, 1F260..1F265
|64
|-
|Supplemental Symbols and Pictographs
|1F930
|1
|-
|CJK Unified Ideographs Extension B
|22ADC, 230F2, 25B27, 26F28
|4
|-
! colspan="2" |Total
!1472
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|1D49C FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE00
|
|chancery style # SCRIPT CAPITAL B
|-
|1D49E FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE00
|
|chancery style # SCRIPT CAPITAL E
|-
|2131 FE00
|
|chancery style # SCRIPT CAPITAL F
|-
|1D4A2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE00
|
|chancery style # SCRIPT CAPITAL H
|-
|2110 FE00
|
|chancery style # SCRIPT CAPITAL I
|-
|1D4A5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE00
|
|chancery style # SCRIPT CAPITAL L
|-
|2133 FE00
|
|chancery style # SCRIPT CAPITAL M
|-
|1D4A9 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE00
|
|chancery style # SCRIPT CAPITAL R
|-
|1D4AE FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE00
|
|chancery style # MATHEMATICAL SCRIPT CAPITAL Z
|-
|1D49C FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL A
|-
|212C FE01
|
|roundhand style # SCRIPT CAPITAL B
|-
|1D49E FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL C
|-
|1D49F FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL D
|-
|2130 FE01
|
|roundhand style # SCRIPT CAPITAL E
|-
|2131 FE01
|
|roundhand style # SCRIPT CAPITAL F
|-
|1D4A2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL G
|-
|210B FE01
|
|roundhand style # SCRIPT CAPITAL H
|-
|2110 FE01
|
|roundhand style # SCRIPT CAPITAL I
|-
|1D4A5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL J
|-
|1D4A6 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL K
|-
|2112 FE01
|
|roundhand style # SCRIPT CAPITAL L
|-
|2133 FE01
|
|roundhand style # SCRIPT CAPITAL M
|-
|1D4A9 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL N
|-
|1D4AA FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL O
|-
|1D4AB FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL P
|-
|1D4AC FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Q
|-
|211B FE01
|
|roundhand style # SCRIPT CAPITAL R
|-
|1D4AE FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL S
|-
|1D4AF FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL T
|-
|1D4B0 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL U
|-
|1D4B1 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL V
|-
|1D4B2 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL W
|-
|1D4B3 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL X
|-
|1D4B4 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Y
|-
|1D4B5 FE01
|
|roundhand style # MATHEMATICAL SCRIPT CAPITAL Z
|}
===Named Sequences===
Here is a table with new named character sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Name
|-
|0915 093C
|DEVANAGARI SEQUENCE FOR LETTER QA
|-
|0916 093C
|DEVANAGARI SEQUENCE FOR LETTER KHHA
|-
|0917 093C
|DEVANAGARI SEQUENCE FOR LETTER GHHA
|-
|091C 093C
|DEVANAGARI SEQUENCE FOR LETTER ZA
|-
|0921 093C
|DEVANAGARI SEQUENCE FOR LETTER DDDHA
|-
|0922 093C
|DEVANAGARI SEQUENCE FOR LETTER RHA
|-
|092B 093C
|DEVANAGARI SEQUENCE FOR LETTER FA
|-
|092F 093C
|DEVANAGARI SEQUENCE FOR LETTER YYA
|-
|09A1 09BC
|BENGALI SEQUENCE FOR LETTER RRA
|-
|09A2 09BC
|BENGALI SEQUENCE FOR LETTER RHA
|-
|09AF 09BC
|BENGALI SEQUENCE FOR LETTER YYA
|-
|0A32 0A3C
|GURMUKHI SEQUENCE FOR LETTER LLA
|-
|0A38 0A3C
|GURMUKHI SEQUENCE FOR LETTER SHA
|-
|0A16 0A3C
|GURMUKHI SEQUENCE FOR LETTER KHHA
|-
|0A17 0A3C
|GURMUKHI SEQUENCE FOR LETTER GHHA
|-
|0A1C 0A3C
|GURMUKHI SEQUENCE FOR LETTER ZA
|-
|0A2B 0A3C
|GURMUKHI SEQUENCE FOR LETTER FA
|-
|0B21 0B3C
|ORIYA SEQUENCE FOR LETTER RRA
|-
|0B22 0B3C
|ORIYA SEQUENCE FOR LETTER RHA
|}
== Unicode 15.0 ==
Unicode 15.0 was released on September 13, 2022. It encoded 149,186 characters, adding 4,489 new characters.
=== New blocks ===
* '''Arabic Extended-C''' (U+10EC0-U+10EFF), containing 3 characters, was added.
* '''Devanagari Extended-A''' (U+11B00-U+11B5F), containing 10 characters, was added.
* '''Kawi''' (U+11F00-U+11F5F), containing 86 characters, was added.
* '''Kaktovik Numerals''' (U+1D2C0-U+1D2DF), containing 20 characters, was added.
* '''Cyrillic Extended-D''' (U+1E030-U+1E08F), containing 63 characters, was added.
* '''Nag Mundari''' (U+1E4D0-U+1E4FF), containing 42 characters, was added.
* '''CJK Unified Ideographs Extension H''' (U+31350-U+323AF), containing 4192 characters, was added.
=== Extended blocks ===
* A Yamakkan (total 1 character) was added to '''Lao'''. (U+0ECE)
* A combining Anusvara Above Right (total 1 character) was added to '''Kannada'''. (U+0CF3)
* Letters Qa, Short I and Vocalic R (total 3 characters) were added to '''Khojki'''. (U+1123F-U+11241)
* An additional hieroglyph to Group V (total 1 character) was added to '''Egyptian Hieroglyphs'''
* Extended format controls (total 29 characters) were added to '''Egyptian Hieroglyph Format Controls'''. (U+13439-U+13455). The block was expanded from (U+13430-U+1343F) to (U+13430-U+1345F)
* Hiragana and Katakana Small Ko (total 2 characters) were added to '''Small Kana Extension'''. (U+1B132 and U+1B155)
* Letters for Malayalam transliteration (total 6 characters) were added to '''Latin Extended-G'''. (U+1DF25-U+1DF2A)
* A Wireless emoji (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6DC)
* A Nine Pointed White Star (total 1 character) was be added to '''Geometric Shapes Extended'''. (U+1F7D9)
* A Lot of Fortune, eclipse symbols and symbols for dwarf planets (total 6 characters) were added to '''Alchemical symbols'''. (U+1F774-U+1F776 and U+1F77B-U+1F77F)
* (total 20 characters) were added to '''Symbols and Pictographs Extended-A'''. (U+1FA75-U+1FA77, U+1FA87-U+1FA88, U+1FAAD-U+1FAAF, U+1FABB-U+1FABF, U+1FACE-U+1FACF, U+1FADA-U+1FADB, U+1FAE8 and U+1FAF7-U+1FAF8)
* A disunified ideograph for Macao (total 1 character) was added to '''CJK Unified Ideographs Extension C'''. (U+2B739)
===Glyph Changes===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|IPA Extensions
|025E, 029A
|2
|-
|United Canadian Aboriginal Syllabics
|144B, 14D1, 1506, 15C0..15C3, 15E8..15EE, 1601, 1604..1607, 160A..160D, 1614..162D, 1630..163F, 1646..1647, 165A
|66
|-
|United Canadian Aboriginal Syllabics Extended
|18DB, 18EC, 18F1..18F2, 18F5
|5
|-
|Sundanese
|1BBF
|1
|-
|Optical Character Recognition
|2447
|1
|-
|CJK Unified Ideographs Extension A
|34DC, 3BF6, 3C43, 48B4, 4DBE
|5
|-
|CJK Unified Ideographs
|585F, 5F50, 6BC0, 7BC9, 833E
|5
|-
|Cyrillic Extended-B
|A66E
|1
|-
|Old Turkic
|10C47
|1
|-
|Egyptian Hieroglyphs
|various (new standardized variation sequences)
|94
|-
|Khitan Small Script
|18CCA
|1
|-
|Wancho (font update)
|1E2C0..1E2F9, 1E2FF
|59
|-
|Alchemical Symbols (font update)
|1F700..1F773
|116
|-
|CJK Unified Ideographs Extension B
|20048, 20A1C, 2143F, 21A5F, 21C08, 21FBA, 22ACF, 23392, 238A7, 23D8F, 23F4E, 25D20, 26E30, 27B48, 27C4F, 28633, 28B02, 28E9A, 29760, 2A60F
|20
|-
|CJK Unified Ideographs Extension C
|2B249
|1
|-
|CJK Unified Ideographs Extension E
|2BB37, 2BD7D, 2C151, 2C1E0, 2C2D6, 2C5CA, 2C810, 2CD34
|8
|-
|CJK Unified Ideographs Extension F
|2CF4E, 2D25D, 2D3EC, 2D6A7, 2D7BA, 2D979, 2DA74, 2DA97, 2DC13, 2DDC0, 2DF10, 2DF78, 2E05A, 2E0AE, 2E516, 2E640, 2E680, 2EA63
|18
|-
|CJK Compatibility Ideographs Supplement
|2F804, 2F805, 2F833, 2F835, 2F84C, 2F84F, 2F852, 2F855, 2F887, 2F88B, 2F899, 2F8A0, 2F8A6, 2F8A7, 2F8AD, 2F8B1, 2F8B4, 2F8B7, 2F8BA, 2F8D0, 2F8E0..2F8E2, 2F8E5, 2F8E6, 2F8FE, 2F900, 2F901, 2F907, 2F912, 2F922, 2F926, 2F936, 2F938, 2F94E, 2F959, 2F95F, 2F96C, 2F99F, 2F9B8, 2F9BA, 2F9D3, 2F9DB, 2F9DC, 2F9E8, 2F9EA, 2F9EE, 2FA00, 2FA0D, 2FA1B
|50
|-
|CJK Unified Ideographs Extension G
|302FC, 30723, 30A6D, 30CF7, 30DBF, 31006, 3105D
|7
|-
! colspan="2" |Total
!461
|}
===Variation Sequences===
Here is a table with new standardized variation sequences:
{| class="wikitable mw-collapsible mw-collapsed"
|-
!Character Sequence
!Context
!Description of Variation Appearance
|-
|13091 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027
|-
|13092 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH D027A
|-
|13093 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D028
|-
|130A9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH D047
|-
|1310F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F016
|-
|13117 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F023
|-
|1311C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F028
|-
|13121 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F032
|-
|13127 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F037A
|-
|13139 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13139 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH F051
|-
|13183 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH H005
|-
|13187 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH H008
|-
|131A0 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131A0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH K006
|-
|131B1 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B1 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M003
|-
|131B8 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M009
|-
|131B9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M010
|-
|131BA FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M010A
|-
|131CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH M017
|-
|131EE FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131EE FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH M044
|-
|131F8 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N010
|-
|131F9 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131F9 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N011
|-
|131FA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH N012
|-
|131FA FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH N012
|-
|13216 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH N035
|-
|13257 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O006
|-
|1327B FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH O029
|-
|1327F FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O031
|-
|1327F FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH O031
|-
|13285 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O036
|-
|1328C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH O039
|-
|132A4 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132A4 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH P008
|-
|132AA FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Q003
|-
|132CB FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH R024
|-
|132DC FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S010
|-
|132E7 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E7 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S018
|-
|132E9 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S020
|-
|132F8 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S033
|-
|132FD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S037
|-
|13302 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S042
|-
|13303 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH S043
|-
|13307 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T001
|-
|13308 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T002
|-
|13310 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008
|-
|13311 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T008A
|-
|13312 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13312 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009
|-
|13313 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13313 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T009A
|-
|13314 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T010
|-
|13314 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T010
|-
|1331B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331B FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T016
|-
|1331C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T016A
|-
|13321 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13321 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T021
|-
|13322 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13322 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T022
|-
|13331 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH T035
|-
|13331 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH T035
|-
|1333B FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U007
|-
|1333C FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH U008
|-
|1334A FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U022
|-
|13361 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH U042
|-
|13373 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V007A
|-
|13377 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V010
|-
|13378 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V011
|-
|1337D FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V012A
|-
|13385 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH V019
|-
|13399 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V026
|-
|1339A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH V027
|-
|133AF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W001
|-
|133B0 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W002
|-
|133BF FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH W014
|-
|133D3 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH X004A
|-
|133DD FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH Y002
|-
|133F2 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z007
|-
|133F5 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z010
|-
|133F6 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z011
|-
|13403 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH Z015I
|-
|13416 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA008
|-
|13419 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE01
|
|rotated 180 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|13419 FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA011
|-
|1341A FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA012
|-
|13423 FE00
|
|rotated 90 degrees # EGYPTIAN HIEROGLYPH AA021
|-
|1342C FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA030
|-
|1342E FE02
|
|rotated 270 degrees # EGYPTIAN HIEROGLYPH AA032
|-
|13443 FE00
|
|expanded # EGYPTIAN HIEROGLYPH LOST SIGN
|-
|13444 FE00
|
|expanded # EGYPTIAN HIEROGLYPH HALF LOST SIGN
|-
|13445 FE00
|
|expanded # EGYPTIAN HIEROGLYPH TALL LOST SIGN
|-
|13446 FE00
|
|expanded # EGYPTIAN HIEROGLYPH WIDE LOST SIGN
|}
== Unicode 15.1 ==
Unicode 15.1 was released on September 12th, 2023. It encoded 149,813 characters, adding 627 new characters.
=== New Blocks ===
* '''CJK Unified Ideographs Extension I''' (U+2EBF0-U+2EE5F), containing 622 characters, was added.
=== Extended Blocks ===
* 4 Ideographic characters were added to '''Ideographic Description Characters'''. (U+2FFC-U+2FFF)
* An Ideographic subtraction (total 1 character) was added to '''CJK Strokes'''. (U+31EF)
=== Glyph Changes ===
Here is a table with glyph changes:
{| class="wikitable mw-collapsible mw-collapsed"
!Block Name
!Code Points
!Count
|-
|CJK Unified Ideographs Extension A
|357E, 358B..358E, 3599..359D, 35AF..35B0, 35B2..35B3, 35DF..35E1, 35EF, 360F, 3612, 3F94, 44D5, 48EE
|5
|-
|CJK Unified Ideographs
|5098, 512D, 517A, 5391, 54DB, 551C, 551F, 55B8, 55ED, 56AB, 591E, 594A, 5B2E, 5DFC..5DFD, 5EE4, 609E, 65B0, 65B3, 65D5, 65F2, 67B2, 6AB6, 6AEC, 6C69, 6FC2, 6FD3, 7019, 7361, 74BD, 7934, 820B, 826E, 83BB, 8412, 8456, 848A, 896F, 8E34, 8FD7, 9166, 9855, 985E, 9C4D
|5
|-
|Latin Extended-D
|A798
|1
|-
|Latin Extended-E
|AB5A
|1
|-
|Tangut
|17105, 172A4, 17BD1..17BD3, 17EF9, 18136
|59
|-
|Alchemical Symbols
|1F741, 1F747, 1F74C, 1F74F, 1F756, 1F758, 1F763, 1F768, 1F76D, 1F76E
|116
|-
|CJK Unified Ideographs Extension B
|20302, 2087A, 20C00, 230B7, 2339E, 236EF, 237C3, 23B87, 23CC0, 23CD9, 23E5E, 2486F, 249D6, 249E8, 24D6A, 2585E, 25D89, 26A5A..26A5B, 26A73, 26A82..26A83, 26A90, 26AA6, 26AA8, 26AD8, 27350, 279F8, 284A3, 28BBA, 29516, 29530
|20
|-
|CJK Unified Ideographs Extension C
|2A741, 2AB63, 2ACD8, 2AF6F, 2B173, 2B490
|1
|-
|CJK Unified Ideographs Extension E
|2BC2E, 2BF45, 2C04C, 2C13A, 2C43C, 2C43E, 2C816
|8
|-
|CJK Unified Ideographs Extension F
|2D1CC..2D1CD, 2D1DD, 2D1E4, 2D1F7, 2D203, 2D256, 2D266, 2D2A2, 2D2AC, 2D2DA
|18
|-
|CJK Unified Ideographs Extension G
|301D4, 301D9, 301E4, 301E8, 301FF..30200, 30205, 3020C, 30211, 30215..30217, 30220, 30234..30235, 30237
|7
|-
|CJK Unified Ideographs Extension H
|314B7, 31542, 31569, 31C7F, 31D5A, 31F68
|7
|-
! colspan="2" |Total
!164
|}
== Unicode 16.0 ==
Unicode 16.0 was released on September 10th, 2024. It encoded 154,998 characters, adding 5185 new characters.
=== New Blocks ===
* '''Todhri''' (U+105C0-U+105FF), containing 52 characters, was added.
* '''Garay''' (U+10D40-U+10D8F), containing 69 characters, was added.
* '''Tulu-Tigalari''' (U+11380-U+113FF), containing 80 characters, was added.
* '''Myanmar Extended-C''' (U+116D0-U+116FF), containing 20 characters, was added.
* '''Sunuwar''' (U+11BC0-U+11BFF), containing 44 characters, was added.
* '''Egyptian Hieroglyphs Extended-A''' (U+13460-U+143FF), containing 3995 characters, was added.
* '''Gurung Khema''' (U+16100-U+1613F), containing 58 characters, was added.
* '''Kirat Rai''' (U+16D40-U+16D7F), containing 58 characters, was added.
* '''Symbols for Legacy Computing Supplement''' (U+1CC00-U+1CEBF), containing 686 characters, was added.
* '''Ol Onal''' (U+1E5D0-U+1E5FF), containing 44 characters, was added.
=== Extended Blocks ===
* A combining diacritical mark for Jawi (total 1 character) was added to '''Arabic Extended-B'''. (U+0897)
* Inverted letters and a punctuation mark (total 3 characters) was added to '''Balinese'''. (U+1B4E-U+1B4F and U+1B7F)
* A letter Tje (total 2 characters) was added to '''Cyrillic Extended-C'''. (U+1C89-U+1C8A)
* Legacy computing symbols for Delete (total 3 characters) was added to '''Control Pictures'''. (U+2427-U+2429)
* CJK strokes HXG and SZP (total 2 characters) was added to '''CJK Strokes'''. (U+31E4-U+31E5)
* A capital Rams Horn, an S with Diagonal Stroke, Lamda Letters, and letters for Wakashan and Salishan Languages (total 6 characters) was added to '''Latin Extended-D'''. (U+A7CB-U+A7CD, U+A7DA-U+A7DC)
* A combining Alef overlay and letters with two dots vertically below (total 4 characters) was added to '''Arabic Extended-C'''. (U+10EC2-U+10EC4 and U+10EFC)
* A sign Nukta (total 1 character) was added to '''Kawi'''. (U+11F5A)
* A blank character (total 1 character) was added to '''Khitan Small Script'''. (U+18CFF)
* A rightwards arrow with hook, and arrows for legacy computing and arrows for Egyptology (total 12 characters) was added to '''Supplemental Arrows-C'''. (U+1F8B2-U+1F8BB, U+1F8C0-U+1F8C1)
* A Harp, Shovel, Leafless Tree, Fingerprint, Root Vegetable, Splatter, and Face with Bags Under Eyes (total 7 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA89, U+1FA8F, U+1FABE, U+1FAC6, U+1FADC, U+1FADF, and U+1FAE9)
* Graphic shapes for legacy computing (total 37 characters) was added to '''Symbols for Legacy Computing'''. (U+1FBCB-U+1FBEF)
== Unicode 17.0 ==
Unicode 17.0 was released on September 9th, 2025. It encoded 159,801 characters, adding 4,083 new characters.
=== New Blocks ===
* '''Sidetic''' (U+10940-U+1095F), containing 26 characters, was added.
* '''Sharada Supplement''' (U+11B60-U+11B7F), containing 8 characters, was added.
* '''Tolong Siki''' (U+11DB0-U+11DEF), containing 54 characters, was added.
* '''Beria Erfe''' (U+16EA0-U+16EDF), containing 50 characters, was added.
* '''Tangut Components Supplement''' (U+18D80-U+18DFF), containing 115 characters, was added.
* '''Miscellaneous Symbols Supplement''' (U+1CEC0-U+1CEFF), containing 34 characters, was added.
* '''Tai Yo''' (U+1E6C0-U+1E6FF), containing 55 characters, was added.
* '''CJK Unified Ideographs Extension J''' (U+323B0-U+3347F), containing 4298 characters, was added.
=== Extended Blocks ===
* A Noon with Ring Above (total 1 character) was added to '''Arabic Extended-B'''. (U+088F)
* An archaic ligature Shrii (total 1 character) was added to '''Telugu'''. (U+0C5C)
* An archaic ligature Shrii (total 1 character) was added to '''Kannada'''. (U+0CDC)
* Compound tone and harrington diacritics (total 26 characters) was to '''Combining Diacritical Marks Extended'''. (U+1ACF-U+1ADD, U+1AE0-U+1AEB)
* Saudi Riyal Sign (total 1 character) was added to '''Currency Symbols'''. (U+20C1)
* Equal Sign with Infinity Above (total 1 character) was added to '''Miscellaneous Symbols and Arrows'''. (U+2B96)
* 2 capital letters for Middle English, Latin pharyngeal voiced fricative, and Modifier Letter Capital S (total 5 characters) was added to '''Latin Extended-D'''. (U+A7CE-U+A7CF, U+A7D2, U+A7D4, U+A7F1)
* Arabic Ligature Rahmatu Allaahi Alayh and Arabic Honorifics (total 25 characters) was added to '''Arabic Presentation Forms-A'''. (U+FBC3-U+FBD2, U+FD90, U+FD91, U+FDC8-U+FDCE)
* A Small Yeh Barree with Two Dots Below, Thin Noon, Biblical End of Verse, Yeh with Four Dots Below, Honorifics, Double Vertical Bar Below, and Small Low Noon (total 14 characters) was added to '''Arabic Extended-C'''. (U+10EC5-U+10EC7, U+10ED0-U+10ED8, U+10EFA-U+10EFB)
* Chinese Simplified and Traditional Er and Yangqin Slow Signs Two, Three, and Four (total 5 characters) was added to '''Ideographic Symbols and Punctuation'''. (U+16FF2-U+16FF6)
* Some additional ideographs (total 8 characters) was added to '''Tangut'''. (U+187F8-U+187FF)
* Additional ideographs (total 22 characters) was added to '''Tangut Supplement'''. (U+18D09-U+18D1E)
* Nine symbols (total 9 characters) was added to '''Symbols for Legacy Computing Supplement'''. (U+1CCFA-U+1CCFC, U+1CEBA-1CEBF)
* A Landslide (total 1 character) was added to '''Transport and Map Symbols'''. (U+1F6D8)
* Historical asteroid symbols (total 4 characters) was added to '''Alchemical Symbols'''. (U+1F777-U+1F77A)
* Chemical symbols (total 9 characters) was added to '''Supplemental Arrows-C'''. (U+1F8D0-U+1F8D8)
* White and Black Chess Ferz and Alfil (total 4 characters) was added to '''Chess Symbols'''. (U+1FA54-U+1FA57)
* A trombone, treasure chest, hairy creature, orca, distorted face, and fight cloud (total 6 characters) was added to '''Symbols and Pictographs Extended-A'''. (U+1FA8A, U+1FA8E, U+1FAC8, U+1FACD, U+1FAEA, and U+1FAEF)
* An alarm bell symbol (total 1 character) was added to '''Symbols for Legacy Computing'''. (U+1FBFA)
* Additional ideographs (total 6 characters) was added to '''CJK Unified Ideographs Extension C'''. (U+2B73A-U+2B73F)
* Additional ideographs (total 12 characters) was added to '''CJK Unified Ideographs Extension E'''. (U+2CEA2-U+2CEAD)
== Unicode 18.0 ==
Unicode 18.0 will be released on September 16, 2026.
=== New Blocks ===
*'''Bengali Supplement''' (U+11DF0-U+11DFF), containing 2 characters, will be added.
* '''Archaic Cuneiform Numerals''' (U+12550-U+1268F), containing 311 characters, will be added.
* '''Jurchen''' (U+18E00-U+1919F), containing 914 characters, will be added.
* '''Jurchen Radicals''' (U+191A0-U+191DF), containing 51 characters, will be added.
* '''Musical Symbols Supplement''' (U+1D250-U+1D28F), containing 50 characters, will be added.
* '''Miscellaneous Symbols and Arrows Extended''' (U+1DB00-U+1DBFF), containing 29 characters, will be added.
* '''Seal Script''' (U+3D000-U+3FC3F), containing 11328 characters, will be added.
=== Extended Blocks ===
* Modifier letters Eh, Ini, and Yi (total 3 characters) will be added to '''Armenian'''. (U+0558, U+058B-U+058C)
* Hebrew Point Sheva Na Mudgash and Hebrew Point Dagesh Hazaq Mudgash (total 2 characters) will be added to '''Hebrew'''. (U+05C8-U+05C9)
* Signs for dot above and double dot above (total 2 characters) will be added to '''Oriya'''. (U+0B53-U+0B54)
* Alternate positioned IPA diacritics and diacritics for Chao and Khoe (total 7 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1ADE-U+1ADF, U+1AEC-U+1AF0)
* Latin subscript small letter w, y, and z and Modifier letter high and low vertical line (total 4 characters) will be added to '''Superscripts and Subscripts'''. (U+208F, U+209D-U+209F)
* Rufiyaa Sign, UAE Dirham Sign, and Omani Rial (total 3 characters) will be added to '''Currency Symbols'''. (U+20C2-U+20C4)
* Two Wiggly Exclamation Marks and Two Parenthesis with Middle Ring (total 4 characters) will be added to '''Supplemental Punctuation'''. (U+2E60-U+2E63)
* Latin capital letter closed omega and Latin capital letter r with long leg and (total 2 characters) will be added to '''Latin Extended-D'''. (U+A7DD and U+A7E2)
* Latin capital letter script r and script r with ring (total 2 characters) will be added to '''Latin Extended-E'''. (U+AB6C-U+AB6D)
* Latin modifier letters for clicks (total 5 characters) will be added to '''Latin Extended-F'''. (U+107BB-U+107BF)
* Arabic Crown Letters, Quranic Characters, and Arabic Crown (total 39 characters) will be added to '''Arabic Extended-C'''. (U+10EC9-U+10ECF, U+10ED9-U+10EEE, U+10EF0-U+10EF9)
* Devanagari Letter Alternate Ddda (total 1 character) will be added to '''Devanagari Extended-A'''. (U+11B0A)
* Extended Cuneiform Numeric Signs (total 12 characters) will be added to '''Cuneiform Numbers and Punctuation'''. (U+1246F, U+12475-U+1247F)
* Jurchen Small Script characters (total 5 characters) will be added to '''Khitan Small Script'''. (U+18CD6-U+18CDA)
* Two additional ideographs (total 2 characters) will be added to '''Tangut Supplement'''. (U+18D1F-U+18D20)
* Hiragana Digraph Koto, Katakana Diagraphs Toki, Tote, and Yori, letters alternate Ne, and Wi (total 6 characters) will be added to '''Kana Extended-A'''. (U+1B123-U+1B128)
* Katakana letter small archaic Ye (total 1 character) will be added to '''Small Kana Extension'''. (U+1B168)
* Leibnizian alchemical symbols, Leibnizian cossic characters, and Leibnizian mathematical signs and symbols (total 19 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED2-U+1CED4, U+1CEDD-U+1CEDF, U+1CEF1-U+1CEFD)
* Stein Zimmerman Symbols, Digit Slash Symbols, and other Symbols (total 23 characters) will be added to '''Musical Symbols'''. (U+1D127-U+1D128, U+1D1EB-U+1D1FF)
* Mathematical italic long s with descender s (U+1D6A6) will be added to '''Mathematical Alphanumeric Symbols'''.
* Affricate ligatures, letters with palatal hook, barred letters, RFE letters, Initial Teaching Alphabet, English Phonotypic Alphabet, Leibnizian cossic characters, and modifier letters (total 151 characters) will be added to '''Latin Extended-G'''. (U+1DF1F-U+1DF24, U+1DF2B-U+1DF81, U+1DF90-U+1DF96, U+1DFCD-U+1DFFF)
* A Tomobiki symbol (total 1 character) will be added to '''Enclosed Alphanumeric Supplement'''. (U+1F1AE)
* A lighthouse (total 1 character) will be added to '''Transport and Map Symbols'''. (U+1F6D9)
* A black circle with white vertical bar, and Extended Geometric Shapes (total 17 characters) will be added to '''Geometric Shapes Extended'''. (U+1F7DA-U+1F7DB, U+1F7F1-U+1F7FF)
* A meteor, eraser, net with handle, monarch butterfly, pickle, cracking face, leftwards thumb sign, and rightwards thumb sign (total 8 characters) will be added to '''Symbols and Pictographs Extended-A'''. (U+1FA8B-1FA8D, U+1FACC, U+1FADD, U+1FAEB, U+1FAF9-1FAFA)
* An additional ideograph (total 1 character) will be added to '''CJK Unified Ideographs Extension D'''. (U+2B81E)
== Unicode 19.0==
Unicode 19.0 will be released in late 2027. There are more characters targeted for this version, but they have not been confirmed yet.
=== New Blocks ===
* '''CJK Unified Ideographs Components-A''' (U+2FA20-U+2FA9F), containing 119 characters, will be added.
* '''CJK Unified Ideographs Components-B''' (U+2FAA0-U+2FC1F), containing 375 characters, will be added.
== Code Points Provisionally Assigned==
This is a section where you can add any upcoming Unicode characters that have been [https://www.unicode.org/alloc/Pipeline.html#codepoint_reservation provisionally assigned for mature proposals] (but not yet accepted) for a future update of The Unicode Standard.
=== New Blocks ===
* '''Arabic Extended-D''' (U+10D90-U+10E5F), containing 3 characters, will be added.
* '''Sirmauri''' (U+11850-U+1188F), containing 55 characters, will be added.<!--target: 19.0-->
* '''Leke''' (U+11B80-U+11BBF), containing 55 characters, will be added.
* '''Proto-Cuneiform''' (U+12690-U+12ECF), containing 1392 characters, will be added.<!--target: 19.0-->
* '''Chisoi''' (U+16D80-U+16DAF), containing 40 characters, will be added.<!--target: 19.0-->
* '''Mwangwego''' (U+16E00-U+16E3F), containing 64 characters, will be added.
* '''Shaaldaa''' (U+1C800-U+1CB2F), containing 804 characters, will be added.
* '''Leibnizian Ambiguous Signs''' (U+1DC00-U+1DC3F), containing 54 characters, will be added.)<!--target: 19.0-->
=== Extended Blocks ===
* Telugu Sign Spacing Candrabindu (total 1 character) will be added to '''Telugu'''. (U+0C70)<!--target: 19.0-->
* Kannada Signs Ardhanusvara and Combining Anusvara Above (total 1 character) will be added to '''Kannada'''. (U+0CF0 and U+0CF4)<!--target: 19.0-->
* Mongolian Letter Manchu Alternative Ue (total 1 character) will be added to '''Mongolian'''. (U+1879)
* Combining Grave-Acute-Macron, Combining inverted lazy s Above, and Combining comma Above and acute (total 3 characters) will be added to '''Combining Diacritical Marks Extended'''. (U+1AF1-U+1AF3)
* Cyrillic small letter Yeru with connecting bar (total 1 character) will be added to '''Cyrillic Extended-C'''. (U+1C8B)<!--target: 19.0-->
* Belarusian Ruble sign and Ruble sign with double vertical stem (total 2 characters) will be added to '''Currency Symbols'''. (U+20C5, U+20CF)<!--20C5 target: 19.0-->
* Combining Long Triple Solidus Overlay and Combining Saltire Overlay (total 2 characters) will be added to '''Combining Diacritical Marks for Symbols'''. (U+20F1-U+20F2)<!--target: 19.0-->
* Latin capital and small letter i with oblique stroke (total 2 characters) will be added to '''Latin Extended-D'''. (U+A7DE-U+A7DF)
* Latin capital letter u with left hook (total 1 character) will be added to '''Latin Extended-E'''. (U+AB6E)<!--target: 19.0-->
* Arabic Dotless Half-Yeh, Half-Yeh, Dotless Half-Jeem and Astronomical Kaf (total 4 characters) will be added to '''Arabic Extended-C'''. (U+10EC0-U+10EC1, U+10EC8, U+10EEF)<!--10EC0-10EC1 target: 19.0-->
* Brahmi minimizing virama (total 1 character) will be added to '''Brahmi'''. (U+1107E)<!--target: 19.0-->
* Tulu-Tigalari letter combining anusvara above, signs om pushpika with tail and shrii pushpika, and letter archaic II (total 5 characters) will be added to '''Tulu-Tigalari'''. (U+113CB, U+113D9-U+113DB)<!--target: 19.0-->
* Newa Letter Heavy Ya (total 1 character) will be added to '''Newa'''. (U+11462)
* Dogra Signs Candrabindu and Avaragha (total 2 characters) will be added to '''Dogra'''. (U+1183C-U+1183D)<!--target: 19.0-->
* Devanagari Jivamuliya and Upadhmaniya (total 2 characters) will be added to '''Devanagari Extended-A'''. (U+11B0B-U+11B0C)<!--target: 19.0-->
* White Ideographic Comma and Double Ideographic Full Stop (total 2 characters) will be added to '''Ideographic Symbols and Punctuation'''. (U+16FE5-U+16FE6)<!--target: 19.0-->
* Alchemical Symbol for Calx-2 and Alchemical Symbol for Retort-2 (total 2 characters) will be added to '''Miscellaneous Symbols Supplement'''. (U+1CED1, U+1CED5)<!--target: 19.0-->
* Musical Symbol down arrowhead breath mark (total 1 character) will be added to '''Musical Symbols Supplement'''. (U+1D282)
* Small w with palatal hook, small n and r with double middle tilde, small capital i with retroflex hook, small open q, x with stroke, small wavy y, schwa with right hook, Romance dialectology symbols, zh ligature, Albanian letter edhe, Albanian Frashëri letters, Modifier letter capital y, and modifier letter accents (total 26 characters) will be added to '''Latin Extended-G'''. (U+1DF82-U+1DF8F, U+1DF97-U+1DFA3, U+1DFC4-U+1DFCC)<!--1DF82-1DF8A, 1DFC5-1DFCC target: 19.0-->
*Arabic Astronomical zero and five astronomical symbols (total 6 characters) will be added to Arabic Mathematical Alphabetic Symbols (U+1EEE0-U+1EEE5)
==Roadmap Blocks==
This is a section where proportional maps of proposed allocations to Unicode and ISO/IEC 10646 are presented. Italic indicates scripts for which detailed proposals have not yet been written.<ref>[https://unicode.org/roadmaps/smp/]</ref>
* '''Northern Palaeohispanic''' (U+10200-U+1023F)
* '''Southern Palaeohispanic''' (U+10240-U+1027F)
* '''''Shavian Quikscript''' (U+103E0-U+103FF)''
* '''Combining Diacritical Marks Extended-A''' (U+107C0-U+107FF)
* '''Proto-Sinaitic''' (U+108B0-U+108DF)
* '''''Numidian''' (U+10960-U+1097F)''
* '''Balti''' (U+10AA0-U+10ABF)
* '''Book Pahlavi''' (U+10BB0-U+10BDF)
* '''Baburi''' (U+10BE0-U+10BFF)
* '''Arabic Extended-D''' (U+10D90-U+10E5F)
* '''Landa''' (U+11250-U+1127F)
* '''Tani Lipi''' (U+114E0-U+114FF)
* '''Ranjana''' (U+11500-U+1157F)
* '''Zou''' (U+11750-U+117AF)
* '''Pyu''' (U+117B0-U+117FF)
* '''Vateluttu''' (U+11960-U+1199F)
* '''Balti-B''' (U+11CC0-U+11CFF)
* '''Tocharian''' (U+11E00-U+11E6F)
* '''Khotanese''' (U+11E70-U+11ECF)
* '''Pallava''' (U+11F60-U+11FAF)
* '''''Egyptian Hieroglyphs Extended-B''' (U+14680-U+151FF)''
* '''Mayan Hieroglyphs''' (U+15500-U+15AFF)
* '''Kore Sebeli''' (U+15B00-U+15B6F)
* '''Mandombe''' (U+15B80-U+15FFF)
* '''Kurukh Banna''' (U+16140-U+1618F)
* '''Moon''' (U+161A0-U+161FF)
* '''Blissymbols''' (U+16200-U+167FF)
* '''Woleai''' (U+16B90-U+16BFF)
* '''Kpelle''' (U+16C00-U+16C7F)
* '''Tikamuli''' (U+16C80-U+16CBF)
* '''Tangsa (Khimhun)''' (U+16CD0-U+16CFF)
* '''Afaka''' (U+16D00-U+16D3F)
* '''Kulitan''' (U+16DD0-U+16DFF)
* '''''Bopomofo Extended-A''' (U+16FA0-U+16FAF)''
* '''Kanbun Extended-A''' (U+16FB0-U+16FDF)
* '''Khitan Large Script''' (U+19200-U+199FF)
* '''Pau Cin Hau Syllabary''' (U+19E00-U+1A2FF)
* '''Eskaya''' (U+1A300-U+1A75F)
* '''Rejang Extended''' (U+1A760-U+1A77F)
* '''''Kaida''''' (U+1A780-U+1A7FF)
* '''Naxi Dongba''' (U+1A800-U+1ACFF)
* '''''Naxi Geba''' (U+1AD00-U+1AFCF)''
* '''''Kana Extended-C''' (U+1AFD0-U+1AFEF)''
* '''Shuishu Logograms''' (U+1B300-U+1B5FF)
* '''Lisu Syllabic Script''' (U+1B600-U+1B9FF)
* '''Indus''' (U+1BA00-U+1BB8F)
* '''Pitman Shorthand''' (U+1BCB0-U+1BCFF)
* '''Proto-Elamite''' (U+1BE00-U+1C37F)
* '''Linear Elamite''' (U+1C380-U+1C4FF)
* '''Ndiko Jonam''' (U+1CB30-U+1CB7F)
* '''N<nowiki>'</nowiki>ti''' (U+1CB80-U+1CBAF)
* '''Old Chinese Musical Symbols (Flute and Pipa)''' (U+1D290-U+1D2BF)
* '''''Mathematical Alphanumeric Symbols Supplement''' (U+1D380-U+1D3FF)''
* '''Jianzi Format Controls''' (U+1DAE0-U+1DAFF)
* '''Eebee Hmong''' (U+1E150-U+1E1FF)
* '''Western Cham''' (U+1E200-U+1E26F)
* '''Loma''' (U+1E300-U+1E41F)
* '''Bagam''' (U+1E420-U+1E4CF)
* '''Pungchen''' (U+1E500-U+1E52F)
* '''''Pungchung''' (U+1E530-U+1E55F)''
* '''''Marchung''' (U+1E560-U+1E59F)''
* '''Brusha''' (U+1E5A0-U+1E5CF)
* '''''Chola''' (U+1E600-U+1E65F)''
* '''Box-Headed''' (U+1E660-U+1E6BF)
* '''Lampung''' (U+1E700-U+1E73F)
* '''Kerinci''' (U+1E740-U+1E76F)
* '''Buginese Supplement''' (U+1E770-U+1E7BF)
* '''''Lontara Bilang-Bilang''' (U+1E7C0-U+1E7DF)''
* '''N'Ko Supplement''' (U+1E960-1E97F)
* '''''Byblos''''' (U+1EB90-U+1EBFF)
* '''Persian Siyaq Numbers''' (U+1EC00-U+1EC7F)
* '''Diwani Siyaq Numbers''' (U+1ECC0-U+1ECFF)
* '''''Extended Pictographic Characters''' (U+1FC00-U+1FFFF)''
== References ==
{{reflist}}
q33lxo86zbgj6j7hjnte30prr261m5l
Chess Opening Theory/1. e4/1...e5/2. Nf3/2...Nc6/3. Bb5/3...a6/4. Ba4/4...Nf6/5. O-O
0
127414
4656269
4540437
2026-08-04T16:12:19Z
DANICATALAN
3619171
/* Defend e5 */ There was a mistake, after 5..b5 6. Bb6 is impossible, it was meant to be 6. Bb3
4656269
wikitext
text/x-wiki
{{Chess Opening Theory/Position
|Morphy defence
|parent=[[../|Morphy defence]]
|eco=[[Chess/ECOC|C79]]
|responses=<br>
* [[/5...Be7|5...Be7 · Closed Spanish]]
* [[/5...Nxe4|5...Nxe4 · Open Spanish]]
* [[/5...Bc5|5...Bc5 · Neo-Arkhangelsk variation]]
* [[/5...b5|5...b5]] leading to Arkangelsk or transposing
}}
== 5. O-O ==
White castles. White keeps the option to play c3 and d4 open by preparing to protect e4 with Re1. Once e4 is defended, White's threat to take e5 is renewed because Black's tactic with Qd4 would no longer win the pawn back.
Black must decide between several priorities: castling is one, which means choosing where to '''develop their kingside bishop''' ( [[/5...Be7|'''5...Be7''']] or [[/5...Bc5|'''5...Bc5''']]). At some point they'd like to '''defend their e5-pawn''' ([[/5...b5|'''5...b5''']] or [[/5...d6|'''5...d6''']]). Finally, they may be eyeing '''White's e4 pawn''' and thinking, ''isn't that hanging?'' ([[/5...Nxe4|'''5...Nxe4''']])
=== Develop the kingside ===
Black needs to develop their f8 bishop before they may castle. It's two most credible squares are [[/5...Be7|'''5...Be7''']] and [[/5...Bc5|'''5...Bc5''']].
[[/5...Bc5|'''5...Bc5''']], the '''Neo-Archangelsk variation''', develops the bishop to the attacking g1-a7 diagonal and pins the f2 pawn. Bc5 means Black can defend the e-pawn with d6 without trapping the bishop behind the pawn chain. This line discourages 6. Re1?!, because after 6...Ng4 White finds themselves moving the rook back to f1 to defend their pawn. However, this makes White's other plan even better: White can gain tempo on the bishop with c3 and d4 and achieve the big centre they wanted.
For this reason [[/5...Be7|'''5...Be7''']] is the mainline.<ref>73% of games continue 5...Be7 in Lichess's Masters database, and 35% in the Lichess database.</ref> 5...Be7 is the '''Closed Spanish'''. Though it may look passive to develop the bishop behind the pawn chain, Be7 has several purposes. Firstly, it avoids losing tempo from c3 and d4. Secondly, it ensures White gets no tactics involving an e-file pin, nor can they pin the knight with Bg5. Finally, by developing behind the pawn chain, the bishop can more readily help defend Black's kingside.
=== Defend e5 ===
Once White plays Re1 (defending e4) or c3 (controlling d4), Black's Qd4 tactic, which up to now has deterred White from playing Bxc6 and Nxe5, will no longer work. Black has a couple of ways to defend it. Because e5 isn't under immediate threat, Black usually delays this decision until after they have developed their kingside bishop (see above).
[[/5...b5|'''5...b5''']] helps defend e5 by ending the threat of Bxc6 and is the most flexible approach. After 6. Bb3, Black can play Be7 and d6 anyway, transposing into the Closed Spanish, but they have other choices. 5...b5 made room for Black to fianchetto their bishop to b7, the '''Archangelsk variation''', where it (along with ...Bc5 if Black chooses) pressures White's kingside. 5...b5 is the main sideline.<ref>14% of games continue 5...b5 in Lichess's Masters database, 18% of those transpose into the Closed Spanish with 6...Be7. 5...b5 is the most common move in the Lichess database, though they mostly transpose to the Closed Spanish (6...Be7 is the continuation in 38% of games, 6...Bb7 only in 6% of games).</ref>
{{Chess/board|moves=1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O d6 6. d4 b5 7. Bb3 Nxd4 8. Nxd4 exd4 9. Qxd4 c5 10. Qc3 c4|caption=Noah's Ark trap, 6...b5 7. Bb3 Nxd4 8. Nxd4 exd4 9. Qxd4 c5 10. Qc3 c4.|frame=1|float=right}}
In many lines, Black plays ...d6 to defend their e5 pawn, which ends the threat of Nxe5 and liberates Black's c6 knight from guard duty (it may instead chase down White's Spanish bishop). Black can choose to play it now, [[/5...d6|'''5...d6''']], the '''Deferred Steinitz'''. 5...d6 closes in the kingside bishop, but as we have seen it is happy to develop to Be7 (transposing into the Averbakh variation of the Closed Spanish) or, more commonly, Black plays g6 and fianchettos it. Black does pin their own knight, but they can now play Bd7 to unpin it or Bg5 to pin White's knight.
Like the Modern Steinitz ([[../../4...d6|4...d6]]), the Deferred Steinitz is an improvement over the Old Steinitz ([[../../../../3...d6|3...d6]] before playing a6) because Black now has the option of b5. If White tries 6. d4?, the usual approach to the Old Steinitz, then 6...b5 7. Bb3 Nxd4 8. Nxd4 exd4 wins a pawn, because 9. Qxd4? runs into 9...c5 10. Qc3 c4 trapping White's bishop―this is called the '''Noah's Ark trap''', because it's such an old trap it might as well be in the Bible.
=== Take e4 ===
[[/5...Nxe4|'''5...Nxe4''']] is the '''Open Spanish'''. For the moment, White has left the e4 pawn undefended. Black can take it this turn before White gets in the move Re1, though as usual when a player grabs a pawn in the Ruy Lopez, they find they can't hold onto it.
White can get Black's e-pawn (the usual continuation is 6. d4 b5 7. Bb3 d5 8. dxe5) and this leads to open positions with a very different flavour from the "torturous" Closed Spanish games. The Open Spanish is the third line, after the Closed Spanish and 5...b5.
=== Minor lines ===
[[/5...d5|'''5...d5?''']] is the irrational '''Central countergambit''' where Black attacks in the centre. Black offers White their choice of central pawns to capture... but capturing either is quite good for White. This is even worse than the [[Chess Opening Theory/1. e4/1...e5/2. Nf3/2...Nc6/3. Bb5/3...d5|3...d5?]], the so-called Spanish countergambit, because White has safely castled and there is even less opportunity for Black to find counterplay.
[[/5...g6|'''5...g6''']], the '''Brix variation'''<ref>[https://chess.gallery/game/svend-erik-hansen-brix-per-1978-00-00-2744869-2744869 Hansen v Brix, Denmark 1978 - Chess.gallery]</ref>, prepares to fianchetto the kingside bishop instead, like a deferred-deferred Smyslov.
{{clear}}
==Theory table==
{{Chess Opening Theory/Table}}
'''1.e4 e5 2.Nf3 Nc6 3.Bb5 a6 4.Ba4 Nf6 5.O-O'''
<table border="0" cellspacing="0" cellpadding="4">
<tr>
<th></th>
<th align="left">5</th>
<th align="left">6</th>
<th align="left">7</th>
</tr>
<tr>
<th align="right">Closed Defence</th>
<td>O-O<br>[[/5...Be7|Be7]]</td>
<td>Re1<br>b5</td>
<td>Bb3<br>d6</td>
<td>=</td>
</tr>
<tr>
<th align="right">Open Variation</th>
<td>...<br>[[/5...Nxe4|Nxe4]]</td>
<td>d4<br>b5</td>
<td>Bb3<br>d5</td>
<td>=</td>
</tr>
<tr>
<th align="right">Columbus variation</th>
<td>...<br>[[/5...b5|b5]]</td>
<td>Bb3<br>Bb7</td>
<td>d3<br>Be7</td>
<td>=</td>
</tr>
<tr>
<th align="right">Neo-Arkhangelsk Variation</th>
<td>...<br>[[/5...Bc5|Bc5]]</td>
<td>c3<br>b5</td>
<td>Bb3<br>d6</td>
<td>=</td>
</tr>
</table>
{{ChessMid}}
== References ==
{{reflist}}
=== See also ===
{{wikipedia|Ruy Lopez}}
{{MCO15}}
{{NCO}}
{{Chess Opening Theory/Footer}}
[[fi:Shakkiaapinen/Peli/1. e4/1...e5/2. Rf3/2...Rc6/3. Lb5/3...a6/4. La4/4...Rf6/5. 0-0]]
d3iqjefnef3k9cga2gwkroixgk99h4d
Wikibooks:Reading room/Administrative Assistance
4
140081
4656259
4656237
2026-08-04T12:37:32Z
MathXplore
3097823
Reporting Uniquehairgro
4656259
wikitext
text/x-wiki
__NEWSECTIONLINK__ {{Discussion Rooms}} {{shortcut|WB:AN|WB:AA}} {{TOC left}}
{{User:MiszaBot/config
|archive = Wikibooks:Reading room/Administrative Assistance/Archives/%(year)d/%(monthname)s
|algo = old(14d)
|counter = 1
|minthreadstoarchive = 1
|minthreadsleft = 1
}}
{{ombox|type=content|text='''To request a rename or usurpation''', go to the global request page at Meta [[meta:SRUC|here]].<br />''Please do not post those requests here!''}}
{{Clear}}
Welcome to the '''Administrative Assistance reading room'''. You can request assistance from [[WB:ADMIN|administrators]] for handling a variety of problems here and alert them about problems which may require special actions not normally used during regular content editing. Please be patient as administrators are often quite busy with either their own projects or trying to perform general maintenance and cleanup.
You can deal with most vandalism yourself: [[Wikibooks:Dealing with vandalism|fix it]], then [[Wikibooks:Templates/User_notices|warn the user]]. If there is repeated vandalism by one user, lots of vandalism on a single page, or vandalism from many users, tell an admin here, or in [irc://irc.freenode.net/wikibooks #wikibooks] (say <code>!admin</code> to get attention).
For more general questions and assistance that doesn't require an administrator, please use the [[WB:HELP|Assistance Reading Room]].
{{clear}}
[[Category:Reading room]]
== Samanthajagan reported by MathXplore ==
* {{userlinks|Samanthajagan}}
Spam, [[Special:AbuseLog/314786]] <!-- USERREPORTED:/Samanthajagan/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:30, 21 July 2026 (UTC)
:{{done}} —[[User:Atcovi|Atcovi]] [[User talk:Atcovi|(Talk]] - [[Special:Contributions/Atcovi|Contribs)]] 12:47, 21 July 2026 (UTC)
== Upgradchennai0 reported by MathXplore ==
* {{userlinks|Upgradchennai0}}
Link spam, [[Special:AbuseLog/314865]], [[Special:CentralAuth/Upgradchennai0]] <!-- USERREPORTED:/Upgradchennai0/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 07:54, 26 July 2026 (UTC)
: {{done}}. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 13:02, 26 July 2026 (UTC)
== Elearningandearning reported by MathXplore ==
* {{userlinks|Elearningandearning}}
Spam <!-- USERREPORTED:/Elearningandearning/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:06, 29 July 2026 (UTC)
: {{done}}. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 14:49, 29 July 2026 (UTC)
== Starlium reported by MathXplore ==
* {{userlinks|Starlium}}
Long-term abuse. Cross-wiki abuse. [[Special:CentralAuth/Wahyu_Saputraa]], [[:w:id:Wikipedia:Investigasi pengguna siluman/Wahyu Saputraa]] <!-- USERREPORTED:/Starlium/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:17, 29 July 2026 (UTC)
: Globally locked by a steward. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 14:48, 29 July 2026 (UTC)
== Aranyaresidency reported by MathXplore ==
* {{userlinks|Aranyaresidency}}
Link spam, [[Special:AbuseLog/314920]] <!-- USERREPORTED:/Aranyaresidency/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:25, 31 July 2026 (UTC)
: {{done}}. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 16:33, 31 July 2026 (UTC)
== Permata55 reported by MathXplore ==
* {{userlinks|Permata55}}
Spam <!-- USERREPORTED:/Permata55/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 07:33, 1 August 2026 (UTC)
: Already globally locked by a steward. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 20:23, 2 August 2026 (UTC)
== Birdsjungle reported by MathXplore ==
* {{userlinks|Birdsjungle}}
Link spam, [[Special:AbuseLog/314940]] <!-- USERREPORTED:/Birdsjungle/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 11:21, 3 August 2026 (UTC)
: {{done}}. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 14:02, 3 August 2026 (UTC)
== Uniquehairgro reported by MathXplore ==
* {{userlinks|Uniquehairgro}}
Spam <!-- USERREPORTED:/Uniquehairgro/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:37, 4 August 2026 (UTC)
3w0sm54u3n422nzfvn2457mnf1grkkd
4656266
4656259
2026-08-04T14:46:20Z
Kittycataclysm
3371989
/* Uniquehairgro reported by MathXplore */ Reply
4656266
wikitext
text/x-wiki
__NEWSECTIONLINK__ {{Discussion Rooms}} {{shortcut|WB:AN|WB:AA}} {{TOC left}}
{{User:MiszaBot/config
|archive = Wikibooks:Reading room/Administrative Assistance/Archives/%(year)d/%(monthname)s
|algo = old(14d)
|counter = 1
|minthreadstoarchive = 1
|minthreadsleft = 1
}}
{{ombox|type=content|text='''To request a rename or usurpation''', go to the global request page at Meta [[meta:SRUC|here]].<br />''Please do not post those requests here!''}}
{{Clear}}
Welcome to the '''Administrative Assistance reading room'''. You can request assistance from [[WB:ADMIN|administrators]] for handling a variety of problems here and alert them about problems which may require special actions not normally used during regular content editing. Please be patient as administrators are often quite busy with either their own projects or trying to perform general maintenance and cleanup.
You can deal with most vandalism yourself: [[Wikibooks:Dealing with vandalism|fix it]], then [[Wikibooks:Templates/User_notices|warn the user]]. If there is repeated vandalism by one user, lots of vandalism on a single page, or vandalism from many users, tell an admin here, or in [irc://irc.freenode.net/wikibooks #wikibooks] (say <code>!admin</code> to get attention).
For more general questions and assistance that doesn't require an administrator, please use the [[WB:HELP|Assistance Reading Room]].
{{clear}}
[[Category:Reading room]]
== Samanthajagan reported by MathXplore ==
* {{userlinks|Samanthajagan}}
Spam, [[Special:AbuseLog/314786]] <!-- USERREPORTED:/Samanthajagan/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:30, 21 July 2026 (UTC)
:{{done}} —[[User:Atcovi|Atcovi]] [[User talk:Atcovi|(Talk]] - [[Special:Contributions/Atcovi|Contribs)]] 12:47, 21 July 2026 (UTC)
== Upgradchennai0 reported by MathXplore ==
* {{userlinks|Upgradchennai0}}
Link spam, [[Special:AbuseLog/314865]], [[Special:CentralAuth/Upgradchennai0]] <!-- USERREPORTED:/Upgradchennai0/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 07:54, 26 July 2026 (UTC)
: {{done}}. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 13:02, 26 July 2026 (UTC)
== Elearningandearning reported by MathXplore ==
* {{userlinks|Elearningandearning}}
Spam <!-- USERREPORTED:/Elearningandearning/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:06, 29 July 2026 (UTC)
: {{done}}. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 14:49, 29 July 2026 (UTC)
== Starlium reported by MathXplore ==
* {{userlinks|Starlium}}
Long-term abuse. Cross-wiki abuse. [[Special:CentralAuth/Wahyu_Saputraa]], [[:w:id:Wikipedia:Investigasi pengguna siluman/Wahyu Saputraa]] <!-- USERREPORTED:/Starlium/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:17, 29 July 2026 (UTC)
: Globally locked by a steward. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 14:48, 29 July 2026 (UTC)
== Aranyaresidency reported by MathXplore ==
* {{userlinks|Aranyaresidency}}
Link spam, [[Special:AbuseLog/314920]] <!-- USERREPORTED:/Aranyaresidency/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:25, 31 July 2026 (UTC)
: {{done}}. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 16:33, 31 July 2026 (UTC)
== Permata55 reported by MathXplore ==
* {{userlinks|Permata55}}
Spam <!-- USERREPORTED:/Permata55/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 07:33, 1 August 2026 (UTC)
: Already globally locked by a steward. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 20:23, 2 August 2026 (UTC)
== Birdsjungle reported by MathXplore ==
* {{userlinks|Birdsjungle}}
Link spam, [[Special:AbuseLog/314940]] <!-- USERREPORTED:/Birdsjungle/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 11:21, 3 August 2026 (UTC)
: {{done}}. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 14:02, 3 August 2026 (UTC)
== Uniquehairgro reported by MathXplore ==
* {{userlinks|Uniquehairgro}}
Spam <!-- USERREPORTED:/Uniquehairgro/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:37, 4 August 2026 (UTC)
:{{done}} —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 14:46, 4 August 2026 (UTC)
39omi1wcgwo6k47ffr5z91b5bsc4fms
4656356
4656266
2026-08-05T08:10:26Z
ArchiverBot
1227662
Bot: Archiving 1 thread (older than 14 days) to [[Wikibooks:Reading room/Administrative Assistance/Archives/2026/July]]
4656356
wikitext
text/x-wiki
__NEWSECTIONLINK__ {{Discussion Rooms}} {{shortcut|WB:AN|WB:AA}} {{TOC left}}
{{User:MiszaBot/config
|archive = Wikibooks:Reading room/Administrative Assistance/Archives/%(year)d/%(monthname)s
|algo = old(14d)
|counter = 1
|minthreadstoarchive = 1
|minthreadsleft = 1
}}
{{ombox|type=content|text='''To request a rename or usurpation''', go to the global request page at Meta [[meta:SRUC|here]].<br />''Please do not post those requests here!''}}
{{Clear}}
Welcome to the '''Administrative Assistance reading room'''. You can request assistance from [[WB:ADMIN|administrators]] for handling a variety of problems here and alert them about problems which may require special actions not normally used during regular content editing. Please be patient as administrators are often quite busy with either their own projects or trying to perform general maintenance and cleanup.
You can deal with most vandalism yourself: [[Wikibooks:Dealing with vandalism|fix it]], then [[Wikibooks:Templates/User_notices|warn the user]]. If there is repeated vandalism by one user, lots of vandalism on a single page, or vandalism from many users, tell an admin here, or in [irc://irc.freenode.net/wikibooks #wikibooks] (say <code>!admin</code> to get attention).
For more general questions and assistance that doesn't require an administrator, please use the [[WB:HELP|Assistance Reading Room]].
{{clear}}
[[Category:Reading room]]
== Upgradchennai0 reported by MathXplore ==
* {{userlinks|Upgradchennai0}}
Link spam, [[Special:AbuseLog/314865]], [[Special:CentralAuth/Upgradchennai0]] <!-- USERREPORTED:/Upgradchennai0/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 07:54, 26 July 2026 (UTC)
: {{done}}. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 13:02, 26 July 2026 (UTC)
== Elearningandearning reported by MathXplore ==
* {{userlinks|Elearningandearning}}
Spam <!-- USERREPORTED:/Elearningandearning/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:06, 29 July 2026 (UTC)
: {{done}}. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 14:49, 29 July 2026 (UTC)
== Starlium reported by MathXplore ==
* {{userlinks|Starlium}}
Long-term abuse. Cross-wiki abuse. [[Special:CentralAuth/Wahyu_Saputraa]], [[:w:id:Wikipedia:Investigasi pengguna siluman/Wahyu Saputraa]] <!-- USERREPORTED:/Starlium/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:17, 29 July 2026 (UTC)
: Globally locked by a steward. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 14:48, 29 July 2026 (UTC)
== Aranyaresidency reported by MathXplore ==
* {{userlinks|Aranyaresidency}}
Link spam, [[Special:AbuseLog/314920]] <!-- USERREPORTED:/Aranyaresidency/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:25, 31 July 2026 (UTC)
: {{done}}. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 16:33, 31 July 2026 (UTC)
== Permata55 reported by MathXplore ==
* {{userlinks|Permata55}}
Spam <!-- USERREPORTED:/Permata55/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 07:33, 1 August 2026 (UTC)
: Already globally locked by a steward. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 20:23, 2 August 2026 (UTC)
== Birdsjungle reported by MathXplore ==
* {{userlinks|Birdsjungle}}
Link spam, [[Special:AbuseLog/314940]] <!-- USERREPORTED:/Birdsjungle/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 11:21, 3 August 2026 (UTC)
: {{done}}. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 14:02, 3 August 2026 (UTC)
== Uniquehairgro reported by MathXplore ==
* {{userlinks|Uniquehairgro}}
Spam <!-- USERREPORTED:/Uniquehairgro/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:37, 4 August 2026 (UTC)
:{{done}} —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 14:46, 4 August 2026 (UTC)
43olwusqmr3ry0x2cdae02k4q95fs2r
Vehicle Identification Numbers (VIN codes)/GM/VIN Codes
0
142013
4656267
4656220
2026-08-04T15:31:04Z
JustTheFacts33
3434282
/* Series 2000-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle */
4656267
wikitext
text/x-wiki
{{Vehicle Identification Numbers (VIN codes)/Warning}}{{clear}}
It is the tenth digit that gives you the model year for GM. I've been working at a Chevy dealer for years running codes/vins. For example (my examples only apply to 2001-2015 gm vehicles)
Remember 10th digit from the beginning, (left to right).
2001... 1,
2002...2,
2003...3,
etc.,
2009...9.
After 2009, the tenth digit was given a letter
2010... A,
2011...B,
2012...C,
2013...D,
2014...E,
2015...F,
Etc...
We have another 20 years worth of letters.
Thanks for reading.
You can always check your model year by looking in your drivers side door jamb and it will give you model year. If it was assembled in July or later, the model year is probably a year later than the calendar year of the manufacturing date listed.
==American GM==
===American VIN format 1981-1984 Passenger Car===
GM's VIN format is as follows:
<table border=1 style="margin:auto;">
<tr>
<th>Position</th>
<th>Sample</th><th></th><th></th><th>Description</th>
</tr><tr>
<td>1</td>
<td>1</td><td></td><td></td><td rowspan=3>[[#GM WMIs|World Manufacturer Identifier]]</td>
</tr><tr>
<td>2</td>
<td>G</td><td></td><td></td></tr><tr>
<td>3</td>
<td>6</td><td></td><td></td></tr><tr>
<td>4</td>
<td>A</td><td></td><td></td><td>[[#American restraint types 1981-1984|Restraint type]]</td>
</tr><tr>
<td>5</td>
<td>M</td><td></td><td></td><td>[[#Car Line & Series Code 1981-1984|Car Line & Series Code]]</td>
</tr><tr>
<td>6</td>
<td>4</td><td></td><td></td><td rowspan=2>[[#Body style codes 1981-1986|Body style]]</td>
</tr><tr>
<td>7</td>
<td>7</td><td></td><td></td><td> </td>
</tr><tr>
<td>8</td>
<td>8</td><td></td><td></td><td>[[#American engine codes 1981-|Engine type]]</td>
</tr><tr>
<td>9</td>
<td>0</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Check digit |Check digit]]</td>
</tr><tr>
<td>10</td>
<td>E</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Model year|Model year]]</td>
</tr><tr>
<td>11</td>
<td>9</td><td></td><td></td><td>[[#GM factories supplying North America|Factory ID]]</td>
</tr><tr>
<td>12</td>
<td>1</td><td></td><td></td><td rowspan=6>Sequential number
</tr><tr>
<td>13</td>
<td>2</td><td></td><td></td></tr><tr>
<td>14</td>
<td>3</td><td></td><td></td></tr><tr>
<td>15</td>
<td>7</td><td></td><td></td></tr><tr>
<td>16</td>
<td>6</td><td></td><td></td></tr><tr>
<td>17</td>
<td>2</td><td></td><td></td>
</table>
====American restraint types 1981-1984====
The restraint type is specified as character 4 of the American GM VIN for passenger cars.
{| border=1 style="margin:auto;"
!VIN Code
!Description
|-
|A||Manual Seatbelts only - No Passive Restraint
|}
====Car Line & Series Code 1981-1984====
The Car Line & Series Code is specified as character 5 of the American GM VIN for passenger cars.
{| border=1 style="margin:auto;"
!List of GM platforms
!Car Line & <br> Series Code
!:Category:General Motors vehicles|Model
|-
|rowspan=19|GM A platform - rear-wheel drive
|T||Chevrolet Malibu 1981
|-
|W||Chevrolet Malibu Classic 1981
|-
|Z||Chevrolet Monte Carlo 1981
|-
|D||Pontiac LeMans 1981
|-
|F||Pontiac Grand LeMans 1981
|-
|J||Pontiac Grand Prix 1981
|-
|K||Pontiac Grand Prix LJ 1981
|-
|P||Pontiac Grand Prix Brougham 1981
|-
|G||Oldsmobile Cutlass sedan, Cutlass Cruiser wagon 1981
|-
|H||Oldsmobile Cutlass Cruiser ''Brougham'' wagon 1981
|-
|K||Oldsmobile Cutlass Calais coupe 1981
|-
|M||Oldsmobile Cutlass Supreme ''Brougham'' 1981
|-
|R||Oldsmobile Cutlass Supreme coupe, Cutlass LS sedan 1981
|-
|E||Buick Century wagon 1981
|-
|H||Buick Century sedan, Estate wagon 1981
|-
|J||Buick Regal 1981
|-
|K||Buick Regal ''Sport'' 1981
|-
|L||Buick Century ''Limited'' 1981
|-
|M||Buick Regal ''Limited'' 1981
|-
|rowspan=10|GM A platform - front-wheel drive
|W||Chevrolet Celebrity 1982-1984
|-
|F||Pontiac 6000 1982-1984
|-
|G||Pontiac 6000 ''LE'' 1982-1984
|-
|H||Pontiac 6000 ''STE'' 1983-1984
|-
|G||Oldsmobile Cutlass Ciera 1982
|-
|J||Oldsmobile Cutlass Ciera ''LS'' 1982-1984, Cutlass Cruiser ''LS'' 1984
|-
|M||Oldsmobile Cutlass Ciera ''Brougham'' 1982-1984
|-
|G||Buick Century ''T-Type'' 1983-1984
|-
|H||Buick Century ''Custom'' 1982-1984
|-
|L||Buick Century ''Limited'' 1982-1984
|-
|rowspan=19|GM B platform
|D||Chevrolet Bel Air 1981 (Canada only)
|-
|L||Chevrolet Impala 1981-1984
|-
|N||Chevrolet Caprice Classic 1981-1984
|-
|F||Pontiac Laurentian 1981 (Canada only)
|-
|L||Pontiac Catalina 1981, Parisienne 1984
|-
|L||Pontiac Parisienne 1982-1983 (Canada only)
|-
|N||Pontiac Bonneville 1981
|-
|N||Pontiac Parisienne 1981, Parisienne Brougham 1982-1983 (Canada only)
|-
|R||Pontiac Bonneville Brougham 1981
|-
|T||Pontiac Parisienne Brougham 1984
|-
|L||Oldsmobile Delta 88 1981-1983
|-
|N||Oldsmobile Delta 88 Royale 1981-1984
|-
|P||Oldsmobile Custom Cruiser 1981-1984
|-
|V||Oldsmobile Delta 88 Royale Brougham LS 1984
|-
|Y||Oldsmobile Delta 88 Royale Brougham 1981-1984
|-
|N||Buick Le Sabre 1981, Le Sabre ''Custom'' 1982-1984
|-
|P||Buick Le Sabre ''Limited'' 1981-1984
|-
|R||Buick Le Sabre Estate Wagon 1981-1983
|-
|V||Buick Electra Estate Wagon 1981-1984
|-
|rowspan=13|GM C platform - rear-wheel drive
|G||Oldsmobile 98 Regency 1984
|-
|H||Oldsmobile 98 Regency Brougham 1984
|-
|V||Oldsmobile 98 Luxury 1981
|-
|W||Oldsmobile 98 Regency Brougham 1982-1983
|-
|X||Oldsmobile 98 Regency 1981-1983
|-
|R||Buick Electra Limited 1984
|-
|U||Buick Electra Park Avenue 1984
|-
|W||Buick Electra Park Avenue 1981-1983
|-
|X||Buick Electra Limited 1981-1983
|-
|B||Cadillac Fleetwood Brougham 1981-1983
|-
|D||Cadillac DeVille 1981-1983
|-
|M||Cadillac DeVille 1984
|-
|W||Cadillac Fleetwood Brougham 1984
|-
|rowspan=1|GM D platform - rear-wheel drive
|F||Cadillac Fleetwood Limousine 1981-1984
|-
|rowspan=4|GM E platform
|Z||Oldsmobile Toronado Brougham 1981-1984
|-
|Y||Buick Riviera T-Type 1981-1984
|-
|Z||Buick Riviera 1981-1984
|-
|L||Cadillac Eldorado 1981-1984
|-
|rowspan=7|GM F platform
|P||Chevrolet Camaro Sport Coupe 1981-1984
|-
|S||Chevrolet Camaro Berlinetta 1981-1984
|-
|S||Pontiac Firebird 1981-1984
|-
|T||Pontiac Firebird ''Esprit'' 1981
|-
|V||Pontiac Firebird ''Formula'' 1981
|-
|W||Pontiac Firebird ''Trans Am'' 1981-1984
|-
|X||Pontiac Firebird ''Trans Am'' Turbo Special Edition 1981, Firebird ''S/E'' 1982-1984
|-
|rowspan=15|GM G platform - rear-wheel drive
|W||Chevrolet Malibu Classic 1982, Malibu 1983
|-
|Z||Chevrolet Monte Carlo 1982-1984
|-
|J||Pontiac Grand Prix 1982-1984
|-
|K||Pontiac Grand Prix LJ 1982-1983, Grand Prix LE 1984
|-
|N||Pontiac Bonneville G 1982-1984
|-
|P||Pontiac Grand Prix Brougham 1982-1984
|-
|R||Pontiac Bonneville G Brougham 1982-1984
|-
|S||Pontiac Bonneville G ''LE'' 1984
|-
|H||Oldsmobile Cutlass Cruiser wagon 1982-1983
|-
|K||Oldsmobile Cutlass Calais coupe 1982-1984
|-
|M||Oldsmobile Cutlass Supreme ''Brougham'' 1982-1984
|-
|R||Oldsmobile Cutlass Supreme coupe & sedan 1982-1984
|-
|J||Buick Regal 1982-1984
|-
|K||Buick Regal ''Sport'' 1982, Regal ''T-Type'' 1983-1984
|-
|M||Buick Regal ''Limited'' 1982-1984
|-
|rowspan=13|GM J platform
|C||Chevrolet Cavalier 1983-1984
|-
|D||Chevrolet Cavalier 2-d/4-d/wagon 1982, Cavalier CS 1983-1984
|-
|E||Chevrolet Cavalier 3-door hatchback 1982, Cavalier CS 3-door hatchback 1983, Cavalier Type 10 2-d/3-d/Convertible 1984
|-
|B||Pontiac J2000 1982, 2000 1983, 2000 Sunbird 1984
|-
|C||Pontiac J2000 LE 1982, 2000 LE 1983, 2000 Sunbird LE Convertible 1983, 2000 Sunbird LE 1984
|-
|D||Pontiac J2000 SE 1982, 2000 SE 1983, 2000 Sunbird SE 1984
|-
|E||Pontiac J2000 S 1982
|-
|C||Oldsmobile Firenza Base model 1982-1984, Firenza S 1982-1984
|-
|D||Oldsmobile Firenza LX 1982-1984, Firenza SX 1982-1984
|-
|E||Buick Skyhawk T-Type 1983-1984
|-
|S||Buick Skyhawk Custom 1982-1984
|-
|T||Buick Skyhawk Limited 1982-1984
|-
|G||Cadillac Cimarron 1982-1984
|-
|rowspan=1|GM K platform
|S||Cadillac Seville 1981-1984
|-
|rowspan=3|GM P platform
||E||Pontiac Fiero ''Coupe'' 1984
|-
||F||Pontiac Fiero ''SE'' 1984
|-
||M||Pontiac Fiero ''Sport coupe'' 1984
|-
|rowspan=6|GM T platform - rear-wheel drive
|B||Chevrolet Chevette 1981-1983, Chevette CS 1984
|-
|J||Chevrolet Chevette Scooter 1981-1983, Chevette 1984
|-
|B||Pontiac Acadian 1981-1984 (Canada only)
|-
|J||Pontiac Acadian S 1981-1982, Pontiac Acadian Scooter 1983-1984 (Canada only)
|-
|L||Pontiac T1000 1982, 1000 1983-1984
|-
|M||Pontiac T1000 1981
|-
|rowspan=10|GM X platform
|H||Chevrolet Citation 2-door coupe 1982-1983, Citation II 2-door coupe 1984
|-
|X||Chevrolet Citation hatchback 1981-1983, Citation II hatchback 1984
|-
|T||Pontiac Phoenix SJ 1982-1983, Phoenix SE 1984
|-
|Y||Pontiac Phoenix 1981-1984
|-
|Z||Pontiac Phoenix LJ 1981-1983, Phoenix LE 1984
|-
|B||Oldsmobile Omega 1981-1984
|-
|E||Oldsmobile Omega Brougham 1981-1984
|-
|B||Buick Skylark 1981-1982, Skylark Custom 1983-1984
|-
|C||Buick Skylark Limited 1981-1984
|-
|D||Buick Skylark Sport 1981-1982, Skylark T-Type 1983-1984
|-
|rowspan=1|GM Y platform
|Y||Chevrolet Corvette 1981-1982, 1984
|}
===American VIN format 1985-1986 Passenger Car===
GM has traditionally encoded the platform as the 4th character of the VIN. Other content includes an engine code and manufacturing plant. GM's VIN format is as follows:
<table border=1 style="margin:auto;">
<tr>
<th>Position</th>
<th>Sample</th><th></th><th></th><th>Description</th>
</tr><tr>
<td>1</td>
<td>1</td><td></td><td></td><td rowspan=3>[[#GM WMIs|World Manufacturer Identifier]]</td>
</tr><tr>
<td>2</td>
<td>G</td><td></td><td></td></tr><tr>
<td>3</td>
<td>6</td><td></td><td></td></tr><tr>
<td>4</td>
<td>D</td><td></td><td></td><td>[[#Platform & Series Codes 1985- Passenger Car|Platform]]</td>
</tr><tr>
<td>5</td>
<td>W</td><td></td><td></td><td>[[#Platform & Series Codes 1985- Passenger Car|Series Code]]</td>
</tr><tr>
<td>6</td>
<td>6</td><td></td><td></td><td rowspan=2>[[#Body style codes 1981-1986|Body style]]</td>
</tr><tr>
<td>7</td>
<td>9</td><td></td><td></td><td> </td>
</tr><tr>
<td>8</td>
<td>Y</td><td></td><td></td><td>[[#American engine codes 1981-|Engine type]]</td>
</tr><tr>
<td>9</td>
<td>0</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Check digit |Check digit]]</td>
</tr><tr>
<td>10</td>
<td>G</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Model year|Model year]]</td>
</tr><tr>
<td>11</td>
<td>9</td><td></td><td></td><td>[[#GM factories supplying North America|Factory ID]]</td>
</tr><tr>
<td>12</td>
<td>1</td><td></td><td></td><td rowspan=6>Sequential number
</tr><tr>
<td>13</td>
<td>2</td><td></td><td></td></tr><tr>
<td>14</td>
<td>3</td><td></td><td></td></tr><tr>
<td>15</td>
<td>7</td><td></td><td></td></tr><tr>
<td>16</td>
<td>6</td><td></td><td></td></tr><tr>
<td>17</td>
<td>2</td><td></td><td></td>
</table>
====Body style codes 1981-1986====
The Body type is specified as characters 6 and 7 of the American GM VIN for passenger cars from 1981-1986.
{| border=1 style="margin:auto;"
!VIN
!Description
|-
|11,27,37,47,57,97||Two-Door Coupe/Sedan
|-
|07,08,77,87||Two-Door Hatchback
|-
|67||Two-Door Convertible
|-
|19,69||Four-Door Sedan
|-
|68||Four-Door Hatchback
|-
|23||Four-Door Limousine, 8-passenger ("Limousine")
|-
|33||Four-Door Limousine w/Center Partition, 7-passenger ("Formal Limousine")
|-
|35||Four-Door Station Wagon
|}
===American VIN format 1987- Passenger Car===
GM has traditionally encoded the platform as the 4th character of the VIN. Other content includes an engine code and manufacturing plant. GM's VIN format is as follows:
<table border=1 style="margin:auto;">
<tr>
<th>Position</th>
<th>Sample</th><th></th><th></th><th>Description</th>
</tr><tr>
<td>1</td>
<td>1</td><td></td><td></td><td rowspan=3>[[#GM WMIs|World Manufacturer Identifier]]</td>
</tr><tr>
<td>2</td>
<td>G</td><td></td><td></td></tr><tr>
<td>3</td>
<td>6</td><td></td><td></td></tr><tr>
<td>4</td>
<td>D</td><td></td><td></td><td>[[#Platform & Series Codes 1985- Passenger Car|Platform]]</td>
</tr><tr>
<td>5</td>
<td>M</td><td></td><td></td><td>[[#Platform & Series Codes 1985- Passenger Car|Series Code]]</td>
</tr><tr>
<td>6</td>
<td>5</td><td></td><td></td><td>[[#Body style codes 1987- Passenger Car|Body style]]</td>
</tr><tr>
<td>7</td>
<td>7</td><td></td><td></td><td>[[#American restraint types 1987-|Restraint type]]</td>
</tr><tr>
<td>8</td>
<td>N</td><td></td><td></td><td>[[#American engine codes 1981-|Engine type]]</td>
</tr><tr>
<td>9</td>
<td>0</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Check digit |Check digit]]</td>
</tr><tr>
<td>10</td>
<td>3</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Model year|Model year]]</td>
</tr><tr>
<td>11</td>
<td>0</td><td></td><td></td><td>[[#GM factories supplying North America|Factory ID]]</td>
</tr><tr>
<td>12</td>
<td>1</td><td></td><td></td><td rowspan=6>Sequential number
</tr><tr>
<td>13</td>
<td>2</td><td></td><td></td></tr><tr>
<td>14</td>
<td>3</td><td></td><td></td></tr><tr>
<td>15</td>
<td>7</td><td></td><td></td></tr><tr>
<td>16</td>
<td>6</td><td></td><td></td></tr><tr>
<td>17</td>
<td>2</td><td></td><td></td>
</table>
===American VIN format 1981-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle===
GM's VIN format is as follows:
<table border=1 style="margin:auto;">
<tr>
<th>Position</th>
<th>Sample</th><th></th><th></th><th>Description</th>
</tr><tr>
<td>1</td>
<td>1</td><td></td><td></td><td rowspan=3>[[#GM WMIs|World Manufacturer Identifier]]</td>
</tr><tr>
<td>2</td>
<td>G</td><td></td><td></td></tr><tr>
<td>3</td>
<td>K</td><td></td><td></td></tr><tr>
<td>4</td>
<td>E</td><td></td><td></td><td>[[#GVWR/Brake System 1981-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle|GVWR/Brake System]]</td>
</tr><tr>
<td>5</td>
<td>K</td><td></td><td></td><td>[[#Line & Chassis Type 1981-1999 Light Duty Truck & Multi-Purpose Passenger Vehicle|Line & Chassis Type for 1981-1999]]</td>
</tr><tr>
<td>5</td>
<td>K</td><td></td><td></td><td>[[#Line & Chassis Type 2000-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle|Line & Chassis Type for 2000-2009]]</td>
</tr><tr>
<td>6</td>
<td>1</td><td></td><td></td><td>[[#Series 1981-1999 Light Duty Truck & Multi-Purpose Passenger Vehicle|Series]]</td>
</tr><tr>
<td>7</td>
<td>8</td><td></td><td></td><td>[[#Body style codes 1981-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle|Body type]]</td>
</tr><tr>
<td>8</td>
<td>K</td><td></td><td></td><td>[[#Engine codes for light trucks|Engine type]]</td>
</tr><tr>
<td>9</td>
<td>0</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Check digit |Check digit]]</td>
</tr><tr>
<td>10</td>
<td>N</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Model year|Model year]]</td>
</tr><tr>
<td>11</td>
<td>J</td><td></td><td></td><td>[[#GM factories supplying North America|Factory ID]]</td>
</tr><tr>
<td>12</td>
<td>1</td><td></td><td></td><td rowspan=6>Sequential number
</tr><tr>
<td>13</td>
<td>2</td><td></td><td></td></tr><tr>
<td>14</td>
<td>3</td><td></td><td></td></tr><tr>
<td>15</td>
<td>7</td><td></td><td></td></tr><tr>
<td>16</td>
<td>6</td><td></td><td></td></tr><tr>
<td>17</td>
<td>2</td><td></td><td></td>
</table>
====GVWR/Brake System 1981-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle====
The GVWR/Brake System is specified as character 4 of the American GM VIN for light trucks.
{| border=1 style="margin:auto;"
!VIN
!GVWR Range in lbs. & Weight Class
!Brake System
|-
|A||Class A: 0-3,000||Hydraulic
|-
|B||Class B: 3,001-4,000||Hydraulic
|-
|C||Class C: 4,001-5,000||Hydraulic
|-
|D||Class D: 5,001-6,000||Hydraulic
|-
|E||Class E: 6,001-7,000||Hydraulic
|-
|F||Class F: 7,001-8,000||Hydraulic
|-
|G||Class G: 8,001-9,000||Hydraulic
|-
|H||Class H: 9,001-10,000||Hydraulic
|-
|J||Class 3: 10,001-14,000||Hydraulic
|-
|K||Class 4: 14,001-16,000||Hydraulic
|-
|L||Class 5: 16,001-19,500||Hydraulic
|}
====Line & Chassis Type 1981-1999 Light Duty Truck & Multi-Purpose Passenger Vehicle====
The Line & Chassis Type is specified as character 5 of the American GM VIN for light trucks.
{| border=1 style="margin:auto;"
!VIN
!Description
|-
|B||Special Body Buick, Chevrolet
|-
|C||Chevy full-size pickups & chassis cabs 2wd (C-series) '81-'86, '88-'99,<br /> GMC full-size pickups & chassis cabs 2wd (C-series) '81-'86, Sierra 2wd (C-series) '88-'99
|-
|C||Chevy C10 Blazer 2wd ('81-'82), Tahoe 4-door 2wd ('95-'99), Suburban 2wd ('81-'86, '92-'99),<br /> GMC C1500 Jimmy 2wd ('81-'82), Yukon 4-door 2wd ('95-'99), Suburban 2wd ('81-'86, '92-'99)
|-
|D||Military Truck 4wd
|-
|E||'91-'97 Geo Tracker 2wd, '98-'99 Chevrolet Tracker 2wd
|-
|E||'97-'98 Chevy S-10 EV
|-
|G||Chevy/GMC full-size vans (Chevy Van, Sportvan, Express, GMC Vandura, Rally Van, Savana)
|-
|H||'93-'96 Chevy G30HD/GMC G3500HD cutaway van
|-
|H||Cadillac chassis cutaway/special body (Based on Rwd Fleetwood '93-'96, Fwd DeVille '97-'99)
|-
|J||'89-'97 Geo Tracker 4wd, '98-'99 Chevrolet Tracker 4wd
|-
|K||Chevy full-size pickups & chassis cabs 4wd (K-series) '81-'86, '88-'99,<br /> GMC full-size pickups & chassis cabs 4wd (K-series) '81-'86, Sierra 4wd (K-series) '88-'99
|-
|K||Chevy K10/K5 Blazer 4wd ('81-'86, '92-'94), Tahoe 4wd ('95-'99), Suburban 4wd ('81-'86, '92-'99),<br /> GMC K1500 Jimmy 4wd ('81-'86), Yukon 4wd ('92-'99), Suburban 4wd ('81-'86, '92-'99), '99 Cadillac Escalade 4wd
|-
|L||Chevy Luv 2wd '81-'82
|-
|L||Chevy Astro/GMC Safari 4wd '90-'99
|-
|M||Chevy Astro/GMC Safari 2wd '85-'99
|-
|P||Forward Control (includes Chevrolet Step-Van/GMC Value-Van, Chevy/GMC P-Series)
|-
|R||Chevy Luv 4wd '81-'82
|-
|R||Chevy full-size pickups & chassis cabs 2wd (R-series), Suburban 2wd '87-'91,<br /> GMC full-size pickups & chassis cabs 2wd (R-series), Suburban 2wd '87-'91
|-
|S||Chevy S-10 2wd ('82-'99), S-10 Blazer 2wd ('83-'94), Blazer 2wd ('95-'99), GMC S-15 2wd ('82-'90), Sonoma 2wd ('91-'99),<br> S-15 Jimmy 2wd ('83-'91), Jimmy 2wd ('92-'99), Isuzu Hombre 2wd ('96-'99)
|-
|T||Chevy S-10 4wd ('83-'99), S-10 Blazer 4wd ('83-'94), Blazer 4wd ('95-'99), GMC S-15 4wd ('83-'90), Sonoma 4wd ('91-'99), Syclone 4wd ('91),<br> S-15 Jimmy 4wd ('83-'91), Jimmy 4wd ('92-'99), Typhoon 4wd ('92-93), Envoy 4wd ('98-'99), Oldsmobile Bravada 4wd ('91-'94, '96-'99),<br> Isuzu Hombre 4wd ('98-'99)
|-
|U||Regular length All-Purpose Vehicle ('90-'99 U-body fwd minivans)
|-
|V||Chevy full-size pickups & chassis cabs 4wd (V-series), V10/V1500 Blazer 4wd, Suburban 4wd '87-'91,<br /> GMC full-size pickups & chassis cabs 4wd (V-series), V1500 Jimmy 4wd, Suburban 4wd '87-'91
|-
|W||'81-'87 Chevy El Camino, GMC Caballero
|-
|X||Extended length All-Purpose Vehicle ('97-'99 U-body fwd extended length minivans)
|-
|Z||Cadillac chassis cutaway/special body (Based on Rwd Fleetwood '81-'84, Fwd Fleetwood '85-'92)
|}
====Line & Chassis Type 2000-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle====
The Line & Chassis Type is specified as character 5 of the American GM VIN for light trucks.
{| border=1 style="margin:auto;"
!VIN
!Description
|-
|A||Pontiac Aztek 2wd '01-'05, Buick Rendezvous 2wd '02-'07
|-
|A||Chevrolet HHR '06-'09, HHR Panel '07-'09
|-
|B||Pontiac Aztek Awd '01-'05, Buick Rendezvous Awd '02-'06
|-
|C||Chevy full-size pickups & chassis cabs 2wd (C-series) '00, full-size chassis cabs 2wd (C3500HD) '01-'02, Silverado 2wd '00-'09, Silverado Classic 2wd '07,<br /> GMC Sierra 2wd (C-series) '00-'09, Sierra Classic 2wd '00, '07
|-
|C||Chevy Tahoe 2wd ('00-'09), Suburban 2wd ('00-'09), Avalanche 2wd ('02-'09),<br /> GMC Yukon 2wd ('00-'09), Yukon XL 2wd ('00-'09), Cadillac Escalade 2wd ('02-'09), Escalade ESV 2wd ('08-'09)
|-
|E||Chevrolet Tracker 2wd '00-'04
|-
|E||Cadillac SRX 2wd & Awd '04-'09
|-
|G||Chevy/GMC full-size vans 2wd (Chevy Express, GMC Savana) '00-09
|-
|H||Chevy/GMC full-size vans 4wd (Chevy Express, GMC Savana) '03-09
|-
|H||Cadillac Commercial Chassis for Hearse (Based on Fwd DeVille '02-'05, DTS '06-'09)
|-
|H||Cadillac Professional Chassis for Limousine (Based on Fwd DeVille '00-'05, DTS '06-'07)
|-
|J||Chevrolet Tracker 4wd '00-'04
|-
|K||Chevy full-size pickups & chassis cabs 4wd (K-series) '00, Silverado 4wd '00-'09, Silverado Classic 4wd '07,<br /> GMC Sierra 4wd (K-series) '00-'09, Sierra Classic 4wd '00, '07
|-
|K||Chevy Tahoe 4wd ('00-'09), Suburban 4wd ('00-'09), Avalanche 4wd ('02-'09), GMC Yukon 4wd ('00-'09), Yukon XL 4wd ('00-'09),<br> Cadillac Escalade 4wd ('00, '02-'09), Escalade ESV 4wd ('03-'09), Escalade EXT 4wd ('02-'09)
|-
|K||Cadillac Professional Chassis for Limousine (Based on Fwd DTS '08-'09)
|-
|L||Chevy Astro/GMC Safari 4wd '00-'05
|-
|L||Chevy Equinox 2wd & Awd '05-'09, Pontiac Torrent 2wd & Awd '06-'09, Saturn Vue 2wd & Awd '08-'09
|-
|M||Chevy Astro/GMC Safari 2wd '00-'05
|-
|N||Hummer H2 '03-'09, H2 SUT '05-'09
|-
|N||Hummer H3 '06-'09, H3T '09
|-
|R||GMC Acadia 2wd, Saturn Outlook 2wd '07-'09, Buick Enclave 2wd '08-'09, Chevy Traverse 2wd '09
|-
|S||Chevy S-10 2wd ('00-'03), Blazer 2wd ('00-'05), GMC Sonoma 2wd ('00-'03), Jimmy 2wd ('00-'01), Isuzu Hombre 2wd ('00)
|-
|S||Chevy Trailblazer 2wd ('02-'09), SSR ('03-'06), GMC Envoy 2wd ('02-'09), Envoy XUV 2wd ('04-'05), Oldsmobile Bravada 2wd ('02-'04),<br> Buick Rainier 2wd ('04-'07), Isuzu Ascender 2wd ('03-'08)
|-
|S||Chevy Colorado 2wd ('04-'09), GMC Canyon 2wd ('04-'09), Isuzu i-series 2wd ('06-'08)
|-
|T||Chevy S-10 4wd ('00-'04), Blazer 4wd ('00-'05), GMC Sonoma 4wd ('00-'04), Jimmy 4wd ('00-'01, Canada only: '02-'05), Envoy 4wd ('00),<br> Oldsmobile Bravada 4wd ('00-'01), Isuzu Hombre 4wd ('00)
|-
|T||Chevy Trailblazer 4wd ('02-'09), GMC Envoy 4wd ('02-'09), Envoy XUV 2wd ('04-'05), Oldsmobile Bravada 4wd ('02-'04), Buick Rainier 4wd ('04-'07),<br> Isuzu Ascender 4wd ('03-'08), Saab 9-7X 4wd ('05-'09)
|-
|T||Chevy Colorado 4wd ('04-'09), GMC Canyon 4wd ('04-'09), Isuzu i-series 4wd ('06-'08)
|-
|U||Regular length All-Purpose Vehicle [Minivan] ('00-'04 Chevy Venture, Pontiac Montana)
|-
|U||Regular length All-Purpose Vehicle [Minivan] (Chevy Uplander [US: '06-'08, Canada only: '05-'09], Pontiac Montana SV6 [Canada only: '05-'09])
|-
|V||Extended length AWD All-Purpose Vehicle [Minivan] ('02-'04 Chevy Venture, Pontiac Montana, Oldsmobile Silhouette Extended length AWD)
|-
|V||Extended length FWD All-Purpose Vehicle [Minivan] ('05 Chevy Venture, Pontiac Montana Extended length FWD)
|-
|V||Extended length FWD All-Purpose Vehicle [Minivan] (Chevy Uplander ['05-'08, Canada only: '09], Pontiac Montana SV6 ['05-'06, Canada only: '07-'09],<br> Buick Terraza ['05-'07], Saturn Relay ['05-'07])
|-
|V||GMC Acadia Awd, Saturn Outlook Awd '07-'09, Buick Enclave Awd '08-'09, Chevy Traverse Awd '09
|-
|X||Extended length FWD All-Purpose Vehicle [Minivan] ('00-'04 Chevy Venture, Pontiac Montana, Oldsmobile Silhouette Extended length FWD)
|-
|X||Extended length AWD All-Purpose Vehicle [Minivan] ('05-'06 Chevy Uplander AWD, Pontiac Montana SV6 AWD, Buick Terraza AWD, Saturn Relay AWD)
|-
|Z||Saturn Vue 2wd & Awd '02-'07
|}
====Series 1981-1999 Light Duty Truck & Multi-Purpose Passenger Vehicle====
The Series is specified as character 6 of the American GM VIN for light trucks.
{| border=1 style="margin:auto;"
!VIN
!Description
|-
|1||1/2 Ton (includes '96-'99 Isuzu Hombre)
|-
|2||3/4 Ton
|-
|3||1 Ton
|-
|8||1/2 Ton ('81-'87 El Camino, Caballero)
|-
|9||Cadillac, Buick, Chevrolet Commercial Body/Chassis
|-
|0||All-Purpose Vehicle ('90-'99 U-body fwd minivans)
|}
====Series 2000-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle====
The Series is specified as character 6 of the American GM VIN for light trucks.
{| border=1 style="margin:auto;"
!VIN
!Description
|-
|1 <br> (following A)||Chevrolet HHR LS ('06-'07)
|-
|2 <br> (following A)||Chevrolet HHR LT ('06-'07)
|-
|3 <br> (following A)||Chevrolet HHR LT ('07)
|-
|1 <br> (following A)||Chevrolet HHR LS w/auto. trans. ('08-'09)
|-
|2 <br> (following A)||Chevrolet HHR 1LT w/auto. trans. ('08-'09)
|-
|3 <br> (following A)||Chevrolet HHR LS w/man. trans. ('08-'09)
|-
|4 <br> (following A)||Chevrolet HHR 1LT w/man. trans. ('08-'09)
|-
|5 <br> (following A)||Chevrolet HHR 2LT (all transmissions) ('08-'09)
|-
|6 <br> (following A)||Chevrolet HHR SS w/auto. trans. ('08-'09) (Pos. 1-3 of VIN is 3GN)
|-
|7 <br> (following A)||Chevrolet HHR SS w/man. trans. ('08-'09) (Pos. 1-3 of VIN is 3GN)
|-
|6 <br> (following A)||Chevrolet HHR Panel SS w/auto. trans. ('09) (Pos. 1-3 of VIN is 3GC)
|-
|7 <br> (following A)||Chevrolet HHR Panel SS w/man. trans. ('09) (Pos. 1-3 of VIN is 3GC)
|-
|8 <br> (following A)||Chevrolet HHR Panel LS w/auto. trans. ('08-'09) (Pos. 1-3 of VIN is 3GC)
|-
|9 <br> (following A)||Chevrolet HHR Panel LS w/man. trans. ('08-'09) (Pos. 1-3 of VIN is 3GC)
|-
|0 <br> (following A)||Chevrolet HHR Panel LT (all transmissions) ('08-'09) (Pos. 1-3 of VIN is 3GC)
|-
|1 <br> (following A)||Chevrolet HHR Panel LS ('08) (Pos. 1-3 of VIN is 3GC)
|-
|2 <br> (following A)||Chevrolet HHR Panel LT ('08) (Pos. 1-3 of VIN is 3GC)
|-
|3 <br> (following A)||Chevrolet HHR Panel LT ('08) (Pos. 1-3 of VIN is 3GC)
|-
|9 <br> (following B)||Chevrolet Venture (incomplete vehicle) ('02)
|-
|2 <br> (following X)||If VIN starts with 1GB: Chevrolet Venture (incomplete vehicle) ('03-'04)
|-
|0 <br> (following U)||Chevrolet Venture SWB ('00-'04)
|-
|2 <br> (following U)||Chevrolet Venture Value Van SWB ('00-'03)
|-
|2 <br> (following U)||Chevrolet Venture Value SWB (Canada: '04)
|-
|0 <br> (following X)||Chevrolet Venture LWB ('00-'04)
|-
|1 <br> (following X)||Chevrolet Venture Warner Bros. Edition LWB ('00-'03)
|-
|1 <br> (following X)||Chevrolet Venture LT LWB ('04)
|-
|2 <br> (following X)||If VIN starts with 1GN: Chevrolet Venture Cargo Van ('02-'04)
|-
|0 <br> (following V)||Chevrolet Venture LWB Awd ('02-'03)
|-
|1 <br> (following V)||Chevrolet Venture Warner Bros. Edition LWB Awd ('02-'03)
|-
|1 <br> (following V)||Chevrolet Venture LT LWB Awd ('04)
|-
|0 <br> (following V)||Chevrolet Venture Plus ('05) (Pos. 8 of VIN is E)
|-
|1 <br> (following V)||Chevrolet Venture Cargo, Mobility (incomplete vehicle) ('05) (Pos. 8 of VIN is E)
|-
|2 <br> (following V)||Chevrolet Venture LS ('05) (Pos. 8 of VIN is E)
|-
|3 <br> (following V)||Chevrolet Venture LT ('05) (Pos. 8 of VIN is E)
|-
|2 <br> (following U)||Chevrolet Uplander LS SWB 2wd ('06-'08)
|-
|0 <br> (following V)||Chevrolet Uplander Base model 2wd ('05)
|-
|1 <br> (following V)||Chevrolet Uplander Cargo Van 2wd, Mobility (incomplete vehicle) 2wd ('05-'08)
|-
|2 <br> (following V)||Chevrolet Uplander LS 2wd ('05-'08)
|-
|3 <br> (following V)||Chevrolet Uplander LT 2wd ('05-'08)
|-
|3 <br> (following X)||Chevrolet Uplander LT Awd ('05-'06)
|-
|1 <br> (following M)||Chevrolet Astro 2wd ('00-'05)
|-
|1 <br> (following L)||Chevrolet Astro Awd ('00-'05)
|-
|1 <br> (following G)||Chevrolet Express 1500 series 2wd ('00-'09)
|-
|2 <br> (following G)||Chevrolet Express 2500 series 2wd ('00-'09)
|-
|3 <br> (following G)||Chevrolet Express 3500 series 2wd ('00-'09)
|-
|3 <br> (following G)||When VIN starts with 1GBK: Chevrolet Express 4500 series Cutaway 2wd ('09)
|-
|6 <br> (following G)||Chevrolet Express 1500 series LT 2wd ('01-'02)
|-
|1 <br> (following H)||Chevrolet Express 1500 series Awd ('03-'09)
|-
|2 <br> (following H)||Chevrolet Express 2500 series Awd ('03-'05)
|-
|1 <br> (following E)||Chevrolet Tracker Base model 2wd ('00-'04)
|-
|6 <br> (following E)||Chevrolet Tracker LT 2wd ('01-'04)
|-
|1 <br> (following J)||Chevrolet Tracker Base model 4wd ('00-'01, '04)
|-
|1 <br> (following J)||Chevrolet Tracker Base model w/1SB (Preferred) Equip. Group 4wd ('02-'03)
|-
|2 <br> (following J)||Chevrolet Tracker Base model w/1SA (Base) Equip. Group 4wd ('02-'03)
|-
|6 <br> (following J)||Chevrolet Tracker LT 4wd ('01-'04)
|-
|7 <br> (following J)||Chevrolet Tracker ZR2 4wd ('01-'04)
|-
|1 <br> (following L)||Chevrolet Equinox LS 2wd ('05-'09)
|-
|2 <br> (following L)||Chevrolet Equinox LS Awd ('05-'09)
|-
|6 <br> (following L)||Chevrolet Equinox LT 2wd ('05-'07)
|-
|7 <br> (following L)||Chevrolet Equinox LT Awd ('05-'07)
|-
|3 <br> (following L)||Chevrolet Equinox 1LT 2wd ('08-'09)
|-
|4 <br> (following L)||Chevrolet Equinox 1LT Awd ('08-'09)
|-
|5 <br> (following L)||Chevrolet Equinox 2LT 2wd ('08-'09)
|-
|6 <br> (following L)||Chevrolet Equinox 2LT Awd ('08-'09)
|-
|7 <br> (following L)||Chevrolet Equinox LTZ 2wd ('08-'09)
|-
|8 <br> (following L)||Chevrolet Equinox LTZ Awd ('08-'09)
|-
|9 <br> (following L)||Chevrolet Equinox Sport 2wd ('08-'09)
|-
|0 <br> (following L)||Chevrolet Equinox Sport Awd ('08-'09)
|-
|1 <br> (following R)||Chevrolet Traverse LS 2wd ('09)
|-
|2 <br> (following R)||Chevrolet Traverse LT 2wd ('09)
|-
|3 <br> (following R)||Chevrolet Traverse LTZ 2wd ('09)
|-
|1 <br> (following V)||Chevrolet Traverse LS Awd ('09)
|-
|2 <br> (following V)||Chevrolet Traverse LT Awd ('09)
|-
|3 <br> (following V)||Chevrolet Traverse LTZ Awd ('09)
|-
|1 <br> (following S)||Chevrolet Blazer 2wd ('00-'05)
|-
|1 <br> (following T)||Chevrolet Blazer 4wd ('00-'05)
|-
|1 <br> (following S)||Chevrolet Trailblazer 2wd ('02-'08), Trailblazer EXT 2wd ('02-'06)
|-
|1 <br> (following T)||Chevrolet Trailblazer 4wd ('02-'08), Trailblazer EXT 4wd ('02-'06)
|-
|3 <br> (following S)||Chevrolet Trailblazer LT 2wd ('09)
|-
|3 <br> (following T)||Chevrolet Trailblazer LT 4wd ('09)
|-
|5 <br> (following S)||Chevrolet Trailblazer SS 2wd ('09)
|-
|5 <br> (following T)||Chevrolet Trailblazer SS 4wd ('09)
|-
|1 <br> (following C)||Chevrolet Tahoe Limited 2wd ('00) [GMT400; 8th pos. of VIN is R]
|-
|1 <br> (following K)||Chevrolet Tahoe Z71 4wd ('00) [GMT400; 8th pos. of VIN is R]
|-
|1 <br> (following C)||Chevrolet Tahoe 2wd ('00-'06) [GMT800]
|-
|1 <br> (following K)||Chevrolet Tahoe 4wd ('00-'06) [GMT800]
|-
|1 <br> (following C)||Chevrolet Tahoe 2wd ('07-'08) [GMT900]
|-
|0 <br> (following C)||Chevrolet Tahoe Police/Special Service 2wd ('07-'09) [GMT900]
|-
|1 <br> (following C)||Chevrolet Tahoe LS 2wd ('09) [GMT900]
|-
|2 <br> (following C)||Chevrolet Tahoe LT 2wd ('09) [GMT900]
|-
|3 <br> (following C)||Chevrolet Tahoe LTZ 2wd ('09) [GMT900]
|-
|1 <br> (following K)||Chevrolet Tahoe 4wd ('07-'08) [GMT900]
|-
|0 <br> (following K)||Chevrolet Tahoe Police/Special Service 4wd ('07-'09) [GMT900]
|-
|1 <br> (following K)||Chevrolet Tahoe LS 4wd ('09) [GMT900]
|-
|2 <br> (following K)||Chevrolet Tahoe LT 4wd ('09) [GMT900]
|-
|3 <br> (following K)||Chevrolet Tahoe LTZ 4wd ('09) [GMT900]
|-
|1 <br> (following C)||Chevrolet Suburban 1500 series 2wd ('00-'08)
|-
|2 <br> (following C)||Chevrolet Suburban 2500 series 2wd ('00-'08)
|-
|1 <br> (following K)||Chevrolet Suburban 1500 series 4wd ('00-'08)
|-
|2 <br> (following K)||Chevrolet Suburban 2500 series 4wd ('00-'08)
|-
|1 <br> (following C)||Chevrolet Suburban 1500 series LS 2wd ('09)
|-
|2 <br> (following C)||Chevrolet Suburban 1500 series LT 2wd ('09)
|-
|3 <br> (following C)||Chevrolet Suburban 1500 series LTZ 2wd ('09)
|-
|4 <br> (following C)||Chevrolet Suburban 2500 series LS 2wd ('09)
|-
|5 <br> (following C)||Chevrolet Suburban 2500 series LT 2wd ('09)
|-
|1 <br> (following K)||Chevrolet Suburban 1500 series LS 4wd ('09)
|-
|2 <br> (following K)||Chevrolet Suburban 1500 series LT 4wd ('09)
|-
|3 <br> (following K)||Chevrolet Suburban 1500 series LTZ 4wd ('09)
|-
|4 <br> (following K)||Chevrolet Suburban 2500 series LS 4wd ('09)
|-
|5 <br> (following K)||Chevrolet Suburban 2500 series LT 4wd ('09)
|-
|1 <br> (following C)||Chevrolet Avalanche 1500 series 2wd ('02-'08)
|-
|2 <br> (following C)||Chevrolet Avalanche 2500 series 2wd ('02-'03)
|-
|1 <br> (following K)||Chevrolet Avalanche 1500 series 4wd ('02-'08)
|-
|2 <br> (following K)||Chevrolet Avalanche 2500 series 4wd ('02-'06)
|-
|1 <br> (following C)||Chevrolet Avalanche 1500 series LS 2wd ('09)
|-
|2 <br> (following C)||Chevrolet Avalanche 1500 series LT 2wd ('09)
|-
|3 <br> (following C)||Chevrolet Avalanche 1500 series LTZ 2wd ('09)
|-
|1 <br> (following K)||Chevrolet Avalanche 1500 series LS 4wd ('09)
|-
|2 <br> (following K)||Chevrolet Avalanche 1500 series LT 4wd ('09)
|-
|3 <br> (following K)||Chevrolet Avalanche 1500 series LTZ 4wd ('09)
|-
|1 <br> (following S)||Chevrolet SSR 2wd ('03-'06)
|-
|6 <br> (following S)||Chevrolet SSR Signature Series 2wd ('03) <br> [All SSR Signature Series also have a 0 in the 12th pos. of VIN whereas all other SSRs have a 1 in the 12th pos. of VIN]
|-
|1 <br> (following S)||Chevrolet S-10 2wd ('00-'03)
|-
|1 <br> (following T)||Chevrolet S-10 4wd ('00-'04)
|-
|1 <br> (following S)||Chevrolet Colorado 2wd ('04-'07)
|-
|1 <br> (following T)||Chevrolet Colorado 4wd ('04-'07)
|-
|1 <br> (following C)||Chevrolet Silverado 1500 2wd ('00-'06), Silverado Classic 1500 2wd ('07) (Pos. 8 of VIN is X, V, T, Z, or N] [GMT800]
|-
|1 <br> (following K)||Chevrolet Silverado 1500 4wd ('00-'06), Silverado Classic 1500 4wd ('07) (Pos. 8 of VIN is X, V, T, Z, B, or N] [GMT800]
|-
|1 <br> (following C)||Chevrolet Silverado 1500HD 2wd ('01-'03, '05-'06), Silverado Classic 1500HD 2wd ('07) (Pos. 8 of VIN is U] [GMT800]
|-
|1 <br> (following K)||Chevrolet Silverado 1500HD 4wd ('01-'03, '05-'06), Silverado Classic 1500HD 2wd ('07) (Pos. 8 of VIN is U] [GMT800]
|-
|2 <br> (following C)||Chevrolet Silverado 2500 (LD) 2wd ('00-'04) [GMT800] (Pos. 8 of VIN is T ('00) or U ('00-'04)]
|-
|2 <br> (following K)||Chevrolet Silverado 2500 (LD) 4wd ('00-'04) [GMT800] (Pos. 8 of VIN is U]
|-
|2 <br> (following C)||Chevrolet C2500 2wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R)
|-
|3 <br> (following C)||Chevrolet C3500 2wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R)
|-
|3 <br> (following C)||when 4th pos. of VIN is K: Chevrolet C3500HD 2wd ('00-'02) [GMT400]
|-
|2 <br> (following K)||Chevrolet K2500 4wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R)
|-
|3 <br> (following K)||Chevrolet K3500 4wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R)
|-
|2 <br> (following C)||Chevrolet Silverado 2500HD 2wd ('01-'06), Silverado Classic 2500HD 2wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800]
|-
|2 <br> (following K)||Chevrolet Silverado 2500HD 4wd ('01-'06), Silverado Classic 2500HD 4wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800]
|-
|3 <br> (following C)||Chevrolet Silverado 3500 2wd ('01-'06), Silverado Classic 3500 2wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800]
|-
|3 <br> (following K)||Chevrolet Silverado 3500 4wd ('01-'06), Silverado Classic 3500 4wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800]
|-
|1 <br> (following C)||Chevrolet Silverado 1500 2wd ('07-'08) (Pos. 8 of VIN is X, C, J, 0, or Y) [GMT900]
|-
|1 <br> (following K)||Chevrolet Silverado 1500 4wd ('07-'08) (Pos. 8 of VIN is X, C, J, M, 0, 3, or Y) [GMT900]
|-
|2 <br> (following C)||Chevrolet Silverado 2500HD 2wd ('07-'08) [GMT900]
|-
|2 <br> (following K)||Chevrolet Silverado 2500HD 4wd ('07-'08) [GMT900]
|-
|3 <br> (following C)||Chevrolet Silverado 3500HD 2wd ('07-'08) [GMT900]
|-
|3 <br> (following K)||Chevrolet Silverado 3500HD 4wd ('07-'08) [GMT900]
|-
|1 <br> (following C)||Chevrolet Silverado Work Truck, LS 1500 2wd ('09) [GMT900]
|-
|2 <br> (following C)||Chevrolet Silverado LT 1500 2wd ('09) [GMT900]
|-
|3 <br> (following C)||Chevrolet Silverado LTZ 1500 2wd ('09) [GMT900]
|-
|1 <br> (following K)||Chevrolet Silverado Work Truck, LS 1500 4wd ('09) [GMT900]
|-
|2 <br> (following K)||Chevrolet Silverado LT 1500 4wd ('09) [GMT900]
|-
|3 <br> (following K)||Chevrolet Silverado LTZ 1500 4wd ('09) [GMT900]
|-
|4 <br> (following C)||Chevrolet Silverado Work Truck 2500HD 2wd ('09) [GMT900]
|-
|5 <br> (following C)||Chevrolet Silverado LT 2500HD 2wd ('09) [GMT900]
|-
|6 <br> (following C)||Chevrolet Silverado LTZ 2500HD 2wd ('09) [GMT900]
|-
|4 <br> (following K)||Chevrolet Silverado Work Truck 2500HD 4wd ('09) [GMT900]
|-
|5 <br> (following K)||Chevrolet Silverado LT 2500HD 4wd ('09) [GMT900]
|-
|6 <br> (following K)||Chevrolet Silverado LTZ 2500HD 4wd ('09) [GMT900]
|-
|7 <br> (following C)||Chevrolet Silverado Work Truck 3500HD 2wd ('09) [GMT900]
|-
|8 <br> (following C)||Chevrolet Silverado LT 3500HD 2wd ('09) [GMT900]
|-
|9 <br> (following C)||Chevrolet Silverado LTZ 3500HD 2wd ('09) [GMT900]
|-
|7 <br> (following K)||Chevrolet Silverado Work Truck 3500HD 4wd ('09) [GMT900]
|-
|8 <br> (following K)||Chevrolet Silverado LT 3500HD 4wd ('09) [GMT900]
|-
|9 <br> (following K)||Chevrolet Silverado LTZ 3500HD 4wd ('09) [GMT900]
|-
|1 <br> (following V)||Pontiac Montana Mobility (incomplete vehicle) 2wd ('05) (Pos. 8 of VIN is E)
|-
|2 <br> (following V)||Pontiac Montana ('05) (Pos. 8 of VIN is E)
|-
|0 <br> (following V)||Pontiac Montana SV6 1SA 2wd ('05)
|-
|3 <br> (following V)||Pontiac Montana SV6 1SB 2wd ('05)
|-
|2 <br> (following X)||Pontiac Montana SV6 1SA Awd ('05)
|-
|3 <br> (following X)||Pontiac Montana SV6 1SB Awd ('05)
|-
|1 <br> (following V)||Pontiac Montana SV6 Mobility (incomplete vehicle) 2wd ('06)
|-
|3 <br> (following V)||Pontiac Montana SV6 2wd ('06)
|-
|3 <br> (following X)||Pontiac Montana SV6 Awd ('06)
|-
|0 <br> (following A)||Pontiac Aztek 2wd ('01-'05)
|-
|0 <br> (following B)||Pontiac Aztek Awd ('01-'05)
|-
|6 <br> (following L)||Pontiac Torrent 2wd ('06-'07)
|-
|7 <br> (following L)||Pontiac Torrent Awd ('06-'07)
|-
|3 <br> (following L)||Pontiac Torrent Base model 2wd ('08-'09)
|-
|4 <br> (following L)||Pontiac Torrent Base model Awd ('08-'09)
|-
|5 <br> (following L)||Pontiac Torrent GXP 2wd ('08-'09)
|-
|6 <br> (following L)||Pontiac Torrent GXP Awd ('08-'09)
|-
|0 <br> (following X)||Oldsmobile Silhouette extended length GL 2wd ('00, '03-'04), GLS 2wd ('00-'04)
|-
|1 <br> (following X)||Oldsmobile Silhouette extended length Premiere 2wd ('00-'04)
|-
|2 <br> (following X)||Oldsmobile Silhouette extended length GL 2wd ('01-'02)
|-
|0 <br> (following V)||Oldsmobile Silhouette extended length GLS Awd ('02-'04)
|-
|1 <br> (following V)||Oldsmobile Silhouette extended length Premiere Awd ('02-'04)
|-
|1 <br> (following S)||Oldsmobile Bravada 2wd ('02-'04)
|-
|1 <br> (following T)||Oldsmobile Bravada 4wd ('00-'04)
|-
|1 <br> (following V)||Buick Terraza Mobility (incomplete vehicle) 2wd ('05-'07)
|-
|2 <br> (following V)||Buick Terraza CX 2wd ('05-'07), CX Plus 2wd ('07)
|-
|3 <br> (following V)||Buick Terraza CXL 2wd ('05-'07)
|-
|2 <br> (following X)||Buick Terraza CX Awd ('05-'06)
|-
|3 <br> (following X)||Buick Terraza CXL Awd ('05-'06)
|-
|0 <br> (following A)||Buick Rendezvous 2wd ('02-'07)
|-
|0 <br> (following B)||Buick Rendezvous Awd ('02-'06)
|-
|1 <br> (following S)||Buick Rainier 2wd ('04-'07)
|-
|1 <br> (following T)||Buick Rainier 4wd ('04-'06)
|-
|1 <br> (following R)||Buick Enclave CX 2wd ('08-'09)
|-
|2 <br> (following R)||Buick Enclave CXL 2wd ('08-'09)
|-
|1 <br> (following V)||Buick Enclave CX Awd ('08-'09)
|-
|2 <br> (following V)||Buick Enclave CXL Awd ('08-'09)
|-
|9 <br> (following H)||Cadillac Commercial Chassis (incomplete vehicle) for Limousine or Hearse based on DeVille ('00-'01)
|-
|0 <br> (following H)||Cadillac Commercial Chassis (incomplete vehicle) for Hearse based on DeVille ('02-'05) or DTS ('06-'09)
|-
|9 <br> (following H)||Cadillac Professional Chassis (incomplete vehicle) for Limousine based on DeVille ('02-'05) or DTS ('06-'07)
|-
|9 <br> (following K)||Cadillac Professional Chassis (incomplete vehicle) for Limousine based on DTS ('08-'09)
|-
|6 <br> (following E)||Cadillac SRX ('04-'07)
|-
|2 <br> (following E)||Cadillac SRX RWD V8 ('08-'09)
|-
|4 <br> (following E)||Cadillac SRX AWD V6 ('08-'09)
|-
|5 <br> (following E)||Cadillac SRX AWD V8 ('08-'09)
|-
|6 <br> (following E)||When Pos. 8 of VIN is 7: Cadillac SRX RWD V6 ('08)
|-
|6 <br> (following E)||When Pos. 8 of VIN is A: Cadillac SRX AWD V8 ('08)
|-
|6 <br> (following E)||Cadillac SRX RWD V6 ('09)
|-
|1 <br> (following K)||Cadillac Escalade 4wd (Early '00)
|-
|4 <br> (following K)||Cadillac Escalade Platinum Edition 4wd ('08), Escalade ESV Platinum Edition 4wd ('08)
|-
|6 <br> (following C)||Cadillac Escalade 2wd ('02-'08), Escalade ESV 2wd ('08)
|-
|6 <br> (following K)||Cadillac Escalade 4wd (Mid '00, '02-'08), Escalade ESV 4wd ('03-'08), Escalade EXT 4wd ('02-'08)
|-
|1 <br> (following C)||Cadillac Escalade 2wd Base model ('09), Escalade ESV 2wd Base model ('09)
|-
|2 <br> (following C)||Cadillac Escalade 2wd w/Ultra Luxury Collection ('09), Escalade ESV 2wd w/Ultra Luxury Collection ('09)
|-
|3 <br> (following C)||Cadillac Escalade 2wd w/Platinum Edition ('09), Escalade ESV 2wd w/Platinum Edition ('09)
|-
|4 <br> (following C)||Cadillac Escalade Hybrid 2wd Base model ('09)
|-
|5 <br> (following C)||Cadillac Escalade 2wd w/Sport Package ('09), Escalade ESV 4wd w/Sport Package ('09)
|-
|1 <br> (following K)||Cadillac Escalade 4wd Base model ('09), Escalade ESV 4wd Base model ('09), Escalade EXT 4wd Base model ('09)
|-
|2 <br> (following K)||Cadillac Escalade 4wd w/Ultra Luxury Collection ('09), Escalade ESV 4wd w/Ultra Luxury Collection ('09),<br> Escalade EXT 4wd w/Ultra Luxury Collection ('09)
|-
|3 <br> (following K)||Cadillac Escalade 4wd w/Platinum Edition ('09), Escalade ESV 4wd w/Platinum Edition ('09)
|-
|4 <br> (following K)||Cadillac Escalade Hybrid 4wd Base model ('09)
|-
|5 <br> (following K)||Cadillac Escalade 4wd w/Sport Package ('09), Escalade ESV 4wd w/Sport Package ('09), Escalade EXT 4wd w/Sport Package ('09)
|-
|1 <br> (following M)||GMC Safari 2wd ('00-'05)
|-
|1 <br> (following L)||GMC Safari Awd ('00-'05)
|-
|1 <br> (following G)||GMC Savana 1500 series 2wd ('00-'09)
|-
|2 <br> (following G)||GMC Savana 2500 series 2wd ('00-'09)
|-
|3 <br> (following G)||GMC Savana 3500 series 2wd ('00-'09)
|-
|3 <br> (following G)||When VIN starts with 1GBK: GMC Savana 4500 series Cutaway 2wd ('09)
|-
|6 <br> (following G)||GMC Savana 1500 series SLT 2wd ('01-'02)
|-
|1 <br> (following H)||GMC Savana 1500 series Awd ('03-'09)
|-
|2 <br> (following H)||GMC Savana 2500 series Awd ('03-'05)
|-
|1 <br> (following R)||GMC Acadia SLE 2wd ('07-'09)
|-
|2 <br> (following R)||GMC Acadia SLT-1 2wd ('07-'09)
|-
|3 <br> (following R)||GMC Acadia SLT-2 2wd ('07-'09)
|-
|1 <br> (following V)||GMC Acadia SLE Awd ('07-'09)
|-
|2 <br> (following V)||GMC Acadia SLT-1 Awd ('07-'09)
|-
|3 <br> (following V)||GMC Acadia SLT-2 Awd ('07-'09)
|-
|1 <br> (following S)||GMC Jimmy 2wd ('00-'01)
|-
|6 <br> (following S)||GMC Jimmy Diamond Edition 2wd ('01)
|-
|1 <br> (following T)||GMC Jimmy 4wd ('00-'01 & '02-'05 in Canada)
|-
|6 <br> (following T)||GMC Jimmy Diamond Edition 4wd ('01)
|-
|1 <br> (following S)||GMC Envoy 2wd ('02-'08), Envoy XL 2wd ('02-'06), Envoy XUV 2wd ('04-'05)
|-
|6 <br> (following S)||GMC Envoy Denali 2wd ('05-'08), Envoy XL Denali 2wd ('05-'06)
|-
|1 <br> (following T)||GMC Envoy 4wd ('02-'08), Envoy XL 4wd ('02-'06), Envoy XUV 4wd ('04-'05)
|-
|6 <br> (following T)||GMC Envoy Denali 4wd ('05-'08), Envoy XL Denali 4wd ('05-'06)
|-
|3 <br> (following S)||GMC Envoy SLE 2wd ('09)
|-
|3 <br> (following T)||GMC Envoy SLE 4wd ('09)
|-
|4 <br> (following S)||GMC Envoy SLT 2wd ('09)
|-
|4 <br> (following T)||GMC Envoy SLT 4wd ('09)
|-
|5 <br> (following S)||GMC Envoy Denali 2wd ('09)
|-
|5 <br> (following T)||GMC Envoy Denali 4wd ('09)
|-
|1 <br> (following C)||GMC Yukon 2wd ('00-'06) [GMT800]
|-
|1 <br> (following K)||GMC Yukon 4wd ('00-'06) [GMT800]
|-
|1 <br> (following C)||GMC Yukon 2wd ('07-'08) [GMT900]
|-
|1 <br> (following K)||GMC Yukon 4wd ('07-'08) [GMT900]
|-
|1 <br> (following C)||GMC Yukon 2wd ('09) [GMT900]
|-
|1 <br> (following K)||GMC Yukon 4wd ('09) [GMT900]
|-
|1 <br> (following C)||GMC Yukon Hybrid 2wd ('09) [GMT900; 8th pos. of VIN is 5]
|-
|1 <br> (following K)||GMC Yukon Hybrid 4wd ('09) [GMT900; 8th pos. of VIN is 5]
|-
|2 <br> (following C)||GMC Yukon SLE 2wd ('09) [GMT900]
|-
|3 <br> (following C)||GMC Yukon SLT 2wd ('09) [GMT900]
|-
|2 <br> (following K)||GMC Yukon SLE 4wd ('09) [GMT900]
|-
|3 <br> (following K)||GMC Yukon SLT 4wd ('09) [GMT900]
|-
|1 <br> (following K)||GMC Yukon Denali 4wd (Early '00) [GMT400; 8th pos. of VIN is R]
|-
|6 <br> (following K)||GMC Yukon Denali 4wd (Mid '00) [GMT400; 8th pos. of VIN is R]
|-
|6 <br> (following K)||GMC Yukon Denali 4wd ('01-'06) [GMT800]
|-
|6 <br> (following C)||GMC Yukon Denali 2wd ('08) [GMT900]
|-
|6 <br> (following K)||GMC Yukon Denali 4wd ('07-'08) [GMT900]
|-
|0 <br> (following C)||GMC Yukon Denali 2wd ('09) [GMT900]
|-
|0 <br> (following K)||GMC Yukon Denali 4wd ('09) [GMT900]
|-
|1 <br> (following K)||GMC Yukon Denali 4wd ('09) [GMT900; 8th pos. of VIN is 2]
|-
|1 <br> (following C)||GMC Yukon Denali Hybrid 2wd ('09) [GMT900; 8th pos. of VIN is 5]
|-
|1 <br> (following K)||GMC Yukon Denali Hybrid 4wd ('09) [GMT900; 8th pos. of VIN is 5]
|-
|1 <br> (following C)||GMC Yukon XL 1500 series 2wd ('00-'08)
|-
|2 <br> (following C)||GMC Yukon XL 2500 series 2wd ('00-'08)
|-
|6 <br> (following C)||GMC Yukon XL Denali 1500 series 2wd ('08)
|-
|1 <br> (following K)||GMC Yukon XL 1500 series 4wd ('00-'08)
|-
|2 <br> (following K)||GMC Yukon XL 2500 series 4wd ('00-'08)
|-
|6 <br> (following K)||GMC Yukon XL Denali 1500 series 4wd ('01-'08)
|-
|1 <br> (following C)||GMC Yukon XL 1500 series 2wd ('09)
|-
|2 <br> (following C)||GMC Yukon XL 1500 series SLE 2wd ('09)
|-
|3 <br> (following C)||GMC Yukon XL 1500 series SLT 2wd ('09)
|-
|4 <br> (following C)||GMC Yukon XL 2500 series 2wd ('09)
|-
|5 <br> (following C)||GMC Yukon XL 2500 series SLE 2wd ('09)
|-
|6 <br> (following C)||GMC Yukon XL 2500 series SLT 2wd ('09)
|-
|0 <br> (following C)||GMC Yukon XL Denali 1500 series 2wd ('09)
|-
|1 <br> (following K)||GMC Yukon XL 1500 series 4wd ('09)
|-
|2 <br> (following K)||GMC Yukon XL 1500 series SLE 4wd ('09)
|-
|3 <br> (following K)||GMC Yukon XL 1500 series SLT 4wd ('09)
|-
|4 <br> (following K)||GMC Yukon XL 2500 series 4wd ('09)
|-
|5 <br> (following K)||GMC Yukon XL 2500 series SLE 4wd ('09)
|-
|6 <br> (following K)||GMC Yukon XL 2500 series SLT 4wd ('09)
|-
|0 <br> (following K)||GMC Yukon XL Denali 1500 series 4wd ('09)
|-
|1 <br> (following K)||GMC Yukon XL Denali 1500 series 4wd ('09) [8th pos. of VIN is 2]
|-
|1 <br> (following S)||GMC Sonoma 2wd ('00-'03)
|-
|1 <br> (following T)||GMC Sonoma 4wd ('00-'04)
|-
|1 <br> (following S)||GMC Canyon 2wd ('04-'07)
|-
|1 <br> (following T)||GMC Canyon 4wd ('04-'07)
|-
|1 <br> (following C)||GMC Sierra 1500 2wd ('00-'06), Sierra Classic 1500 2wd ('07) (Pos. 8 of VIN is X, V, T, Z, or N] [GMT800]
|-
|1 <br> (following K)||GMC Sierra 1500 4wd ('00-'06), Sierra Classic 1500 4wd ('07) (Pos. 8 of VIN is X, V, T, Z, B, or N] [GMT800]
|-
|1 <br> (following C)||GMC Sierra 1500HD 2wd ('01-'03, '05-'06), Sierra Classic 1500HD 2wd ('07) (Pos. 8 of VIN is U] [GMT800]
|-
|1 <br> (following K)||GMC Sierra 1500HD 4wd ('01-'03, '05-'06), Sierra Classic 1500HD 2wd ('07) (Pos. 8 of VIN is U] [GMT800]
|-
|6 <br> (following K)||GMC Sierra C3 1500 Awd ('01) [GMT800]
|-
|6 <br> (following K)||GMC Sierra Denali 1500 Awd ('02-'06), Sierra Classic Denali 1500 Awd ('07) (Pos. 8 of VIN is N] [GMT800]
|-
|2 <br> (following C)||GMC Sierra 2500 (LD) 2wd ('00-'04) [GMT800] (Pos. 8 of VIN is T ('00) or U ('00-'04)]
|-
|2 <br> (following K)||GMC Sierra 2500 (LD) 4wd ('00-'04) [GMT800] (Pos. 8 of VIN is U]
|-
|2 <br> (following C)||GMC Sierra Classic C2500 2wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R)
|-
|3 <br> (following C)||GMC Sierra Classic C3500 2wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R)
|-
|3 <br> (following C)||when 4th pos. of VIN is K: GMC Sierra C3500HD 2wd ('00-'02) [GMT400]
|-
|2 <br> (following K)||GMC Sierra Classic K2500 4wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R)
|-
|3 <br> (following K)||GMC Sierra Classic K3500 4wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R)
|-
|2 <br> (following C)||GMC Sierra 2500HD 2wd ('01-'06), Sierra Classic 2500HD 2wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800]
|-
|2 <br> (following K)||GMC Sierra 2500HD 4wd ('01-'06), Sierra Classic 2500HD 4wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800]
|-
|3 <br> (following C)||GMC Sierra 3500 2wd ('01-'06), Sierra Classic 3500 2wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800]
|-
|3 <br> (following K)||GMC Sierra 3500 4wd ('01-'06), Sierra Classic 3500 4wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800]
|-
|1 <br> (following C)||GMC Sierra 1500 2wd ('07-'08) (Pos. 8 of VIN is X, C, J, 0, or Y) [GMT900]
|-
|6 <br> (following C)||GMC Sierra Denali 1500 2wd ('07-'08) (Pos. 8 of VIN is 8) [GMT900]
|-
|1 <br> (following K)||GMC Sierra 1500 4wd ('07-'08) (Pos. 8 of VIN is X, C, J, M, 0, 3, or Y) [GMT900]
|-
|6 <br> (following K)||GMC Sierra Denali 1500 Awd ('07-'08) (Pos. 8 of VIN is 8) [GMT900]
|-
|2 <br> (following C)||GMC Sierra 2500HD 2wd ('07-'08) [GMT900]
|-
|2 <br> (following K)||GMC Sierra 2500HD 4wd ('07-'08) [GMT900]
|-
|3 <br> (following C)||GMC Sierra 3500HD 2wd ('07-'08) [GMT900]
|-
|3 <br> (following K)||GMC Sierra 3500HD 4wd ('07-'08) [GMT900]
|-
|1 <br> (following C)||GMC Sierra Work Truck, SL 1500 2wd ('09) [GMT900]
|-
|2 <br> (following C)||GMC Sierra SLE 1500 2wd ('09) [GMT900]
|-
|3 <br> (following C)||GMC Sierra SLT 1500 2wd ('09) [GMT900]
|-
|0 <br> (following C)||GMC Sierra Denali 1500 2wd ('09) [GMT900]
|-
|1 <br> (following K)||GMC Sierra Work Truck, SL 1500 4wd ('09) [GMT900]
|-
|2 <br> (following K)||GMC Sierra SLE 1500 4wd ('09) [GMT900]
|-
|3 <br> (following K)||GMC Sierra SLT 1500 4wd ('09) [GMT900]
|-
|0 <br> (following K)||GMC Sierra Denali 1500 Awd ('09) [GMT900]
|-
|4 <br> (following C)||GMC Sierra Work Truck 2500HD 2wd ('09) [GMT900]
|-
|5 <br> (following C)||GMC Sierra SLE 2500HD 2wd ('09) [GMT900]
|-
|6 <br> (following C)||GMC Sierra SLT 2500HD 2wd ('09) [GMT900]
|-
|4 <br> (following K)||GMC Sierra Work Truck 2500HD 4wd ('09) [GMT900]
|-
|5 <br> (following K)||GMC Sierra SLE 2500HD 4wd ('09) [GMT900]
|-
|6 <br> (following K)||GMC Sierra SLT 2500HD 4wd ('09) [GMT900]
|-
|7 <br> (following C)||GMC Sierra Work Truck 3500HD 2wd ('09) [GMT900]
|-
|8 <br> (following C)||GMC Sierra SLE 3500HD 2wd ('09) [GMT900]
|-
|9 <br> (following C)||GMC Sierra SLT 3500HD 2wd ('09) [GMT900]
|-
|7 <br> (following K)||GMC Sierra Work Truck 3500HD 4wd ('09) [GMT900]
|-
|8 <br> (following K)||GMC Sierra SLE 3500HD 4wd ('09) [GMT900]
|-
|9 <br> (following K)||GMC Sierra SLT 3500HD 4wd ('09) [GMT900]
|-
|0 <br> (following V)||Saturn Relay ''2'' 2wd ('05-'07)
|-
|2 <br> (following V)||Saturn Relay ''3'' 2wd ('05-'07)
|-
|5 <br> (following V)||Saturn Relay ''1'' 2wd ('07)
|-
|2 <br> (following X)||Saturn Relay ''3'' Awd ('05-'06)
|-
|2 <br> (following Z)||Saturn Vue I4, Man. Trans., Fwd ('02-'07)
|-
|3 <br> (following Z)||Saturn Vue I4, Auto. Trans., Fwd ('02-'07)
|-
|4 <br> (following Z)||Saturn Vue I4, Auto. Trans., Awd ('02-'05)
|-
|5 <br> (following Z)||Saturn Vue V6, Auto. Trans., Fwd ('03-'07)
|-
|6 <br> (following Z)||Saturn Vue V6, Auto. Trans., Awd ('02-'07)
|-
|3 <br> (following L)||Saturn Vue XE Fwd ('08-'09)
|-
|4 <br> (following L)||Saturn Vue XE Awd ('08-'09)
|-
|5 <br> (following L)||when 4th pos. of VIN is C: Saturn Vue XR Fwd ('08-'09)
|-
|7 <br> (following L)||Saturn Vue XR Awd (Early '08)
|-
|6 <br> (following L)||Saturn Vue XR Awd (Mid '08-'09)
|-
|5 <br> (following L)||when 4th pos. of VIN is D: Saturn Vue XR Awd ('09)
|-
|1 <br> (following L)||Saturn Vue Red Line Fwd ('08-'09)
|-
|9 <br> (following L)||Saturn Vue Red Line Awd ('08)
|-
|0 <br> (following L)||Saturn Vue Red Line Awd ('09)
|-
|0 <br> (following L)||Saturn Vue Green Line Fwd ('08)
|-
|9 <br> (following L)||Saturn Vue Green Line Fwd ('09)
|-
|1 <br> (following R)||Saturn Outlook XE 2wd ('07-'09)
|-
|2 <br> (following R)||Saturn Outlook XR 2wd ('07-'09)
|-
|3 <br> (following R)||Saturn Outlook XR 2wd w/Touring Package ('07-'09)
|-
|1 <br> (following V)||Saturn Outlook XE Awd ('07-'09)
|-
|2 <br> (following V)||Saturn Outlook XR Awd ('07-'09)
|-
|3 <br> (following V)||Saturn Outlook XR Awd w/Touring Package ('07-'09)
|-
|1 <br> (following N)||Hummer H3 ('06-'07)
|-
|1 <br> (following N)||Hummer H3 Base model ('08)
|-
|3 <br> (following N)||Hummer H3 Adventure ('08)
|-
|4 <br> (following N)||Hummer H3 Luxury ('08)
|-
|5 <br> (following N)||Hummer H3 X ('08)
|-
|6 <br> (following N)||Hummer H3 Alpha ('08)
|-
|1 <br> (following N)||Hummer H3, H3T ('09)
|-
|2 <br> (following N)||Hummer H2 ('03-'08), H2 SUT ('05-'08)
|-
|2 <br> (following N)||Hummer H2 Base model ('09), H2 SUT Base model ('09)
|-
|7 <br> (following N)||Hummer H2 Adventure ('09)
|-
|8 <br> (following N)||Hummer H2 Luxury ('09)
|-
|9 <br> (following N)||Hummer H2 SUT Adventure ('09)
|-
|0 <br> (following N)||Hummer H2 SUT Luxury ('09)
|-
|1 (following S)||Isuzu Hombre 2wd ('00), Isuzu i280 2wd ('06), Isuzu i290 2wd ('07-'08), Isuzu i370 2wd ('07-'08)
|-
|2 (following S)||Isuzu i290 2wd w/Preferred Equip. Pkg. ('08), Isuzu i370 2wd w/Comfort Pkg. or upgrade model ('08)
|-
|1 (following T)||Isuzu Hombre 4wd ('00), Isuzu i350 4wd ('06), Isuzu i370 4wd ('07-'08)
|-
|2 (following T)||Isuzu i370 4wd w/Comfort Pkg. ('08)
|-
|1 (following S)||Isuzu Ascender 2wd ('03-'08)
|-
|1 (following T)||Isuzu Ascender 4wd ('03-'08)
|-
|1 (following T)||Saab 9-7X ('05-'08: All, '09: 4.2i, 5.3i)
|-
|2 (following T)||Saab 9-7X Aero ('09)
|}
====Body style codes 1981-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle====
The Body type is specified as character 7 of the American GM VIN for light trucks.
{| border=1 style="margin:auto;"
!VIN
!Description
|-
|0||Sedan Pickup/Pickup Delivery ('81-'87 El Camino, Caballero)
|-
|0||Cadillac, Buick, Chevrolet Commercial Body/Chassis
|-
|0||Chassis Only
|-
|1||Cutaway Van
|-
|2||Forward Control ('81-'03) (includes '93-'95 Chevy G30HD/GMC G3500HD)
|-
|2||Sport Utility Truck (SUT) ('04-'09 Avalanche & Escalade EXT, '04-'05 Envoy XUV, '05-'09 Hummer H2 SUT)
|-
|3||Four-Door Cab pickup (Crew Cab) (includes '06-'08 Isuzu i-Series Crew Cab, '09 Hummer H3T)
|-
|3||4-door Passenger Minivan ('97-'09 U-bodies)
|-
|3||4-door SUV or MPV ('06-'09 HHR) (also includes '02-'03 Avalanche & Escalade EXT) ('05-'09 Saab 9-7X)
|-
|4||Two-Door Cab pickup (includes '83-'87 S-10/S-15 extended cab pickups, '03-'06 Chevy SSR, '96-'00 Isuzu Hombre Reg. Cab)
|-
|5||Van (Astro/Safari & full-size vans & '07-'09 HHR Panel)
|-
|6||Extended length 4-door SUV (Suburban, Yukon XL, Escalade ESV, Trailblazer EXT, Envoy XL, Isuzu Ascender 7-psgr.)
|-
|6||3-door Passenger Minivan ('90-'99 U-bodies)
|-
|7||Motor Home Chassis ('81-'09)
|-
|8||Two-Door SUV (Utility) (2-d Tracker, S-10 Blazer, S-15 Jimmy, Blazer, Jimmy, Tahoe, Yukon)
|-
|9||Stake (81-87)
|-
|9||Extended Cab pickup ('88-) (includes '97-'00 Isuzu Hombre Spacecab, '06-'08 Isuzu i-Series Ext. Cab)
|-
|9||Extended length van ('90-) (Astro/Safari & full-size vans)
|}
===American VIN format 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle===
GM's VIN format is as follows:
<table border=1 style="margin:auto;">
<tr>
<th>Position</th>
<th>Sample</th><th></th><th></th><th>Description</th>
</tr><tr>
<td>1</td>
<td>1</td><td></td><td></td><td rowspan=3>[[#GM WMIs|World Manufacturer Identifier]]</td>
</tr><tr>
<td>2</td>
<td>G</td><td></td><td></td></tr><tr>
<td>3</td>
<td>K</td><td></td><td></td></tr><tr>
<td>4</td>
<td>L</td><td></td><td></td><td>[[#GVWR/Brake System/Body Style 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle|GVWR/Brake System/Body Style 2010-]]</td>
</tr><tr>
<td>5</td>
<td>R</td><td></td><td></td><td>[[#Line & Chassis Type 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle|Line & Chassis Type for 2010-]]</td>
</tr><tr>
<td>6</td>
<td>L</td><td></td><td></td><td>[[#Series 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle|Series 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle]]</td>
</tr><tr>
<td>7</td>
<td>E</td><td></td><td></td><td>[[#Restraint codes for light trucks 2010-|Restraint type]]</td>
</tr><tr>
<td>8</td>
<td>D</td><td></td><td></td><td>[[#Engine codes for light trucks|Engine type]]</td>
</tr><tr>
<td>9</td>
<td>0</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Check digit |Check digit]]</td>
</tr><tr>
<td>10</td>
<td>A</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Model year|Model year]]</td>
</tr><tr>
<td>11</td>
<td>J</td><td></td><td></td><td>[[#GM factories supplying North America|Factory ID]]</td>
</tr><tr>
<td>12</td>
<td>1</td><td></td><td></td><td rowspan=6>Sequential number
</tr><tr>
<td>13</td>
<td>2</td><td></td><td></td></tr><tr>
<td>14</td>
<td>3</td><td></td><td></td></tr><tr>
<td>15</td>
<td>7</td><td></td><td></td></tr><tr>
<td>16</td>
<td>6</td><td></td><td></td></tr><tr>
<td>17</td>
<td>2</td><td></td><td></td>
</table>
====GVWR/Brake System/Body Style 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle====
The GVWR/Brake System is specified as character 4 of the American GM VIN for light trucks.
{| border=1 style="margin:auto;"
!VIN
!GVWR Range in lbs. & Weight Class
!Brake System
!Body Style
|-
| ||Class A: 0-3,000||Hydraulic||
|-
| ||Class B: 3,001-4,000||Hydraulic||
|-
|A||Class C: 4,001-5,000||Hydraulic||26: 4-door SUV or MPV ('10-'11 Chevy HHR Panel, '10-'26 Chevy Equinox, GMC Terrain, '10 Saturn Vue,<br> '12-'15 Chevy Captiva Sport, '19-'24 Cadillac XT4, '24-'26 Buick Encore GX)
|-
|B||Class C: 4,001-5,000||Hydraulic||46: 4-door MPV ('10-'11 Chevy HHR)
|-
|J||Class C: 4,001-5,000||Hydraulic||48: 4-door, 4 window Hatchback ('18-'23 Chevy Bolt EV w/Rear Seat Delete pkg. - incomplete vehicle)
|-
|C||Class C: 4,001-5,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('10-'12 Chevy Colorado, GMC Canyon)
|-
|D||Class C: 4,001-5,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('10-'12 Chevy Colorado, GMC Canyon)
|-
|E||Class C: 4,001-5,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('10-'12 Chevy Colorado, GMC Canyon)
|-
|7||Class C: 4,001-5,000||Hydraulic||75: Four-Door Wagon - High Roof Monocab (Canada only: '12-'14 Chevy Orlando)
|-
|M||Class C: 4,001-5,000||Hydraulic||06: 4-door SUV ('20-'23 Buick Encore GX)
|-
|9||Class C: 4,001-5,000||Hydraulic||56: 4-door SUV Extended ('21-'26 Chevy Trailblazer)
|-
|7||Class C: 4,001-5,000||Hydraulic||58: 4-door Utility Extended ('24-'26 Chevy Trax, Buick Envista)
|-
|C||Class C: 4,001-5,000||Hydraulic||76: 4-door SUV ('13-'22 Buick Encore, Canada only: '13-'14 Chevy Trax, US & Canada: '15-'22 Chevy Trax)
|-
|F||Class D: 5,001-6,000||Hydraulic||26: 4-door SUV ('10-'17 Chevy Equinox, GMC Terrain, '10 Saturn Vue, '10-'16 Cadillac SRX, '11 Saab 9-4X,<br> '12-'13 Chevy Captiva Sport, '16-'26 Buick Envision, '17 Cadillac XT5, '19-'25 Cadillac XT4)
|-
|H||Class D: 5,001-6,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('10 Chevy Colorado, GMC Canyon)
|-
|G||Class D: 5,001-6,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('11-'12 Chevy Colorado, GMC Canyon)
|-
|J||Class D: 5,001-6,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('10 Chevy Colorado, GMC Canyon)
|-
|H||Class D: 5,001-6,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('11-'12 Chevy Colorado, GMC Canyon)
|-
|G||Class D: 5,001-6,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('15-'24 Chevy Colorado, '15-'22 GMC Canyon)
|-
|K||Class D: 5,001-6,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('10 Chevy Colorado, GMC Canyon)
|-
|J||Class D: 5,001-6,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('11-'12 Chevy Colorado, GMC Canyon)
|-
|H||Class D: 5,001-6,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('15-'22 Chevy Colorado, GMC Canyon)
|-
|T||Class D: 5,001-6,000||Hydraulic||69: Commercial Chassis ('10 Cadillac DTS chassis for Limo/Hearse)
|-
|7||Class D: 5,001-6,000||Hydraulic||69: Commercial Chassis ('11 Cadillac DTS chassis for Limo/Hearse)
|-
|L||Class E: 6,001-7,000||Hydraulic||26: 4-door SUV ('10 Chevy Traverse, GMC Acadia, Buick Enclave, Saturn Outlook)
|-
|K||Class E: 6,001-7,000||Hydraulic||26: 4-door SUV ('11-'17 Chevy Traverse, Buick Enclave, '11-'23 GMC Acadia, '17 Acadia Limited,<br> '17-'26 Cadillac XT5, '19-'26 Chevy Blazer, '20-'25 Cadillac XT6, '23-'26 Cadillac Lyriq EV,<br> '24-'26 Chevy Blazer EV, '25-'26 Cadillac Optiq EV, '24-'26 Honda Prologue EV, '24 Acura ZDX EV A-Spec)
|-
|7||Class E: 6,001-7,000||Hydraulic||48: 4-door SUV ('24-'25 Chevy Equinox EV)
|-
|E||Class E: 6,001-7,000||Hydraulic||56: 4-door SUV Extended ('18-'26 Chevy Traverse, Buick Enclave, '24 Chevy Traverse Limited,<br> '24-'26 GMC Acadia
|-
|M||Class E: 6,001-7,000||Hydraulic||05: Cargo Van ('10 Chevy Express, GMC Savana)
|-
|L||Class E: 6,001-7,000||Hydraulic||05: Cargo Van ('11-'14 Chevy Express, GMC Savana)
|-
|M||Class E: 6,001-7,000||Hydraulic||06: 4-door SUV ('10 Chevy Tahoe, GMC Yukon, Hummer H3)
|-
|L||Class E: 6,001-7,000||Hydraulic||06: 4-door SUV ('11-'20 Chevy Tahoe Police Pursuit Vehicle 2wd)
|-
|N||Class E: 6,001-7,000||Hydraulic||36: Sport Utility Truck (SUT) ('10 Chevy Avalanche 2wd)
|-
|M||Class E: 6,001-7,000||Hydraulic||36: Sport Utility Truck (SUT) ('11-13 Chevy Avalanche 2wd)
|-
|P||Class E: 6,001-7,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra)
|-
|N||Class E: 6,001-7,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra,<br> '22 Chevy Silverado LTD, GMC Sierra Limited)
|-
|R||Class E: 6,001-7,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra, Hummer H3T)
|-
|P||Class E: 6,001-7,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra,<br> '22 Chevy Silverado LTD, GMC Sierra Limited, '16-'26 Chevy Colorado, GMC Canyon)
|-
|S||Class E: 6,001-7,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra)
|-
|R||Class E: 6,001-7,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra,<br> '19 Chevy Silverado LD, GMC Sierra Limited, '22 Chevy Silverado LTD, GMC Sierra Limited,<br> '16-'22 Chevy Colorado)
|-
|G||Class E: 6,001-7,000||Hydraulic||69: Commercial Chassis ('10 Cadillac DTS chassis for Limo/Hearse)
|-
|8||Class E: 6,001-7,000||Hydraulic||69: Commercial Chassis ('11 Cadillac DTS chassis for Limo/Hearse)
|-
|X||Class E: 6,001-7,000||Hydraulic||69: Commercial Chassis ('13-'19 Cadillac XTS chassis for Limo/Hearse)
|-
|U||Class F: 7,001-8,000||Hydraulic||05: Cargo Van or Incomplete Vehicle ('10 Chevy Express, GMC Savana)
|-
|S||Class F: 7,001-8,000||Hydraulic||05: Cargo Van or Incomplete Vehicle ('11-'14 Chevy Express, GMC Savana)
|-
|U||Class F: 7,001-8,000||Hydraulic||06: Passenger Van ('10 Chevy Express, GMC Savana)
|-
|S||Class F: 7,001-8,000||Hydraulic||06: Passenger Van ('11-'14 Chevy Express, GMC Savana)
|-
|U||Class F: 7,001-8,000||Hydraulic||06: 4-door SUV ('10 Chevy Tahoe, Suburban 1500, GMC Yukon, Yukon XL 1500, Cadillac Escalade, Escalade ESV)
|-
|S||Class F: 7,001-8,000||Hydraulic||06: 4-door SUV ('11-'26 Chevy Tahoe, Suburban 1500, GMC Yukon, Yukon XL 1500, Cadillac Escalade, Escalade ESV)
|-
|V||Class F: 7,001-8,000||Hydraulic||36: Sport Utility Truck (SUT) ('10 Chevy Avalanche 4wd, Cadillac Escalade EXT 4wd)
|-
|T||Class F: 7,001-8,000||Hydraulic||36: Sport Utility Truck (SUT) ('11-'13 Chevy Avalanche 4wd, Cadillac Escalade EXT 4wd)
|-
|X||Class F: 7,001-8,000||Hydraulic||26: 4-door SUV ('24 Acura ZDX EV Type S)
|-
|C||Class F: 7,001-8,000||Hydraulic||56: 4-door SUV Extended ('26- Cadillac Vistiq EV)
|-
|W||Class F: 7,001-8,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra)
|-
|X||Class F: 7,001-8,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra)
|-
|U||Class F: 7,001-8,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra,<br> '22 Chevy Silverado LTD, GMC Sierra Limited)
|-
|Y||Class F: 7,001-8,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra)
|-
|V||Class F: 7,001-8,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra,<br> '19 Chevy Silverado LD, GMC Sierra Limited, '22 Chevy Silverado LTD, GMC Sierra Limited)
|-
|U||Class F: 7,001-8,000||Hydraulic||69: Commercial Chassis ('10 Cadillac DTS chassis for Limo/Hearse)
|-
|9||Class F: 7,001-8,000||Hydraulic||69: Commercial Chassis ('11 Cadillac DTS chassis for Limo/Hearse)
|-
|Z||Class G: 8,001-9,000||Hydraulic||05: Cargo Van or Incomplete Vehicle ('10 Chevy Express, GMC Savana)
|-
|W||Class G: 8,001-9,000||Hydraulic||05: Cargo Van or Incomplete Vehicle ('11-'26 Chevy Express, GMC Savana)
|-
|Z||Class G: 8,001-9,000||Hydraulic||06: Passenger Van ('10 Chevy Express, GMC Savana)
|-
|W||Class G: 8,001-9,000||Hydraulic||06: Passenger Van ('11-'26 Chevy Express, GMC Savana)
|-
|Z||Class G: 8,001-9,000||Hydraulic||06: 4-door SUV ('10 Chevy Suburban 2500, GMC Yukon XL 2500)
|-
|W||Class G: 8,001-9,000||Hydraulic||06: 4-door SUV ('11-'13 Chevy Suburban 2500, GMC Yukon XL 2500)
|-
|2||Class H: 9,001-10,000||Hydraulic||05: Cargo Van or Incomplete Vehicle ('10 Chevy Express, GMC Savana)
|-
|Z||Class H: 9,001-10,000||Hydraulic||05: Cargo Van or Incomplete Vehicle ('11-'26 Chevy Express, GMC Savana,<br> '23-'24 BrightDrop Zevo 600, '24 BrightDrop Zevo 400, '25-'26 Chevrolet BrightDrop 400/600)
|-
|2||Class H: 9,001-10,000||Hydraulic||06: Passenger Van ('10 Chevy Express, GMC Savana)
|-
|Z||Class H: 9,001-10,000||Hydraulic||06: Passenger Van ('11-'26 Chevy Express, GMC Savana)
|-
|3||Class H: 9,001-10,000||Hydraulic||03: Van Cutaway ('10 Chevy Express, GMC Savana)
|-
|0||Class H: 9,001-10,000||Hydraulic||03: Van Cutaway ('11-'26 Chevy Express, GMC Savana)
|-
|3||Class H: 9,001-10,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra)
|-
|0||Class H: 9,001-10,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra)
|-
|4||Class H: 9,001-10,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra)
|-
|1||Class H: 9,001-10,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra,<br> '24-'25 GMC Hummer EV pickup w/20 module battery pack,<br> '24-'26 Chevy Silverado EV, '25-'26 GMC Sierra EV)
|-
|5||Class H: 9,001-10,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra)
|-
|2||Class H: 9,001-10,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('11-'13, '15-'26 Chevy Silverado, GMC Sierra)
|-
|B||Class H: 9,001-10,000||Hydraulic||26: 4-door SUV ('24-'25 GMC Hummer EV SUV)
|-
|6||Class 3: 10,001-14,000||Hydraulic||03: Van Cutaway ('10 Chevy Express, GMC Savana)
|-
|3||Class 3: 10,001-14,000||Hydraulic||03: Van Cutaway ('11-'26 Chevy Express, GMC Savana)
|-
|6||Class 3: 10,001-14,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra)
|-
|3||Class 3: 10,001-14,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra)
|-
|7||Class 3: 10,001-14,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra)
|-
|4||Class 3: 10,001-14,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra,<br> '22-'24 GMC Hummer EV pickup w/24 module battery pack, '25 GMC Hummer EV pickup w/20 or 24 module battery pack, '26 GMC Hummer EV pickup, '24-'25 Chevy Silverado EV, GMC Sierra EV)
|-
|8||Class 3: 10,001-14,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra)
|-
|5||Class 3: 10,001-14,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('11-'13, '15-'18, '20-'26 Chevy Silverado, GMC Sierra)
|-
|8||Class 3: 10,001-14,000||Hydraulic||06: 4-door SUV ('16-'19, '24-'26 Chevy Suburban 3500HD)
|-
|8||Class 3: 10,001-14,000||Hydraulic||05: Cargo Van ('22 BrightDrop EV600, '23-'24 BrightDrop Zevo 600, '24 BrightDrop Zevo 400,<br> '25-'26 Chevrolet BrightDrop 400/600)
|-
|T||Class 3: 10,001-14,000||Hydraulic||26: 4-door SUV ('25-'26 GMC Hummer EV SUV, '25-'26 Cadillac Escalade IQ [EV])
|-
|L||Class 3: 10,001-14,000||Hydraulic||56: 4-door SUV Extended ('26- Cadillac Escalade IQL [EV])
|-
|9||Class 4: 14,001-16,000||Hydraulic||03: Van Cutaway ('10 Chevy Express, GMC Savana)
|-
|6||Class 4: 14,001-16,000||Hydraulic||03: Van Cutaway ('11-'26 Chevy Express, GMC Savana)
|-
| ||Class 5: 16,001-19,500||Hydraulic||
|}
====Line & Chassis Type 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle====
The Line & Chassis Type is specified as character 5 of the American GM VIN for light trucks.
{| border=1 style="margin:auto;"
!VIN
!Description
|-
|A||Chevrolet HHR ('10-'11), HHR Panel ('10-'11)
|-
|A||Chevy Silverado 1500 2wd ('22-'26), Silverado HD 2500/3500 2wd ('25-'26)
|-
|B||Chevy Blazer 2wd & Awd '19-'26
|-
|C||Chevy Silverado 2wd ('10-'18), Silverado LD 1500 2wd '19, Silverado HD 2500/3500 2wd '19, GMC Sierra 2wd ('10)
|-
|C||Chevy Tahoe 2wd ('10-'24), Suburban 2wd ('10-'24), Avalanche 2wd ('10-'13),<br /> GMC Yukon 2wd ('10), Yukon XL 2wd ('10), Cadillac Escalade 2wd ('10), Escalade ESV 2wd ('10)
|-
|D||Chevy Silverado 1500 4wd ('22-'24)
|-
|D||Chevy Blazer EV ('24-'26), Chevy Equinox EV ('24-'26)
|-
|E||Cadillac Escalade IQ [EV] ('25-'26), Escalade IQL [EV] ('26-), GMC Hummer EV pickup ('26-), GMC Hummer EV SUV ('26-), GMC Sierra EV ('26-)
|-
|F||Chevy Bolt EV w/Rear Seat Delete pkg. - incomplete vehicle ('18-'23)
|-
|G||Cadillac Chassis for Limousine & for Armored Vehicle (Based on XTS '13-'19)
|-
|G||Cadillac Chassis for Hearse (Based on XTS '13-'19)
|-
|G||Chevy Express 2wd ('10-'26), GMC Savana 2wd ('10)
|-
|H||Chevy Express 4wd ('10-'14), GMC Savana 4wd ('10)
|-
|H||GMC Sierra 1500 2wd ('22-'26), Sierra HD 2500/3500 2wd ('25-'26)
|-
|H||Honda Prologue EV ('24-'26), Acura ZDX EV ('24)
|-
|J||Buick Encore 2wd & Awd ('13-'22), Chevy Trax 2wd & Awd (Canada: '13-'22, US: '15-'22)
|-
|J||BrightDrop EV600 ('22), BrightDrop Zevo 600 ('23-'24), BrightDrop Zevo 400 ('24), Chevrolet BrightDrop 400/600 ('25-'26)
|-
|K||Chevy Silverado 4wd ('10-'18), Silverado LD 1500 4wd ('19), Silverado HD 2500/3500 4wd ('19), GMC Sierra 4wd ('10)
|-
|K||Chevy Silverado 1500 4wd ('25-'26), Silverado HD 2500/3500 4wd ('25-'26)
|-
|K||Chevy Tahoe 4wd ('10-'24), Suburban 4wd ('10-'24), Suburban HD 4wd ('24-'26), Avalanche 4wd ('10-'13), GMC Yukon 4wd ('10), Yukon XL 4wd ('10),<br> Cadillac Escalade 4wd ('10), Escalade ESV 4wd ('10), Escalade EXT 4wd ('10)
|-
|K||Cadillac Professional Chassis for Limousine (Based on DTS '10-'11)
|-
|K||Cadillac Commercial Chassis for Hearse (Based on DTS '10-'11)
|-
|L||Chevy Equinox 2wd & Awd '10-'17, Captiva Sport 2wd '12-'15, Captiva Sport Awd '12, GMC Terrain 2wd & Awd '10-'17, Saturn Vue 2wd & Awd '10
|-
|L||GMC Terrain 2wd & Awd '18-'26
|-
|L||Buick Envista '24-'26, Chevy Trax '24-'26
|-
|M||Buick Encore GX 2wd & Awd ('20-'26), Chevy Trailblazer 2wd & Awd ('21-'26)
|-
|N||Cadillac SRX 2wd & Awd '10-'16, Saab 9-4X 2011
|-
|N||GMC Acadia 2wd & Awd '17-'26, Cadillac XT5 2wd & Awd '17-'26
|-
|N||Hummer H3, H3T 2010
|-
|P||Chevy Orlando (Canada only: '12-'14)
|-
|P||Cadillac XT6 2wd & Awd '20-'25
|-
|P||Cadillac Lyriq EV 2wd & Awd '23-'25
|-
|R||GMC Acadia 2wd '10-'16, Acadia Limited 2wd '17, Saturn Outlook 2wd '10, Buick Enclave 2wd '10-'17, Chevy Traverse 2wd '10-'17
|-
|R||Buick Enclave 2wd '18-'24, Chevy Traverse 2wd '18-'23
|-
|R||Buick Enclave 2wd '25-'26, Chevy Traverse 2wd '24-'26
|-
|S||Chevy Traverse Limited 2wd '24
|-
|S||Chevy Colorado 2wd ('10-'12, '15-'26), GMC Canyon 2wd ('10)
|-
|T||Chevy Colorado 4wd ('10-'12, '15-'26), GMC Canyon 4wd ('10)
|-
|T||Chevy Traverse Limited Awd '24
|-
|U||GMC Sierra 1500 4wd ('22-'26), Sierra HD 2500/3500 4wd ('25-'26)
|-
|V||GMC Acadia Awd '10-'16, Acadia Limited Awd '17, Saturn Outlook Awd '10, Buick Enclave Awd '10-'17, Chevy Traverse Awd '10-'17
|-
|V||Buick Enclave Awd '18-'24, Chevy Traverse Awd '18-'23
|-
|V||Buick Enclave Awd '25-'26, Chevy Traverse Awd '24-'26
|-
|W||Chevy Silverado 1500 2wd ('19-'21), Silverado LTD 1500 2wd ('22), Silverado HD 2500/3500 2wd ('20-'24)
|-
|X||Buick Envision 2wd & Awd '16-'20, Chevy Equinox 2wd & Awd '18-'26
|-
|Y||Chevy Silverado 1500 4wd ('19-'21), Silverado LTD 1500 4wd ('22), Silverado HD 2500/3500 4wd ('20-'24)
|-
|Z||Cadillac XT4 2wd & Awd '19-'25, Buick Envision 2wd '21-'23, Buick Envision Awd '21-'26
|-
|1||GMC Sierra 2wd ('11-'18), Sierra Limited 1500 2wd ('19), Sierra HD 2500/3500 2wd ('19), Yukon 2wd ('11-'26), Yukon XL 2wd ('11-'26)
|-
|1||GMC Canyon 2wd ('25-'26)
|-
|2||GMC Sierra 4wd ('11-'18), Sierra Limited 1500 4wd ('19), Sierra HD 2500/3500 4wd ('19), Yukon 4wd ('11-'26), Yukon XL 4wd ('11-'26)
|-
|2||GMC Canyon 4wd ('25-'26)
|-
|3||Cadillac Escalade 2wd ('11-'24), Escalade ESV 2wd ('11-'24)
|-
|3||Cadillac Optiq EV ('25-), Cadillac Vistiq EV ('26-)
|-
|4||Cadillac Escalade 4wd ('11-'24), Escalade ESV 4wd ('11-'24), Escalade EXT 4wd ('11-'13)
|-
|5||GMC Canyon 2wd ('11-'12, '15-'24)
|-
|5||Chevy Tahoe 2wd ('25-'26), Suburban 2wd ('25-'26)
|-
|6||GMC Canyon 4wd ('11-'12, '15-'24)
|-
|6||Chevy Tahoe 4wd ('25-'26), Suburban 4wd ('25-'26)
|-
|7||GMC Savana 2wd ('11-'26)
|-
|8||GMC Savana 4wd ('11-'14)
|-
|8||GMC Sierra 1500 2wd ('19-'21), Sierra Limited 1500 2wd ('22), Sierra HD 2500/3500 2wd ('20-'24)
|-
|8||Cadillac Escalade 2wd ('25-'26), Escalade ESV 2wd ('25-'26)
|-
|9||GMC Sierra 1500 4wd ('19-'21), Sierra Limited 1500 4wd ('22), Sierra HD 2500/3500 4wd ('20-'24)
|-
|9||Cadillac Escalade 4wd ('25-'26), Escalade ESV 4wd ('25-'26)
|-
|0||GMC Hummer EV pickup ('22-'25), GMC Hummer EV SUV ('24-'25), Chevy Silverado EV ('24-'26), GMC Sierra EV ('24-'25)
|}
====Series 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle====
The Series is specified as character 6 of the American GM VIN for light trucks.
{| border=1 style="margin:auto;"
!VIN
!Description
|-
|A (following L)||Saturn Vue XE 2wd ('10)
|-
|E (following L)||Saturn Vue XR V6 2wd ('10)
|-
|K (following L)||Saturn Vue XR-L V6 2wd ('10)
|-
|T (following R)||Saturn Outlook XE 2wd ('10)
|-
|U (following R)||Saturn Outlook XE Premium 2wd ('10)
|-
|V (following R)||Saturn Outlook XR-L 2wd ('10)
|-
|W (following R)||Saturn Outlook XR-L Premium 2wd ('10)
|-
|T (following V)||Saturn Outlook XE Awd ('10)
|-
|U (following V)||Saturn Outlook XE Premium Awd ('10)
|-
|V (following V)||Saturn Outlook XR-L Awd ('10)
|-
|W (following V)||Saturn Outlook XR-L Premium Awd ('10)
|-
|G (following N)||Hummer H3, H3T Base model ('10)
|-
|H (following N)||Hummer H3, H3T Adventure ('10)
|-
|J (following N)||Hummer H3, H3T Luxury ('10)
|-
|K (following N)||Hummer H3, H3T Alpha w/cloth ('10)
|-
|L (following N)||Hummer H3, H3T Alpha w/Leather ('10)
|-
|P (following N)||Saab 9-4X 3.0i 2wd ('11)
|-
|R (following N)||Saab 9-4X 3.0i Awd ('11)
|-
|S (following N)||Saab 9-4X 3.0i Premium 2wd ('11)
|-
|T (following N)||Saab 9-4X 3.0i Premium Awd ('11)
|-
|U (following N)||Saab 9-4X Aero Awd ('11)
|}
===Platform & Series Codes 1985- Passenger Car===
GM used a lettered system of automobile platform codes for three decades. These letters were used as the 4th position of the VIN. Though today's GM platforms use Greek characters, they are still encoded with Latin characters in the 4th position. Position 5 encodes the specific model and trim level of the vehicle.
{| border=1 style="margin:auto;"
!List of GM platforms
!Platform<br>Code
!Series<br>Code
!:Category:General Motors vehicles|Model
|-
|rowspan=14|GM A platform
|rowspan=14|A||W||Chevrolet Celebrity 1985-1990
|-
|E||Pontiac 6000 ''SE'' 1986-1988
|-
|F||Pontiac 6000 1985-1988, 6000 ''LE'' 1989-1991
|-
|G||Pontiac 6000 ''LE'' 1985-1988
|-
|H||Pontiac 6000 ''STE'' 1985-1989
|-
|J||Pontiac 6000 ''SE'' 1989-1991
|-
|G||Oldsmobile Cutlass Ciera ''S'' Sedan 1993-1994
|-
|J||Oldsmobile Cutlass Ciera ''LS'' 1985, Cutlass Ciera 1986-1989 & Cutlass Cruiser 1985-1989,<br /> Cutlass Ciera ''S'' Coupe 1986-1987, Cutlass Ciera ''S'' 1990-1991 & Cutlass Cruiser ''S'' 1990-1994, Cutlass Ciera ''SL'' & Cutlass Cruiser ''SL'' 1995, Ciera ''SL'' sedan & wagon 1996
|-
|L||Oldsmobile Cutlass Ciera 1990-1991, Cutlass Ciera ''S'' Sedan 1992
|-
|M||Oldsmobile Cutlass Ciera ''Brougham'' 1985-1988, Cutlass Ciera ''SL'' Coupe 1986-1989, Cutlass Ciera ''SL'' Sedan 1989-1993, Cutlass Cruiser ''Brougham'' 1987-1988, Cutlass Cruiser ''SL'' 1989-1993
|-
|S||Oldsmobile Cutlass Ciera ''International Series'' 1988-1990
|-
|G||Buick Century ''T-Type'' 1985-1986, Century ''Special'' 1991-1996
|-
|H||Buick Century ''Custom'' 1985-1995
|-
|L||Buick Century ''Limited'' 1985-1993, Century Estate Wagon 1986-1989
|-
|rowspan=14|GM B platform
|rowspan=14|B||L||Chevrolet Impala 1985, Caprice 1986-1992, Caprice Classic 1993-1996, Impala SS 1995-96
|-
|N||Chevrolet Caprice Classic 1985-1992, Caprice Classic LS 1993-1994,<br /> Caprice Classic LTZ 1991-1993, Impala SS 1994
|-
|U||Chevrolet Caprice Classic Brougham/Brougham LS 1987-1990
|-
|L||Pontiac Parisienne 1985-1986, Safari Wagon 1987-1989
|-
|T||Pontiac Parisienne Brougham 1985-1986
|-
|N||Oldsmobile Delta 88 Royale 1985
|-
|P||Oldsmobile Custom Cruiser 1985-1992
|-
|V||Oldsmobile Delta 88 Royale Brougham LS 1985
|-
|Y||Oldsmobile Delta 88 Royale Brougham 1985
|-
|N||Buick Le Sabre ''Custom'' 1985, Roadmaster sedan 1992-1996
|-
|P||Buick Le Sabre ''Limited'' 1985
|-
|R||Buick Le Sabre Estate Wagon 1985-1989, Estate Wagon 1990,<br /> Roadmaster Estate Wagon 1991-1996
|-
|T||Buick Roadmaster ''Limited'' sedan 1992-1996
|-
|V||Buick Electra Estate Wagon 1985-1989
|-
|rowspan=13|GM C platform - front-wheel drive
|rowspan=13|C
|V||Oldsmobile Touring Sedan 1988-1990, 98 Touring Sedan 1991-1993
|-
|W||Oldsmobile 98 Regency Brougham 1985-1990, 98 Regency Elite 1991-1996
|-
|X||Oldsmobile 98 Regency 1985-1990, 1992-1994
|-
|F||Buick Electra T-Type 1985-1990
|-
|U||Buick Electra Park Avenue Ultra 1989-1990, Park Avenue Ultra 1991-1996
|-
|W||Buick Electra Park Avenue 1985-1990, Park Avenue 1991-1996
|-
|X||Buick Electra 1985-1986, Electra Limited 1987-1990
|-
|B||1985-1992 Cadillac Fleetwood, Fleetwood D'Elegance, 1993 Cadillac Sixty Special
|-
|D||1985-1993 Cadillac DeVille
|-
|G||1991-1992 Cadillac Fleetwood Sixty Special
|-
|H||1985-1987 Cadillac Fleetwood Limousine
|-
|S||1987-1990 Cadillac Fleetwood Sixty Special
|-
|T||1991-1993 Cadillac DeVille Touring Sedan
|-
|rowspan=3|GM G platform (models formerly on C platform)
|rowspan=3|C
|-
|U||Buick Park Avenue Ultra 1997-2005
|-
|W||Buick Park Avenue 1997-2005
|-
|rowspan=2|GM D platform
|rowspan=2|D||W||1985-1986 Cadillac Fleetwood Brougham, 1987-1992 Cadillac Brougham
|-
|W||1993-1996 Cadillac Fleetwood
|-
|rowspan=31|GM Delta I platform
|rowspan=31|A
|-
|A||Chevrolet Cobalt LS w/manual trans. 2010
|-
|B||Chevrolet Cobalt LS w/automatic trans. 2010
|-
|C||Chevrolet Cobalt 1LT w/manual trans. 2010
|-
|D||Chevrolet Cobalt 1LT w/automatic trans. 2010
|-
|E||Chevrolet Cobalt 2LT w/manual trans. 2010
|-
|F||Chevrolet Cobalt 2LT w/automatic trans. 2010
|-
|G||Chevrolet Cobalt SS Turbo 2010
|-
|H||Chevrolet Cobalt (base model w/XFE) 2010
|-
|K||Chevrolet Cobalt (base model) 2005, Cobalt LS 2006-2008, Cobalt LS w/man. trans. 2009
|-
|L||Chevrolet Cobalt LS 2005, Cobalt LT 2006-2008, Cobalt LT w/manual trans. 2009
|-
|M||Chevrolet Cobalt SS 2006-2007, Cobalt Sport 2008
|-
|P||Chevrolet Cobalt SS Supercharged 2005-2007, SS Turbo 2008-2009
|-
|S||Chevrolet Cobalt LS w/automatic trans. 2009
|-
|T||Chevrolet Cobalt LT w/automatic trans. 2009
|-
|Z||Chevrolet Cobalt LT 2005, Cobalt LTZ 2006-2007
|-
|L||Pontiac G5 2007-2008, G5 w/manual trans. 2009
|-
|N||Pontiac G5 GT 2007-2008, G5 GT w/manual trans. 2009
|-
|S||Pontiac G5 w/automatic trans. 2009
|-
|T||Pontiac G5 GT w/automatic trans. 2009
|-
|F||Saturn Ion sedan Level 1 w/manual trans. 2003-2005
|-
|G||Saturn Ion sedan Level 1 w/automatic trans. 2003-2005
|-
|J||Saturn Ion sedan Level 2 w/automatic trans. 2003-2007
|-
|K||Saturn Ion sedan Level 3 w/manual trans. 2003-2007
|-
|L||Saturn Ion sedan Level 3 w/automatic trans. 2003-2007
|-
|M||Saturn Ion coupe Level 2 w/manual trans. 2003-2007
|-
|N||Saturn Ion coupe Level 2 w/automatic trans. 2003-2007
|-
|V||Saturn Ion coupe Level 3 w/manual trans. 2003-2007
|-
|W||Saturn Ion coupe Level 3 w/automatic trans. 2003-2007
|-
|Y||Saturn Ion coupe Red Line 2004-2007
|-
|Z||Saturn Ion sedan Level 2 w/manual trans. 2003-2007
|-
|rowspan=9|GM E platform
|rowspan=9|E
|-
|V||Oldsmobile Toronado Trofeo 1988-1992
|-
|Z||Oldsmobile Toronado Brougham 1985-1986, Toronado 1987-1992
|-
|C||Buick Reatta 1988-1991
|-
|Y||Buick Riviera T-Type 1985-1986
|-
|Z||Buick Riviera 1985-1993
|-
|C||Cadillac Eldorado Collector Series 2002
|-
|L||Cadillac Eldorado 1985-2002
|-
|T||Cadillac Eldorado Touring Coupe 1994-2002
|-
|rowspan=26|GM Epsilon I platform
|rowspan=26|Z||A||Chevrolet Malibu Fleet 2010-2012
|-
|B||Chevrolet Malibu LS 2010-2012
|-
|C||Chevrolet Malibu 1LT 2010-2012
|-
|D||Chevrolet Malibu 2LT 2010-2012
|-
|E||Chevrolet Malibu LTZ 2010-2011, Malibu 1LZ 2012
|-
|F||Chevrolet Malibu Hybrid 2008-2010, Malibu 3LT 2012
|-
|G||Chevrolet Malibu LS 2008-2009, Malibu 2LZ 2012
|-
|H||Chevrolet Malibu 1LT 2008-2009
|-
|J||Chevrolet Malibu 2LT 2008-2009
|-
|K||Chevrolet Malibu LTZ 2008-2009
|-
|S||Chevrolet Malibu 2004-2005, Malibu LS 2006-2007, Malibu Classic LS 2008
|-
|T||Chevrolet Malibu LS 2004-2005, Malibu LT 2006-2007, Malibu Classic LT 2008
|-
|U||Chevrolet Malibu LT 2004-2005, Malibu LTZ 2006-2007
|-
|W||Chevrolet Malibu SS 2006-2007
|-
|A||Pontiac G6 Sedan 2010
|-
|F||Pontiac G6 2.4L Sedan (Base model) 2006, G6 Value Leader (Base model w/1SV) 2007-2008
|-
|G||Pontiac G6 3.5L Sedan (Base model) 2005-2006, G6 (Base model) 2007-2009
|-
|H||Pontiac G6 GT 2005-2009
|-
|J||Pontiac G6 (Base model) 2009 1/2 (Mid-Cycle Revision)
|-
|K||Pontiac G6 GT 2009 1/2 (Mid-Cycle Revision)
|-
|L||Pontiac G6 GXP 2009 1/2 (Mid-Cycle Revision)
|-
|M||Pontiac G6 GTP 2006-2007, G6 GXP 2008-2009
|-
|R||Saturn Aura Green Line 2007-2009
|-
|S||Saturn Aura XE 2007-2009
|-
|V||Saturn Aura XR 2007-2008, Aura XR 2.4L 2009
|-
|X||Saturn Aura XR V6 2009
|-
|rowspan=6|GM F platform
|rowspan=6|F||P||Chevrolet Camaro Sport Coupe 1985-2002, Convertible 1987-1992, 1994-2002
|-
|S||Chevrolet Camaro Berlinetta 1985-1986
|-
|S||Pontiac Firebird 1985-2002, Firebird ''Formula'' 1987-1992
|-
|V||Pontiac Firebird ''Formula / Trans Am'' 1993-2002, Firebird ''Trans Am GT'' 1994
|-
|W||Pontiac Firebird ''Trans Am'' 1985-1992, Firebird ''Trans Am GTA'' 1987-1992
|-
|X||Pontiac Firebird ''S/E'' 1985-1986
|-
|rowspan=13|GM G platform - rear-wheel drive
|rowspan=13|G||Z||Chevrolet Monte Carlo 1985-1988
|-
|J||Pontiac Grand Prix 1985-1987
|-
|K||Pontiac Grand Prix LE 1985-1987
|-
|N||Pontiac Bonneville 1985-1986
|-
|P||Pontiac Grand Prix Brougham 1985-1987
|-
|R||Pontiac Bonneville Brougham 1985-1986
|-
|S||Pontiac Bonneville LE 1985-1986
|-
|K||Oldsmobile Cutlass Salon coupe 1985-1987
|-
|M||Oldsmobile Cutlass Supreme ''Brougham'' 1985-1987,<br /> Cutlass Supreme Classic ''Brougham'' 1988
|-
|R||Oldsmobile Cutlass Supreme 1985-1987, Cutlass Supreme Classic 1988
|-
|J||Buick Regal 1985-1987
|-
|K||Buick Regal T-Type 1985-1987
|-
|M||Buick Regal ''Limited'' 1985-1987
|-
|rowspan=4|GM G platform - front-wheel drive
|rowspan=4|G||D||1995-1999 Buick Riviera
|-
|R||1995-1999 Oldsmobile Aurora
|-
|R||2001-2002 Oldsmobile Aurora 3.5
|-
|S||2001-2003 Oldsmobile Aurora 4.0
|-
|rowspan=9|GM H platform
|rowspan=9|H||H||Buick Le Sabre 1987
|-
|P||Buick Le Sabre ''Custom'' 1986-1999
|-
|R||Buick Le Sabre ''Limited'' 1986-1999
|-
|C||Oldsmobile Regency 1997-1998, Eighty Eight 50th Anniversary Edition 1999
|-
|N||Oldsmobile Delta 88 Royale 1986-1988, 88 Royale 1989-1995, Eighty Eight & Eighty Eight LS 1996-99
|-
|Y||Oldsmobile Delta 88 Royale Brougham 1986-1988, 88 Royale Brougham 1989-91, Eighty Eight Royale LS 1992-1995, LSS 1996-1999
|-
|X||Pontiac Bonneville 1987, Bonneville LE 1988-1991, Bonneville ''SE'' 1992-1999
|-
|Y||Pontiac Bonneville SSE 1988-1991, Bonneville ''SSEi'' 1992-1993
|-
|Z||Pontiac Bonneville LE 1987, Bonneville SE 1988-1991, Bonneville ''SSE'' 1992-1999, Bonneville ''SSEi'' 1994-1999
|-
|rowspan=17|GM G platform (models formerly on H platform or their successors)
|rowspan=17|H||A||Buick Lucerne ''CX'' 2010-2011
|-
|B||Buick Lucerne ''CX-2'' 2010
|-
|C||Buick Lucerne ''CXL'' 2010-2011
|-
|D||Buick Lucerne ''CXL V6'' 2006-2009, Lucerne ''CXL Special Edition'' 2010
|-
|E||Buick Lucerne ''CXS'' 2006-2008, Lucerne ''CXL-3'' 2010
|-
|F||Buick Lucerne ''Super'' 2008-2009, Lucerne ''CXL-4'' 2010
|-
|G||Buick Lucerne ''CXL-5'' 2010
|-
|H||Buick Lucerne ''Super 1SP'' 2010
|-
|J||Buick Lucerne ''CXL Premium'' 2010-2011
|-
|K||Buick Lucerne ''Super 1XS'' 2010, Lucerne ''Super'' 2011
|-
|P||Buick Lucerne ''CX'' 2006-2009
|-
|R||Buick Lucerne ''CXL V8'' 2006-2007, Lucerne ''CXL Special Edition V8'' 2008
|-
|P||Buick Le Sabre ''Custom'' 2000-2005
|-
|R||Buick Le Sabre ''Limited'' 2000-2005
|-
|X||Pontiac Bonneville ''SE'' 2000-2005
|-
|Y||Pontiac Bonneville ''SLE'' 2000-2005
|-
|Z||Pontiac Bonneville ''SSEi'' 2000-2003, Bonneville GXP 2004-2005
|-
|rowspan=23|GM J platform
|rowspan=23|J
|-
|C||Chevrolet Cavalier 1985-1994, RS Convertible 1991-1994
|-
|D||Chevrolet Cavalier CS 1985-1987
|-
|E||Chevrolet Cavalier Type 10 1985, RS 1986-1988,<br /> Type 10 Convertible 1985, RS Convertible 1986-1987
|-
|F||Chevrolet Cavalier Z24 1986-1994, Z24 Convertible 1988-1989, 1992-1994
|-
|C||Chevrolet Cavalier 1995-2005, Cavalier RS 1997-1999
|-
|F||Chevrolet Cavalier LS Sedan 1995-2005, LS Coupe 2003-2005, Z24 Coupe 1995-2001,<br /> LS Convertible 1995-1997, Z24 Convertible 1998-2000
|-
|H||Chevrolet Cavalier Z24 Coupe/Sedan 2002, LS Sport 2002-2005
|-
|S||Chevrolet Cavalier LS Coupe 2002
|-
|B||Pontiac Sunbird 1985-1989, Sunbird LE 1990-1991, Sunbird SE 1992-1993,<br /> Sunbird LE 1994
|-
|C||Pontiac Sunbird LE 1985, Sunbird 1991, Sunbird LE 1992-1993
|-
|D||Pontiac Sunbird SE 1985-1991, Sunbird GT 1992-1993
|-
|L||Pontiac Sunbird SE 1994
|-
|U||Pontiac Sunbird GT 1986-1991
|-
|B||Pontiac Sunfire SE 1995-2002, Convertible 1995-2000, Sunfire 2003-2005
|-
|D||Pontiac Sunfire GT 1995-2002
|-
|C||Oldsmobile Firenza Base model 1985-1987, Firenza S 1985-1987, Firenza 1988
|-
|D||Oldsmobile Firenza LX 1985-1987, Firenza SX 1985, Firenza LC, GT 1986-1987
|-
|E||Buick Skyhawk T-Type 1985-1986
|-
|S||Buick Skyhawk Custom 1985-1987, Skyhawk Sport 1986-1987, Skyhawk 1988-1989
|-
|T||Buick Skyhawk Limited 1985-1987
|-
|G||Cadillac Cimarron 1985-1988
|-
|G, H||Toyota Cavalier (Japan only)
|-
|rowspan=8|GM2900 platform
|rowspan=8|J||C||Saturn L-Series|2004 Saturn L300.1
|-
|D||Saturn L-Series|2004 Saturn L300.2, 2005 Saturn L300
|-
|L||Saturn L-Series|2004 Saturn L300.3
|-
|R||Saturn L-Series|Saturn LS w/manual transmission '00/L100 w/manual transmission '01
|-
|S||Saturn L-Series|Saturn LS w/automatic transmission '00/L100 w/automatic transmission '01-'02
|-
|T||Saturn L-Series|Saturn LS1 w/manual transmission '00/L200 w/manual transmission '01-'03, LW200 w/manual trans. '02
|-
|U||Saturn L-Series|Saturn LS1 w/automatic transmission '00/L200 w/automatic transmission '01-'03,<br> Saturn LW1 w/automatic transmission '00/LW200 w/automatic transmission '01-'03
|-
|W||Saturn L-Series|Saturn LS2 '00, LW2 '00, L300 '01-'03, LW300 '01-'03
|-
|rowspan=5|GM K platform
|rowspan=5|K||D||Cadillac Deville 1994-1999
|-
|E||Cadillac Deville D'Elegance 1997-1999
|-
|F||Cadillac Deville Concours 1994-1999
|-
|S||Cadillac Seville 1985-1993 / Cadillac Seville SLS 1994-1997
|-
|Y||Cadillac Seville Touring Sedan / Cadillac Seville STS 1990-1997
|-
|rowspan=9|GM G platform (models formerly on K platform)
|rowspan=9|K||A||2010-2011 Cadillac DTS
|-
|D||2000-2005 Cadillac Deville, 2006-2009 Cadillac DTS, 2010-2011 DTS Luxury
|-
|E||2000-2005 Cadillac Deville DHS
|-
|F||2000-2005 Cadillac Deville DTS
|-
|H||2010-2011 Cadillac DTS Premium
|-
|P||2010-2011 Cadillac DTS Platinum
|-
|R||2010-2011 Cadillac DTS Livery
|-
|S|| 1998-2004 Cadillac Seville SLS
|-
|Y|| 1998-2003 Cadillac Seville STS
|-
|rowspan=33|GM Kappa platform
|rowspan=33|M||A||Pontiac Solstice w/automatic transmission 2010
|-
|B||Pontiac Solstice 2006-2007, Solstice w/manual transmission 2008-2009
|-
|B||Pontiac Solstice GXP w/automatic transmission 2010
|-
|C||Pontiac Solstice w/automatic transmission 2008
|-
|D||Pontiac Solstice w/manual transmission 2010
|-
|E||Pontiac Solstice GXP w/manual transmission 2010
|-
|F||Pontiac Solstice GXP w/automatic transmission 2008
|-
|G||Pontiac Solstice GXP 2007, Solstice GXP w/manual transmission 2008-2009
|-
|K||Pontiac Solstice Street Edition w/manual transmission 2009
|-
|N||Pontiac Solstice w/automatic transmission 2009
|-
|S||Pontiac Solstice SCCA SSB Championship Edition (2.4L) 2008
|-
|T||Pontiac Solstice SCCA T2 Championship Edition (2.0L Turbo) 2008
|-
|T||Pontiac Solstice GXP w/automatic transmission 2009
|-
|Z||Pontiac Solstice Street Edition w/automatic transmission 2009
|-
|B||Saturn Sky 2007, Sky w/manual transmission 2008-2009
|-
|B||Saturn Sky Redline w/automatic transmission 2010
|-
|C||Saturn Sky w/automatic transmission 2008
|-
|C||Saturn Sky Ruby Red (Merlot Jewel) Special Edition w/manual transmission 2009
|-
|C||Saturn Sky Preferred w/automatic transmission 2010
|-
|D||Saturn Sky Hydro Blue Special Edition w/manual transmission 2009
|-
|E||Saturn Sky Redline w/manual transmission 2010
|-
|F||Saturn Sky Redline w/automatic transmission 2008
|-
|F||Saturn Sky Preferred w/manual transmission 2010
|-
|G||Saturn Sky Redline 2007, Sky Redline w/manual transmission 2008-2009
|-
|H||Saturn Sky Redline Ruby Red (Merlot Jewel) Special Edition w/manual transmission 2009
|-
|L||Saturn Sky Redline Hydro Blue Special Edition w/manual transmission 2009
|-
|N||Saturn Sky w/automatic transmission 2009
|-
|P||Saturn Sky Ruby Red (Merlot Jewel) Special Edition w/automatic transmission 2009
|-
|R||Saturn Sky Hydro Blue Special Edition w/automatic transmission 2009
|-
|T||Saturn Sky Redline w/automatic transmission 2009
|-
|V||Saturn Sky Redline Ruby Red (Merlot Jewel) Special Edition w/automatic transmission 2009
|-
|X||Saturn Sky Redline Hydro Blue Special Edition w/automatic transmission 2009
|-
|G||Opel GT 2007-2010, Daewoo G2X 2007-2009
|-
|rowspan=8|GM L platform
|rowspan=8|L
|-
|D||Chevrolet Corsica ''Base'' 1994-1996
|-
|T||Chevrolet Corsica ''Base'' 1987-1989, Corsica ''LT'' 1990-1993
|-
|V||Chevrolet Beretta ''Base'' 1987-1996
|-
|W||Chevrolet Beretta "GT" 1989-1993 (RPO Z21) & Beretta ''Z26'' 1994-1996 (RPO Z04)
|-
|Z||Chevrolet Corsica ''LTZ'' 1989-1990 (RPO Z54)
|-
|Z||Chevrolet Beretta "GTZ" 1990-1993 (RPO Z04)
|-
|T||Pontiac Tempest (Canada only)
|-
|rowspan=5|GM M platform
|rowspan=5|M||R||Chevrolet Sprint
|-
|R||Geo Metro LSi, Metro
|-
|R||Pontiac Firefly (Canada only)
|-
|S||Chevrolet Sprint ER
|-
|S||Geo Metro, Metro XFi
|-
|rowspan=32|GM N platform
|rowspan=32|N
|-
|B||Oldsmobile Cutlass 1997, Cutlass ''GL'' 1998-1999
|-
|C||Buick Skylark 4-door ''Custom'' 1987-1991
|-
|D||Buick Skylark 4-door ''Limited'' 1987-1989, Skylark 4-door ''Luxury Edition'' 1990-1991
|-
|D||Chevrolet Malibu 1997-2003, Chevrolet Classic 2004-2005
|-
|E||Chevrolet Malibu ''LS'' 1997-2003
|-
|E||Pontiac Grand Am 1985-1988, Grand Am ''LE'' 1989-1991
|-
|E||Pontiac Grand Am ''SE'' 1992-2005
|-
|F||Oldsmobile Calais 1985-1987, Cutlass Calais 1988, Cutlass Calais ''S'' 1989-1991
|-
|F||Oldsmobile Achieva ''SL'' 1992-1994, Achieva ''SC'' 1994
|-
|F||Oldsmobile Alero ''GLS'' 1999-2004
|-
|F||Pontiac Grand Am ''SE1'' 2000-2004
|-
|G||Oldsmobile Cutlass ''GLS'' 1997-1999
|-
|G||Pontiac Grand Am 1991
|-
|G||Pontiac Grand Am ''SE2'' 2000, 2003-2004
|-
|J||Buick Somerset Regal 1985, Somerset ''Custom'' 1986-1987, Skylark 2-door ''Custom'' 1988-91, Skylark 4-door ''Custom'' 1986
|-
|J||Buick Skylark 1992, Skylark ''Limited'' 1993-1994, Skylark ''Custom'' 1996-1998,<br /> Skylark ''Limited'' & ''Gran Sport'' 1996-1997
|-
|K||Buick Somerset ''T-Type'' 1986
|-
|K||Oldsmobile Cutlass Calais ''International Series'' 1988-1991
|-
|K||Oldsmobile Alero ''GX'' 1999-2004
|-
|L||Oldsmobile Cutlass Calais 1989-1991
|-
|L||Oldsmobile Achieva ''S'' 1992-1995, Achieva ''SL'' 1996-1998, Achieva ''SC'' 1996-1997
|-
|L||Oldsmobile Alero ''GL'' 1999-2004
|-
|M||Buick Somerset Regal ''Limited'' 1985, Somerset ''Limited'' 1986-'87, Skylark 2-door ''Limited'' '88-'89, Skylark 2-door ''Gran Sport'' 1990-1991, Skylark 4-door ''Limited'' 1986
|-
|M||Buick Skylark ''Gran Sport'' 1992-1994
|-
|T||Oldsmobile Calais ''Supreme'' 1985-1987, Cutlass Calais ''SL'' 1988-1991
|-
|V||Buick Skylark 1990-1991
|-
|V||Buick Skylark ''Custom'' 1993-1995, ''Limited'' 1995, ''Gran Sport'' 1995
|-
|V||Pontiac Grand Am ''LE'' 1985-1988
|-
|V||Pontiac Grand Am ''GT1'' 2000-2005
|-
|W||Pontiac Grand Am ''SE'' 1986-1991
|-
|W||Pontiac Grand Am ''GT'' 1992-2005
|-
|rowspan=5|GM P platform - rear-wheel drive
|rowspan=5|P
|-
||E||Pontiac Fiero ''Coupe'' 1985-1988
|-
||F||Pontiac Fiero ''SE'' 1985-1987
|-
||G||Pontiac Fiero ''GT'' 1985-1988
|-
||M||Pontiac Fiero ''Sport coupe'' 1985-1987
|-
|rowspan=1|GM P platform - front-wheel drive
|rowspan=1|P||X||General Motors EV1 1997, 1999
|-
|rowspan=6|GM R platform
|rowspan=6|R
|-
||F||1985-1986 Chevrolet Spectrum
|-
||F||1987-1988 Chevrolet Spectrum 3-door hatchback, 1989 Geo Spectrum 3-door hatchback
|-
||F||1990-1993 Geo Storm
|-
||G||1987-1988 Chevrolet Spectrum 4-door sedan, 1989 Geo Spectrum 4-door sedan
|-
||T||1990-1993 Geo Storm GSi
|-
|rowspan=8|GM S platform
|rowspan=8|S||K||1985-1988 Chevrolet Nova
|-
|K||1989-1997 Geo Prizm, 1998-2002 Chevrolet Prizm
|-
|L||1988 Chevrolet Nova Twin Cam, 1990-1992 Geo Prizm GSi
|-
|L||2003-2008 Pontiac Vibe, 2009-2010 Pontiac Vibe FWD w/manual transmission
|-
|M||2003-2006 Pontiac Vibe ''AWD'', 2009-2010 Pontiac Vibe AWD w/automatic transmission
|-
|N||2003-2006 Pontiac Vibe ''GT'', 2009-2010 Pontiac Vibe GT FWD w/manual transmission
|-
|P||2009-2010 Pontiac Vibe FWD w/automatic transmission
|-
|R||2009-2010 Pontiac Vibe GT FWD w/automatic transmission
|-
|rowspan=32|GM Sigma platform
|rowspan=32|D||A||Cadillac CTS Base model RWD 2010-2013, CTS Coupe Base model RWD 2014
|-
|B||Cadillac CTS Wagon Luxury Collection RWD 2014
|-
|C||Cadillac CTS Base model AWD 2010-2013, CTS Coupe/Wagon Performance Collection RWD 2014
|-
|D||Cadillac CTS Coupe/Wagon Premium Collection RWD 2014
|-
|E||Cadillac CTS Luxury Collection RWD 2010-2013, CTS Coupe Base model AWD 2014
|-
|F||Cadillac CTS Auto. Trans. RWD 2008-2009, CTS Luxury Collection RWD w/Navigation 2010-2013, CTS Wagon Luxury Collection AWD 2014
|-
|G||Cadillac CTS Auto. Trans. AWD 2008-2009, CTS Luxury Collection AWD 2010-2013, CTS Coupe/Wagon Performance Collection AWD 2014
|-
|H||Cadillac CTS Auto. Trans. AWD w/Navigation 2008-2009, CTS Luxury Collection AWD w/Navigation 2010-2013, CTS Coupe/Wagon Premium Collection AWD 2014
|-
|J||Cadillac CTS Auto. Trans. RWD w/Navigation 2008-2009, CTS Performance Collection RWD 2010-2013
|-
|K||Cadillac CTS Performance Collection RWD w/Navigation 2010-2013
|-
|L||Cadillac CTS Performance Collection AWD 2010-2013
|-
|M||Cadillac CTS V6 2003-2004, CTS 2.8L 2005-2007, CTS Man. Trans. RWD 2008-2009, CTS Performance Collection AWD w/Navigation 2010-2013
|-
|N||Cadillac CTS V-Series 2004-2007, 2009
|-
|P||Cadillac CTS 3.6L 2005-2007, CTS Direct Inj. V6 Man. Trans. RWD 2008-2009, CTS Premium Collection RWD w/Navigation 2010-2013
|-
|R||Cadillac CTS Direct Inj. V6 Auto. Trans. RWD 2008
|-
|S||Cadillac CTS Direct Inj. V6 Auto. Trans. AWD 2008-2009, CTS Premium Collection AWD w/Navigation 2010-2013
|-
|T||Cadillac CTS Direct Inj. V6 Auto. Trans. AWD w/Navigation 2008-2009
|-
|U||Cadillac CTS Direct Inj. V6 Auto. Trans. RWD 2009
|-
|V||Cadillac CTS Direct Inj. V6 Auto. Trans. RWD w/Navigation 2008-2009, CTS sedan V-Series 2010-2014, CTS Wagon V-Series 2011-2014, CTS Coupe V-Series 2011-2015
|-
|0||Cadillac CTS Sport Appearance Pkg. 2010
|-
|1||Cadillac CTS Eco Luxury Pkg. 2010
|-
|2||Cadillac CTS Sport Appearance Pkg. 2011
|-
|A||Cadillac STS V6 AWD 2008-2009
|-
|B||Cadillac STS V8 AWD 2008-2009
|-
|C||Cadillac STS V8 2005-2007, STS V8 RWD 2008-2009
|-
|D||Cadillac STS V6 AWD w/Navigation 2008-2009
|-
|K||Cadillac STS V6 RWD w/Navigation 2008-2009
|-
|L||Cadillac STS V8 AWD w/Navigation 2008-2009
|-
|U||Cadillac STS (all models) 2010, STS (Base model) 2011
|-
|W||Cadillac STS V6 2005-2007, STS V6 RWD 2008-2009, STS Luxury 2011
|-
|X||Cadillac STS V-Series 2006-2009, STS Luxury Performance 2011
|-
|Z||Cadillac STS V8 RWD w/Navigation 2008-2009
|-
|rowspan=4|GM T platform - rear-wheel drive
|rowspan=4|T||B|| 1985-1987 Chevrolet Chevette CS
|-
|B||1985-1987 Pontiac Acadian (Canada only)
|-
|J||1985 Pontiac Acadian Scooter (Canada only)
|-
|L||1985-1987 Pontiac 1000
|-
|rowspan=4|GM T platform - front-wheel drive
|rowspan=4|T||N|| Pontiac LeMans 1988, LeMans LE 1989-1991, LeMans SE 1992-1993
|-
|R||1988-1989 Pontiac LeMans SE sedan
|-
|S||1988-1990 Pontiac LeMans GSE AeroCoupe
|-
|X||1988-1993 Pontiac LeMans VL AeroCoupe
|-
|rowspan=3|GM T platform - front-wheel drive
|rowspan=3|A
|-
|R||Saturn Astra XE (US: 2008, Canada: 2008-2009)
|-
|T||Saturn Astra XR (US: 2008, Canada: 2008-2009)
|-
|rowspan=4|Daewoo T200 platform
|rowspan=4|T||D||Chevrolet Aveo Special Value 2004-2008, Base model 2004, LS 2005-2011, Aveo 1LT 2009-2011
|-
|G||Chevrolet Aveo LT 2005-2008, Aveo 2LT 2009-2011
|-
|J||Chevrolet Aveo LS 2004
|-
|D||Pontiac G3 2009
|-
|rowspan=2|GM V platform - front-wheel drive
|rowspan=2|V||R||1987-1992 Cadillac Allanté with standard removable hardtop
|-
|S||1990-1993 Cadillac Allanté
|-
|rowspan=2|GM V platform - rear-wheel drive
|rowspan=2|V||R||1997-2001 Cadillac Catera
|-
|X||2004-2006 Pontiac GTO coupe
|-
|rowspan=49|GM W platform
|rowspan=49|W
|-
|A||Chevrolet Impala ''LS'' 2010-2013, Impala Limited ''LS'' 2014-2016
|-
|B||Chevrolet Impala ''LS'' 2006-2009, Impala ''LT'' 2010-2013, Impala Limited ''LT'' 2014-2016
|-
|C||Chevrolet Impala ''LT'' 3.9L 2006-2009, Impala ''LTZ'' 2010-2013, Impala Limited ''LTZ'' 2014-2016
|-
|D||Chevrolet Impala ''SS'' 2006-2009, Impala ''Police'' 2010-2013, Impala Limited ''Police'' 2014-2016
|-
|E||Chevrolet Impala ''Taxi'' 2010-2012
|-
|F||Chevrolet Impala 2000-2005, Impala ''LS'' Fleet (1FL) 2011-2013
|-
|G||Chevrolet Impala ''LT'' Fleet (2FL) 2011-2013
|-
|H||Chevrolet Impala ''LS'' 2000-2005
|-
|J||Chevrolet Monte Carlo ''LS'' 2006-2007
|-
|K||Chevrolet Monte Carlo ''LT'' 3.9L 2006, Monte Carlo ''LT'' 3.5L 2007
|-
|L||Chevrolet Lumina 1990-2001, Lumina ''LS'' 1997-1999
|-
|L||Chevrolet Monte Carlo ''SS'' 2006-2007
|-
|M||Chevrolet Monte Carlo ''LT'' 3.5L 2006
|-
|N||Chevrolet Lumina ''Euro'' 1990-1994, Lumina ''LS'' 1995-1996, Lumina ''LTZ'' 1997-1999
|-
|N||Chevrolet Monte Carlo ''LTZ'' 2006
|-
|P||Chevrolet Lumina ''Z34'' 1991-1994, Impala ''SS'' 2004-2005
|-
|S||Chevrolet Impala ''Police'' 2006-2009
|-
|T||Chevrolet Impala ''LT'' 3.5L 2006-2009
|-
|U||Chevrolet Impala ''LTZ'' 2006-2009
|-
|V||Chevrolet Impala ''50th Anniversary Edition'' 2008
|-
|W||Chevrolet Monte Carlo ''LS'' 1995-2005
|-
|X||Chevrolet Monte Carlo ''Z34'' 1995-1999, Monte Carlo ''SS'' 2000-2004, Monte Carlo ''LT'' 2005
|-
|Z||Chevrolet Monte Carlo ''SS Supercharged'' 2004-2005
|-
|C||Pontiac Grand Prix ''GXP'' 2005-2008
|-
|H||Pontiac Grand Prix ''LE'' 1991-1993
|-
|J||Pontiac Grand Prix 1988-1989, Grand Prix ''LE'' 1990, Grand Prix ''SE'' 1991-2000
|-
|K||Pontiac Grand Prix ''LE'' 1988-1989, Grand Prix ''SE1'' 2000-2003
|-
|P||Pontiac Grand Prix ''SE'' 1988-1990, Grand Prix ''GT'' 1991-1993, 1997-2003,<br /> Grand Prix ''GT1'' 2004, Grand Prix 2005-2008
|-
|R||Pontiac Grand Prix ''GTP'' 1999-2005, Grand Prix ''GT'' 2006-2007
|-
|S||Pontiac Grand Prix ''GT2'' 2004, Grand Prix ''GT'' 2005
|-
|T||Pontiac Grand Prix ''STE'' 1990-1993
|-
|H||Oldsmobile Cutlass Supreme 1988-1991, Cutlass Supreme ''S'' 1992-1994,<br /> Cutlass Supreme ''SL'' 1995-1997, Intrigue 1998, Intrigue ''GX'' 1999-2002
|-
|R||Oldsmobile Cutlass Supreme ''International Series'' 1988-1993
|-
|S||Oldsmobile Cutlass Supreme ''SL'' 1988-1991, Intrigue ''GL'' 1998-2002
|-
|T||Oldsmobile Cutlass Supreme Convertible 1990-1995
|-
|X||Oldsmobile Intrigue ''GLS'' 1998-2002
|-
|B||Buick Regal ''Custom'' 1988-1996, Regal ''GS'' Coupe 1995-1996, Regal ''LS'' 1997-2004
|-
|C||Buick Lacrosse ''CX'' 2005-2009
|-
|D||Buick Regal ''Limited'' 1988-1996, Lacrosse ''CXL'' 2005-2009
|-
|E||Buick Lacrosse ''CXS'' 2005-2008
|-
|F||Buick Regal ''GS'' Coupe 1992-1994, Regal ''GS'' Sedan 1992-2004
|-
|F||Buick Allure ''CX'' 2005-2009 (Canada only)
|-
|H||Buick Allure ''CXS'' 2005-2008 (Canada only)
|-
|J||Buick Allure ''CXL'' 2005-2009 (Canada only)
|-
|N||Buick Lacrosse ''Super'' 2008-2009
|-
|P||Buick Allure ''Super'' 2008-2009 (Canada only)
|-
|S||Buick Century ''Custom'' 1997-2005
|-
|Y||Buick Century ''Limited'' 1997-2002
|-
|rowspan=3|GM X platform
|rowspan=3|X||B||1985 Buick Skylark Custom
|-
|C||1985 Buick Skylark Limited
|-
|X||1985 Chevrolet Citation II
|-
|rowspan=39|GM Y platform
|rowspan=39|Y||V||2004-2009 Cadillac XLR
|-
|X||2006-2009 Cadillac XLR V-Series
|-
|Y||1985-2008 Chevrolet Corvette (all models except '90-'95 ZR-1)
|-
|Z||1990-1995 Chevrolet Corvette ZR-1
|-
|G||2009 Chevrolet Corvette GT1 Championship Edition (Base & Z06)
|-
|R||2009 Chevrolet Corvette ZR1 (after early production)
|-
|Y||2009 Chevrolet Corvette (Base model, Early production Z06, Early production ZR1)
|-
|Z||2009 Chevrolet Corvette Z06 (after early production)
|-
|A||2010-2013 Chevrolet Corvette Standard 1LT Man. Trans.
|-
|B||2010-2013 Chevrolet Corvette Preferred 2LT Man. Trans.
|-
|C||2010-2013 Chevrolet Corvette Premium 3LT Man. Trans.
|-
|D||2010-2013 Chevrolet Corvette Custom 4LT Man. Trans.
|-
|E||2010-2013 Chevrolet Corvette Standard 1LT Auto. Trans.
|-
|F||2010-2013 Chevrolet Corvette Preferred 2LT Auto. Trans.
|-
|G||2010-2013 Chevrolet Corvette Premium 3LT Auto. Trans.
|-
|H||2010-2013 Chevrolet Corvette Custom 4LT Auto. Trans.
|-
|J||2010-2013 Chevrolet Corvette Z06 Standard 1LZ Man. Trans.
|-
|K||2010-2013 Chevrolet Corvette Z06 Premium 2LZ Man. Trans.
|-
|L||2010-2013 Chevrolet Corvette Z06 Custom 3LZ Man. Trans.
|-
|M||2010-2013 Chevrolet Corvette ZR1 Standard 1ZR Man. Trans.
|-
|N||2010-2013 Chevrolet Corvette ZR1 Custom 3ZR Man. Trans.
|-
|P||2010-2013 Chevrolet Corvette Grand Sport Standard 1LT Man. Trans.
|-
|R||2010-2013 Chevrolet Corvette Grand Sport Preferred 2LT Man. Trans.
|-
|S||2010-2013 Chevrolet Corvette Grand Sport Premium 3LT Man. Trans.
|-
|T||2010-2013 Chevrolet Corvette Grand Sport Custom 4LT Man. Trans.
|-
|U||2010-2013 Chevrolet Corvette Grand Sport Standard 1LT Auto. Trans.
|-
|V||2010-2013 Chevrolet Corvette Grand Sport Preferred 2LT Auto. Trans.
|-
|W||2010-2013 Chevrolet Corvette Grand Sport Premium 3LT Auto. Trans.
|-
|X||2010-2013 Chevrolet Corvette Grand Sport Custom 4LT Auto. Trans.
|-
|Y||2013 Chevrolet Corvette 427 Convertible Collector Edition Premium 3LT Man. Trans.
|-
|Z||2013 Chevrolet Corvette 427 Convertible Collector Edition Custom 4LT Man. Trans.
|-
|1||2013 Chevrolet Corvette 60th Anniversary Edition Custom 4LT Man. Trans.
|-
|2||2013 Chevrolet Corvette 60th Anniversary Edition Custom 4LT Auto. Trans.
|-
|3||2013 Chevrolet Corvette Grand Sport 60th Anniversary Edition Custom 4LT Man. Trans.
|-
|4||2013 Chevrolet Corvette Grand Sport 60th Anniversary Edition Custom 4LT Auto. Trans.
|-
|5||2013 Chevrolet Corvette Z06 60th Anniversary Edition Custom 3LZ Man. Trans.
|-
|6||2013 Chevrolet Corvette ZR1 60th Anniversary Edition Custom 3ZR Man. Trans.
|-
|7||2013 Chevrolet Corvette 427 Convertible 60th Anniversary Edition Custom 4LT Man. Trans.
|-
|8||2013 Chevrolet Corvette 427 Convertible Collector Edition Preferred 2LT Man. Trans.
|-
|rowspan=13|GM Z platform
|rowspan=13|Z
|-
|E||Saturn SC1 (manual transmission 2-Door) 1993-1999
|-
|F||Saturn SC1 (automatic transmission 2-Door) 1993-1999, SL (manual transmission) 1991-02
|-
|G||Saturn SC (manual transmission) 1991-1992, SC2 (manual transmission 2-Door) 1993-99,<br /> SL1 (manual transmission) 1991-2002, SW1 (manual transmission) 1993-1999
|-
|H||Saturn SC (automatic transmission) 1991-92, SC2 (automatic transmission 2-Door) '93-'99,<br /> SL1 (automatic transmission) 1991-02, SW1 (automatic transmission LHD) '93-'99
|-
|J||Saturn SL2 (manual transmission) 1991-2002, SW2 (manual transmission) 1993-2001
|-
|K||Saturn SL2 (automatic transmission) 1991-2002, SW2 (automatic transmission 1993-1999)
|-
|M||Saturn SW1 "Postal" [SWP] (automatic transmission RHD) 1999-2001 <br>(Made for US Postal Service rural route mail carriers)
|-
|N||Saturn SC1 (manual transmission 3-Door) 1999-2002, SW2 (automatic transmission 2000-01)
|-
|P||Saturn SC1 (automatic transmission 3-Door) 1999-2002
|-
|R||Saturn SC2 (manual transmission 3-Door) 1999-2002
|-
|S||Saturn SL Spring Special 2002
|-
|Y||Saturn SC2 (automatic transmission 3-Door) 1999-2002
|-
|rowspan=3|GM Zeta platform (VE)
|rowspan=3|E||C||Pontiac G8 GT
|-
|P||Pontiac G8 GXP
|-
|R||Pontiac G8 (Base model)
|-
|rowspan=2|GM Zeta platform (VF)
|rowspan=2|F||1||2014-2017 Chevrolet SS w/automatic transmission
|-
|2||2015-2017 Chevrolet SS w/manual transmission
|-
|GM Zeta platform (WM)
|M||K||2011-2013 Chevrolet Caprice PPV
|-
|GM Zeta platform (WN)
|N||S||2014-2017 Chevrolet Caprice PPV
|-
|rowspan=19|GM Zeta platform (models formerly on F platform)
|rowspan=19|F||A||Chevrolet Camaro ''LS'' automatic transmission 2010-2011, ''2LS'' automatic transmission 2012-2014, ''LS'' manual transmission 2015
|-
|B||Chevrolet Camaro ''LT'' automatic transmission 2010-2014, ''2LS'' automatic transmission 2015
|-
|C||Chevrolet Camaro ''2LT'' automatic transmission 2010-2014, ''LT'' manual transmission 2015
|-
|D||Chevrolet Camaro ''LT'' automatic transmission 2015
|-
|E||Chevrolet Camaro ''LS'' manual transmission 2010-2014, ''2LT'' manual transmission 2015
|-
|F||Chevrolet Camaro ''LT'' manual transmission 2010-2014, ''2LT'' automatic transmission 2015
|-
|G||Chevrolet Camaro ''2LT'' manual transmission 2010-2014, ''SS'' manual transmission 2015
|-
|H||Chevrolet Camaro ''SS'' automatic transmission 2015
|-
|J||Chevrolet Camaro ''SS'' automatic transmission 2010-2014. Note: Must have "J" in 8th position of VIN.
|-
|J||Chevrolet Camaro ''ZL1'' automatic transmission 2012. Note: Must have "P" in 8th position of VIN.
|-
|J||Chevrolet Camaro ''2SS'' manual transmission 2015
|-
|K||Chevrolet Camaro ''2SS'' automatic transmission 2010-2015
|-
|L||Chevrolet Camaro ''ZL1'' automatic transmission 2013-2014, ''ZL1'' manual transmission 2015
|-
|M||Chevrolet Camaro ''ZL1'' automatic transmission 2015
|-
|S||Chevrolet Camaro ''SS'' manual transmission 2010-2014. Note: Must have "W" in 8th position of VIN.
|-
|S||Chevrolet Camaro ''ZL1'' manual transmission 2012. Note: Must have "P" in 8th position of VIN.
|-
|S||Chevrolet Camaro ''Z/28'' manual transmission 2014. Note: Must have "E" in 8th position of VIN.
|-
|T||Chevrolet Camaro ''2SS'' manual transmission 2010-2014
|-
|Z||Chevrolet Camaro ''ZL1'' manual transmission 2013-2014, ''Z/28'' manual transmission 2015
|-
|}
RHD= Right-Hand Drive
====Model Line 2010- Passenger Car (Using Vehicle Platforms introduced 2010 or later)====
The Model Line is specified as character 4 of the American GM VIN for Passenger Cars.
{| border=1 style="margin:auto;"
!VIN
!Description
|-
|A||Cadillac ATS 2013-2019
|-
|A||Cadillac CTS sedan 2014-2019, CTS V-Series sedan 2016-2019
|-
|B||Chevrolet Cruze 2016-2019
|-
|C||Chevrolet Spark 2013-2022, Spark EV 2014-2016
|-
|D||Cadillac CT4 2020-2026
|-
|D||Cadillac CT5 2020-
|-
|F||Chevrolet Camaro 2016-2024
|-
|F||Chevrolet Bolt EV 2017-2023, Bolt EUV 2022-2023, Bolt 2027
|-
|G||Buick LaCrosse 2010-2016
|-
|G||Buick Regal 2011-2020, Buick Regal TourX 2018-2020
|-
|J||Chevrolet Sonic 2016-2020
|-
|K||Cadillac CT6 2016-2020
|-
|M||Cadillac Celestiq EV 2025-
|-
|P||Buick Verano 2012-2017
|-
|P||Chevrolet Cruze 2011-2015, Cruze Limited 2016
|-
|R||Cadillac ELR 2014, 2016
|-
|R||Chevrolet Volt 2011-2019
|-
|W||Buick Cascada 2016-2019
|-
|Y||Chevrolet Corvette 2014-
|-
|Z||Buick LaCrosse 2017-2019
|-
|Z||Chevrolet Malibu 2016-2025
|-
|1||Cadillac XTS 2013-2019
|-
|1||Chevrolet Impala 2014-2020
|-
|1||Chevrolet Malibu 2013-2015, Malibu Limited 2016
|-
|}
===Body style codes 1987- Passenger Car===
The Body type is specified as character 6 of the American GM VIN for passenger cars.
{| border=1 style="margin:auto;"
!VIN
!Description
|-
|1||Two-Door Coupe/Sedan
|-
|2||Two-Door Hatchback
|-
|3||Two-Door Convertible
|-
|4||Two-Door Wagon ('91-'92 Geo Storm Hatchback)
|-
|5||Four-Door Sedan
|-
|6||Four-Door Hatchback
|-
|7||Four-Door Hatchback ('89-'90 Geo Prizm hatchback)
|-
|8||Four-Door Station Wagon
|-
|9||Four-Door Station Wagon - High Roof Monocab
|}
===American restraint types 1987-===
The restraint type is specified as character 7 of the American GM VIN for passenger cars.
{{center/top}}
====Restraint codes for passenger cars 1987-2009====
{{center/end}}
{| border=1 style="margin:auto;"
!VIN Code
!Description
|-
|1||Active (Manual) belts 1987-1996
|-
|2||Active (Manual) belts plus driver and passenger front airbags 1992-2005<br />(For '94-'96 Pontiac Grand Prix coupe: Passive (Automatic) belts plus driver and passenger front airbags)
|-
|3||Active (Manual) belts plus driver side front airbag 1988-1996 <br />(For '94 Geo Prizm: Active (Manual) belts plus driver and passenger front airbags)
|-
|4||Passive (Automatic) belts 1987-1996
|-
|4||Active (Manual) belts plus driver and passenger front & side airbags 1997-2005
|-
|4||Active (Manual) belts plus driver and passenger front & side curtain airbags 2006-2009
|-
|5||Passive (Automatic) belts plus driver side front airbag 1992-1996
|-
|5||Active (Manual) belts plus driver and passenger front airbags & driver-side side impact airbag 2000-2005
|-
|5||Active (Manual) belts plus driver and passenger front airbags & occupant sensor 2006-2009
|-
|6||Passive (Automatic) belts plus driver and passenger front airbags 1994-1996
|-
|6||Active (Manual) belts plus driver and passenger front & side airbags & occupant sensor 2000-2009
|-
|7||Active (Manual) belt driver & Passive (Automatic) belt passenger plus driver and passenger front airbags 1996
|-
|7||Active (Manual) belts plus driver and passenger front & side airbags & rear side airbags 2000-2005
|-
|7||Active (Manual) belts plus driver and passenger front & side & side curtain airbags & occupant sensor 2006-2009
|-
|8||Active (Manual) belts plus driver and passenger front & side curtain airbags & occupant sensor 2006-2009
|-
|9||
|}
{{center/top}}
====Restraint codes for passenger cars 2010-====
{{center/end}}
{| border=1 style="margin:auto;"
!VIN Code
!Description
|-
|D||Active (Manual) belts plus driver and passenger front & side airbags 2010-
|-
|E||Active (Manual) belts plus driver and passenger front & side & side curtain airbags 2010-2017, 2027
|-
|F||Active (Manual) belts plus driver and passenger front & side curtain airbags 2010
|-
|G||Active (Manual) belts plus driver and passenger front & side & rear side & side curtain airbags 2010-2017
|-
|N||Active (Manual) belts plus driver and passenger front & side & front knee airbags 2016-2019
|-
|R||Active (Manual) belts plus driver and passenger front & side & side curtain & front knee airbags 2012-
|-
|S||Active (Manual) belts plus driver and passenger front & side & rear side & side curtain & front knee airbags 2011-
|-
|T||Active (Manual) belts plus driver and passenger front & side & front row side curtain airbags 2011
|-
|U||Active (Manual) belts plus driver and passenger front & side & front row side curtain & front knee airbags 2012-2017
|}
{{center/top}}
====Restraint codes for light trucks 2010-====
{{center/end}}
{| border=1 style="margin:auto;"
!VIN Code
!Description
|-
|A||Active (Manual) belts plus driver-side front airbag 2010
|-
|B||Active (Manual) belts plus driver-side front airbag 2011-
|-
|B||Active (Manual) belts plus driver and passenger front airbags 2010
|-
|C||Active (Manual) belts plus driver and passenger front airbags 2011-
|-
|C||Active (Manual) belts plus driver and passenger front & side airbags 2010
|-
|D||Active (Manual) belts plus driver and passenger front & side airbags 2011-
|-
|D||Active (Manual) belts plus driver and passenger front airbags & side curtain airbags for up to 3 rows of seating 2010
|-
|E||Active (Manual) belts plus driver and passenger front & side & side curtain airbags 2010-
|-
|F||Active (Manual) belts plus driver and passenger front airbags & side curtain airbags for up to 3 rows of seating 2011-2015
|-
|F||Active (Manual) belts plus driver and passenger front & side airbags & side curtain airbags for up to 3 rows of seating 2016-
|-
|H||Active (Manual) belts plus driver-side front airbag & driver-side side-impact airbag & driver-side side curtain airbag 2023-2024
|-
|K||Active (Manual) belts plus driver and passenger front & side & side curtain & front center airbags 2013-
|-
|L||Active (Manual) belts plus driver and passenger front & side & side curtain & front center & driver-side knee airbags 2017-2023
|-
|M||Active (Manual) belts plus driver and passenger front & side & side curtain & front center & front knee airbags 2025-
|-
|R||Active (Manual) belts plus driver and passenger front & side & side curtain & front knee airbags 2017-
|-
|S||Active (Manual) belts plus driver and passenger front & side & rear side & side curtain & front knee airbags 2013-
|-
|T||Active (Manual) belts plus driver-side front airbag & driver- and passenger-side side-impact airbags & side curtain airbags 2023-
|-
|U||Active (Manual) belts plus driver and passenger front & side & front row side curtain & front knee airbags 2013-2019
|}
===American engine codes 1981-===
GM encodes the engine type in character 8 of the VIN. The following table outlines the various engines encoded there:
====Engine codes for passenger cars====
Warning: Issues with decoding are related to year/model combinations. Each year has a different breakdown for each code along with plants and some model/trim breakdowns over years.
Entry: 1985-1988 Pontiac Fiero has a 9 engine code for the 2.8L L44 V6. Entry: 1986-1990 Cadillac Brougham, Oldsmobile 307 Cu. In. V8 vin code Y.
{| border=1 style="margin:auto;"
!VIN
!RPO
!Size
!Type
!Fuel
!Valvetrain
!Engine Family/Notes/Applications
|-
|A||LD5||3.8 L||V6||2 Barrel Carburetor |2BBL||OHV||Buick V6. (231 cu. in.) '81 Chevy Camaro (CA), Pontiac Catalina, Firebird, LeMans, Buick Century,<br /> '81-'83 Chevy Malibu (CA), '81-'84 Monte Carlo, Caprice, Impala (CA), '81-'87 Pontiac Grand Prix, Oldsmobile Cutlass/Cutlass Supreme, Buick Regal, '81-'85 Oldsmobile Delta 88, Buick LeSabre,<br /> '81-'86 Pontiac Bonneville, '84 Parisienne
|-
|A||LG0||2.3 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Oldsmobile Quad 4 H.O. '89-'94 Pontiac Grand Am, '89-'91 Oldsmobile Cutlass Calais, '92-'94 Achieva, '90 Cutlass Supreme, '90-'94 Chevy Beretta
|-
|A||LH2||4.6 L||V8||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 32 valve||Cadillac Northstar V8 (For RWD) (Premium V). '04-'09 Cadillac XLR, '05-'10 Cadillac STS
|-
|A||LCV||2.5 L||Straight-4|I4||Direct Injection|DI||DOHC,<br /> 16 valve||GM Ecotec engine, Gen III. VVT. '13 Chevy Malibu, '16 Malibu Limited, '16-'19 Impala,<br /> '13-'16 Cadillac ATS
|-
|A||LV7||1.4 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Small Gasoline Engine. VVT. Made in Changwon, S. Korea. '16-'22 Chevy Spark.
|-
|B||LG2||3.8 L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||Buick V6. '86 Oldsmobile 98, Toronado, Buick Electra, Riviera.
|-
|B||L26||4.9 L||V8||Fuel injection#Multi-port fuel injection|MFI||OHV||Cadillac High Technology V8.<br /> '91-'93 Cadillac Eldorado, Seville, '91-'95 DeVille, '91-'92 Fleetwood, '91-'93 Sixty Special
|-
|B||LE5||2.4 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. VVT. '06-'08 Chevy Cobalt, '06-'07 Saturn Ion, '06-'10 Pontiac G6, Solstice,<br /> '07-'08 Pontiac G5, '07-'10 Saturn Sky, '08-'09 Saturn Aura, '08-'10 Chevy Malibu
|-
|B||LUV||1.4L||I4 Turbo||Fuel injection#Sequential Multi-port fuel injection|SFI||DOHC,<br /> 16 valve||GM Family 0 Engine, Gen III. VVT. '12-'20 Chevy Sonic, '13-'15 Chevy Cruze, '16 Cruze Limited
|-
|C||L17||1.6 L||Straight-4|I4||2 Barrel Carburetor |2BBL||SOHC,<br /> 8 valve||Isuzu G161Z engine made by GM in US. '82-'87 Chevy Chevette, Pontiac T1000/1000
|-
|C||LN3||3.8 L||V6||Fuel injection#Multi-port fuel injection|MFI||OHV||Buick V6 (3800). '88-'90 Oldsmobile 98, Toronado, Buick Electra, Riviera, Reatta, <br /> '88-'91 Buick LeSabre, Oldsmobile Delta 88/Eighty Eight, Pontiac Bonneville
|-
|C||L47||4.0 L||V8||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 32 valve||Oldsmobile Aurora V8 (Premium V). Oldsmobile Aurora '95-'99, Aurora 4.0 '01-'03
|-
|C||LS4||5.3 L||V8||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads. Active Fuel Management.<br /> Transversely mounted for FWD. '05-'08 Pontiac Grand Prix GXP, '06-'07 Chevy Monte Carlo SS,<br /> '06-'09 Chevy Impala SS, '08-'09 Buick LaCrosse Super.
|-
|C||LAF||2.4 L||Straight-4|I4||Direct Injection|DI||DOHC,<br /> 16 valve||GM Ecotec engine, Gen II. VVT. Buick LaCrosse '10-'11, Regal '11.
|-
|C||LUJ||1.4L||I4 Turbo||Fuel injection#Sequential Multi-port fuel injection|SFI||DOHC,<br /> 16 valve||GM Family 0 Engine, Gen III. VVT. Early production engines were made in Aspern, Austria; later made in Flint, MI. '12 Chevy Cruze
|-
|D||LJ5||1.8 L||Straight-4|I4||Indirect injection Diesel||SOHC,<br /> 8 valve||Isuzu 4FB1 diesel engine imported from Japan. '81-'86 Chevy Chevette
|-
|D||LD2||2.3 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Oldsmobile Quad 4. '88-'95 Pontiac Grand Am, '88-'91 Oldsmobile Cutlass Calais, '92-'95 Achieva,<br /> '88-'91 &'95 Buick Skylark, '90-'91 Pontiac Grand Prix, Oldsmobile Cutlass Supreme,<br /> '95 Chevy Cavalier, Pontiac Sunfire
|-
|D||LC3||4.4 L||V8 Supercharged||Fuel injection#Sequential Multi-port point injection|SFI||DOHC,<br /> 32 valve||Cadillac Northstar V8 (Premium V). '06-'09 Cadillac XLR V-Series, Cadillac STS V-Series
|-
|E||LK9||3.0 L||V6||2 Barrel Carburetor |2BBL||OHV||Buick V6. '82-'85 Oldsmobile Cutlass Ciera, Buick Century, '85 Oldsmobile 98, Buick Electra
|-
|E||LA1||3.4 L||V6||Fuel injection#Sequential Multi-port point injection|SFI||OHV||Chevrolet 60° V6. '99-'05 Grand Am, '99-'04 Alero, '00-'05 Impala, Monte Carlo
|-
|E||L03||5.0 L||V8||Fuel injection#Throttle Body injection|TBI||OHV||Gen I Chevy Small-Block V8 (305 cu. in.). '88-'92 Camaro/Firebird, '89-'93 Chevy Caprice,<br /> '91 Buick Roadmaster Estate wagon, '91-'92 Oldsmobile Custom Cruiser, Cadillac Brougham.
|-
|E||LXV||1.6 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Family 1 Gen 3 engine. W/VVT. '09-'11 Chevy Aveo, '09 Pontiac G3
|-
|E||LS7||7.0 L||V8||Fuel injection#Sequential Multi-port point injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads.<br /> '06-'13 Corvette Z06, '13 Corvette 427, '14-'15 Camaro Z/28
|-
|E||LH7||1.6 L||I4 Turbo||Direct injection <br /> Common-rail Diesel||DOHC,<br /> 16 valve||GM Medium Diesel engine ("Whisper Diesel"). Made by Opel in Szentgotthárd, Hungary.<br /> Aluminum Block & Heads. '17-'19 Chevy Cruze Diesel.
|-
|F||LV8||4.3 L||V8||2 Barrel Carburetor |2BBL||OHV||Oldsmobile "Rocket" V8 (260 cu. in.) '81 Oldsmobile Cutlass, Delta 88.
|-
|F||L61||2.2 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen I. '00-'04 Saturn L-Series, '02-'05 Chevy Cavalier, Pontiac Sunfire, Grand Am,<br /> '02-'04 Oldsmobile Alero, '03-'06 Saturn Ion, '04-'06 Chevy Malibu, '05-'06 Chevy Cobalt
|-
|F||L61||2.2 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. '07-'08 Chevy Cobalt, Malibu, Pontiac G5, '07 Saturn Ion.
|-
|F||LB9||5.0 L||V8||Tuned-port fuel injection|TPI||OHV||Gen I Chevy Small-Block V8. (305 cu. in.). '85-'92 Chevy Camaro, Pontiac Firebird.
|-
|G||L46||1.8 L||I4||2 Barrel Carburetor |2BBL||OHV||Chevrolet "122" engine. '82 J-cars.
|-
|G||L69||5.0 L||V8||4 Barrel Quadrajet Carburetor |4BBL||OHV||Gen I Chevy Small-Block V8 (High Output 5.0L). (305 cu. in.)<br /> '84-'86 Camaro/Firebird, '84-'88 Chevy Monte Carlo SS
|-
|G||LM3||2.2 L||I4||Fuel injection#Throttle Body injection|TBI||OHV||Chevrolet "122" engine. '90-'91 Chevy Cavalier & Corsica/Beretta.
|-
|G||LS1||5.7 L||V8||Fuel injection#Multi-port fuel injection|MFI||OHV||Gen III Chevy Small-Block V8. (346 cu. in.) Aluminum Block & Heads.<br /> '97-'04 Corvette, '98-'02 Camaro/Firebird, '04 Pontiac GTO
|-
|G||LF1||3.0L||V6||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. VVT. 2010 Buick LaCrosse, Cadillac CTS
|-
|G||LWE||1.8 L||Straight-4|I4||Fuel injection#Sequential Multi-port fuel injection|SFI||DOHC,<br /> 16 valve||GM Family 1 engine, Gen III. VVT. PZEV emissions.<br /> '13-'15 Chevy Cruze, '16 Cruze Limited, '13-'18 Sonic.
|-
|H||LG4||5.0 L||V8||4 Barrel Quadrajet Carburetor |4BBL||OHV||Gen I Chevy Small-Block V8. (305 cu. in.) '81-'87 F-bodies, '81-'83 Chevy Malibu, '81-'85 Impala,<br /> '81-'88 Caprice, Monte Carlo, '83-'86 Pontiac Bonneville, Parisienne, '83-'87 Grand Prix
|-
|H||LE4||2.0 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 8 valve||GM Family II engine. Made in Brazil. '92-'94 Pontiac Sunbird.
|-
|H||LX5||3.5 L||V6||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 24 valve||Oldsmobile "Shortstar" V6 (Premium V). Oldsmobile Intrigue '99-'02, Aurora 3.5 '01-'02.
|-
|H||LAP||2.2 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. VVT. '09 Chevy Cobalt, Pontiac G5.
|-
|H||LUW||1.8 L||Straight-4|I4||Fuel injection#Sequential Multi-port fuel injection|SFI||DOHC,<br /> 16 valve||GM Family 1 engine, Gen III. VVT. '11-'15 Chevy Cruze, '16 Cruze Limited, '12-'18 Sonic.
|-
|J||L39||4.4 L||V8||2 Barrel Carburetor |2BBL||OHV||Gen I Chevy Small-Block V8 (267 cu. in.) '81-'82 Chevy Caprice, Impala, Malibu, Monte Carlo,<br /> '81 Chevy Camaro
|-
|J||LA5||1.8 L||Straight-4|I4 Turbo||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 8 valve||GM Family II engine. Made in Brazil. '84-'86 Pontiac Sunbird, Buick Skyhawk.
|-
|J||LT5||5.7 L||V8||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 32 valve||Based on Chevy Small-Block V8. Designed with Lotus Engineering.<br /> Made by Mercury Marine. Aluminum Block & Heads. '90-'95 Corvette ZR-1
|-
|J||LG8||3.1 L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||Chevrolet 60° V6. Gen III. 3100. '99-'03 Chevy Malibu, '99 Oldsmobile Cutlass, '00-'01 Chevy Lumina,<br /> '00-'03 Pontiac Grand Prix SE, '00-'05 Buick Century
|-
|J||L99||6.2 L||V8||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen IV Chevy Small-Block V8. VVT. With Active Fuel Management. Aluminum Block & Heads.<br /> '10-'15 Camaro SS (auto. trans.)
|-
|J||LTA||4.2 L||V8 Twin Turbo||Direct injection|DI||DOHC,<br /> 32 valve||Cadillac Blackwing V8. VVT. '19-'20 Cadillac CT6 Platinum & V-series
|-
|K||LC3||3.8 L||V6||2 Barrel Carburetor |2BBL||OHV||Chevrolet 90° V6 (Chevy Small-Block V8 Derived). 229 cu. in. <br /> '81-'82 Malibu, Monte Carlo, Impala, Caprice, '81 Camaro.
|-
|K||LC5||1.5 L||I4||2 Barrel Carburetor |2BBL||SOHC,<br /> 8 valve||Isuzu 4XC1 engine. '85 Chevrolet Spectrum.
|-
|K||LT2||2.0 L||Straight-4|I4||Fuel injection#Throttle Body injection|TBI||SOHC,<br /> 8 valve||GM Family II engine. Made in Brazil.<br /> '87-'91 Pontiac Sunbird, '87-'88 Oldsmobile Firenza, Buick Skyhawk.
|-
|K||LT2||2.0 L||Straight-4|I4||Fuel injection#Throttle Body injection|TBI||SOHC,<br /> 8 valve||GM Family II engine. Made in Australia by Holden.<br /> '89-'90 Pontiac LeMans GSE Aerocoupe, '89 LeMans SE sedan
|-
|K||L36||3.8 L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||Buick V6 (3800 Series II). '95-'05: Various W-, H-, C-, & G-body models. '95-'02 Camaro/Firebird.
|-
|K||LZE||3.5L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||GM High Value 60° V6. 3510cc. VVT. Flex-Fuel E85 compatible.<br /> '06-'07 Chevy Monte Carlo, '06-'11 Chevy Impala, '09-'10 Chevy Malibu, Pontiac G6
|-
|K||LEA||2.4 L||Straight-4|I4||Direct Injection|DI||DOHC,<br /> 16 valve||E85 Flex Fuel. GM Ecotec engine, Gen II. VVT. Buick Regal, Verano '12-'17 (except '13 Regal).
|-
|K||LSY||2.0 L||Straight-4|I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||GM Ecotec engine, Gen III. Active Fuel Management. VVT. VVL.<br /> '19 Cadillac CT6, '20+ Cadillac CT4, CT5
|-
|L||LM1||5.7 L||V8||4 Barrel Carburetor |4BBL||OHV||Gen I Chevy Small-Block V8.<br> '81 Camaro Z28 (only w/auto. trans. in US), '81-'82 Impala 9C1 Police, '81 Malibu 9C1 Police
|-
|L||LL1||2.8 L||V6||2 Barrel Carburetor |2BBL||OHV||Chevrolet 60° V6 H.O. (longitudinally mounted). '83-'84 Pontiac Firebird.
|-
|L||LN7||3.0 L||V6||Fuel injection#Multi-port fuel injection|MFI||OHV||Buick V6. '85-'87 Pontiac Grand Am, '85-'88 Oldsmobile & Buick N-bodies,<br /> '86 Oldsmobile Delta 88, Buick LeSabre
|-
|L||L27||3.8 L||V6||Fuel injection#Tuned port injection|TPI||OHV||Buick V6 (3800 Series I). '90-'95 Buick Regal, '91-'94 Oldsmobile 98, Buick Park Avenue, '91 Reatta, '91-'93 Riviera, '91-'92 Oldsmobile Toronado, '92-'95 Buick LeSabre, '92-'94 Pontiac Bonneville, Oldsmobile 88
|-
|L||LNK||1.8 L||Straight-4|I4||Fuel injection#Sequential multi-port injection|SFI||DOHC,<br /> 16 valve||Toyota 2ZZ-GE engine. VVTL-i. '03-'06 Pontiac Vibe GT
|-
|L||LKW||2.5 L||Straight-4|I4||Direct Injection|DI||DOHC,<br /> 16 valve||GM Ecotec engine, Gen III. VVT. VVL. '14-'15 Chevy Malibu, Impala
|-
|L||L3B||2.7L||I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||GM L3B Tripower engine. VVT, VVL. Active Fuel Management. '20+ Cadillac CT4, CT4-V
|-
|M||LY9||1.0 L||Straight-3|I3||2BBL||SOHC,<br /> 6 valve ||Suzuki G10A engine. '85 Chevrolet Sprint
|-
|M||LT3||2.0 L||Straight-4|I4 Turbo||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 8 valve||GM Family II engine. Made in Brazil.<br /> '87-'90 Pontiac Sunbird, '87 Buick Skyhawk T-Type, '87-'89 Pontiac Grand Am SE.
|-
|M||L82||3.1 L||V6||Fuel injection#Sequential Multi Port Fuel injection|SFI||OHV||Chevrolet 60° V6 (transversely mounted). Gen III. 3100. '93-'97 Oldsmobile Cutlass Supreme,<br /> '94-'98 Pontiac Grand Am, Oldsmobile Achieva, Buick Skylark, '94-'99 Pontiac Grand Prix,<br /> '94-'96 Chevy Corsica/Beretta, Oldsmobile Cutlass Ciera, Buick Regal, '94-'99 Century,<br /> '95-'99 Chevy Lumina, Monte Carlo, '97-'99 Chevy Malibu, Oldsmobile Cutlass
|-
|M||LY9||2.6 L||V6||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 24 valve||Opel 54° V6 engine (Made in the UK). Euro-market Cadillac CTS '03-'04.
|-
|M||LGD||3.9L||V6||Fuel injection#Sequential Multi Port Fuel injection|SFI||OHV||E85 Flex Fuel. GM High Value 60° V6. VVT. '09-'11 Chevy Impala, Buick Lucerne
|-
|M||LE2||1.4 L||Straight-4|I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||GM Small Gasoline Engine. VVT. '16-'19 Chevy Cruze.
|-
|N||LF9||5.7 L||V8||Indirect injection Diesel||OHV||Oldsmobile Diesel V8. '81-'85 Chevy Caprice, Impala, '82-'83 Malibu, '82-'84 Monte Carlo,<br /> '81-'84 Pontiac Grand Prix, Bonneville, '81 Catalina, '83-'85 Parisienne,<br /> '81-'84 Oldsmobile 98, '81-'85 Cutlass/Cutlass Supreme, Delta 88, Custom Cruiser, Toronado,<br /> '81-'83 Buick Electra, '81-'85 LeSabre, Electra Estate wagon, Riviera, '82-'83 Regal,<br /> '81-'84 Cadillac DeVille, '81-'85 Fleetwood Brougham, Eldorado, Seville
|-
|N||LG7||3.3 L||V6||Fuel injection#Multi-port fuel injection|MFI||OHV||Buick V6 (3300). '89-'93 Buick Century, Skylark, Oldsmobile Cutlass Ciera, '89-'91 Cutlass Calais,<br /> '92-'93 Achieva, Pontiac Grand Am.
|-
|N||LA3||3.2 L||V6||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 24 valve||Opel 54° V6 engine (Made in the UK). '03-'04 Cadillac CTS
|-
|N||LZ4||3.5L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||GM High Value 60° V6. 3510cc. VVT. '06-'07 Chevy Monte Carlo, '06-'10 Chevy Impala,<br /> '07-'10 Chevy Malibu, Pontiac G6, '07-'08 Saturn Aura
|-
|N||LFR||3.6L||V6||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 24 valve||(Bi-Fuel Gas/CNG). GM High Feature V6. '15-'17 Chevy Impala Bi-Fuel
|-
|P||LQ5||2.0 L||I4||Fuel injection#Throttle Body injection|TBI||OHV||Chevrolet "122" engine. '83-'86 J-cars ('83-'84 for Pontiac).
|-
|P||LT1||5.7 L||V8||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen II Chevy Small-Block V8. Aluminum Heads: '92-'96 Corvette, '93-'97 Camaro/Firebird.<br /> Iron Heads: '94-'96 Chevy Caprice, Impala SS, Buick Roadmaster, Cadillac Fleetwood.
|-
|P||LSJ||2.0 L||SC Straight-4|I4 Supercharged||Fuel injection#Sequential central point injection|SFI||DOHC,<br /> 16 valve||GM Ecotec Gen I. Made by Opel in Kaiserslautern, Germany.<br /> '04-'07 Saturn Ion Red Line, '05-'07 Chevy Cobalt SS Supercharged.
|-
|P||LSA||6.2 L||V8 Supercharged||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads.<br /> Cadillac CTS V-Series '09-'15, Camaro ZL1 '12-'15
|-
|P||LF4||3.6L||V6 Twin Turbo||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. Cadillac CT4-V Blackwing '22+
|-
|R||LR8||2.5L||I4||Fuel injection#Throttle Body injection|TBI||OHV||Pontiac Iron Duke/Tech IV engine. Transversely mounted. '82-'85 Chevy Citation, Buick Skylark,<br /> '82-'84 Pontiac Phoenix, Oldsmobile Omega, '82-'90 Chevy Celebrity, '82-'91 Pontiac 6000,<br /> '82-'92 Oldsmobile Cutlass Ciera, Buick Century, '84-'88 Pontiac Fiero, '90-'92 Chevy Lumina
|-
|R||L81||3.0 L||V6||Fuel injection#Multi-port fuel injection|SFI||DOHC,<br /> 24 valve||Opel 54° V6 engine (Made in the UK). '97-'01 Cadillac Catera, '00-'05 Saturn L-Series
|-
|R||LZ8||3.9L||V6||Fuel injection#Sequential Multi Port Fuel injection|SFI||OHV||GM High Value 60° V6. VVT. Active Fuel Management. '07 Chevy Impala
|-
|R||LS9||6.2 L||V8 Supercharged||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads. '09 Corvette ZR1.
|-
|R||LUK||2.4L||I4||Direct Injection|DI||DOHC,<br /> 16 valve||Mild Hybrid. GM Ecotec Gen II. VVT. '12-'16 Buick LaCrosse eAssist, Regal eAssist,<br /> '13-'14 Chevy Malibu Eco, '14 Chevy Impala Eco
|-
|S||LS5||4.3 L||V8||2 Barrel Carburetor |2BBL||OHV||Pontiac V8. 265 cu. in.<br /> '81 Pontiac Bonneville, Catalina, Firebird, Grand Prix, LeMans, Buick Century, Regal.
|-
|S||LU5||5.0 L||V8||Cross-Fire fuel injection|CFI||OHV||Gen I Chevy Small-Block V8. (305 cu. in.) '83 Camaro, Firebird. Dual throttle-body fuel injection.
|-
|S||LB8||2.8 L||V6||Fuel injection#Multi Port Fuel injection|MPFi||OHV||Chevrolet 60° V6 (longitudinally mounted). '85-'89 Chevy Camaro, Pontiac Firebird.
|-
|S||L32||3.4 L||V6||Fuel injection#Multi Port Fuel injection|MPFi||OHV||Chevrolet 60° V6 (longitudinally mounted). '93-'95 Chevy Camaro, Pontiac Firebird.
|-
|S||LS6||5.7 L||V8||Fuel injection#Sequential Multi Port injection|SFI||OHV||Gen III Chevy Small-Block V8. (346 cu. in.) Aluminum Block & Heads.<br /> '01-'04 Corvette Z06, '04-'05 Cadillac CTS V-Series
|-
|S||LGX||3.6L||V6||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6, 4th gen. VVT. Active Fuel Management. '16-'19 Cadillac ATS, CTS, '16-'20 CT6, '16-'24 Chevrolet Camaro, '17-'19 Buick LaCrosse, '18–'20 Buick Regal GS
|-
|T||LU8||4.9 L||V8 Turbo||4 Barrel Carburetor |4BBL||OHV||Pontiac V8. 301 cu. in. '81 Pontiac Firebird Formula & Trans Am.
|-
|T||LT7||4.3 L||V6||Indirect injection Diesel||OHV||Oldsmobile Diesel V6. FWD version for '82-'85 GM A-bodies.
|-
|T||LS2||4.3 L||V6||Indirect injection Diesel||OHV||Oldsmobile Diesel V6. FWD version for '85 GM C-bodies.
|-
|T||LH0||3.1 L||V6||Fuel injection#Multi Port Fuel injection|MPFi||OHV||Chevrolet 60° V6 (longitudinally mounted). '90-'92 Chevy Camaro, Pontiac Firebird.
|-
|T||LH0||3.1 L||V6||Fuel injection#Multi Port Fuel injection|MPFi||OHV||Chevrolet 60° V6 (transversely mounted). Gen II. '88-'91 Pontiac 6000,<br /> '89-'93 Grand Prix, Oldsmobile Cutlass Supreme, Buick Regal, '90-'94 Chevy Cavalier, Lumina,<br /> '91-'94 Pontiac Sunbird, '90-'93 Chevy Corsica/Beretta, '90 Celebrity
|-
|T||LD9||2.4 L||Straight-4|I4||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 16 valve||Oldsmobile Quad 4 ("2.4 Twin Cam"). '96-'01 Pontiac Grand Am, '96-'97 Oldsmobile Achieva, Buick Skylark, '99-'01 Oldsmobile Alero, '97-'99 Chevy Malibu, '96-'02 Chevy Cavalier, Pontiac Sunfire
|-
|T||LP1||2.8 L||V6||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 24 valve||GM High Feature V6. '05-'07 Cadillac CTS
|-
|T||LS9||6.2 L||V8 Supercharged||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads. '10-'13 Corvette ZR1.
|-
|T||LFV||1.5L||I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||GM Small Gasoline Engine. VVT. '16-'25 Chevy Malibu.
|-
|U||L68||2.5L||I4||Fuel injection#Throttle Body injection|TBI||OHV||Pontiac Iron Duke/Tech IV engine. Transversely mounted. '85-'91 N-bodies
|-
|U||LS2||6.0 L||V8||Fuel injection#Sequential Multi-port fuel injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads.<br /> '05-'07 Corvette, '05-'06 Pontiac GTO, '06-'07 Cadillac CTS V-Series
|-
|U||LE9||2.4 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. E85 Flex-Fuel. 2011-12 Chevy Malibu.
|-
|U||LKN||1.8L||I4||Direct Injection|DI||DOHC,<br /> 16 valve||Full Hybrid. GM Medium Gasoline Engine. VVT. Made in Szentgotthárd, Hungary.<br> '16-'19 Chevy Malibu Hybrid
|-
|V||LT6||4.3 L||V6||Indirect injection Diesel||OHV||Oldsmobile Diesel V6. RWD version.<br /> '82-'83 Chevy Malibu, Monte Carlo, '82-'85 Oldsmobile Cutlass Supreme, Buick Regal
|-
|V||LG5||3.1 L||V6 Turbo||Fuel injection#Multi-port fuel injection|MPFI||OHV||Chevrolet 60° V6. Gen II. Intercooled. (ASC/McLaren modified).<br /> '89-'90 Pontiac Grand Prix Turbo coupe, '90 Grand Prix STE Turbo sedan
|-
|V||LLT||3.6L||V6||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. '08-'11 Cadillac CTS, STS, '10-'11 Chevrolet Camaro, Buick LaCrosse
|-
|V||LHU||2.0 L||Straight-4|I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||E85 Flex Fuel (N/A on Regal GS). GM Ecotec engine, Gen II. VVT.<br /> Buick Regal '11-'13, Verano '13-'16.
|-
|W||L37||4.9 L||V8||4 Barrel Carburetor |4BBL||OHV||Pontiac V8. 301 cu. in. '81 Pontiac Firebird, LeMans Safari wagon.
|-
|W||LB6||2.8 L||V6||Fuel injection#Multi-port fuel injection|MFI||OHV||Gen I/II Chevrolet 60° V6 (transversely mounted). '85 Chevy Citation, Buick Skylark,<br /> '85-'89 Chevy Cavalier, Celebrity, Pontiac 6000, '85-'88 Cadillac Cimarron,<br /> '85-'87 Oldsmobile Firenza, '86-'89 Cutlass Ciera, '87-'88 Buick Century, '87-'89 Chevy Corsica/Beretta, '88-'89 Pontiac Grand Prix, Oldsmobile Cutlass Supreme, Buick Regal
|-
|W||L64||3.1 L||V6||Fuel injection#Multi-port fuel injection|MFI||OHV||Flex-fuel: Gas/M85 or Gas/E85 (2 versions). Gen II Chevrolet 60° V6. '93 Chevy Lumina VFV
|-
|W||L99||4.3 L||V8||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen II Chevy Small-Block V8. '94-'96 Chevy Caprice.
|-
|W||LS3||6.2 L||V8||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads.<br /> '08-'13 Corvette, '10-'15 Camaro SS (man. trans.), '09 Pontiac G8 GXP, '14-'17 Chevy SS
|-
|W||LGY||3.0L||V6 Twin Turbo||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6, 4th gen. VVT. Active Fuel Management. '20+ Cadillac CT5, CT5-V
|-
|X||LE2||2.8 L||V6||2 Barrel Carburetor |2BBL||OHV||Chevrolet 60° V6 (transversely mounted). '81-'85 Chevy Citation, Buick Skylark,<br /> '81-'84 Pontiac Phoenix, Oldsmobile Omega, '82-'86 Chevy Celebrity, Pontiac 6000,<br /> '86 Oldsmobile Cutlass Ciera, Buick Century
|-
|X||LQ1||3.4 L||V6||Fuel injection#Multi-port fuel injection|MPFI||DOHC,<br /> 24 valve||Chevrolet 60° V6 ("Twin Dual Cam V6"). '91-'97 Chevy Lumina, '95-'97 Chevy Monte Carlo,<br /> '91-'96 Pontiac Grand Prix, Oldsmobile Cutlass Supreme
|-
|X||LNF||2.0 L||Straight-4|I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||GM Ecotec engine, Gen II. VVT.<br /> '07-'10 Pontiac Solstice GXP, Saturn Sky Red Line, '08-'10 Chevy Cobalt SS Turbo.
|-
|X||LTG||2.0 L||Straight-4|I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||GM Ecotec engine, Gen III. VVT. '13-'22 Chevy Malibu, '13-'19 Cadillac ATS, '14-'20 Buick Regal,<br /> '14-'19 Cadillac CTS, '16-'23 Chevy Camaro, '16-'18 Cadillac CT6.
|-
|X||LTG||2.0 L||Straight-4|I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||Plug-in hybrid. GM Ecotec engine, Gen III. VVT. '17-'18 Cadillac CT6 PHEV. (VIN starts with LRE)
|-
|Y||LV2||5.0 L||V8||4 Barrel Carburetor |4BBL||OHV||Oldsmobile "Rocket" V8 (307 cu. in.) '86-'90 Chevy Caprice wagon, '87 Caprice sedan (Can.),<br /> '81 Pontiac Bonneville, Catalina, '86 Parisienne, '87-'89 Safari wagon, '81-'84 Oldsmobile 98,<br /> '81-'85 Delta 88, Toronado, '81-'90 Custom Cruiser, '81 Cutlass Cruiser, '82-'87 Cutlass Supreme,<br /> '88 Cutlass Supreme Classic, '81-'84 Buick Electra, '85-'89 Electra Estate wagon,<br /> '81-'85 LeSabre, Riviera, '86-'89 LeSabre Estate wagon, '90 Estate wagon, '86-'87 Regal,<br /> '86 Cadillac Fleetwood Brougham, '87-'90 Brougham
|-
|Y||LD8||4.6 L||V8||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 32 valve||Cadillac Northstar V8 (Torque tuned FWD) (Premium V). '93-'02 Cadillac Eldorado,<br /> '94-'04 Cadillac Seville SLS, '94-'05 Cadillac DeVille, '06-'11 Cadillac DTS,<br /> '04-'05 Pontiac Bonneville GXP, '06-'08 Buick Lucerne
|-
|Y||L76||6.0 L||V8||Fuel injection#Sequential Multi-port fuel injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads. With Active Fuel Management.<br /> '08-'09 Pontiac G8 GT.
|-
|Y||LF1||3.0L||V6||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. VVT. 2011 Cadillac CTS
|-
|Y||LF4||3.6L||V6 Twin Turbo||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. Cadillac ATS-V '16-'19
|-
|Z||LH7||2.8 L||V6||2 Barrel Carburetor |2BBL||OHV||Chevrolet 60° V6 (transversely mounted). H.O. '81-'84 Chevy Citation, '82-'84 Pontiac Phoenix, Oldsmobile Omega ES, Buick Skylark, '83-'84 Pontiac 6000 STE, '84 Chevy Celebrity
|-
|Z||LB4||4.3L||V6||Fuel injection#Throttle Body injection|TBI||OHV||Chevrolet 90° V6 (Chevy Small-Block V8 Derived). '85 Chevy Impala, '85-'90 Caprice,<br /> '92-'93 Caprice 9C6 taxi, '85-'88 Monte Carlo, '85-'86 Pontiac Parisienne, '86-'87 Grand Prix,<br> '86 Bonneville.
|-
|Z||LAT||2.4L||I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Mild Hybrid. GM Ecotec Gen II. VVT. '10 Chevy Malibu Hybrid
|-
|Z||LUZ||2.0 L||I4 Turbo||Direct injection <br /> Common-rail Diesel||DOHC,<br /> 16 valve||GM Family B Diesel (Based on Fiat JTD engine). Made by Opel in Kaiserslautern, Germany.<br /> Iron Block, Aluminum Heads. '14-'15 Chevy Cruze Diesel.
|-
|1||LC1||2.8 L||V6||2 Barrel Carburetor |2BBL||OHV||Chevrolet 60° V6 (longitudinally mounted). '82-'84 Camaro/Firebird.
|-
|1||LL8||2.0 L||I4||Fuel injection#Throttle Body injection|TBI||OHV||Chevrolet "122" engine. '87-'89 Chevy/Olds/Buick J-cars & Chevy L-cars.
|-
|1||L67||3.8 L||V6 Supercharged||Fuel injection#Sequential Multi-port injection|SFI||OHV||Buick V6 (3800 Supercharged Series I). '91-'95 Buick Park Avenue Ultra,<br /> '92-'95 Pontiac Bonneville, Oldsmobile 98, '95 Buick Riviera, Oldsmobile LSS
|-
|1||L67||3.8 L||V6 Supercharged||Fuel injection#Sequential Multi-port injection|SFI||OHV||Buick V6 (3800 Supercharged Series II). '96-'05 Buick Park Avenue Ultra,<br /> '96-'99 Buick Riviera, Oldsmobile LSS, '96-'03 Pontiac Bonneville, '97-'03 Grand Prix,<br /> '97-'04 Buick Regal, '04-'05 Chevy Impala SS, Monte Carlo SS Supercharged
|-
|1||LZ9||3.9L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||GM High Value 60° V6. VVT.<br /> '06-'07 Chevy Malibu SS, '06-'09 Pontiac G6, '06 Chevy Monte Carlo, Impala, '09-'10 Buick Lucerne
|-
|1||2H0||1.8 L||Straight-4|I4||Fuel injection#Sequential Multi-port fuel injection|SFI||DOHC,<br /> 16 valve||GM Family 1 engine, Gen III. VVT. Made in Szentgotthárd, Hungary. '08 (& '09 in Canada) Saturn Astra
|-
|1||LE5||2.4 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. VVT. '11 & some '12 Chevy Malibu w/LE5 engine.
|-
|2||LQ9||2.5L||I4||Fuel injection#Throttle Body injection|TBI||OHV||Pontiac Iron Duke/Tech IV engine. Longitudinally mounted. '82-'85 Camaro/Firebird.
|-
|2||LS3||1.0 L||Straight-3|I3 Turbo||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 6 valve ||Suzuki G10T engine. '87-'88 Chevrolet Sprint Turbo
|-
|2||LY8||1.3 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 16 valve||Suzuki G13BB engine. '98-'01 Chevrolet Metro
|-
|2||L26||3.8 L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||Buick V6 (3800 Series III). '04-'08 Pontiac Grand Prix, '05-'09 Buick LaCrosse, '06-'08 Buick Lucerne
|-
|2||L77||6.0 L||V8||Fuel injection#Sequential Multi-port fuel injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads. With Active Fuel Management.<br /> E85 Flex Fuel. '11-'17 Chevy Caprice PPV.
|-
|3||LC8||3.8 L||V6|V6 Turbo||4 Barrel Carburetor |4BBL||OHV||Buick V6. 231 cu. in. '81-'82 Buick Regal, Riviera, '81 Chevy Monte Carlo.
|-
|3||LG3||3.8 L||V6||Fuel injection#(Sequential) Multi-port injection|MFI/SFI||OHV||Buick V6. '84-'88 Oldsmobile Cutlass Ciera, Buick Century, '85 & '87 Oldsmobile 98, Buick Electra,<br /> '86-'88 Oldsmobile Delta 88, Buick LeSabre, '87 Oldsmobile Toronado, Buick Riviera,<br /> '87-'88 Pontiac Bonneville.
|-
|3||LW2||4.5 L||V8||Fuel injection#Multi-port fuel injection|MFI||OHV||Cadillac High Technology V8. '90 Cadillac DeVille/Fleetwood/Sixty Special/Eldorado/Seville.
|-
|3||L40||2.3 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 8 valve||Oldsmobile Quad 4 ("Quad OHC"). '92-'94 Pontiac Grand Am, Oldsmobile Achieva, Buick Skylark
|-
|3||LZG||3.9L||V6||Fuel injection#Sequential Multi Port Fuel injection|SFI||OHV||E85 Flex Fuel. GM High Value 60° V6. VVT. Active Fuel Management. '08 Chevy Impala
|-
|3||LFX||3.6L||V6||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. VVT. E85 Flex Fuel.<br /> '12-'16 Buick LaCrosse, '12-'15 Chevrolet Camaro, Cadillac CTS, '12-'17 Chevrolet Caprice PPV,<br /> '12-'20 Chevrolet Impala, '14-'16 Chevrolet Impala Limited, '13-'15 Cadillac ATS, '13-'19 Cadillac XTS
|-
|3||LT6||5.5 L||V8||Direct injection|DI||DOHC,<br /> 32 valve||Chevrolet Gemini Small-Block V8. Aluminum Block & Heads. Flat-plane crank. VVT.<br /> For mid-engine C8 Corvette Z06 '23+.
|-
|4||LC4||4.1 L||V6|V6||4 Barrel Carburetor |4BBL||OHV||Buick V6. '81-'84 Buick LeSabre, Electra, Riviera, Oldsmobile Toronado, '81-'82 Cadillac DeVille, Fleetwood Brougham, Eldorado, Seville, '81-'83 Oldsmobile 98, '82-'84 Buick Regal,<br /> '82 Pontiac Grand Prix, Bonneville G
|-
|4||LC9||1.6 L||Straight-4|I4||2 Barrel Carburetor |2BBL||SOHC,<br /> 8 valve||Toyota 4A-C engine. '85-'88 Chevy Nova
|-
|4||LN2||2.2 L||Straight-4|I4||Fuel injection#(Sequential) Multi-port injection|MPI/SFI||OHV||Chevrolet "122" engine. '92-'02 Cavalier, '95-'02 Sunfire, '92-'96 Corsica/Beretta, '93 Lumina,<br /> '93-'96 Cutlass Ciera, Century.
|-
|4||L32||3.8 L||V6 Supercharged||Fuel injection#Sequential Multi-port injection|SFI||OHV||Buick V6 (3800 Supercharged Series III). '04-'07 Pontiac Grand Prix
|-
|4||LUU||1.4L||I4||Fuel injection#Sequential Multi-port fuel injection|SFI||DOHC,<br /> 16 valve||GM Family 0 Engine, Gen III. VVT. ([[w:EREV|Range extender]]). Early production engines were made in Aspern, Austria; later made in Flint, MI. '11-'15 Chevy Volt, '14 & '16 Cadillac ELR.
|-
|4||LT2||6.2 L||V8||Direct injection|DI||OHV||Gen V Chevy Small-Block V8. Aluminum Block & Heads. Active Fuel Management. VVT.<br /> For mid-engine C8 Corvette Stingray '20+.
|-
|4||LT2||6.2 L||V8||Direct injection|DI||OHV||Full Hybrid. Gen V Chevy Small-Block V8. Aluminum Block & Heads. Active Fuel Management. VVT.<br /> For mid-engine C8 Corvette E-Ray '24+.
|-
|5||LW9||2.5L||I4||2 Barrel Carburetor |2BBL||OHV||Pontiac Iron Duke engine. '81 Chevy Citation, Pontiac Phoenix, Oldsmobile Omega, Buick Skylark.
|-
|5||LR6||4.5 L||V8||Fuel injection#Throttle Body injection|TBI (DFI)||OHV||Cadillac High Technology V8. '88-'89 Cadillac DeVille/Fleetwood/Sixty Special/Eldorado/Seville.
|-
|5||LY9||1.0 L||Straight-3|I3||2BBL||SOHC,<br /> 6 valve ||Suzuki G10A engine. '86 Chevrolet Sprint
|-
|5||LM9||1.0 L||Straight-3|I3||2BBL||SOHC,<br /> 6 valve ||Suzuki G10A engine. '87-'88 Chevrolet Sprint
|-
|5||LW0||1.6 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Toyota 4A-GE engine. '88 Chevy Nova Twin Cam, '90-'92 Geo Prizm GSi
|-
|5||LW0||1.6 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Isuzu 4XE1-UW engine. '90-'91 Geo Storm GSi
|-
|5||LT4||5.7 L||V8||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen II Chevy Small-Block V8. '96 Corvette (man. trans.)
|-
|5||LAT||2.4L||I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Mild Hybrid. GM Ecotec Gen II. VVT. '07-'09 Saturn Aura Green Line, '08-'09 Chevy Malibu Hybrid
|-
|5||LAP||2.2 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. VVT. '10 Chevy Cobalt.
|-
|5||LFW||3.0L||V6||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. VVT. '12-'13 Cadillac CTS, '14 CTS wagon
|-
|5||L3A||1.5L||I4||Direct Injection|DI||DOHC,<br /> 16 valve||GM Small Gasoline Engine. VVT. ([[w:EREV|Range extender]]). '16-'19 Chevy Volt.
|-
|5||LWC||1.6L||I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||GM Medium Gasoline Engine, H.O. VVT. Made in Szentgotthárd, Hungary. '16-'19 Buick Cascada
|-
|5||LS6||6.7 L||V8||Port/Direct injection||OHV||Gen VI Chevy Small-Block V8. Aluminum Block & Heads. Active Fuel Management. VVT.<br /> For mid-engine C8 Corvette Stingray, Grand Sport '27+.
|-
|5||LS6||6.7 L||V8||Port/Direct injection||OHV||Full Hybrid. Gen VI Chevy Small-Block V8. Aluminum Block & Heads. Active Fuel Management. VVT.<br /> For mid-engine C8 Corvette Grand Sport X '27+.
|-
|6||L81||5.7 L||V8||4 Barrel Carburetor |4BBL||OHV||Gen I Chevy Small-Block V8. '81 Corvette
|-
|6||LM1||5.7 L||V8||4 Barrel Carburetor |4BBL||OHV||Gen I Chevy Small-Block V8. '83-'85 Impala 9C1 Police, '86-'88 Caprice 9C1 Police
|-
|6||L73||1.6 L||Straight-4|I4||Fuel injection#Throttle Body injection|TBI||SOHC,<br /> 8 valve||GM Family 1 engine. Made in South Korea by Daewoo. '88-'93 Pontiac LeMans
|-
|6||LP2||1.0 L||Straight-3|I3||Fuel injection#Throttle Body injection|TBI||SOHC,<br /> 6 valve ||Suzuki G10A engine. '89-'97 Geo Metro, '98-'00 Chevrolet Metro
|-
|6||L01||1.6 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Toyota 4A-FE engine. '89-'97 Geo Prizm base/LSi
|-
|6||L01||1.6 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 12 valve||Isuzu 4XE1-V engine. '90-'93 Geo Storm (base model)
|-
|6||L42||2.2 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen I (Bi-Fuel Gas/CNG). '03-'04 Chevy Cavalier
|-
|6||L91||1.6 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||E-TEC II. '04-'07 Chevy Aveo
|-
|6||LXT||1.6 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||E-TEC II. '08 Chevy Aveo
|-
|6||LGW||3.0L||V6 Twin Turbo||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6, 4th gen. VVT. Active Fuel Management. '16-'19 Cadillac CT6
|-
|6||LT4||6.2 L||V8 Supercharged||Direct injection|DI||OHV||Gen V Chevy Small-Block V8. Aluminum Block & Heads. With Active Fuel Management. VVT.<br /> '15-'19 Corvette Z06, '17-'24 Camaro ZL1, '16-'19 Cadillac CTS V-Series,<br /> '22+ Cadillac CT5-V Blackwing
|-
|7||LU5||5.0 L||V8||Cross-Fire fuel injection|CFI||OHV||Gen I Chevy Small-Block V8. (305 cu. in.) '82 Camaro, Firebird. Dual throttle-body fuel injection.
|-
|7||L69||5.0 L||V8||4 Barrel Quadrajet Carburetor |4BBL||OHV||Gen I Chevy Small-Block V8 (High Output 5.0L). (305 cu. in.). '83 F-cars, '83 Chevy Monte Carlo SS
|-
|7||LC5||1.5 L||I4||2 Barrel Carburetor |2BBL||SOHC,<br /> 8 valve||Isuzu 4XC1 engine. '86-'88 Chevrolet Spectrum, '89 Geo Spectrum.
|-
|7||LC2||3.8 L||V6|V6 Turbo||Fuel injection#Sequential multi-port injection|SFI||OHV||Intercooled. Buick V6. '86-'87 Buick Regal. '89 Pontiac 20th Anniversary Turbo Trans Am
|-
|7||LC7||4.1 L||V8||Fuel injection#Multi-port fuel injection|MFI||OHV||Cadillac High Technology V8. '87-'88 Cadillac Allante.
|-
|7||L05||5.7 L||V8||Fuel injection#Throttle Body injection|TBI||OHV||Gen I Chevy Small-Block V8. '89-'93 Chevy Caprice (police only for '89-'91),<br /> '92-'93 Buick Roadmaster, '92 Oldsmobile Custom Cruiser, '90-'92 Cadillac Brougham, '93 Fleetwood.
|-
|7||LL0||1.9 L||Straight-4|I4||Fuel injection#Multi-port injection|MFI||DOHC,<br /> 16 valve||Saturn I4 engine. '91-'02 Saturn S-Series
|-
|7||LY7||3.6 L||V6||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 24 valve||GM High Feature V6. VVT. '04-'09 Cadillac CTS, '05-'07 STS, '05-'08 Buick LaCrosse,<br /> '07-'09 Pontiac G6, Saturn Aura, '08-'09 Pontiac G8, '08-'12 Chevy Malibu
|-
|7||LT1||6.2 L||V8||Direct injection|DI||OHV||Gen V Chevy Small-Block V8. Aluminum Block & Heads. With Active Fuel Management. VVT.<br /> '14-'19 Corvette, '16-'24 Camaro SS
|-
|7||LT7||5.5 L||V8 Twin Turbo||Port/Direct injection||DOHC,<br /> 32 valve||Chevrolet Gemini Small-Block V8. Aluminum Block & Heads. Flat-plane crank. VVT.<br /> For mid-engine C8 Corvette ZR1 '25+. (1,064 hp)
|-
|7||LT7||5.5 L||V8 Twin Turbo||Port/Direct injection||DOHC,<br /> 32 valve||Full Hybrid. Chevrolet Gemini Small-Block V8. Aluminum Block & Heads. Flat-plane crank. VVT.<br /> For mid-engine C8 Corvette ZR1X '26+. (1,250 hp)
|-
|8||LV8||4.3 L||V8||2 Barrel Carburetor |2BBL||OHV||Oldsmobile "Rocket" V8 (260 cu. in.) '82 Oldsmobile Cutlass, Delta 88.
|-
|8||LT8||4.1 L||V8||Fuel injection#Throttle Body injection|TBI (DFI)||OHV||Cadillac High Technology V8. '82-'87 Cadillac DeVille, Eldorado, Seville, '82-'85 Fleetwood Brougham, '85-'87 Fleetwood, '87 Fleetwood Sixty Special.
|-
|8||LC8||3.8 L||V6|V6 Turbo||4 Barrel Carburetor |4BBL||OHV||Buick V6. '83 Buick Regal, Riviera.
|-
|8||L83||5.7 L||V8||Cross-Fire fuel injection|CFI||OHV||Gen I Chevy Small-Block V8. '82, '84 Corvette. Dual throttle-body fuel injection. 1st fuel injected Corvette since 1965.
|-
|8||L98||5.7 L||V8||Tuned-port fuel injection|TPI||OHV||Gen I Chevy Small-Block V8. '85-'91 Corvette, '87-'92 Chevy Camaro, Pontiac Firebird.
|-
|8||LQ6||4.5 L||V8||Fuel injection#Multi-port fuel injection|MFI||OHV||Cadillac High Technology V8. '89-'92 Cadillac Allante.
|-
|8||L24||1.9 L||Straight-4|I4||Fuel injection#Multi-port injection|MFI||SOHC,<br /> 8 valve||Saturn I4 engine. '95-'02 Saturn S-Series
|-
|8||LX9||3.5 L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||GM High Value 60° V6. 3498cc. '04-'06 Chevy Malibu, '05-'06 Pontiac G6
|-
|8||LF3||3.6L||V6 Twin Turbo||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. '14-'19 Cadillac CTS V-Sport, XTS V-Sport
|-
|8||LV6||1.8 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Isuzu 4XF1 engine. '92-'93 Geo Storm GSi.
|-
|8||LV6||1.8 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Toyota 7A-FE engine. '93-'97 Geo Prizm
|-
|8||LV6||1.8 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Toyota 1ZZ-FE engine. VVT-i from '00. '98-'02 Chevrolet Prizm, '03-'08 Pontiac Vibe
|-
|8||LAY||1.8 L||Straight-4|I4||Fuel injection#Sequential multi-port injection|SFI||DOHC,<br /> 16 valve||Toyota 2ZR-FE engine. Dual VVT-i. '09-'10 Pontiac Vibe
|-
|9||L17||1.6 L||Straight-4|I4||2 Barrel Carburetor |2BBL||SOHC,<br /> 8 valve||Isuzu G161Z engine made by GM in US. '81 Chevy Chevette, Pontiac T1000
|-
|9||L62||6.0 L||V8||Fuel injection#Throttle Body injection|TBI (DFI)||OHV||Cadillac 472-series V8 engine family. V8-6-4 cylinder deactivation.<br /> '81 Cadillacs, '82-'84 Fleetwood Limousine.
|-
|9||LC3||3.8 L||V6||2 Barrel Carburetor |2BBL||OHV||Chevrolet 90° V6 (Chevy Small-Block V8 Derived). 229 cu. in. <br /> '83 Malibu, '83-'84 Monte Carlo, Impala, Caprice, '83 Pontiac Parisienne.
|-
|9||LG8||5.0 L||V8||4 Barrel Carburetor |4BBL||OHV||Oldsmobile "Rocket" V8 (307 cu. in.) H.O. '83-'84 Hurst/Olds, '85-'87 Oldsmobile Cutlass 442
|-
|9||LM9||3.8 L||V6|V6 Turbo||Fuel injection#Sequential multi-port injection|SFI||OHV||Buick V6. '84-'85 Buick Regal, Riviera.
|-
|9||L44||2.8 L||V6||Fuel injection#Multi-port fuel injection|MFI||OHV||Chevrolet 60° V6 (transversely mounted). H.O. '85-'88 Pontiac Fiero
|-
|9||LC0||1.5 L||I4 Turbo||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 8 valve||Isuzu 4XC1-T engine. '87-'88 Chevrolet Spectrum Turbo
|-
|9||LK0||1.9 L||Straight-4|I4||Fuel injection#Throttle Body injection|TBI||SOHC,<br /> 8 valve||Saturn I4 engine. '91-'94 Saturn S-Series
|-
|9||L37||4.6 L||V8||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 32 valve||Cadillac Northstar V8 (H.O. FWD) (Premium V). '93 Cadillac Allanté,<br /> '93-'02 Cadillac Eldorado Touring Coupe, '93-'04 Cadillac Seville STS, '96-'05 Cadillac DeVille,<br /> '06-'11 Cadillac DTS, '08-'11 Buick Lucerne Super
|-
|9||L72||1.3 L||Straight-4|I4||Fuel injection#Throttle Body injection|TBI||SOHC,<br /> 8 valve ||Suzuki G13BA engine. '95-'97 Geo Metro
|-
|9||LUJ||1.4L||I4 Turbo||Fuel injection#Sequential Multi-port fuel injection|SFI||DOHC,<br /> 16 valve||GM Family 0 Engine, Gen III. VVT. Early production engines were made in Aspern, Austria; later made in Flint, MI. '11 Chevy Cruze
|-
|9||LL0||1.2 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Daewoo S-TEC II engine (1249 cc). VVT. Made in Changwon, S. Korea. '13-'15 Chevy Spark.
|-
|9||LT5||6.2 L||V8 Supercharged||Port/Direct injection||OHV||Gen V Chevy Small-Block V8. Aluminum Block & Heads. VVT. '19 Corvette ZR1.
|-
|0||LH8||1.8 L||Straight-4|I4||Fuel injection#Throttle Body injection|TBI||SOHC,<br /> 8 valve||GM Family II engine. Made in Brazil.<br /> '82-'86 Pontiac J2000/2000/Sunbird, Oldsmobile Firenza, Buick Skyhawk.
|-
|0||LAX||2.4 L||Straight-4|I4||Fuel injection#Sequential multi-port injection|SFI||DOHC,<br /> 16 valve||Toyota 2AZ-FE engine. VVT-i. '09-'10 Pontiac Vibe
|-
|0||LE9||2.4 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. E85 Flex-Fuel. 2010 Chevy Malibu.
|-
|0||LE5||2.4 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. VVT. Most '12 Chevy Malibu w/LE5 engine.
|}
H.O.=High Output, CNG=Compressed Natural Gas, VVT=Variable Valve Timing, VVL=Variable Valve Lift
====Motor codes for electric passenger cars====
{| class="wikitable"
|-
! VIN !! RPO !! Fuel !! Drive Wheels !! Application/Notes
|-
| 5 ||LN1|| Electricity || Front || '97, '99 General Motors EV1
|-
| 0 ||EN0|| Electricity || Front || '14-'16 Chevrolet Spark EV
|-
| 0 ||EN0|| Electricity || Front || '17-'23 Chevrolet Bolt EV
|-
| 0 ||EN0|| Electricity || Front || '22-'23 Chevrolet Bolt EUV
|-
|}
====Motor codes for LFP-powered electric passenger cars====
{| class="wikitable"
|-
! VIN !! Motor <br /> RPO code !! # of Motors !! Battery Pack <br /> RPO code !! Fuel !! Drive Wheels !! Application/Notes
|-
|-
| V ||P9D (HPB)|| 1 || EJW || Electricity || Front || '27 Chevrolet Bolt
|}
LFP=Lithium Iron Phosphate
====Motor codes for Ultium-powered electric passenger cars====
{| class="wikitable"
|-
! VIN !! Motor <br /> RPO code !! # of Motors !! Battery Module <br /> RPO code !! # of Modules !! Fuel !! Drive Wheels !! Application/Notes
|-
|-
| 1 ||X0E|| 2 || EXN || 16 || Electricity || All || '25- Cadillac Celestiq
|-
| 2 ||X0E|| 2 || EHT || 16 || Electricity || All || '25- Cadillac Celestiq <br> (Battery Module RPO code EHT is Configuration B)
|}
====Engine codes for light trucks====
GM encodes the engine type in character 8 of the VIN. The following table outlines the various engines encoded there:
{| class="wikitable"
|-
! VIN !! RPO !! Size !! Type !! Fuel !! Valvetrain !! Engine Family/Notes/Applications
|-
| A ||LD5|| 3.8L || V6 || Gas ||OHV||2-bbl carb. Buick V6. (231 cu. in.) '81-'84 Chevy El Camino, GMC Caballero (CA emissions).
|-
| A ||LR1|| 1.9L || I4 || Gas ||SOHC,<br /> 8 valve||2-bbl carb. Isuzu G200 engine imported from Japan.<br /> '82-'85 Chevy S-10/GMC S-15, '83-'85 Chevy S-10 Blazer/GMC S-15 Jimmy
|-
| A ||L38|| 2.5L || I4 || Gas ||OHV||TBI. Pontiac Iron Duke/Tech IV engine. '91-'93 Chevy S-10/GMC Sonoma.
|-
| A ||LH2|| 4.6L || V8 || Gas ||DOHC,<br /> 32 valve||SFI. Cadillac Northstar V8 (For RWD) (Premium V). '04-'09 Cadillac SRX
|-
| A ||L20|| 4.8L || V8 || Gas/E85 ||OHV|| Flex Fuel. SFI. Gen IV Chevrolet Small-Block V8. Iron Block/Aluminum Heads. VVT.<br /> '10-'13 GMT900 pickups, '10-'14 Express/Savana
|-
| A ||LCV|| 2.5L || I4 || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen III. Direct Injection. VVT. '15-'22 Chevy Colorado, GMC Canyon,<br /> '17-'20 Buick Envision, '17-'21 GMC Acadia, '19-'21 Chevy Blazer
|-
| B ||LR2|| 2.8L || V6 || Gas ||OHV||2-bbl carb. Chevrolet 60° V6.<br /> '82-'85 Chevy S-10/GMC S-15, '83-'85 Chevy S-10 Blazer/GMC S-15 Jimmy
|-
| B ||LU2|| 4.3L || V6 || Gas ||OHV|| TBI. Chevrolet 90° V6 (Chevy Small-Block V8 Derived). '90-'91 Astro/Safari higher output engine option.
|-
| B ||L81|| 3.0L || V6 || Gas ||DOHC,<br /> 24 valve||SFI. Opel 54° V6 engine (Made in the UK). '02-'03 Saturn Vue
|-
| B ||L33|| 5.3L || V8 || Gas ||OHV||SFI. Gen III Chevrolet Small-Block V8. Vortec 5300 H.O. 310hp. Aluminum Block & Heads.<br /> '05-'06 Silverado/Sierra 1500 4wd ext. cab short bed,<br> '07 Silverado Classic 1500/Sierra Classic 1500 4wd ext. cab short bed.
|-
| B ||LE8|| 2.2L || I4 || Gas/E85 ||DOHC,<br /> 16 valve||Flex-Fuel. SFI. GM Ecotec Gen II. VVT. '09-'10 Chevy HHR
|-
| B ||LC8|| 6.0L || V8 || Gas/CNG ||OHV||Bi-Fuel (Also Gas/LPG in Express/Savana). SFI. Gen IV Chevrolet Small-Block V8. Iron Block & Aluminum Heads. VVT. '11-'20 Express/Savana, '13-'19 Silverado HD/Sierra HD.
|-
| B ||LUV|| 1.4L ||I4 Turbo|| Gas ||DOHC,<br /> 16 valve||GM Family 0 Engine, Gen III. SFI. VVT.<br /> '13-'21 Buick Encore, '15-'21 Chevy Trax (also '13-'14 Trax in Canada)
|-
| C ||LH6|| 6.2L || V8 || Diesel ||OHV||Detroit Diesel V8. For sub-8,500 lb. GVWR trucks '82-'93. '82-'86 C/K pickups, '87 R/V pickups,<br /> '88-'93 C/K, Sierra pickups, '82-'91 Blazer/Jimmy, Suburban, '83-'93 full-size vans
|-
| C ||L34|| 2.0L || I4 || Gas ||DOHC,<br /> 16 valve||Suzuki J20A engine. MFI. '99-'03 Chevrolet Tracker
|-
| C ||LY2|| 4.8L || V8 || Gas ||OHV||SFI. Gen IV Chevrolet Small-Block V8. Iron Block/Aluminum Heads.<br /> '07-'09 GMT900 pickups, '07-'09 Tahoe/Yukon, '08-'09 Express/Savana
|-
| C ||LAF|| 2.4L || I4 || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen II. Direct Injection. VVT. Chevy Equinox, GMC Terrain '11.
|-
| C ||L83|| 5.3L || V8 || Gas/E85 ||OHV|| Flex Fuel. Gen V Chevrolet Small-Block V8 (EcoTec3). Direct injection, VVT. Active Fuel Management<br /> '14-'19 K2XX pickups, '15-'20 K2XX SUVs.
|-
| C ||L2R|| 2.7L ||I4 Turbo||| Gas ||DOHC,<br /> 16 valve||GM L3B Tripower engine ("TurboMax") - Detuned version. Direct Injection. VVT, VVL. Active Fuel Management. '23-'24 Chevy Colorado.
|-
| D ||LE3|| 4.1L || I6 || Gas ||OHV||2-bbl carb. Chevrolet Turbo-Thrift I6.<br /> '81-'84 Chevy/GMC C/K pickups, full-size vans, '81-'82 Blazer/Jimmy
|-
| D ||LG6|| 3.1L || V6 || Gas ||OHV||TBI. Chevrolet 60° V6. '90-'95 U-body minivans.
|-
| D ||L61|| 2.2L || I4 || Gas ||DOHC,<br /> 16 valve||SFI. GM Ecotec Gen I. '02-'07 Saturn Vue, '06 Chevy HHR.
|-
| D ||L61|| 2.2L || I4 || Gas ||DOHC,<br /> 16 valve||SFI. GM Ecotec Gen II. '07-'08 Chevy HHR.
|-
| D ||LLT|| 3.6L || V6 || Gas ||DOHC,<br /> 24 valve||GM High Feature V6. Direct Injection. '09-'16 GMC Acadia, '17 GMC Acadia Limited,<br /> '09-'17 Chevrolet Traverse, Buick Enclave, '09-'10 Saturn Outlook
|-
| D ||LBZ|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine.<br /> Mid '06 Silverado HD/Sierra HD & '07 Silverado Classic HD/Sierra Classic HD
|-
| D ||L84|| 5.3L || V8 || Gas/E85 ||OHV|| Gen V Chevrolet Small-Block V8 (EcoTec3). Direct injection, VVT. With Dynamic Fuel Management<br /> '19+ Chevy/GMC Silverado 1500/Sierra 1500, '21+ Tahoe/Yukon, Suburban/Yukon XL.
|-
| E ||LN8|| 2.5L || I4 || Gas ||OHV||TBI. Pontiac Iron Duke/Tech IV engine.<br /> '85-'90 Chevy/GMC S-10/S-15, Astro/Safari Cargo Van, '85-'88 S-10 Blazer/S-15 Jimmy.
|-
| E ||LLR|| 3.7L || I5 || Gas ||DOHC,<br /> 20 valve||Atlas I5. SFI. VVT.<br /> '07-'12 Colorado/Canyon, '07-'08 Isuzu i-370, '07-'10 Hummer H3, '09-'10 Hummer H3T
|-
| E ||LA1|| 3.4L || V6 || Gas ||OHV||Chevrolet 60° V6. '96 GMT199 (U-body) minivans, '97-'05 GMT200 (U-body) minivans,<br /> '01-'05 Pontiac Aztek, '02-'05 Buick Rendezvous
|-
| F ||LF3|| 5.0L || V8 || Gas ||OHV|| 4-bbl carb. Gen I Chevrolet Small-Block V8. '81-'86 C/K, full-size vans, '81-'82 Blazer/Jimmy.<br /> CA emissions version of LE9 5.0 V8.
|-
| F ||L65|| 6.5L || V8 Turbo || Diesel ||OHV||Detroit Diesel V8. For over-8,500 lb. GVWR Chevy C/K, GMC Sierra trucks '92-'02,<br /> Chevy/GMC Suburban 1500/2500 '94-'99, over-8,500 lb. GVWR Express/Savana '96-'02
|-
| F ||LNJ|| 3.4L || V6 || Gas ||OHV||Chevrolet 60° V6. Made in China by SAIC-GM. '05-'09 Chevy Equinox, '06-'09 Pontiac Torrent.
|-
| F ||L94|| 6.2L || V8 || Gas/E85 ||OHV||Flex-Fuel. Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads. SFI. VVT. Active Fuel Management. '10-'14 GMC Yukon Denali/Yukon XL Denali, Cadillac Escalade/Escalade ESV.
|-
| F ||L20|| 4.8L || V8 || Gas/E85 ||OHV|| Flex Fuel. SFI. Gen IV Chevrolet Small-Block V8. Iron Block/Aluminum Heads. VVT.<br /> '15-'17 Express/Savana
|-
| F ||L82|| 5.3L || V8 || Gas ||OHV|| Gen V Chevrolet Small-Block V8 (EcoTec3). Direct injection, VVT. With Active Fuel Management<br /> '19-'21 Chevy Silverado 1500, GMC Sierra 1500 (T1XX).
|-
| G ||LG9|| 5.0L || V8 || Gas ||OHV|| 2-bbl carb. Gen I Chevrolet Small-Block V8. '81 Chevy/GMC C/K pickups, Blazer/Jimmy, full-size van
|-
| G ||L18|| 8.1L || V8 || Gas ||OHV||MFI. Vortec 8100. Gen VII Chevrolet Big-Block V8. '01-'02 C3500HD, '01-'06 Silverado HD/Sierra HD, '07 Silverado Classic HD/Sierra Classic HD, '01-'06 Suburban/Yukon XL 2500, '02-'06 Avalanche 2500, '01-'02 Express/Savana
|-
| G ||L96|| 6.0L || V8 || Gas/E85 ||OHV||Flex Fuel. SFI. Gen IV Chevrolet Small-Block V8. Iron Block & Aluminum Heads. VVT.<br /> '10-'19 Silverado HD/Sierra HD, '10-'13 Suburban 2500/Yukon XL 2500, '16-'19 Suburban 3500,<br /> '10-'20 Express/Savana.
|-
| G ||LSD|| 1.5L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||GM Small Gasoline Engine. Direct Injection. VVT. '23+ Chevy Equinox, GMC Terrain
|-
| H ||LG4|| 5.0L || V8 || Gas ||OHV||4-bbl carb. Gen I Chevy Small-Block V8. (305 cu. in.) '81-'87 Chevy El Camino, GMC Caballero.
|-
| H ||LE9|| 5.0L || V8 || Gas ||OHV|| 4-bbl carb. Gen I Chevrolet Small-Block V8. '81-'86 C/K pickups, Blazer/Jimmy, Suburban, full-size vans
|-
| H ||L03|| 5.0L || V8 || Gas ||OHV|| TBI. Gen I Chevrolet Small-Block V8. '87 R/V pickups, '88-'95 C/K, Sierra pickups, '87-'95 full-size vans, '87 Blazer/Jimmy, Suburban.
|-
| H ||LN2|| 2.2L || I4 || Gas ||OHV||SFI. Chevrolet "122" engine. '03 Chevy S-10/GMC Sonoma
|-
| H ||LS2|| 6.0L || V8 || Gas ||OHV||SFI. Gen IV Chevy Small-Block V8. Chevy SSR '05-'06, Trailblazer SS '06-'09, Saab 9-7X Aero '08-'09.
|-
| H ||LV3|| 4.3L || V6 || Gas/E85 ||OHV||Flex Fuel. Chevrolet 90° V6 - Gen V Chevrolet Small-Block V6 (EcoTec3). Direct injection, VVT. Active Fuel Management. '14-'21 Chevy Silverado 1500/GMC Sierra 1500.
|-
| J ||L39|| 4.4L || V8 || Gas ||OHV||2-bbl carb. Gen I Chevy Small-Block V8 (267 cu. in.) '81-82 Chevy El Camino, GMC Caballero.
|-
| J ||LL4|| 6.2L || V8 || Diesel ||OHV||Detroit Diesel V8. For over-8,500 lb. GVWR trucks '82-'93. '82-'86 C/K pickups, '87-'91 R/V pickups,<br /> '88-'93 C/K, Sierra pickups, '82-'91 Blazer/Jimmy, Suburban, '83-'93 full-size vans
|-
| J ||L29|| 7.4L || V8 || Gas ||OHV|| MFI. Vortec 7400. Gen VI Chevrolet Big-Block V8.<br /> '96-'00 C/K, Sierra pickups, Express/Savana, '96-'99 Suburban 2500
|-
| J ||LY5|| 5.3L || V8 || Gas ||OHV||SFI. Gen IV Chevrolet Small-Block V8. Active Fuel Management. Iron Block & Aluminum Heads.<br /> '07-'09 Silverado/Sierra 1500, Tahoe/Yukon, Suburban/Yukon XL 1500, Avalanche
|-
| J ||LZ1|| 6.0L || V8 || Gas-Electric Hybrid ||OHV||2-Mode Hybrid. Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads. VVT. Active Fuel Management. '10-'13 Tahoe Hybrid, Yukon Hybrid, Escalade Hybrid, Silverado Hybrid, Sierra Hybrid
|-
| J ||L86|| 6.2L || V8 || Gas ||OHV||Gen V Chevrolet Small-Block V8 (EcoTec3). Direct injection, VVT. Active Fuel Management. <br /> '14-18 Chevy/GMC Silverado 1500/Sierra 1500,<br /> '18-20 Chevy Tahoe Premier, '19-'20 Chevy Suburban Premier, GMC Yukon/Yukon XL SLT,<br /> '15-'20 GMC Yukon Denali/Yukon XL Denali, Cadillac Escalade/Escalade ESV.
|-
| K ||LC3|| 3.8L || V6 || Gas ||OHV||2-bbl carb. Chevrolet 90° V6 (Chevy Small-Block V8 Derived). 229 cu. in. <br /> '81-'82 Chevy El Camino, GMC Caballero (49-state emissions)
|-
| K ||L05|| 5.7L || V8 || Gas ||OHV|| TBI. Gen I Chevrolet Small-Block V8. '87 R/V pickups, '88-'95 C/K, Sierra pickups, '87-'95 full-size vans, '96 G-Classic full-size vans, '87-'94 Blazer, '95 Tahoe, '87-'91 Jimmy, '92-'95 Yukon, '87-'95 Suburban.
|-
| K ||LY6|| 6.0L || V8 || Gas ||OHV||SFI. Gen IV Chevrolet Small-Block V8. Iron Block & Aluminum Heads. VVT.<br /> '07-'09 Silverado HD/Sierra HD, '07-'09 Suburban 2500/Yukon XL 2500, '08-'09 Express/Savana
|-
| K ||LEA|| 2.4L || I4 || Gas/E85 ||DOHC,<br /> 16 valve||Flex Fuel. GM Ecotec engine, Gen II. Direct Injection. VVT. Chevy Equinox, GMC Terrain '12-'17,<br /> Chevy Captiva Sport '12-'14, Chevy Orlando '14.
|-
| K ||L3B|| 2.7L ||I4 Turbo||| Gas ||DOHC,<br /> 16 valve||GM L3B Tripower engine ("TurboMax"). Direct Injection. VVT, VVL. Active Fuel Management.<br /> '19+ Chevy Silverado 1500, GMC Sierra 1500, '23+ Chevy Colorado, GMC Canyon.
|-
| L ||LS9|| 5.7L || V8 || Gas ||OHV|| 4-bbl carb. Gen I Chevrolet Small-Block V8. For sub-8,500 lb. GVWR trucks, vans, Suburban, Blazer/Jimmy (CA) '81-'86.
|-
| L ||L27|| 3.8L || V6 || Gas ||OHV||Buick V6 (3800 Series I). '92-'95 U-body minivans
|-
| L ||LX9|| 3.5L || V6 || Gas ||OHV||GM High Value 60° V6. 3498cc. SFI. '05-'06 GMT201 minivans, '06-'07 Buick Rendezvous
|-
| L ||LH8|| 5.3L || V8 || Gas ||OHV||SFI. Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads.<br /> '08-'09 Hummer H3 Alpha, '09 Colorado/Canyon, Hummer H3T Alpha
|-
| L ||LGH|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine. Mid '10-'16 Express/Savana, '11-'12 Silverado HD/Sierra HD chassis cabs
|-
| L ||L87|| 6.2L || V8 || Gas ||OHV||Gen V Chevrolet Small-Block V8 (EcoTec3). Direct injection, VVT. Dynamic Fuel Management.<br /> '19+ Chevy/GMC Silverado 1500/Sierra 1500, '21+ Tahoe/Yukon, Suburban/Yukon XL,<br /> Cadillac Escalade/Escalade ESV.
|-
| L ||L3T|| 1.3L || I3 Turbo || Gas ||DOHC,<br /> 12 valve||GM E-Turbo Engine. Direct Injection. VVT. '20+ Buick Encore GX, '21+ Chevy Trailblazer.
|-
| M ||LT9|| 5.7L || V8 || Gas ||OHV|| 4-bbl carb. Gen I Chevy Small-Block V8.<br /> For over-8,500 lb. GVWR C/K trucks, full-size vans, Suburban '81-'86, full-size van cutaway '81-'88.<br /> '88 Chevy/GMC R30/3500 Chassis Cab w/C7C (10,500 lb. GVWR),<br /> V30/3500 Chassis Cab w/C7E (11,000 lb. GVWR)
|-
| M ||L30|| 5.0L || V8 || Gas ||OHV||Gen 1+ Chevrolet Small-Block V8. Vortec 5000. CPI.<br /> '96-'99 Chevy C/K, GMC Sierra, '96-'02 Express/Savana
|-
| M ||LNF|| 2.0L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen II. Direct Injection. VVT. 2010 Chevy HHR SS.
|-
| M ||LH6|| 5.3L || V8 || Gas ||OHV||SFI. Gen IV Chevrolet Small-Block V8. Active Fuel Management. Aluminum Block & Heads.<br /> '05-'06 GMT370 SUVs (Trailblazer EXT/Envoy XL/Isuzu Ascender 7-psgr.), '05-'07 Buick Rainier,<br /> '05-'09 GMC Envoy Denali, Saab 9-7X, '06-'08 Chevy Trailblazer, '05 GMC Envoy XUV,<br /> '07-'09 Silverado/Sierra 1500
|-
| M ||LAF|| 2.4L || I4 || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen II. Direct Injection. VVT. Chevy Orlando '12.
|-
| M ||LE2|| 1.4L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||GM Small Gasoline Engine. Direct Injection. VVT. '16-'19 & '21-'22 Buick Encore, '21-'22 Chevy Trax.
|-
| N ||L10|| 1.8L || I4 || Gas ||SOHC,<br /> 8 valve||2-bbl carb. Isuzu G180Z engine imported from Japan. '81-'82 Chevy LUV
|-
| N ||LF9|| 5.7L || V8 || Diesel ||OHV||Oldsmobile Diesel V8. '83-'84 Chevy El Camino/GMC Caballero.
|-
| N ||LB1|| 4.3L || V6 || Gas ||OHV|| 4-bbl carb. Chevrolet 90° V6 (Chevy Small-Block V8 Derived).<br /> '85 Astro/Safari, '85-'86 C/K pickups & full-size vans
|-
| N ||L19|| 7.4L || V8 || Gas ||OHV|| Mark IV Chevrolet Big-Block V8. TBI.<br /> '87-'90 R/V pickups, Suburban 2500, '88-'90 C/K, Sierra pickups, full-size vans
|-
| N ||L19|| 7.4L || V8 || Gas ||OHV|| Gen V Chevrolet Big-Block V8. TBI.<br /> '91 R/V pickups, '91-'95 C/K, Sierra pickups, Suburban 2500, full-size vans. '96 G-Classic full-size vans
|-
| N ||LZ4|| 3.5L || V6 || Gas ||OHV||GM High Value 60° V6. 3510cc. SFI. VVT. '08-'09 Saturn Vue
|-
| N ||LQ9|| 6.0L || V8 || Gas ||OHV|| Gen III Chevrolet Small-Block V8. Vortec 6000 H.O. or VortecMAX. Iron Block/Aluminum Heads.<br /> 345 hp. '02-'06 Cadillac Escalade, '03-'06 Cadillac Escalade ESV, '03-'06 Chevy Silverado SS,<br /> '05-'06 GMC Sierra Denali, '07 GMC Sierra Classic Denali.
|-
| N ||LGZ|| 3.6L || V6 || Gas ||DOHC,<br /> 24 valve||GM High Feature V6, 4th gen. Direct Injection. VVT. Active Fuel Management.<br /> '17-'22 Chevy Colorado, GMC Canyon.
|-
| P ||L49|| 6.5L || V8 || Diesel ||OHV||Detroit Diesel V8. For sub-8,500 lb. GVWR Chevy C/K, GMC Sierra trucks & full-size vans '94-'95
|-
| P ||LM4|| 5.3L || V8 || Gas ||OHV||Gen III Chevrolet Small-Block V8. Vortec 5300. 290hp. Aluminum Block & Heads.<br /> '03-'04 Chevy SSR, '03-'04 GMT370 SUVs (Trailblazer EXT/Envoy XL/Isuzu Ascender 7-psgr.),<br /> '04 Buick Rainier, GMC Envoy XUV
|-
| P ||LE5|| 2.4L || I4 || Gas ||DOHC,<br /> 16 valve||MFI. GM Ecotec Gen II. VVT. '06-'08 Chevy HHR, '08-'09 Saturn Vue
|-
| P ||LH9|| 5.3L || V8 || Gas/E85 ||OHV||Flex Fuel. SFI. Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads. VVT.<br /> '10-'12 Colorado/Canyon, '10 Hummer H3 Alpha, H3T Alpha
|-
| P ||LV1|| 4.3L || V6 || Gas ||OHV||Chevrolet 90° V6 - Gen V Chevrolet Small-Block V6 (EcoTec3). Direct injection, VVT.<br /> '18+ Chevy Express/GMC Savana.
|-
| P ||LBP|| 1.2L || I3 Turbo || Gas/E85 ||DOHC,<br /> 12 valve||Flex Fuel. GM E-Turbo Engine. Direct Injection. VVT.<br /> '25+ Buick Encore GX, Chevy Trailblazer, '25- Chevy Trax, Buick Envista.
|-
| R ||LL2|| 2.8L || V6 || Gas ||OHV||TBI. Chevrolet 60° V6. '86-'93 Chevy S-10, GMC S-15/Sonoma,<br /> '86-'89 Chevy S-10 Blazer/GMC S-15 Jimmy
|-
| R ||L31|| 5.7L || V8 || Gas ||OHV||Gen 1+ Chevrolet Small-Block V8. Vortec 5700. CPI.<br /> '96-'99 Chevy C/K, GMC Sierra, '96-'99 Chevy Tahoe/GMC Yukon, Chevy/GMC Suburban, '99-'00 GMC Yukon Denali, Cadillac Escalade, '00 Chevy Tahoe Limited/Z71, '96-'02 Chevy Express/GMC Savana.
|-
| R ||L8B|| 5.3L || V8 || Gas ||OHV||Mild Hybrid. Gen V Chevrolet Small-Block V8 (EcoTec3). Direct injection, VVT. Active Fuel Management. '16-'18 Chevy Silverado 1500, GMC Sierra 1500.
|-
| S ||LQ7|| 2.2L || I4 || Diesel ||OHV||Isuzu C220 engine imported from Japan. '81-'82 Chevy LUV, '84-'85 Chevy S-10/GMC S-15
|-
| S ||L56|| 6.5L || V8 Turbo || Diesel ||OHV||Detroit Diesel V8. For sub-8,500 lb. GVWR Chevy C/K, GMC Sierra trucks '94-'99,<br /> Chevy Blazer '94, Chevy Tahoe 2-d '95-'99, GMC Yukon 2-d '94-'97
|-
| S ||LL8|| 4.2L || I6 || Gas ||DOHC,<br /> 24 valve||Atlas I6. SFI. VVT. '02-'09 GMT360/370 SUVs (Chevy Trailblazer, GMC Envoy, Oldsmobile Bravada, Buick Rainier, Isuzu Ascender, Saab 9-7X)
|-
| S ||LGX|| 3.6L || V6 || Gas ||DOHC,<br /> 24 valve||GM High Feature V6, 4th gen. Direct Injection. VVT. Active Fuel Management.<br /> '17+ Cadillac XT5, '17-'23 GMC Acadia, '19+ Chevrolet Blazer, '20-'25 Cadillac XT6.
|-
| S ||LK0|| 2.5L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||L3B engine family. Direct Injection. VVT. '24- Chevy Traverse, GMC Acadia, '25- Buick Enclave
|-
| T ||L25|| 4.8L || I6 || Gas ||OHV||1-bbl carb. Chevrolet Turbo-Thrift I6. '81-'86 Chevy/GMC C/K pickups, '88 R/V pickups
|-
| T ||LM7|| 5.3L || V8 || Gas ||OHV|| Gen III Chevrolet Small-Block V8. Iron Block & Aluminum Heads. Vortec 5300. 270/285/295hp.<br /> '99-'07 GMT800 pickups & SUVs including '02-'05 Escalade 2wd, '07 Silverado Classic 1500/<br> Sierra Classic 1500, '03-'07 Express/Savana
|-
| T ||LEA|| 2.4L || I4 || Gas/E85 ||DOHC,<br /> 16 valve||Flex Fuel. GM Ecotec engine, Gen II. Direct Injection. VVT. Chevy Orlando '13.
|-
| T ||LM2|| 3.0L || I6 Turbo|| Diesel ||DOHC,<br /> 24 valve|| Duramax Diesel I6. Aluminum Block & Heads. '20-'22 Silverado/Sierra 1500, '21-'24 Tahoe/Suburban, Yukon/Yukon XL, Escalade/Escalade ESV.
|-
| U ||LS5|| 1.6L || I4 || Gas ||SOHC,<br /> 8 valve||Suzuki G16A engine. TBI. '89-'95 Geo Tracker
|-
| U ||LQ4|| 6.0L || V8 || Gas ||OHV|| Gen III Chevrolet Small-Block V8. Iron Block & Aluminum Heads (Iron Heads in '99-'00).<br /> '99-'06 GMT800 pickups, '07 Silverado Classic 1500HD/Sierra Classic 1500HD,<br> '00-'06 Suburban/Yukon XL 2500, '01-'06 Yukon Denali/Yukon XL Denali,<br> '06 Suburban LTZ, '03-'07 Express/Savana, '03-'07 Hummer H2.
|-
| U ||LE9|| 2.4L || I4 || Gas/E85 ||DOHC,<br /> 16 valve||Flex-Fuel. GM Ecotec Gen II. 2011 Chevy HHR
|-
| U ||LH7|| 1.6L ||I4 Turbo|| Diesel ||DOHC,<br /> 16 valve||GM Medium Diesel engine ("Whisper Diesel"). Made by Opel in Szentgotthárd, Hungary.<br /> Aluminum Block & Heads. '18-'19 Chevy Equinox & GMC Terrain Diesel.
|-
| V ||LR4|| 4.8L || V8 || Gas ||OHV||Gen III Chevrolet Small-Block V8. Iron Block/Aluminum Heads.<br> '99-'06 GMT800 pickups, '07 Silverado Classic 1500/Sierra Classic 1500,<br /> '00-'06 Tahoe/Yukon, '03-'07 Express/Savana
|-
| V ||LE9|| 2.4L || I4 || Gas/E85 ||DOHC,<br /> 16 valve||Flex-Fuel. GM Ecotec Gen II. 2009-2010 Chevy HHR
|-
| V ||LYX|| 1.5L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||GM Small Gasoline Engine. Direct Injection. VVT. '18-'22 Chevy Equinox, GMC Terrain
|-
| W ||LE8|| 7.4L || V8 || Gas ||OHV|| Mark IV Chevrolet Big-Block V8. 4bbl carb. '81-'86 Chevy/GMC C/K pickups, Suburban.<br /> '88-'89 Chevy/GMC R30/3500 Chassis Cab w/C7C (10,500 lb. GVWR),<br /> V30/3500 Chassis Cab w/C7E (11,000 lb. GVWR)
|-
| W ||L35|| 4.3L || V6 || Gas ||OHV|| CPI. Vortec 4300 H.O. Chevrolet 90° V6 (Chevy Small-Block V8 Derived).<br /> '92-'95 Sonoma, S-10 Blazer/Jimmy, Astro/Safari, '94-'95 S-10, '92-'94 Oldsmobile Bravada
|-
| W ||L35|| 4.3L || V6 || Gas ||OHV|| SFI. Vortec 4300 H.O. Chevrolet 90° V6 (Chevy Small-Block V8 Derived). '96-'02 S-10/Sonoma, Blazer/Jimmy, Express/Savana, C/K, Silverado, Sierra, '96-'01 Bravada, Astro/Safari, '00 Isuzu Hombre
|-
| W ||LGD|| 3.9L || V6 || Gas/E85 ||OHV||Flex Fuel. GM High Value 60° V6. SFI. VVT. '07-'09 GMT201 minivans
|-
| W ||LAF|| 2.4L || I4 || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen II. Direct Injection. VVT. Chevy Equinox, GMC Terrain '10.
|-
| W ||LE8|| 2.2L || I4 || Gas/E85 ||DOHC,<br /> 16 valve||Flex-Fuel. SFI. GM Ecotec Gen II. VVT. 2011 Chevy HHR.
|-
| W ||LFY|| 3.6L || V6 || Gas ||DOHC,<br /> 24 valve||GM High Feature V6. Direct Injection.<br> '18-'23 Chevrolet Traverse, '24 Chevrolet Traverse Limited, '18-'24 Buick Enclave.
|-
| X ||LF6|| 4.3L || V6 || Gas ||OHV||SFI. Vortec 4300. Chevrolet 90° V6 (Chevy Small-Block V8 Derived).<br /> '96-'99 S-10/Sonoma, '97-'99 Isuzu Hombre.
|-
| X ||LU3|| 4.3L || V6 || Gas ||OHV||Vortec 4300. Chevrolet 90° V6 (Chevy Small-Block V8 Derived). '03-'04 S-10/Sonoma,<br /> '03-'05 Blazer/Jimmy, '02-'05 Astro/Safari, '03-'14 Express/Savana, '03-'13 Silverado/Sierra,<br> '07 Silverado Classic 1500/Sierra Classic 1500
|-
| X ||LNF|| 2.0L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen II. Direct Injection. VVT. '08-'09 Chevy HHR SS.
|-
| X ||LTG|| 2.0L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen III. Direct Injection. VVT.<br /> '16-'20 Buick Envision, '18-'20 Chevy Equinox, GMC Terrain, '18-'19 Chevy Traverse RS
|-
| Y ||LQ2|| 2.0L || I4 || Gas ||OHV||2-bbl carb. Chevrolet "122" engine.<br /> '83-'84 Chevy S-10/GMC S-15, '83-'84 Chevy S-10 Blazer/GMC S-15 Jimmy
|-
| Y ||L57|| 6.5L || V8 || Diesel ||OHV||Detroit Diesel V8. For over-8,500 lb. GVWR full-size vans '94-'95 & '96 G-Classic full-size vans
|-
| Y ||L76|| 6.0L || V8 || Gas ||OHV||SFI. Gen IV Chevy Small-Block V8. Aluminum Block & Heads. VVT. With Active Fuel Management.<br /> '07-'09 Silverado/Sierra, Suburban/Yukon XL, Chevy Avalanche
|-
| Y ||LF1|| 3.0L || V6 || Gas ||DOHC,<br /> 24 valve||GM High Feature V6. Direct Injection. VVT.<br /> '10-'11 Cadillac SRX, '11 Saab 9-4X, '10 Chevy Equinox, GMC Terrain
|-
| Y ||L5P|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine. '17+ Silverado HD/Sierra HD. Engine updated in '24.
|-
| Z ||LF9|| 5.7L || V8 || Diesel ||OHV||Oldsmobile Diesel V8. '81 Chevy C10/GMC C1500 full-size pickups.
|-
| Z ||LB4|| 4.3L || V6 || Gas ||OHV|| TBI. Chevrolet 90° V6 (Chevy Small-Block V8 Derived). '85-'87 Chevy El Camino/GMC Caballero,<br /> '86-'94 Astro/Safari, '87 R/V pickups, '88-'95 C/K & Sierra pickups, '87-'95 full-size vans & <br /> '96 G-Classic full-size vans, '88-'95 S-10, S-15/Sonoma, '88-'94 S-10 Blazer, S-15 Jimmy,<br /> '91-'92 Oldsmobile Bravada
|-
| Z ||LB4|| 4.3L || V6 Turbo || Gas ||OHV|| MPI. For GMC Syclone & Typhoon. Chevrolet 90° V6 (Chevy Small-Block V8 Derived)
|-
| Z ||L59|| 5.3L || V8 || Gas/E85 ||OHV||Flex Fuel. Gen III Chevrolet Small-Block V8. Iron Block & Aluminum Heads. Vortec 5300. 285/295hp.<br /> '02-'07 GMT800 pickups, '07 Silverado Classic 1500/Sierra Classic 1500,<br> '02-'06 Suburban/Yukon XL, Avalanche.
|-
| Z ||LAT|| 2.4L || I4 || Gas ||DOHC,<br /> 16 valve||Mild Hybrid. MFI. GM Ecotec Gen II. VVT. '07-'09 Saturn Vue Green Line
|-
| 1 ||LZ9|| 3.9L || V6 || Gas ||OHV||GM High Value 60° V6. SFI. VVT. '06-'09 GMT201 minivans
|-
| 1 ||LE5|| 2.4L || I4 || Gas ||DOHC,<br /> 16 valve||MFI. GM Ecotec Gen II. VVT. '10 Saturn Vue.
|-
| 1 ||LB7|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine. First version of the Duramax V8. '01-Mid '04 Silverado HD/Sierra HD
|-
| 1 ||LWN|| 2.8L || I4 Turbo || Diesel ||DOHC,<br /> 16 valve||Based on VM Motori A428 engine. Made by GM Powertrain Thailand 2016-2020. Made in Brazil for '22. '16-'22 Colorado/Canyon, '17-'22 Express/Savana.
|-
| 2 ||LLY|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine. Mid '04-Mid '06 Silverado HD/Sierra HD, '06-Mid '07 Express/Savana
|-
| 2 ||L9H|| 6.2L || V8 || Gas/E85 ||OHV||Flex-Fuel. Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads. SFI. VVT.<br /> '09-'13 Chevy Silverado 1500, GMC Sierra 1500, Sierra Denali 1500,<br /> '09 Chevy Tahoe LTZ, GMC Yukon Denali/Yukon XL Denali, Cadillac Escalade/Escalade ESV,<br> Hummer H2
|-
| 2 ||LIH|| 1.2L || I3 Turbo || Gas ||DOHC,<br /> 12 valve||GM E-Turbo Engine. Direct Injection. VVT.<br /> '20-'24 Buick Encore GX, '21-'24 Chevy Trailblazer, '24 Chevy Trax, Buick Envista,<br> '25 Chevy Trax, Buick Envista (Canada only).
|-
| 3 ||LC9|| 5.3L || V8 || Gas/E85 ||OHV||Flex Fuel. SFI. Gen IV Chevrolet Small-Block V8. Active Fuel Management. VVT added for '10. Aluminum Block & Heads.<br /> '07-'11 Silverado/Sierra 1500, Tahoe/Yukon, Suburban/Yukon XL 1500, '07-'09 & '11 Avalanche
|-
| 3 ||LFX|| 3.6L || V6 || Gas ||DOHC,<br /> 24 valve||GM High Feature V6. Direct Injection. VVT. E85 Flex Fuel.<br /> '12-'16 Cadillac SRX, '13-'17 Chevrolet Equinox, GMC Terrain, '15-'16 Colorado/Canyon
|-
| 4 ||LN2|| 2.2L || I4 || Gas ||OHV||MFI (94-95). SFI (96-00). Chevrolet "122" engine. '94-'00 S-10/Sonoma, '96-'00 Isuzu Hombre
|-
| 4 ||LE8|| 2.5L || V6 || Gas ||DOHC,<br /> 24 valve||Suzuki H25A engine. MFI. '01-'04 Chevrolet Tracker
|-
| 4 ||L66|| 3.5L || V6 || Gas ||SOHC,<br /> 24 valve||Honda J35S1 V6. VTEC. '04-'07 Saturn Vue
|-
| 4 ||LMF|| 5.3L || V8 || Gas/E85 ||OHV||Flex Fuel. SFI. Gen IV Chevrolet Small-Block V8. Iron Block & Aluminum Heads. VVT.<br /> '08-'14 Express/Savana 1500
|-
| 4 ||LAU|| 2.8L || V6 Turbo || Gas ||DOHC,<br /> 24 valve||GM High Feature V6. SFI. '10 Cadillac SRX
|-
| 4 ||LSY|| 2.0L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen III. Direct Injection. Active Fuel Management. VVT. VVL.<br /> '19-'25 Cadillac XT4, '20+ Chevy Blazer, Cadillac XT5, '20-'23 GMC Acadia,<br /> '21+ Buick Envision, '21-'25 Cadillac XT6
|-
| 5 ||L43|| 2.2L || I4 || Gas/E85 ||OHV||Flex-Fuel. SFI. Chevrolet "122" engine. '00-'02 S-10/Sonoma, '00 Isuzu Hombre
|-
| 5 ||LFA|| 6.0L || V8 || Gas-Electric Hybrid ||OHV||2-Mode Hybrid. Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads. VVT. Active Fuel Management. '08-'09 Tahoe Hybrid/Yukon Hybrid, '09 Escalade Hybrid, Silverado Hybrid/Sierra Hybrid
|-
| 5 ||LFW|| 3.0L || V6 || Gas/E85 ||DOHC,<br /> 24 valve||Flex-Fuel. GM High Feature V6. Direct Injection. VVT. '11-'12 Chevy Equinox, GMC Terrain,<br /> '12 Chevy Captiva Sport
|-
| 6 ||L01|| 1.6L || I4 || Gas ||SOHC,<br /> 16 valve||Suzuki G16B engine. MFI. '94-'97 Geo Tracker, '98-'00 Chevrolet Tracker
|-
| 6 ||L52|| 3.5L || I5 || Gas ||DOHC,<br /> 20 valve||Atlas I5. SFI. VVT. '04-'06 Colorado/Canyon, '06 Isuzu i-350, '06 Hummer H3
|-
| 6 ||LAU|| 2.8L || V6 Turbo || Gas ||DOHC,<br /> 24 valve||GM High Feature V6. SFI. '11 Cadillac SRX, Saab 9-4X
|-
| 6 ||LMM|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine. '07-'10 Silverado HD/Sierra HD (GMT900), Mid '07-Mid '10 Express/Savana
|-
| 7 ||LY7|| 3.6L || V6 || Gas ||DOHC,<br /> 24 valve||GM High Feature V6. '04-'06 Buick Rendezvous, '04-'09 Cadillac SRX,<br /> '07-'08 GMC Acadia, Saturn Outlook, '08 Buick Enclave, '08-'10 Saturn Vue
|-
| 7 ||LC9|| 5.3L || V8 || Gas/E85 ||OHV||Flex Fuel. SFI. Gen IV Chevrolet Small-Block V8. Active Fuel Management. VVT.<br /> Aluminum Block & Heads.<br /> '12-'13 Silverado/Sierra 1500, Avalanche, '12-'14 Tahoe/Yukon, Suburban/Yukon XL 1500
|-
| 7 ||L8T|| 6.6L || V8 || Gas ||OHV||Gen V Chevrolet Small-Block V8. Iron Block/Aluminum Heads. Direct injection, VVT.<br /> '20+ Silverado HD/Sierra HD, '21+ Express/Savana
|-
| 8 ||LK5|| 2.8L || I4 || Gas ||DOHC,<br /> 16 valve||Atlas I4. SFI. VVT. '04-'06 Colorado/Canyon, '06 Isuzu i-280.
|-
| 8 ||L92|| 6.2L || V8 || Gas ||OHV||Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads. SFI. VVT.<br /> '07-'08 GMC Sierra Denali, Yukon Denali/Yukon XL Denali, Cadillac Escalade/Escalade ESV,<br> '08 Chevy Tahoe LTZ, Hummer H2.
|-
| 8 ||LML|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine.<br /> '11-'16 Silverado HD/Sierra HD pickups, '13-'16 Silverado HD/Sierra HD chassis cabs.
|-
| 8 ||LZ0|| 3.0L || I6 Turbo|| Diesel ||DOHC,<br /> 24 valve|| Duramax Diesel I6. Aluminum Block & Heads.<br> '23+ Silverado/Sierra 1500, '24+ Suburban HD, '25+ Tahoe/Suburban, Yukon/Yukon XL.
|-
| 9 ||LC3|| 3.8L || V6 || Gas ||OHV||2-bbl carb. Chevrolet 90° V6 (Chevy Small-Block V8 Derived). 229 cu. in. <br /> '83-'84 Chevy El Camino, GMC Caballero (49-state emissions).
|-
| 9 ||LLV|| 2.9L || I4 || Gas ||DOHC,<br /> 16 valve||Atlas I4. SFI. VVT. '07-'12 Colorado/Canyon, '07-'08 Isuzu i-290.
|-
| 9 ||LT4|| 6.2L ||V8 Supercharged|| Gas ||OHV||Gen V Chevy Small-Block V8. Aluminum Block & Heads. Direct injection. VVT. Active Fuel Management. '23+ Cadillac Escalade/Escalade ESV V-Series.
|-
| 0 ||LMG|| 5.3L || V8 || Gas/E85 ||OHV||Flex-Fuel. SFI. Gen IV Chevrolet Small-Block V8. Active Fuel Management. VVT added for '10.<br /> Iron Block & Aluminum Heads.<br /> '07-'13 Silverado/Sierra 1500, Avalanche, '07-'14 Tahoe/Yukon, Suburban/Yukon XL 1500.
|}
H.O.=High Output, VVT=Variable Valve Timing, VVL=Variable Valve Lift, GVWR=Gross Vehicle Weight Rating, CNG=Compressed Natural Gas, LPG=Liquefied Petroleum Gas (Propane Autogas)
====Motor codes for electric light trucks====
{| class="wikitable"
|-
! VIN !! RPO !! Fuel !! Drive Wheels !! Application/Notes
|-
| H ||LN1|| Electricity || Front || '97-'98 Chevrolet S-10 Electric.
|-
|}
====Motor codes for Ultium-powered electric light trucks====
{| class="wikitable"
|-
! VIN !! Motor <br /> RPO code !! # of Motors !! Battery Module <br /> RPO code !! # of Modules !! Fuel !! Drive Wheels !! Application/Notes
|-
| A ||XRL|| 3 || ETN || 24 || Electricity || All || '22- GMC Hummer EV pickup 3X
|-
| B ||XRL|| 3 || ETI || 20 || Electricity || All || '24- GMC Hummer EV pickup 3X
|-
| C ||XRL|| 3 || ETJ || 20 || Electricity || All || '24- GMC Hummer EV SUV 3X
|-
| D ||XRJ|| 2 || ETI || 20 || Electricity || All || '24 Chevrolet Silverado EV 3WT, '25- Silverado EV 5WT, 3LT,<br> '25 Silverado EV RST (2SP), '26- Silverado EV Trail Boss (2TR),<br> '24- GMC Hummer EV pickup 2X, '25- GMC Sierra EV Denali 5SC,<br> '26- Sierra EV Elevation 3SC, AT4 4SC
|-
| E ||XRJ|| 2 || ETJ || 20 || Electricity || All || '24- GMC Hummer EV SUV 2X
|-
| G ||XRJ|| 2 || ETJ || 20 || Electricity || All || '23 BrightDrop Zevo 600
|-
| H ||XRJ|| 2 || EWX || 14 || Electricity || All ||'26- Chevrolet Silverado EV 4WT, 2LT,<br> '26- GMC Sierra EV Elevation 3SB, Denali 5SB
|-
| J ||X0C|| 2 || EC5 || 10 || Electricity || All || '24 Chevy Blazer EV 2LT, 1RS AWD,<br> '25- Chevy Blazer EV 4LT, 3RS AWD, '24-'26 Honda Prologue AWD
|-
| K ||X0D|| 1 || EC6 || 12 || Electricity || Rear || '23- Cadillac Lyriq RWD, '24-'25 Chevrolet Blazer EV 2RS RWD,<br> '24 Acura ZDX A-Spec RWD
|-
| L ||X0E|| 2 || EC6 || 12 || Electricity || All || '23- Cadillac Lyriq AWD, '24- Chevrolet Blazer EV PPV AWD,<br> '25- Chevrolet Blazer EV SS AWD, '26- Cadillac Vistiq AWD,<br> '24 Acura ZDX A-Spec, Type S AWD
|-
| L ||XRJ|| 2 || ETN || 24 || Electricity || All || '24 Chevrolet Silverado EV 4WT, RST (3SP), '25- Silverado EV 8WT,<br> '25 Silverado EV RST (3SP), '26- Silverado EV 4LT, Trail Boss (3TR),<br> '24- GMC Sierra EV Denali 5SD, '26- Sierra EV AT4 4SD,<br> '25- Cadillac Escalade IQ, '26- Cadillac Escalade IQL
|-
| M ||X0B|| 1 || EC5 || 10 || Electricity || Front || '24-'26 Honda Prologue FWD, '25- Chevy Blazer EV 2LT, 1RS FWD
|-
| P ||X0B|| 1 || EC3 || 10 || Electricity || Front || '24- Chevrolet Equinox EV FWD
|-
| R ||X0C|| 2 || EC3 || 10 || Electricity || All || '24- Chevrolet Equinox EV AWD, '25 Cadillac Optiq AWD
|-
| Y ||XRJ|| 2 || ETC || 12 || Electricity || All || '24 BrightDrop Zevo 400, Zevo 600,<br> '25-'26 Chevrolet BrightDrop 400/600 AWD
|-
| Z ||XRJ|| 2 || ETJ || 20 || Electricity || All || '24 BrightDrop Zevo 400, Zevo 600,<br> '25-'26 Chevrolet BrightDrop 400/600 AWD
|-
| 4 ||X0E|| 2 || EC3 || 10 || Electricity || All || '26- Cadillac Optiq AWD
|-
| 5 ||X0D|| 1 || EC3 || 10 || Electricity || Rear|| '26- Cadillac Optiq RWD
|-
| 6 ||XRM|| 1 || ETC || 12 || Electricity || Front || '25-'26 Chevrolet BrightDrop 400/600 FWD
|-
| 7 ||XRJ|| 2 || EWU || 14 || Electricity || All || '26 Chevrolet BrightDrop 600 AWD
|}
SB=Standard Range, SC=Extended Range, SD=Max Range
====Engine codes for medium duty trucks 2016-====
GM encodes the engine type in character 8 of the VIN. The following table outlines the various engines encoded there:
{| class="wikitable"
|-
! VIN !! RPO !! Size !! Type !! Fuel !! Valvetrain !! Engine Family/Notes/Applications
|-
| B ||L96|| 6.0L || V8 || Gas ||OHV||SFI. Gen IV Chevrolet Small-Block V8. Iron Block & Aluminum Heads. VVT.<br /> '16-'20 Chevy LCF 3500/4500.
|-
| C ||LC8|| 6.0L || V8 || Gas/CNG or<br>Gas/LPG ||OHV||Bi-Fuel. SFI. Gen IV Chevrolet Small-Block V8. Iron Block & Aluminum Heads. VVT.<br /> '16-'20 Chevy LCF 3500/4500.
|-
| D ||L8T|| 6.6L || V8 || Gas ||OHV||Gen V Chevrolet Small-Block V8. Iron Block/Aluminum Heads. Direct injection, VVT.<br /> '21-'23 Chevy LCF 3500/4500, '24- Chevy LCF 3500HG/4500HG/5500HG/5500XG.
|-
| F ||LCB|| 6.7L || I6 Turbo || Diesel ||OHV,<br /> 32 valve||Cummins B Series ISB engine. '22- Chevy LCF 6500XD, '23- Chevy LCF 7500XD.
|-
| 6 ||I1B|| 5.2L || I4 Turbo || Diesel ||SOHC,<br /> 16 valve||Isuzu 4HK1-TC engine. '17- Chevy LCF 4500HD/XD, 5500XD, '17-'24 Chevy LCF 5500HD,<br /> '18-'21 Chevy LCF 6500XD.
|-
| 7 ||IZ3|| 3.0L || I4 Turbo || Diesel ||DOHC,<br /> 16 valve||Isuzu 4JJ1-TC engine. '16-'18 Chevy LCF 3500HD.
|-
|}
====Engine codes for AM General-built Hummer H1 2000-2006====
AM General encodes the engine type in character 4 of the VIN.
{| class="wikitable"
|-
! VIN !! RPO !! Size !! Type !! Fuel !! Valvetrain !! Engine Family/Notes
|-
| F || || 6.5L || V8 Turbo || Diesel ||OHV||Detroit Diesel V8 built by GEP (General Engine Products), a subsidiary of AM General.<br> '01-'04 Hummer H1 & '06 H1 Fleet models.
|-
| P ||LLY|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine. '06 Hummer H1 Alpha.
|-
| Z ||L65|| 6.5L || V8 Turbo || Diesel ||OHV||Detroit Diesel V8 built by GM. '00-'01 Hummer H1.
|-
|}
====Engine codes for Nissan-built vans====
Nissan encodes the engine type in character 4 of the VIN.
{| class="wikitable"
|-
! VIN !! RPO !! Size !! Type !! Fuel !! Valvetrain !! Engine Family/Notes
|-
| 3 ||L0A|| 2.0L || I4 || Gas ||DOHC,<br /> 16 valve||Nissan MR20DE engine. SFI. VVT. For the '15-'18 Chevrolet City Express.
|-
|}
====Engine codes for Navistar-built medium-duty trucks====
Navistar encodes the engine type in character 6 & 7 of the VIN.
{| class="wikitable"
|-
! VIN !! RPO !! Size !! Type !! Fuel !! Valvetrain !! Engine Family/Notes
|-
| PV ||L5D|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine. For the Chevy Silverado Medium Duty '19+.
|-
|}
==GM factories supplying North America==
===North American GM factories===
[[w:List_of_General_Motors_factories | List of GM Factories]]
{| class="wikitable"
!VIN code
!Location
!Notes
|-
|A
|Lakewood Assembly (Lakewood Heights, Atlanta, Georgia)
|through 1990 model year
|-
|A
|Artisan Center (Warren, Michigan)
|From 2026 model year. Cadillac CT5-V Blackwing "Curated by Cadillac" program only.
|-
|B
|Baltimore Assembly (Baltimore, Maryland)
|through 2005 model year
|-
|B
|Reatta Craft Centre/Lansing Craft Centre (Lansing Township, Michigan)
|1988-2006 model year (except GM EV1)
|-
|B
|GM Defense-Manufacturing Customer Innovation Center (MCIC) (Concord, North Carolina)
|From 2024 model year. Chevrolet Suburban HD (a.k.a. HD SUV) (for US govt. only).
|-
|C
|South Gate Assembly (South Gate, California)
|through 1982 model year
|-
|C
|Lansing Car Assembly (Lansing, Michigan)
|South assembly line 1985-2004 model year
|-
|D
|Doraville Assembly (Doraville, Georgia)
|through 2009 model year
|-
|E
|Linden Assembly (Linden, New Jersey)
|through 1991 model year
|-
|E
|Pontiac East Assembly (Pontiac, Michigan)
|1988-2009 model year
|-
|E
|AM General Military plant (Mishawaka, Indiana)
|1992-2006 Hummer H1
|-
|F
|Flint Truck Assembly (Flint, Michigan)
|since 1953
|-
|F
|Fairfax II Assembly (Kansas City, Kansas)
|since 1988 model year
|-
|G
|Framingham Assembly (Framingham, Massachusetts)
|through 1989 model year
|-
|G
|Silao Assembly (Silao, Guanajuato, Mexico)
|since 1995 model year
|-
|H
|Buick City Assembly (Flint, Michigan)
|through 1999 model year
|-
|H
|AM General Commercial plant (Mishawaka, Indiana)
|2003-2009 Hummer H2
|-
|H
|Navistar Springfield plant (Main Line) (Springfield, Ohio)
|2019- Chevrolet Silverado Medium Duty (4500HD/5500HD/6500HD)
|-
|J
|Janesville Assembly (Janesville, Wisconsin)
|through 2009 model year
|-
|J
|Lansing Delta Township Assembly (Lansing, Michigan)
|since 2007 model year
|-
|K
|Leeds Assembly (Leeds, Kansas City, Missouri)
|through 1988 model year
|-
|K
|Linden Assembly (Linden, New Jersey)
|from 1994-2005 model year
|-
|K
|Nissan plant (Cuernavaca, Morelos, Mexico)
|2015-2018 Chevrolet City Express
|-
|L
|Van Nuys Assembly (Van Nuys, California)
|through 1992 model year
|-
|L
|San Luis Potosí Assembly (San Luis Potosí, Mexico)
|since 2009 model year
|-
|M
|Lansing Car Assembly (Lansing, Michigan)
|through 1984 model year, North assembly line 1985-2005 model year
|-
|M
|Toluca Assembly (Toluca, Mexico state, Mexico)
|through 2008 model year
|-
|N
|Norwood Assembly (Norwood, Ohio)
|through 1987 model year
|-
|N
|Navistar Springfield plant (Secondary Line) (Springfield, Ohio)
|2017- Chevrolet Express cutaway, GMC Savana cutaway
|-
|P
|Pontiac Assembly (Pontiac, Michigan)
|through 1988 model year
|-
|R
|Arlington Assembly (Arlington, Texas)
|since 1965 [all GM brands]. (R plant code used only by Chevrolet in 1963-64)
|-
|S
|St. Louis Assembly (St. Louis, Missouri)
|through 1987 model year
|-
|S
|Spring Hill Manufacturing (Spring Hill, Tennessee)
|2002-2007 Saturn Vue & 2009-2010 Chevrolet Traverse only
|-
|S
|Spartan Motors/Shyft Group plant (Charlotte, Michigan)
|2016- Chevrolet Low Cab Forward 3500/3500HG/4500/4500HG/5500HG/5500XG/6500XD/7500XD
|-
|S
|Ramos Arizpe Assembly (Ramos Arizpe, Coahuila, Mexico)
|since 1982
|-
|T
|Tarrytown Assembly (North Tarrytown, New York)
|through 1996 model year
|-
|U
|Detroit/Hamtramck Assembly (Factory Zero) <br /> (Detroit & Hamtramck, Michigan)
|since 1986 model year
|-
|U
|Artisan Center (Warren, Michigan)
|From 2025 model year. Cadillac Celestiq only.
|-
|V
|Pontiac Central Assembly (Pontiac, Michigan)
|through 1991 model year
|-
|V
|Pontiac East Assembly (Pontiac, Michigan)
|through 1985 model year
|-
|W
|Willow Run Assembly (Ypsilanti Township, Michigan)
|through 1993 model year
|-
|X
|Fairfax Assembly (Fairfax I) (Kansas City, Kansas)
|through 1987 model year
|-
|Y
|Wilmington Assembly (Wilmington, Delaware)
|through 2010 model year
|-
|Z
|Fremont Assembly (Fremont, California)
|through 1982 model year
|-
|Z
|NUMMI (Fremont, California)
|1985-2010 model year
|-
|Z
|Spring Hill Manufacturing (Spring Hill, Tennessee)
|since 1991 model year (except Vue & Traverse)
|-
|Z
|Fort Wayne Assembly (Roanoke, Indiana)
|since 1988 model year
|-
|0
|Pontiac West Assembly (Pontiac, Michigan)
|through 1994 model year
|-
|0
|Lansing Craft Centre (Lansing Township, Michigan)
|GM EV1 only
|-
|0
|Lansing Grand River Assembly (Lansing, Michigan)
|since 2003 model year
|-
|0
|Artisan Center (Warren, Michigan)
|2024 Cadillac CT5-V Blackwing 20th Anniversary Edition where the final eight digits of the VIN are R0912004 through R0912024 or R0962004 through R0962024
|-
|1
|Wentzville Assembly (Wentzville, Missouri)
|since 1985 model year
|-
|1
|Oshawa Car Assembly (Oshawa, Ontario, Canada)
|from 1967-1983 model year
|-
|1
|Oshawa Car Assembly (Line 2 a.k.a. Consolidated Line) (Oshawa, Ontario, Canada)
|from 1984-2019 model year; switched to pickup trucks for 2019 model year
|-
|1
|Oshawa Car Assembly (Oshawa, Ontario, Canada)
|Silverado pickup trucks since 2022 model year
|-
|1
|Oshawa Truck Assembly (Oshawa, Ontario, Canada)
|through 2009 model year
|-
|2
|Moraine Assembly (Moraine, Ohio)
|through 2009 model year
|-
|2
|Sainte-Thérèse Assembly (Boisbriand, Quebec, Canada)
|through 2002 model year
|-
|3
|Detroit Truck & Bus plant (Piquette Ave., Detroit, Michigan)
|through 1999 model year
|-
|3
|Saint-Eustache Bus Plant (Saint-Eustache, Quebec, Canada)
|through 1987 model year
|-
|4
|Orion Assembly (Orion Township, Michigan)
|since 1985 model year
|-
|4
|Scarborough Van Assembly (Scarborough, Ontario, Canada)
|through 1993 model year
|-
|5
|Bowling Green Assembly (Bowling Green, Kentucky)
|since 1981 model year
|-
|6
|Oklahoma City Assembly (Oklahoma City, Oklahoma)
|through 2006 model year
|-
|6
|CAMI plant (Ingersoll, Ontario, Canada)
|1990-2022 model year
|-
|7
|Lordstown Assembly (Warren, Ohio)
|from 1979-2019 model year
|-
|8
|Shreveport Assembly (Shreveport, Louisiana)
|through 2012 model year
|-
|9
|Detroit Assembly (Clark Street, Detroit, Michigan)<br> (Cadillac plant)
|from 1979-1988 model year
|-
|9
|Oshawa Car Assembly (Line 1 a.k.a. Flex Line)<br> (Oshawa, Ontario, Canada)
|from 1984-2020 model year
|-
|9
|KUKA plant (Livonia, Michigan)
|2022 model year only (BrightDrop Zevo 600)
|-
|9
|CAMI plant (Ingersoll, Ontario, Canada)
|2023-2026 model year (BrightDrop Zevo/Chevrolet BrightDrop)
|}
===Non-North American GM factories supplying North America===
{| class="wikitable"
!VIN code
!Location
!Models Sourced
|-
|A
|SAIC-GM plant: Jinqiao, Pudong district, Shanghai, China
|2017-2018 Cadillac CT6 Plug-in Hybrid
|-
|B
|Daewoo/GM Daewoo/GM Korea plant: Bupyeong, South Korea
|1988-1993 Pontiac LeMans, 2004-2011 Chevrolet Aveo, 2005-2010 Pontiac Wave/G3, 2004-2006 Chevrolet <br /> Epica (Canada), 2013-2022 Chevrolet Trax, Buick Encore, 2021- Chevrolet Trailblazer, 2020- Buick Encore GX, 2024- Buick Envista
|-
|C
|GM Daewoo/GM Korea plant: Changwon, South Korea
|2003-2010 Pontiac Matiz/Matiz G2 (Mexico), 2013-2022 Chevrolet Spark, 2024- Chevrolet Trax
|-
|D
|SAIC-GM Dongyue Motors plant: Yantai, Shandong province, China
|2016- Buick Envision, 2019-2023 Chevrolet Aveo (Mexico), 2023- Chevrolet Onix (Mexico)
|-
|G
|Opel plant: Gliwice, Poland
|2016-2019 Buick Cascada
|-
|K
|Suzuki plant: Kosai, Shizuoka prefecture, Japan
|1985-1988 Chevrolet Sprint, 1989-1990 Geo Metro hatchback, 1990-1993 Geo Metro convertible, 1985-1990 Pontiac Firefly (Canada), 1991 & 1994 Pontiac Firefly convertible & sedan (Canada)
|-
|K
|GM Daewoo/GM Korea plant: Kunsan, South Korea
|2004-2007 Chevrolet Optra (Canada), 2012-2014 Chevrolet Orlando (Canada)
|-
|L
|Holden plant: Elizabeth, South Australia, Australia
|2004-2006 Pontiac GTO, 2008-2009 Pontiac G8, 2011-2017 Chevrolet Caprice PPV, 2014-2017 Chevrolet SS
|-
|R
|Opel plant: Rüsselsheim, Germany
|1997-2001 Cadillac Catera
|-
|T
|GM India plant: Talegaon, Maharashtra, India
|2017-2021 Chevrolet Spark Classic/Beat (Mexico)
|-
|V
|SAIC-GM Wuhan plant: Wuhan, Hubei province, China
|2018-2021 Chevrolet Cavalier (Mexico), 2022- Chevrolet Cavalier Turbo (Mexico)
|-
|W
|Suzuki plant: Iwata, Shizuoka prefecture, Japan
|1989-1990 Geo Tracker
|-
|1
|Opel plant: Rüsselsheim, Germany
|2011, 2018-2020 Buick Regal
|-
|3
|Isuzu plant: Kawasaki, Kanagawa prefecture, Japan
|1987-1998 Chevrolet/GMC W5, 1989-1996 Chevrolet/GMC W6, 1984-1996 Chevrolet/GMC W7
|-
|5
|Opel plant: Antwerp, Belgium
|2008-2009 Saturn Astra
|-
|7
|Isuzu plant: Fujisawa, Kanagawa prefecture, Japan
|1988 Chevrolet Spectrum, 1988 Pontiac Sunburst (Canada), 1989 Geo Spectrum, 1990-1993 Geo Storm,<br /> 1999-2008 Chevrolet/GMC W3500, 1988-2009 Chevrolet/GMC W4, 1999-2009 Chevrolet/GMC W5,<br /> 2000-2004 Chevrolet/GMC WT5500,<br /> 2016- Chevrolet Low Cab Forward 3500HD/4500HD/4500XD/5500HD/5500XD
|-
|8
|Isuzu plant: Fujisawa, Kanagawa prefecture, Japan
|1981-1982 Chevrolet LUV, 1985-1987 Chevrolet Spectrum, 1985-1987 Pontiac Sunburst (Canada),<br /> 1986-1987 Chevrolet/GMC W4
|}
==GM WMIs==
{| class=wikitable
!WMI
!Marque
!Country
|-
|1G1||rowspan=57|Chevrolet||United States
|-
|1G8||United States (MPV 1981-1986)
|-
|1GA||United States (bus [van with more than 3 rows of seats])
|-
|1GB||United States (incomplete vehicle)
|-
|1GC||United States (truck)
|-
|1GN||United States (MPV 1987-)
|-
|1HA||United States (Express incomplete vehicle made by Navistar)
|-
|1HT||United States ([[w:Chevrolet Silverado#Medium duty version_(4500HD,_5500HD,_6500HD,_and_International_CV)|Silverado Medium Duty]] incomplete vehicle made by Navistar)
|-
|1Y1||United States (made by NUMMI)
|-
|2C1||Canada (car made by CAMI)
|-
|2CN||Canada (SUV made by CAMI - 1998-2011)
|-
|2G1||Canada
|-
|2G5||Canada (truck - Chevrolet BrightDrop '25)
|-
|2G8||Canada (MPV 1981-1986)
|-
|2GA||Canada (bus [van with more than 3 rows of seats])
|-
|2GB||Canada (incomplete vehicle)
|-
|2GC||Canada (truck - includes Chevrolet BrightDrop '26)
|-
|2GN||Canada (MPV 1987-)
|-
|3G1||Mexico
|-
|3GC||Mexico (truck)
|-
|3GN||Mexico (MPV)
|-
|3N6||Mexico (Truck - City Express made by Nissan)
|-
|4G1||United States (made by Genasys L.C.)
|-
|4KB||United States (W-Series incomplete vehicle made by GM - through 2009)
|-
|4W1||United States (MPV - Chevrolet Suburban HD made for US govt. in Concord, NC)
|-
|54D||United States (incomplete vehicle made by Spartan Motors/The Shyft Group)
|-
|6G1||Australia (2011-2013 Caprice PPV)
|-
|6G3||Australia (2014-2017 Caprice PPV & SS performance sedan)
|-
|ADM||South Africa
|-
|J81||Japan (car made by Isuzu)
|-
|J8B||Japan (incomplete vehicle made by Isuzu - through 2009)
|-
|J8Z||Japan (LUV pickup made by Isuzu)
|-
|JAL||Japan (incomplete vehicle made by Isuzu - 2016+)
|-
|JG1||Japan (car made by Suzuki)
|-
|KL1||South Korea (car)
|-
|KL7||South Korea (MPV - 2012+)
|-
|KL8||South Korea (Spark)
|-
|LSF||China (S-10 Max made by SAIC-Maxus - Mexico only)
|-
|LSG||China (SAIC-GM)
|-
|LSH||China (Express Max made by SAIC-Maxus - Mexico only)
|-
|LZW||China (SAIC-GM-Wuling)
|-
|MA6||India
|-
|MJB||Indonesia (GM Indonesia)
|-
|MK3||Indonesia (SGMW Motor Indonesia)
|-
|MMM||Thailand
|-
|XUF||Russia (GM Russia - St. Petersburg plant)
|-
|XUU||Russia (Chevrolet Korea models made by Avtotor in Kaliningrad)
|-
|XWB||Uzbekistan (GM Uzbekistan, UzAuto Motors)
|-
|XWF||Russia (Chevrolet Tahoe & Trailblazer [GMT360] made by Avtotor in Kaliningrad)
|-
|X9L||Russia (GM-AvtoVAZ)
|-
|8AG||Argentina
|-
|8GG||Chile
|-
|8LD||Ecuador
|-
|8Z1||Venezuela
|-
|9BG||Brazil
|-
|93C||Brazil
|-
|9GC||Colombia
|-
|J81||rowspan=6|Geo||Japan (car made by Isuzu)
|-
|JG1||Japan (car made by Suzuki)
|-
|JGC||Japan (SUV made by Suzuki)
|-
|1Y1||United States (car made by NUMMI)
|-
|2C1||Canada (car made by CAMI)
|-
|2CN||Canada (SUV made by CAMI - 1990-1997)
|-
|KLA||rowspan=3|GM Daewoo/<br />GM Korea||South Korea (Bupyeong & Kunsan plants)
|-
|KLY||South Korea (Changwon plant)
|-
|5GD||United States (G2X)
|-
|1G2||rowspan=12|Pontiac||United States
|-
|1G5||United States (incomplete vehicle - for '89-'90 Turbo Grand Prix by ASC/McLaren & '03-'05 Montana Mobility, '06 Montana SV6 Mobility)
|-
|1GM||United States (MPV)
|-
|2CK||Canada (2006-2009 Torrent made by CAMI)
|-
|2G2||Canada
|-
|2G7||Canada (US market 1983 Pontiac Parisienne)
|-
|3G2||Mexico
|-
|3G7||Mexico (MPV: 2001-2005 Aztek)
|-
|4G2||United States (made by Genasys L.C.)
|-
|5Y2||United States (made by NUMMI)
|-
|6G2||Australia
|-
|KL2||South Korea (made by Daewoo/GM Daewoo)
|-
|1G7||rowspan=6|Pontiac<br />(Canada only)||United States
|-
|2C7||Canada (car made by CAMI)
|-
|2CG||Canada (SUV made by CAMI)
|-
|2G7||Canada
|-
|J87||Japan (car made by Isuzu)
|-
|JG7||Japan (car made by Suzuki)
|-
|KL7||Passport<br />(Canada only)||South Korea (car made by Daewoo)
|-
|J87||rowspan=3|Asüna<br />(Canada only)||Japan (car made by Isuzu)
|-
|KL7||South Korea (car made by Daewoo)
|-
|2CG||Canada (SUV made by CAMI)
|-
|1G3||rowspan=3|Oldsmobile||United States
|-
|1GH||United States (MPV/SUV)
|-
|2G3||Canada
|-
|1G4||rowspan=9|Buick||United States
|-
|2G4||Canada
|-
|3G4||Mexico
|-
|3G5||Mexico (MPV)
|-
|4GL||United States (incomplete vehicle)
|-
|5GA||United States (MPV)
|-
|KL4||South Korea (MPV)
|-
|LRB||China (SAIC-GM)
|-
|W04||Germany & Poland
|-
|KLA||Alpheon||South Korea (2011-2015)
|-
|1G6||rowspan=10|Cadillac||United States
|-
|1GE||United States (incomplete vehicle)
|-
|1GY||United States (SUV)
|-
|2G6||Canada
|-
|2GE||Canada (incomplete vehicle)
|-
|3GY||Mexico (SUV)
|-
|LRE||China (SAIC-GM)
|-
|W06||Germany
|-
|XWF||Russia (made by Avtotor in Kaliningrad)
|-
|YSC||Sweden
|-
|1G8||rowspan=4|Saturn||United States
|-
|3GS||Mexico (SUV)
|-
|5GZ||United States (MPV/SUV)
|-
|W08||Belgium
|-
|1G0||rowspan=22|GMC||United States (bus 1981-1986)
|-
|1G5||United States (MPV 1981-1986)
|-
|1GD||United States (incomplete vehicle)
|-
|1GJ||United States (bus 1987-)
|-
|1GK||United States (MPV 1987-)
|-
|1GT||United States (truck)
|-
|2CK||Canada (1990-1991 Tracker made by CAMI - Canada only)
|-
|2CT||Canada (2010-2011 Terrain made by CAMI)
|-
|2G0||Canada (bus [van with more than 3 rows of seats] 1981-1986)
|-
|2G5||Canada (MPV 1981-1986)
|-
|2GD||Canada (incomplete vehicle)
|-
|2GH||Canada (transit bus)
|-
|2GJ||Canada (bus [van with more than 3 rows of seats] 1987-)
|-
|2GK||Canada (MPV 1987-)
|-
|2GT||Canada (truck)
|-
|3GK||Mexico (SUV)
|-
|3GT||Mexico (truck)
|-
|4KD||United States (W-Series incomplete vehicle made by GM - through 2009)
|-
|7GZ||United States (incomplete vehicle made by Navistar)
|-
|J8D||Japan (incomplete vehicle made by Isuzu - through 2009)
|-
|JGT||Japan (SUV made by Suzuki - Canada only)
|-
|KL6||South Korea (Middle East market Terrain '08-'10)
|-
|4GD||WhiteGMC||United States (1988-1989 Brigadier made by GM)
|-
|137||rowspan=6|Hummer||United States (H1 made by AM General)
|-
|5GN||United States (H3T)
|-
|5GR||United States (H2 made by AM General)
|-
|5GT||United States (H3)
|-
|ADM||South Africa (H3)
|-
|XWF||Russia (H2 & H3 made by Avtotor in Kaliningrad)
|-
|4G5||General Motors||United States (EV1)
|-
|2G5||rowspan=2|BrightDrop||Canada (Truck 2023-2024)
|-
|5G5||United States (Truck made by Kuka AG - 2022 only)
|-
|5G2||rowspan=2|Cruise||United States (car) (Cruise AV)
|-
|5G3||United States (MPV) (Cruise Origin AV)
|-
|YS3||rowspan=4|Saab||Sweden
|-
|JF4||Japan (9-2X made by Subaru)
|-
|3G0||Mexico (9-4X)
|-
|5S3||United States (9-7X)
|-
|W0L||rowspan=19|Opel/Vauxhall||Germany & the rest of Europe (2017 and earlier)
|-
|W0V||Germany & the rest of Europe (2018 and later) & Opel Ampera-e Mid-2017 - 2019
|-
|W0L||when plant code is H: Thailand (Zafira A)
|-
|W0L||when plant code is 0: South Korea (Antara) or B: South Korea (Antara, Mokka A, Mokka X [A])
|-
|W0L||when plant code is C: South Korea (Opel Karl/Vauxhall Viva)
|-
|W0V||when plant code is B: South Korea (Mokka X [A]) or C: South Korea (Opel Karl/Vauxhall Viva)
|-
|SCC||UK (Opel Lotus Omega made by Lotus)
|-
|SED||UK (made by IBC Vehicles)
|-
|TW8||Portugal
|-
|VF1||France (Arena made by Renault)
|-
|VN1||France (Movano A made by Renault at SOVAB plant in Batilly, France)
|-
|VSX||Spain
|-
|XUF||Russia (Opel made by GM Russia - St. Petersburg plant)
|-
|XWF||Russia (Opel made by Avtotor in Kaliningrad)
|-
|1G0||United States (Opel GT, Opel/Vauxhall Ampera, Opel Ampera-e Early - Mid-2017)
|-
|4GD||United States (Sintra)
|-
|ADM||South Africa
|-
|JAA||Japan (Opel Campo made by Isuzu)
|-
|JAC||Japan (Monterey made by Isuzu)
|-
|SKA||rowspan=4|Vauxhall Motors||UK
|-
|SCC||UK (Vauxhall Lotus Carlton made by Lotus)
|-
|6G1||Australia (Vauxhall Monaro & VXR8 made by Holden)
|-
|JAA||Japan (Vauxhall Brava made by Isuzu)
|-
|SKF||rowspan=2|Bedford Vehicles||UK
|-
|JAA||Japan (Bedford Brava made by Isuzu)
|-
|6G1||rowspan=18|Holden||Australia (2003-2017)
|-
|6H8||Australia (1989-2002)
|-
|JAA||Japan (Rodeo pickup [TF] made by Isuzu)
|-
|JAC||Japan (Jackaroo/Monterey made by Isuzu)
|-
|JSA||Japan (YG Cruze made by Suzuki)
|-
|KL3||South Korea
|-
|MMM||Thailand ('09-'11 Colorado pickup [RC] made by GM Thailand)
|-
|MMU||Thailand ('13-'20 Colorado pickup [RG], '13-'16 Colorado 7, '17-'20 Trailblazer made by GM Thailand)
|-
|MPA||Thailand ('04-'08 Rodeo pickup [RA] made by Isuzu Thailand)
|-
|SED||UK (1st gen. Frontera made by IBC Vehicles)
|-
|W0L||Germany & the rest of Europe (2017 and earlier)
|-
|W0L||when plant code is H: Thailand (Zafira A)
|-
|W0V||Germany & the rest of Europe (2018-2020)
|-
|1GH||United States (Acadia)
|-
|3G0||Mexico (Equinox)
|-
|3GM||Mexico (Suburban)
|-
|4S2||United States (2nd gen. Frontera made by [[w:Subaru Isuzu Automotive|SIA]])
|-
|5G8||United States (Volt)
|-
|1GG||rowspan=4|Isuzu||United States (Truck - Hombre & i-Series made by GM)
|-
|4GT||United States (H-Series & T-Series incomplete vehicle made by GM - through 2009)
|-
|4KL||United States (N-Series incomplete vehicle made by GM - through 2009)
|-
|4NU||United States (MPV/SUV - Ascender made by GM)
|-
|W0L||Subaru||Thailand [plant code H] (Traviq made by GM Thailand for export to Japan)
|-
|4G3||Toyota||United States (Cavalier made by GM for export to Japan)
|-
|3GP||Honda||Mexico (MPV/SUV: 2024-2026 Prologue made by GM)
|-
|4W5||Acura||United States (MPV/SUV: 2024 ZDX EV made by GM)
|}
{{BookCat}}
6rjlbpvkdbibma85zg0yhld37d11sfk
4656290
4656267
2026-08-04T21:25:35Z
JustTheFacts33
3434282
/* Series 2000-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle */
4656290
wikitext
text/x-wiki
{{Vehicle Identification Numbers (VIN codes)/Warning}}{{clear}}
It is the tenth digit that gives you the model year for GM. I've been working at a Chevy dealer for years running codes/vins. For example (my examples only apply to 2001-2015 gm vehicles)
Remember 10th digit from the beginning, (left to right).
2001... 1,
2002...2,
2003...3,
etc.,
2009...9.
After 2009, the tenth digit was given a letter
2010... A,
2011...B,
2012...C,
2013...D,
2014...E,
2015...F,
Etc...
We have another 20 years worth of letters.
Thanks for reading.
You can always check your model year by looking in your drivers side door jamb and it will give you model year. If it was assembled in July or later, the model year is probably a year later than the calendar year of the manufacturing date listed.
==American GM==
===American VIN format 1981-1984 Passenger Car===
GM's VIN format is as follows:
<table border=1 style="margin:auto;">
<tr>
<th>Position</th>
<th>Sample</th><th></th><th></th><th>Description</th>
</tr><tr>
<td>1</td>
<td>1</td><td></td><td></td><td rowspan=3>[[#GM WMIs|World Manufacturer Identifier]]</td>
</tr><tr>
<td>2</td>
<td>G</td><td></td><td></td></tr><tr>
<td>3</td>
<td>6</td><td></td><td></td></tr><tr>
<td>4</td>
<td>A</td><td></td><td></td><td>[[#American restraint types 1981-1984|Restraint type]]</td>
</tr><tr>
<td>5</td>
<td>M</td><td></td><td></td><td>[[#Car Line & Series Code 1981-1984|Car Line & Series Code]]</td>
</tr><tr>
<td>6</td>
<td>4</td><td></td><td></td><td rowspan=2>[[#Body style codes 1981-1986|Body style]]</td>
</tr><tr>
<td>7</td>
<td>7</td><td></td><td></td><td> </td>
</tr><tr>
<td>8</td>
<td>8</td><td></td><td></td><td>[[#American engine codes 1981-|Engine type]]</td>
</tr><tr>
<td>9</td>
<td>0</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Check digit |Check digit]]</td>
</tr><tr>
<td>10</td>
<td>E</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Model year|Model year]]</td>
</tr><tr>
<td>11</td>
<td>9</td><td></td><td></td><td>[[#GM factories supplying North America|Factory ID]]</td>
</tr><tr>
<td>12</td>
<td>1</td><td></td><td></td><td rowspan=6>Sequential number
</tr><tr>
<td>13</td>
<td>2</td><td></td><td></td></tr><tr>
<td>14</td>
<td>3</td><td></td><td></td></tr><tr>
<td>15</td>
<td>7</td><td></td><td></td></tr><tr>
<td>16</td>
<td>6</td><td></td><td></td></tr><tr>
<td>17</td>
<td>2</td><td></td><td></td>
</table>
====American restraint types 1981-1984====
The restraint type is specified as character 4 of the American GM VIN for passenger cars.
{| border=1 style="margin:auto;"
!VIN Code
!Description
|-
|A||Manual Seatbelts only - No Passive Restraint
|}
====Car Line & Series Code 1981-1984====
The Car Line & Series Code is specified as character 5 of the American GM VIN for passenger cars.
{| border=1 style="margin:auto;"
!List of GM platforms
!Car Line & <br> Series Code
!:Category:General Motors vehicles|Model
|-
|rowspan=19|GM A platform - rear-wheel drive
|T||Chevrolet Malibu 1981
|-
|W||Chevrolet Malibu Classic 1981
|-
|Z||Chevrolet Monte Carlo 1981
|-
|D||Pontiac LeMans 1981
|-
|F||Pontiac Grand LeMans 1981
|-
|J||Pontiac Grand Prix 1981
|-
|K||Pontiac Grand Prix LJ 1981
|-
|P||Pontiac Grand Prix Brougham 1981
|-
|G||Oldsmobile Cutlass sedan, Cutlass Cruiser wagon 1981
|-
|H||Oldsmobile Cutlass Cruiser ''Brougham'' wagon 1981
|-
|K||Oldsmobile Cutlass Calais coupe 1981
|-
|M||Oldsmobile Cutlass Supreme ''Brougham'' 1981
|-
|R||Oldsmobile Cutlass Supreme coupe, Cutlass LS sedan 1981
|-
|E||Buick Century wagon 1981
|-
|H||Buick Century sedan, Estate wagon 1981
|-
|J||Buick Regal 1981
|-
|K||Buick Regal ''Sport'' 1981
|-
|L||Buick Century ''Limited'' 1981
|-
|M||Buick Regal ''Limited'' 1981
|-
|rowspan=10|GM A platform - front-wheel drive
|W||Chevrolet Celebrity 1982-1984
|-
|F||Pontiac 6000 1982-1984
|-
|G||Pontiac 6000 ''LE'' 1982-1984
|-
|H||Pontiac 6000 ''STE'' 1983-1984
|-
|G||Oldsmobile Cutlass Ciera 1982
|-
|J||Oldsmobile Cutlass Ciera ''LS'' 1982-1984, Cutlass Cruiser ''LS'' 1984
|-
|M||Oldsmobile Cutlass Ciera ''Brougham'' 1982-1984
|-
|G||Buick Century ''T-Type'' 1983-1984
|-
|H||Buick Century ''Custom'' 1982-1984
|-
|L||Buick Century ''Limited'' 1982-1984
|-
|rowspan=19|GM B platform
|D||Chevrolet Bel Air 1981 (Canada only)
|-
|L||Chevrolet Impala 1981-1984
|-
|N||Chevrolet Caprice Classic 1981-1984
|-
|F||Pontiac Laurentian 1981 (Canada only)
|-
|L||Pontiac Catalina 1981, Parisienne 1984
|-
|L||Pontiac Parisienne 1982-1983 (Canada only)
|-
|N||Pontiac Bonneville 1981
|-
|N||Pontiac Parisienne 1981, Parisienne Brougham 1982-1983 (Canada only)
|-
|R||Pontiac Bonneville Brougham 1981
|-
|T||Pontiac Parisienne Brougham 1984
|-
|L||Oldsmobile Delta 88 1981-1983
|-
|N||Oldsmobile Delta 88 Royale 1981-1984
|-
|P||Oldsmobile Custom Cruiser 1981-1984
|-
|V||Oldsmobile Delta 88 Royale Brougham LS 1984
|-
|Y||Oldsmobile Delta 88 Royale Brougham 1981-1984
|-
|N||Buick Le Sabre 1981, Le Sabre ''Custom'' 1982-1984
|-
|P||Buick Le Sabre ''Limited'' 1981-1984
|-
|R||Buick Le Sabre Estate Wagon 1981-1983
|-
|V||Buick Electra Estate Wagon 1981-1984
|-
|rowspan=13|GM C platform - rear-wheel drive
|G||Oldsmobile 98 Regency 1984
|-
|H||Oldsmobile 98 Regency Brougham 1984
|-
|V||Oldsmobile 98 Luxury 1981
|-
|W||Oldsmobile 98 Regency Brougham 1982-1983
|-
|X||Oldsmobile 98 Regency 1981-1983
|-
|R||Buick Electra Limited 1984
|-
|U||Buick Electra Park Avenue 1984
|-
|W||Buick Electra Park Avenue 1981-1983
|-
|X||Buick Electra Limited 1981-1983
|-
|B||Cadillac Fleetwood Brougham 1981-1983
|-
|D||Cadillac DeVille 1981-1983
|-
|M||Cadillac DeVille 1984
|-
|W||Cadillac Fleetwood Brougham 1984
|-
|rowspan=1|GM D platform - rear-wheel drive
|F||Cadillac Fleetwood Limousine 1981-1984
|-
|rowspan=4|GM E platform
|Z||Oldsmobile Toronado Brougham 1981-1984
|-
|Y||Buick Riviera T-Type 1981-1984
|-
|Z||Buick Riviera 1981-1984
|-
|L||Cadillac Eldorado 1981-1984
|-
|rowspan=7|GM F platform
|P||Chevrolet Camaro Sport Coupe 1981-1984
|-
|S||Chevrolet Camaro Berlinetta 1981-1984
|-
|S||Pontiac Firebird 1981-1984
|-
|T||Pontiac Firebird ''Esprit'' 1981
|-
|V||Pontiac Firebird ''Formula'' 1981
|-
|W||Pontiac Firebird ''Trans Am'' 1981-1984
|-
|X||Pontiac Firebird ''Trans Am'' Turbo Special Edition 1981, Firebird ''S/E'' 1982-1984
|-
|rowspan=15|GM G platform - rear-wheel drive
|W||Chevrolet Malibu Classic 1982, Malibu 1983
|-
|Z||Chevrolet Monte Carlo 1982-1984
|-
|J||Pontiac Grand Prix 1982-1984
|-
|K||Pontiac Grand Prix LJ 1982-1983, Grand Prix LE 1984
|-
|N||Pontiac Bonneville G 1982-1984
|-
|P||Pontiac Grand Prix Brougham 1982-1984
|-
|R||Pontiac Bonneville G Brougham 1982-1984
|-
|S||Pontiac Bonneville G ''LE'' 1984
|-
|H||Oldsmobile Cutlass Cruiser wagon 1982-1983
|-
|K||Oldsmobile Cutlass Calais coupe 1982-1984
|-
|M||Oldsmobile Cutlass Supreme ''Brougham'' 1982-1984
|-
|R||Oldsmobile Cutlass Supreme coupe & sedan 1982-1984
|-
|J||Buick Regal 1982-1984
|-
|K||Buick Regal ''Sport'' 1982, Regal ''T-Type'' 1983-1984
|-
|M||Buick Regal ''Limited'' 1982-1984
|-
|rowspan=13|GM J platform
|C||Chevrolet Cavalier 1983-1984
|-
|D||Chevrolet Cavalier 2-d/4-d/wagon 1982, Cavalier CS 1983-1984
|-
|E||Chevrolet Cavalier 3-door hatchback 1982, Cavalier CS 3-door hatchback 1983, Cavalier Type 10 2-d/3-d/Convertible 1984
|-
|B||Pontiac J2000 1982, 2000 1983, 2000 Sunbird 1984
|-
|C||Pontiac J2000 LE 1982, 2000 LE 1983, 2000 Sunbird LE Convertible 1983, 2000 Sunbird LE 1984
|-
|D||Pontiac J2000 SE 1982, 2000 SE 1983, 2000 Sunbird SE 1984
|-
|E||Pontiac J2000 S 1982
|-
|C||Oldsmobile Firenza Base model 1982-1984, Firenza S 1982-1984
|-
|D||Oldsmobile Firenza LX 1982-1984, Firenza SX 1982-1984
|-
|E||Buick Skyhawk T-Type 1983-1984
|-
|S||Buick Skyhawk Custom 1982-1984
|-
|T||Buick Skyhawk Limited 1982-1984
|-
|G||Cadillac Cimarron 1982-1984
|-
|rowspan=1|GM K platform
|S||Cadillac Seville 1981-1984
|-
|rowspan=3|GM P platform
||E||Pontiac Fiero ''Coupe'' 1984
|-
||F||Pontiac Fiero ''SE'' 1984
|-
||M||Pontiac Fiero ''Sport coupe'' 1984
|-
|rowspan=6|GM T platform - rear-wheel drive
|B||Chevrolet Chevette 1981-1983, Chevette CS 1984
|-
|J||Chevrolet Chevette Scooter 1981-1983, Chevette 1984
|-
|B||Pontiac Acadian 1981-1984 (Canada only)
|-
|J||Pontiac Acadian S 1981-1982, Pontiac Acadian Scooter 1983-1984 (Canada only)
|-
|L||Pontiac T1000 1982, 1000 1983-1984
|-
|M||Pontiac T1000 1981
|-
|rowspan=10|GM X platform
|H||Chevrolet Citation 2-door coupe 1982-1983, Citation II 2-door coupe 1984
|-
|X||Chevrolet Citation hatchback 1981-1983, Citation II hatchback 1984
|-
|T||Pontiac Phoenix SJ 1982-1983, Phoenix SE 1984
|-
|Y||Pontiac Phoenix 1981-1984
|-
|Z||Pontiac Phoenix LJ 1981-1983, Phoenix LE 1984
|-
|B||Oldsmobile Omega 1981-1984
|-
|E||Oldsmobile Omega Brougham 1981-1984
|-
|B||Buick Skylark 1981-1982, Skylark Custom 1983-1984
|-
|C||Buick Skylark Limited 1981-1984
|-
|D||Buick Skylark Sport 1981-1982, Skylark T-Type 1983-1984
|-
|rowspan=1|GM Y platform
|Y||Chevrolet Corvette 1981-1982, 1984
|}
===American VIN format 1985-1986 Passenger Car===
GM has traditionally encoded the platform as the 4th character of the VIN. Other content includes an engine code and manufacturing plant. GM's VIN format is as follows:
<table border=1 style="margin:auto;">
<tr>
<th>Position</th>
<th>Sample</th><th></th><th></th><th>Description</th>
</tr><tr>
<td>1</td>
<td>1</td><td></td><td></td><td rowspan=3>[[#GM WMIs|World Manufacturer Identifier]]</td>
</tr><tr>
<td>2</td>
<td>G</td><td></td><td></td></tr><tr>
<td>3</td>
<td>6</td><td></td><td></td></tr><tr>
<td>4</td>
<td>D</td><td></td><td></td><td>[[#Platform & Series Codes 1985- Passenger Car|Platform]]</td>
</tr><tr>
<td>5</td>
<td>W</td><td></td><td></td><td>[[#Platform & Series Codes 1985- Passenger Car|Series Code]]</td>
</tr><tr>
<td>6</td>
<td>6</td><td></td><td></td><td rowspan=2>[[#Body style codes 1981-1986|Body style]]</td>
</tr><tr>
<td>7</td>
<td>9</td><td></td><td></td><td> </td>
</tr><tr>
<td>8</td>
<td>Y</td><td></td><td></td><td>[[#American engine codes 1981-|Engine type]]</td>
</tr><tr>
<td>9</td>
<td>0</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Check digit |Check digit]]</td>
</tr><tr>
<td>10</td>
<td>G</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Model year|Model year]]</td>
</tr><tr>
<td>11</td>
<td>9</td><td></td><td></td><td>[[#GM factories supplying North America|Factory ID]]</td>
</tr><tr>
<td>12</td>
<td>1</td><td></td><td></td><td rowspan=6>Sequential number
</tr><tr>
<td>13</td>
<td>2</td><td></td><td></td></tr><tr>
<td>14</td>
<td>3</td><td></td><td></td></tr><tr>
<td>15</td>
<td>7</td><td></td><td></td></tr><tr>
<td>16</td>
<td>6</td><td></td><td></td></tr><tr>
<td>17</td>
<td>2</td><td></td><td></td>
</table>
====Body style codes 1981-1986====
The Body type is specified as characters 6 and 7 of the American GM VIN for passenger cars from 1981-1986.
{| border=1 style="margin:auto;"
!VIN
!Description
|-
|11,27,37,47,57,97||Two-Door Coupe/Sedan
|-
|07,08,77,87||Two-Door Hatchback
|-
|67||Two-Door Convertible
|-
|19,69||Four-Door Sedan
|-
|68||Four-Door Hatchback
|-
|23||Four-Door Limousine, 8-passenger ("Limousine")
|-
|33||Four-Door Limousine w/Center Partition, 7-passenger ("Formal Limousine")
|-
|35||Four-Door Station Wagon
|}
===American VIN format 1987- Passenger Car===
GM has traditionally encoded the platform as the 4th character of the VIN. Other content includes an engine code and manufacturing plant. GM's VIN format is as follows:
<table border=1 style="margin:auto;">
<tr>
<th>Position</th>
<th>Sample</th><th></th><th></th><th>Description</th>
</tr><tr>
<td>1</td>
<td>1</td><td></td><td></td><td rowspan=3>[[#GM WMIs|World Manufacturer Identifier]]</td>
</tr><tr>
<td>2</td>
<td>G</td><td></td><td></td></tr><tr>
<td>3</td>
<td>6</td><td></td><td></td></tr><tr>
<td>4</td>
<td>D</td><td></td><td></td><td>[[#Platform & Series Codes 1985- Passenger Car|Platform]]</td>
</tr><tr>
<td>5</td>
<td>M</td><td></td><td></td><td>[[#Platform & Series Codes 1985- Passenger Car|Series Code]]</td>
</tr><tr>
<td>6</td>
<td>5</td><td></td><td></td><td>[[#Body style codes 1987- Passenger Car|Body style]]</td>
</tr><tr>
<td>7</td>
<td>7</td><td></td><td></td><td>[[#American restraint types 1987-|Restraint type]]</td>
</tr><tr>
<td>8</td>
<td>N</td><td></td><td></td><td>[[#American engine codes 1981-|Engine type]]</td>
</tr><tr>
<td>9</td>
<td>0</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Check digit |Check digit]]</td>
</tr><tr>
<td>10</td>
<td>3</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Model year|Model year]]</td>
</tr><tr>
<td>11</td>
<td>0</td><td></td><td></td><td>[[#GM factories supplying North America|Factory ID]]</td>
</tr><tr>
<td>12</td>
<td>1</td><td></td><td></td><td rowspan=6>Sequential number
</tr><tr>
<td>13</td>
<td>2</td><td></td><td></td></tr><tr>
<td>14</td>
<td>3</td><td></td><td></td></tr><tr>
<td>15</td>
<td>7</td><td></td><td></td></tr><tr>
<td>16</td>
<td>6</td><td></td><td></td></tr><tr>
<td>17</td>
<td>2</td><td></td><td></td>
</table>
===American VIN format 1981-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle===
GM's VIN format is as follows:
<table border=1 style="margin:auto;">
<tr>
<th>Position</th>
<th>Sample</th><th></th><th></th><th>Description</th>
</tr><tr>
<td>1</td>
<td>1</td><td></td><td></td><td rowspan=3>[[#GM WMIs|World Manufacturer Identifier]]</td>
</tr><tr>
<td>2</td>
<td>G</td><td></td><td></td></tr><tr>
<td>3</td>
<td>K</td><td></td><td></td></tr><tr>
<td>4</td>
<td>E</td><td></td><td></td><td>[[#GVWR/Brake System 1981-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle|GVWR/Brake System]]</td>
</tr><tr>
<td>5</td>
<td>K</td><td></td><td></td><td>[[#Line & Chassis Type 1981-1999 Light Duty Truck & Multi-Purpose Passenger Vehicle|Line & Chassis Type for 1981-1999]]</td>
</tr><tr>
<td>5</td>
<td>K</td><td></td><td></td><td>[[#Line & Chassis Type 2000-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle|Line & Chassis Type for 2000-2009]]</td>
</tr><tr>
<td>6</td>
<td>1</td><td></td><td></td><td>[[#Series 1981-1999 Light Duty Truck & Multi-Purpose Passenger Vehicle|Series]]</td>
</tr><tr>
<td>7</td>
<td>8</td><td></td><td></td><td>[[#Body style codes 1981-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle|Body type]]</td>
</tr><tr>
<td>8</td>
<td>K</td><td></td><td></td><td>[[#Engine codes for light trucks|Engine type]]</td>
</tr><tr>
<td>9</td>
<td>0</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Check digit |Check digit]]</td>
</tr><tr>
<td>10</td>
<td>N</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Model year|Model year]]</td>
</tr><tr>
<td>11</td>
<td>J</td><td></td><td></td><td>[[#GM factories supplying North America|Factory ID]]</td>
</tr><tr>
<td>12</td>
<td>1</td><td></td><td></td><td rowspan=6>Sequential number
</tr><tr>
<td>13</td>
<td>2</td><td></td><td></td></tr><tr>
<td>14</td>
<td>3</td><td></td><td></td></tr><tr>
<td>15</td>
<td>7</td><td></td><td></td></tr><tr>
<td>16</td>
<td>6</td><td></td><td></td></tr><tr>
<td>17</td>
<td>2</td><td></td><td></td>
</table>
====GVWR/Brake System 1981-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle====
The GVWR/Brake System is specified as character 4 of the American GM VIN for light trucks.
{| border=1 style="margin:auto;"
!VIN
!GVWR Range in lbs. & Weight Class
!Brake System
|-
|A||Class A: 0-3,000||Hydraulic
|-
|B||Class B: 3,001-4,000||Hydraulic
|-
|C||Class C: 4,001-5,000||Hydraulic
|-
|D||Class D: 5,001-6,000||Hydraulic
|-
|E||Class E: 6,001-7,000||Hydraulic
|-
|F||Class F: 7,001-8,000||Hydraulic
|-
|G||Class G: 8,001-9,000||Hydraulic
|-
|H||Class H: 9,001-10,000||Hydraulic
|-
|J||Class 3: 10,001-14,000||Hydraulic
|-
|K||Class 4: 14,001-16,000||Hydraulic
|-
|L||Class 5: 16,001-19,500||Hydraulic
|}
====Line & Chassis Type 1981-1999 Light Duty Truck & Multi-Purpose Passenger Vehicle====
The Line & Chassis Type is specified as character 5 of the American GM VIN for light trucks.
{| border=1 style="margin:auto;"
!VIN
!Description
|-
|B||Special Body Buick, Chevrolet
|-
|C||Chevy full-size pickups & chassis cabs 2wd (C-series) '81-'86, '88-'99,<br /> GMC full-size pickups & chassis cabs 2wd (C-series) '81-'86, Sierra 2wd (C-series) '88-'99
|-
|C||Chevy C10 Blazer 2wd ('81-'82), Tahoe 4-door 2wd ('95-'99), Suburban 2wd ('81-'86, '92-'99),<br /> GMC C1500 Jimmy 2wd ('81-'82), Yukon 4-door 2wd ('95-'99), Suburban 2wd ('81-'86, '92-'99)
|-
|D||Military Truck 4wd
|-
|E||'91-'97 Geo Tracker 2wd, '98-'99 Chevrolet Tracker 2wd
|-
|E||'97-'98 Chevy S-10 EV
|-
|G||Chevy/GMC full-size vans (Chevy Van, Sportvan, Express, GMC Vandura, Rally Van, Savana)
|-
|H||'93-'96 Chevy G30HD/GMC G3500HD cutaway van
|-
|H||Cadillac chassis cutaway/special body (Based on Rwd Fleetwood '93-'96, Fwd DeVille '97-'99)
|-
|J||'89-'97 Geo Tracker 4wd, '98-'99 Chevrolet Tracker 4wd
|-
|K||Chevy full-size pickups & chassis cabs 4wd (K-series) '81-'86, '88-'99,<br /> GMC full-size pickups & chassis cabs 4wd (K-series) '81-'86, Sierra 4wd (K-series) '88-'99
|-
|K||Chevy K10/K5 Blazer 4wd ('81-'86, '92-'94), Tahoe 4wd ('95-'99), Suburban 4wd ('81-'86, '92-'99),<br /> GMC K1500 Jimmy 4wd ('81-'86), Yukon 4wd ('92-'99), Suburban 4wd ('81-'86, '92-'99), '99 Cadillac Escalade 4wd
|-
|L||Chevy Luv 2wd '81-'82
|-
|L||Chevy Astro/GMC Safari 4wd '90-'99
|-
|M||Chevy Astro/GMC Safari 2wd '85-'99
|-
|P||Forward Control (includes Chevrolet Step-Van/GMC Value-Van, Chevy/GMC P-Series)
|-
|R||Chevy Luv 4wd '81-'82
|-
|R||Chevy full-size pickups & chassis cabs 2wd (R-series), Suburban 2wd '87-'91,<br /> GMC full-size pickups & chassis cabs 2wd (R-series), Suburban 2wd '87-'91
|-
|S||Chevy S-10 2wd ('82-'99), S-10 Blazer 2wd ('83-'94), Blazer 2wd ('95-'99), GMC S-15 2wd ('82-'90), Sonoma 2wd ('91-'99),<br> S-15 Jimmy 2wd ('83-'91), Jimmy 2wd ('92-'99), Isuzu Hombre 2wd ('96-'99)
|-
|T||Chevy S-10 4wd ('83-'99), S-10 Blazer 4wd ('83-'94), Blazer 4wd ('95-'99), GMC S-15 4wd ('83-'90), Sonoma 4wd ('91-'99), Syclone 4wd ('91),<br> S-15 Jimmy 4wd ('83-'91), Jimmy 4wd ('92-'99), Typhoon 4wd ('92-93), Envoy 4wd ('98-'99), Oldsmobile Bravada 4wd ('91-'94, '96-'99),<br> Isuzu Hombre 4wd ('98-'99)
|-
|U||Regular length All-Purpose Vehicle ('90-'99 U-body fwd minivans)
|-
|V||Chevy full-size pickups & chassis cabs 4wd (V-series), V10/V1500 Blazer 4wd, Suburban 4wd '87-'91,<br /> GMC full-size pickups & chassis cabs 4wd (V-series), V1500 Jimmy 4wd, Suburban 4wd '87-'91
|-
|W||'81-'87 Chevy El Camino, GMC Caballero
|-
|X||Extended length All-Purpose Vehicle ('97-'99 U-body fwd extended length minivans)
|-
|Z||Cadillac chassis cutaway/special body (Based on Rwd Fleetwood '81-'84, Fwd Fleetwood '85-'92)
|}
====Line & Chassis Type 2000-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle====
The Line & Chassis Type is specified as character 5 of the American GM VIN for light trucks.
{| border=1 style="margin:auto;"
!VIN
!Description
|-
|A||Pontiac Aztek 2wd '01-'05, Buick Rendezvous 2wd '02-'07
|-
|A||Chevrolet HHR '06-'09, HHR Panel '07-'09
|-
|B||Pontiac Aztek Awd '01-'05, Buick Rendezvous Awd '02-'06
|-
|C||Chevy full-size pickups & chassis cabs 2wd (C-series) '00, full-size chassis cabs 2wd (C3500HD) '01-'02, Silverado 2wd '00-'09, Silverado Classic 2wd '07,<br /> GMC Sierra 2wd (C-series) '00-'09, Sierra Classic 2wd '00, '07
|-
|C||Chevy Tahoe 2wd ('00-'09), Suburban 2wd ('00-'09), Avalanche 2wd ('02-'09),<br /> GMC Yukon 2wd ('00-'09), Yukon XL 2wd ('00-'09), Cadillac Escalade 2wd ('02-'09), Escalade ESV 2wd ('08-'09)
|-
|E||Chevrolet Tracker 2wd '00-'04
|-
|E||Cadillac SRX 2wd & Awd '04-'09
|-
|G||Chevy/GMC full-size vans 2wd (Chevy Express, GMC Savana) '00-09
|-
|H||Chevy/GMC full-size vans 4wd (Chevy Express, GMC Savana) '03-09
|-
|H||Cadillac Commercial Chassis for Hearse (Based on Fwd DeVille '02-'05, DTS '06-'09)
|-
|H||Cadillac Professional Chassis for Limousine (Based on Fwd DeVille '00-'05, DTS '06-'07)
|-
|J||Chevrolet Tracker 4wd '00-'04
|-
|K||Chevy full-size pickups & chassis cabs 4wd (K-series) '00, Silverado 4wd '00-'09, Silverado Classic 4wd '07,<br /> GMC Sierra 4wd (K-series) '00-'09, Sierra Classic 4wd '00, '07
|-
|K||Chevy Tahoe 4wd ('00-'09), Suburban 4wd ('00-'09), Avalanche 4wd ('02-'09), GMC Yukon 4wd ('00-'09), Yukon XL 4wd ('00-'09),<br> Cadillac Escalade 4wd ('00, '02-'09), Escalade ESV 4wd ('03-'09), Escalade EXT 4wd ('02-'09)
|-
|K||Cadillac Professional Chassis for Limousine (Based on Fwd DTS '08-'09)
|-
|L||Chevy Astro/GMC Safari 4wd '00-'05
|-
|L||Chevy Equinox 2wd & Awd '05-'09, Pontiac Torrent 2wd & Awd '06-'09, Saturn Vue 2wd & Awd '08-'09
|-
|M||Chevy Astro/GMC Safari 2wd '00-'05
|-
|N||Hummer H2 '03-'09, H2 SUT '05-'09
|-
|N||Hummer H3 '06-'09, H3T '09
|-
|R||GMC Acadia 2wd, Saturn Outlook 2wd '07-'09, Buick Enclave 2wd '08-'09, Chevy Traverse 2wd '09
|-
|S||Chevy S-10 2wd ('00-'03), Blazer 2wd ('00-'05), GMC Sonoma 2wd ('00-'03), Jimmy 2wd ('00-'01), Isuzu Hombre 2wd ('00)
|-
|S||Chevy Trailblazer 2wd ('02-'09), SSR ('03-'06), GMC Envoy 2wd ('02-'09), Envoy XUV 2wd ('04-'05), Oldsmobile Bravada 2wd ('02-'04),<br> Buick Rainier 2wd ('04-'07), Isuzu Ascender 2wd ('03-'08)
|-
|S||Chevy Colorado 2wd ('04-'09), GMC Canyon 2wd ('04-'09), Isuzu i-series 2wd ('06-'08)
|-
|T||Chevy S-10 4wd ('00-'04), Blazer 4wd ('00-'05), GMC Sonoma 4wd ('00-'04), Jimmy 4wd ('00-'01, Canada only: '02-'05), Envoy 4wd ('00),<br> Oldsmobile Bravada 4wd ('00-'01), Isuzu Hombre 4wd ('00)
|-
|T||Chevy Trailblazer 4wd ('02-'09), GMC Envoy 4wd ('02-'09), Envoy XUV 2wd ('04-'05), Oldsmobile Bravada 4wd ('02-'04), Buick Rainier 4wd ('04-'07),<br> Isuzu Ascender 4wd ('03-'08), Saab 9-7X 4wd ('05-'09)
|-
|T||Chevy Colorado 4wd ('04-'09), GMC Canyon 4wd ('04-'09), Isuzu i-series 4wd ('06-'08)
|-
|U||Regular length All-Purpose Vehicle [Minivan] ('00-'04 Chevy Venture, Pontiac Montana)
|-
|U||Regular length All-Purpose Vehicle [Minivan] (Chevy Uplander [US: '06-'08, Canada only: '05-'09], Pontiac Montana SV6 [Canada only: '05-'09])
|-
|V||Extended length AWD All-Purpose Vehicle [Minivan] ('02-'04 Chevy Venture, Pontiac Montana, Oldsmobile Silhouette Extended length AWD)
|-
|V||Extended length FWD All-Purpose Vehicle [Minivan] ('05 Chevy Venture, Pontiac Montana Extended length FWD)
|-
|V||Extended length FWD All-Purpose Vehicle [Minivan] (Chevy Uplander ['05-'08, Canada only: '09], Pontiac Montana SV6 ['05-'06, Canada only: '07-'09],<br> Buick Terraza ['05-'07], Saturn Relay ['05-'07])
|-
|V||GMC Acadia Awd, Saturn Outlook Awd '07-'09, Buick Enclave Awd '08-'09, Chevy Traverse Awd '09
|-
|X||Extended length FWD All-Purpose Vehicle [Minivan] ('00-'04 Chevy Venture, Pontiac Montana, Oldsmobile Silhouette Extended length FWD)
|-
|X||Extended length AWD All-Purpose Vehicle [Minivan] ('05-'06 Chevy Uplander AWD, Pontiac Montana SV6 AWD, Buick Terraza AWD, Saturn Relay AWD)
|-
|Z||Saturn Vue 2wd & Awd '02-'07
|}
====Series 1981-1999 Light Duty Truck & Multi-Purpose Passenger Vehicle====
The Series is specified as character 6 of the American GM VIN for light trucks.
{| border=1 style="margin:auto;"
!VIN
!Description
|-
|1||1/2 Ton (includes '96-'99 Isuzu Hombre)
|-
|2||3/4 Ton
|-
|3||1 Ton
|-
|8||1/2 Ton ('81-'87 El Camino, Caballero)
|-
|9||Cadillac, Buick, Chevrolet Commercial Body/Chassis
|-
|0||All-Purpose Vehicle ('90-'99 U-body fwd minivans)
|}
====Series 2000-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle====
The Series is specified as character 6 of the American GM VIN for light trucks.
{| border=1 style="margin:auto;"
!VIN
!Description
|-
|1 <br> (following A)||Chevrolet HHR LS ('06-'07)
|-
|2 <br> (following A)||Chevrolet HHR LT ('06-'07)
|-
|3 <br> (following A)||Chevrolet HHR LT ('07)
|-
|1 <br> (following A)||Chevrolet HHR LS w/auto. trans. ('08-'09)
|-
|2 <br> (following A)||Chevrolet HHR 1LT w/auto. trans. ('08-'09)
|-
|3 <br> (following A)||Chevrolet HHR LS w/man. trans. ('08-'09)
|-
|4 <br> (following A)||Chevrolet HHR 1LT w/man. trans. ('08-'09)
|-
|5 <br> (following A)||Chevrolet HHR 2LT (all transmissions) ('08-'09)
|-
|6 <br> (following A)||Chevrolet HHR SS w/auto. trans. ('08-'09) (Pos. 1-3 of VIN is 3GN)
|-
|7 <br> (following A)||Chevrolet HHR SS w/man. trans. ('08-'09) (Pos. 1-3 of VIN is 3GN)
|-
|6 <br> (following A)||Chevrolet HHR Panel SS w/auto. trans. ('09) (Pos. 1-3 of VIN is 3GC)
|-
|7 <br> (following A)||Chevrolet HHR Panel SS w/man. trans. ('09) (Pos. 1-3 of VIN is 3GC)
|-
|8 <br> (following A)||Chevrolet HHR Panel LS w/auto. trans. ('08-'09) (Pos. 1-3 of VIN is 3GC)
|-
|9 <br> (following A)||Chevrolet HHR Panel LS w/man. trans. ('08-'09) (Pos. 1-3 of VIN is 3GC)
|-
|0 <br> (following A)||Chevrolet HHR Panel LT (all transmissions) ('08-'09) (Pos. 1-3 of VIN is 3GC)
|-
|1 <br> (following A)||Chevrolet HHR Panel LS ('08) (Pos. 1-3 of VIN is 3GC)
|-
|2 <br> (following A)||Chevrolet HHR Panel LT ('08) (Pos. 1-3 of VIN is 3GC)
|-
|3 <br> (following A)||Chevrolet HHR Panel LT ('08) (Pos. 1-3 of VIN is 3GC)
|-
|9 <br> (following B)||Chevrolet Venture (incomplete vehicle) ('02)
|-
|2 <br> (following X)||If VIN starts with 1GB: Chevrolet Venture (incomplete vehicle) ('03-'04)
|-
|0 <br> (following U)||Chevrolet Venture SWB ('00-'04)
|-
|2 <br> (following U)||Chevrolet Venture Value Van SWB ('00-'03)
|-
|2 <br> (following U)||Chevrolet Venture Value SWB (Canada: '04)
|-
|0 <br> (following X)||Chevrolet Venture LWB ('00-'04)
|-
|1 <br> (following X)||Chevrolet Venture Warner Bros. Edition LWB ('00-'03)
|-
|1 <br> (following X)||Chevrolet Venture LT LWB ('04)
|-
|2 <br> (following X)||If VIN starts with 1GN: Chevrolet Venture Cargo Van ('02-'04)
|-
|0 <br> (following V)||Chevrolet Venture LWB Awd ('02-'03)
|-
|1 <br> (following V)||Chevrolet Venture Warner Bros. Edition LWB Awd ('02-'03)
|-
|1 <br> (following V)||Chevrolet Venture LT LWB Awd ('04)
|-
|0 <br> (following V)||Chevrolet Venture Plus ('05) (Pos. 8 of VIN is E)
|-
|1 <br> (following V)||Chevrolet Venture Cargo, Mobility (incomplete vehicle) ('05) (Pos. 8 of VIN is E)
|-
|2 <br> (following V)||Chevrolet Venture LS ('05) (Pos. 8 of VIN is E)
|-
|3 <br> (following V)||Chevrolet Venture LT ('05) (Pos. 8 of VIN is E)
|-
|2 <br> (following U)||Chevrolet Uplander LS SWB 2wd ('06-'08)
|-
|0 <br> (following V)||Chevrolet Uplander Base model 2wd ('05)
|-
|1 <br> (following V)||Chevrolet Uplander Cargo Van 2wd, Mobility (incomplete vehicle) 2wd ('05-'08)
|-
|2 <br> (following V)||Chevrolet Uplander LS 2wd ('05-'08)
|-
|3 <br> (following V)||Chevrolet Uplander LT 2wd ('05-'08)
|-
|3 <br> (following X)||Chevrolet Uplander LT Awd ('05-'06)
|-
|1 <br> (following M)||Chevrolet Astro 2wd ('00-'05)
|-
|1 <br> (following L)||Chevrolet Astro Awd ('00-'05)
|-
|1 <br> (following G)||Chevrolet Express 1500 series 2wd ('00-'09)
|-
|2 <br> (following G)||Chevrolet Express 2500 series 2wd ('00-'09)
|-
|3 <br> (following G)||Chevrolet Express 3500 series 2wd ('00-'09)
|-
|3 <br> (following G)||When VIN starts with 1GBK: Chevrolet Express 4500 series Cutaway 2wd ('09)
|-
|6 <br> (following G)||Chevrolet Express 1500 series LT 2wd ('01-'02)
|-
|1 <br> (following H)||Chevrolet Express 1500 series Awd ('03-'09)
|-
|2 <br> (following H)||Chevrolet Express 2500 series Awd ('03-'05)
|-
|1 <br> (following E)||Chevrolet Tracker Base model 2wd ('00-'04)
|-
|6 <br> (following E)||Chevrolet Tracker LT 2wd ('01-'04)
|-
|1 <br> (following J)||Chevrolet Tracker Base model 4wd ('00-'01, '04)
|-
|1 <br> (following J)||Chevrolet Tracker Base model w/1SB (Preferred) Equip. Group 4wd ('02-'03)
|-
|2 <br> (following J)||Chevrolet Tracker Base model w/1SA (Base) Equip. Group 4wd ('02-'03)
|-
|6 <br> (following J)||Chevrolet Tracker LT 4wd ('01-'04)
|-
|7 <br> (following J)||Chevrolet Tracker ZR2 4wd ('01-'04)
|-
|1 <br> (following L)||Chevrolet Equinox LS 2wd ('05-'09)
|-
|2 <br> (following L)||Chevrolet Equinox LS Awd ('05-'09)
|-
|6 <br> (following L)||Chevrolet Equinox LT 2wd ('05-'07)
|-
|7 <br> (following L)||Chevrolet Equinox LT Awd ('05-'07)
|-
|3 <br> (following L)||Chevrolet Equinox 1LT 2wd ('08-'09)
|-
|4 <br> (following L)||Chevrolet Equinox 1LT Awd ('08-'09)
|-
|5 <br> (following L)||Chevrolet Equinox 2LT 2wd ('08-'09)
|-
|6 <br> (following L)||Chevrolet Equinox 2LT Awd ('08-'09)
|-
|7 <br> (following L)||Chevrolet Equinox LTZ 2wd ('08-'09)
|-
|8 <br> (following L)||Chevrolet Equinox LTZ Awd ('08-'09)
|-
|9 <br> (following L)||Chevrolet Equinox Sport 2wd ('08-'09)
|-
|0 <br> (following L)||Chevrolet Equinox Sport Awd ('08-'09)
|-
|1 <br> (following R)||Chevrolet Traverse LS 2wd ('09)
|-
|2 <br> (following R)||Chevrolet Traverse LT 2wd ('09)
|-
|3 <br> (following R)||Chevrolet Traverse LTZ 2wd ('09)
|-
|1 <br> (following V)||Chevrolet Traverse LS Awd ('09)
|-
|2 <br> (following V)||Chevrolet Traverse LT Awd ('09)
|-
|3 <br> (following V)||Chevrolet Traverse LTZ Awd ('09)
|-
|1 <br> (following S)||Chevrolet Blazer 2wd ('00-'05)
|-
|1 <br> (following T)||Chevrolet Blazer 4wd ('00-'05)
|-
|1 <br> (following S)||Chevrolet Trailblazer 2wd ('02-'08), Trailblazer EXT 2wd ('02-'06)
|-
|1 <br> (following T)||Chevrolet Trailblazer 4wd ('02-'08), Trailblazer EXT 4wd ('02-'06)
|-
|3 <br> (following S)||Chevrolet Trailblazer LT 2wd ('09)
|-
|3 <br> (following T)||Chevrolet Trailblazer LT 4wd ('09)
|-
|5 <br> (following S)||Chevrolet Trailblazer SS 2wd ('09)
|-
|5 <br> (following T)||Chevrolet Trailblazer SS 4wd ('09)
|-
|1 <br> (following C)||Chevrolet Tahoe Limited 2wd ('00) [GMT400; 8th pos. of VIN is R]
|-
|1 <br> (following K)||Chevrolet Tahoe Z71 4wd ('00) [GMT400; 8th pos. of VIN is R]
|-
|1 <br> (following C)||Chevrolet Tahoe 2wd ('00-'06) [GMT800]
|-
|1 <br> (following K)||Chevrolet Tahoe 4wd ('00-'06) [GMT800]
|-
|1 <br> (following C)||Chevrolet Tahoe 2wd ('07-'08) [GMT900]
|-
|0 <br> (following C)||Chevrolet Tahoe Police/Special Service 2wd ('07-'09) [GMT900]
|-
|1 <br> (following C)||Chevrolet Tahoe LS 2wd ('09) [GMT900]
|-
|2 <br> (following C)||Chevrolet Tahoe LT 2wd ('09) [GMT900]
|-
|3 <br> (following C)||Chevrolet Tahoe LTZ 2wd ('09) [GMT900]
|-
|1 <br> (following K)||Chevrolet Tahoe 4wd ('07-'08) [GMT900]
|-
|0 <br> (following K)||Chevrolet Tahoe Police/Special Service 4wd ('07-'09) [GMT900]
|-
|1 <br> (following K)||Chevrolet Tahoe LS 4wd ('09) [GMT900]
|-
|2 <br> (following K)||Chevrolet Tahoe LT 4wd ('09) [GMT900]
|-
|3 <br> (following K)||Chevrolet Tahoe LTZ 4wd ('09) [GMT900]
|-
|1 <br> (following C)||Chevrolet Suburban 1500 series 2wd ('00-'08)
|-
|2 <br> (following C)||Chevrolet Suburban 2500 series 2wd ('00-'08)
|-
|1 <br> (following K)||Chevrolet Suburban 1500 series 4wd ('00-'08)
|-
|2 <br> (following K)||Chevrolet Suburban 2500 series 4wd ('00-'08)
|-
|1 <br> (following C)||Chevrolet Suburban 1500 series LS 2wd ('09)
|-
|2 <br> (following C)||Chevrolet Suburban 1500 series LT 2wd ('09)
|-
|3 <br> (following C)||Chevrolet Suburban 1500 series LTZ 2wd ('09)
|-
|4 <br> (following C)||Chevrolet Suburban 2500 series LS 2wd ('09)
|-
|5 <br> (following C)||Chevrolet Suburban 2500 series LT 2wd ('09)
|-
|1 <br> (following K)||Chevrolet Suburban 1500 series LS 4wd ('09)
|-
|2 <br> (following K)||Chevrolet Suburban 1500 series LT 4wd ('09)
|-
|3 <br> (following K)||Chevrolet Suburban 1500 series LTZ 4wd ('09)
|-
|4 <br> (following K)||Chevrolet Suburban 2500 series LS 4wd ('09)
|-
|5 <br> (following K)||Chevrolet Suburban 2500 series LT 4wd ('09)
|-
|1 <br> (following C)||Chevrolet Avalanche 1500 series 2wd ('02-'08)
|-
|2 <br> (following C)||Chevrolet Avalanche 2500 series 2wd ('02-'03)
|-
|1 <br> (following K)||Chevrolet Avalanche 1500 series 4wd ('02-'08)
|-
|2 <br> (following K)||Chevrolet Avalanche 2500 series 4wd ('02-'06)
|-
|1 <br> (following C)||Chevrolet Avalanche 1500 series LS 2wd ('09)
|-
|2 <br> (following C)||Chevrolet Avalanche 1500 series LT 2wd ('09)
|-
|3 <br> (following C)||Chevrolet Avalanche 1500 series LTZ 2wd ('09)
|-
|1 <br> (following K)||Chevrolet Avalanche 1500 series LS 4wd ('09)
|-
|2 <br> (following K)||Chevrolet Avalanche 1500 series LT 4wd ('09)
|-
|3 <br> (following K)||Chevrolet Avalanche 1500 series LTZ 4wd ('09)
|-
|1 <br> (following S)||Chevrolet SSR 2wd ('03-'06)
|-
|6 <br> (following S)||Chevrolet SSR Signature Series 2wd ('03) <br> [All SSR Signature Series also have a 0 in the 12th pos. of VIN whereas all other SSRs have a 1 in the 12th pos. of VIN]
|-
|1 <br> (following S)||Chevrolet S-10 2wd ('00-'03)
|-
|1 <br> (following T)||Chevrolet S-10 4wd ('00-'04)
|-
|1 <br> (following S)||Chevrolet Colorado 2wd ('04-'07)
|-
|1 <br> (following T)||Chevrolet Colorado 4wd ('04-'07)
|-
|1 <br> (following C)||Chevrolet Silverado 1500 2wd ('00-'06), Silverado Classic 1500 2wd ('07) (Pos. 8 of VIN is X, V, T, Z, or N] [GMT800]
|-
|1 <br> (following K)||Chevrolet Silverado 1500 4wd ('00-'06), Silverado Classic 1500 4wd ('07) (Pos. 8 of VIN is X, V, T, Z, B, or N] [GMT800]
|-
|1 <br> (following C)||Chevrolet Silverado 1500HD 2wd ('01-'03, '05-'06), Silverado Classic 1500HD 2wd ('07) (Pos. 8 of VIN is U] [GMT800]
|-
|1 <br> (following K)||Chevrolet Silverado 1500HD 4wd ('01-'03, '05-'06), Silverado Classic 1500HD 2wd ('07) (Pos. 8 of VIN is U] [GMT800]
|-
|2 <br> (following C)||Chevrolet Silverado 2500 (LD) 2wd ('00-'04) [GMT800] (Pos. 8 of VIN is T ('00) or U ('00-'04)]
|-
|2 <br> (following K)||Chevrolet Silverado 2500 (LD) 4wd ('00-'04) [GMT800] (Pos. 8 of VIN is U]
|-
|2 <br> (following C)||Chevrolet C2500 2wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R)
|-
|3 <br> (following C)||Chevrolet C3500 2wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R)
|-
|3 <br> (following C)||when 4th pos. of VIN is K: Chevrolet C3500HD 2wd ('00-'02) [GMT400]
|-
|2 <br> (following K)||Chevrolet K2500 4wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R)
|-
|3 <br> (following K)||Chevrolet K3500 4wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R)
|-
|2 <br> (following C)||Chevrolet Silverado 2500HD 2wd ('01-'06), Silverado Classic 2500HD 2wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800]
|-
|2 <br> (following K)||Chevrolet Silverado 2500HD 4wd ('01-'06), Silverado Classic 2500HD 4wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800]
|-
|3 <br> (following C)||Chevrolet Silverado 3500 2wd ('01-'06), Silverado Classic 3500 2wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800]
|-
|3 <br> (following K)||Chevrolet Silverado 3500 4wd ('01-'06), Silverado Classic 3500 4wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800]
|-
|1 <br> (following C)||Chevrolet Silverado 1500 2wd ('07-'08) (Pos. 8 of VIN is X, C, J, 0, or Y) [GMT900]
|-
|1 <br> (following K)||Chevrolet Silverado 1500 4wd ('07-'08) (Pos. 8 of VIN is X, C, J, M, 0, 3, or Y) [GMT900]
|-
|2 <br> (following C)||Chevrolet Silverado 2500HD 2wd ('07-'08) [GMT900]
|-
|2 <br> (following K)||Chevrolet Silverado 2500HD 4wd ('07-'08) [GMT900]
|-
|3 <br> (following C)||Chevrolet Silverado 3500HD 2wd ('07-'08) [GMT900]
|-
|3 <br> (following K)||Chevrolet Silverado 3500HD 4wd ('07-'08) [GMT900]
|-
|1 <br> (following C)||Chevrolet Silverado Work Truck, LS 1500 2wd ('09) [GMT900]
|-
|2 <br> (following C)||Chevrolet Silverado LT 1500 2wd ('09) [GMT900]
|-
|3 <br> (following C)||Chevrolet Silverado LTZ 1500 2wd ('09) [GMT900]
|-
|1 <br> (following K)||Chevrolet Silverado Work Truck, LS 1500 4wd ('09) [GMT900]
|-
|2 <br> (following K)||Chevrolet Silverado LT 1500 4wd ('09) [GMT900]
|-
|3 <br> (following K)||Chevrolet Silverado LTZ 1500 4wd ('09) [GMT900]
|-
|4 <br> (following C)||Chevrolet Silverado Work Truck 2500HD 2wd ('09) [GMT900]
|-
|5 <br> (following C)||Chevrolet Silverado LT 2500HD 2wd ('09) [GMT900]
|-
|6 <br> (following C)||Chevrolet Silverado LTZ 2500HD 2wd ('09) [GMT900]
|-
|4 <br> (following K)||Chevrolet Silverado Work Truck 2500HD 4wd ('09) [GMT900]
|-
|5 <br> (following K)||Chevrolet Silverado LT 2500HD 4wd ('09) [GMT900]
|-
|6 <br> (following K)||Chevrolet Silverado LTZ 2500HD 4wd ('09) [GMT900]
|-
|7 <br> (following C)||Chevrolet Silverado Work Truck 3500HD 2wd ('09) [GMT900]
|-
|8 <br> (following C)||Chevrolet Silverado LT 3500HD 2wd ('09) [GMT900]
|-
|9 <br> (following C)||Chevrolet Silverado LTZ 3500HD 2wd ('09) [GMT900]
|-
|7 <br> (following K)||Chevrolet Silverado Work Truck 3500HD 4wd ('09) [GMT900]
|-
|8 <br> (following K)||Chevrolet Silverado LT 3500HD 4wd ('09) [GMT900]
|-
|9 <br> (following K)||Chevrolet Silverado LTZ 3500HD 4wd ('09) [GMT900]
|-
|0 <br> (following U)||Pontiac Montana SWB ('00-)
|-
|0 <br> (following X)||Pontiac Montana LWB ('00-)
|-
|0 <br> (following V)||Pontiac Montana LWB Awd ('02-)
|-
|1 <br> (following V)||Pontiac Montana Mobility (incomplete vehicle) 2wd ('05) (Pos. 8 of VIN is E)
|-
|2 <br> (following V)||Pontiac Montana ('05) (Pos. 8 of VIN is E)
|-
|0 <br> (following V)||Pontiac Montana SV6 1SA 2wd ('05)
|-
|3 <br> (following V)||Pontiac Montana SV6 1SB 2wd ('05)
|-
|2 <br> (following X)||Pontiac Montana SV6 1SA Awd ('05)
|-
|3 <br> (following X)||Pontiac Montana SV6 1SB Awd ('05)
|-
|1 <br> (following V)||Pontiac Montana SV6 Mobility (incomplete vehicle) 2wd ('06)
|-
|3 <br> (following V)||Pontiac Montana SV6 2wd ('06)
|-
|3 <br> (following X)||Pontiac Montana SV6 Awd ('06)
|-
|0 <br> (following A)||Pontiac Aztek 2wd ('01-'05)
|-
|0 <br> (following B)||Pontiac Aztek Awd ('01-'05)
|-
|6 <br> (following L)||Pontiac Torrent 2wd ('06-'07)
|-
|7 <br> (following L)||Pontiac Torrent Awd ('06-'07)
|-
|3 <br> (following L)||Pontiac Torrent Base model 2wd ('08-'09)
|-
|4 <br> (following L)||Pontiac Torrent Base model Awd ('08-'09)
|-
|5 <br> (following L)||Pontiac Torrent GXP 2wd ('08-'09)
|-
|6 <br> (following L)||Pontiac Torrent GXP Awd ('08-'09)
|-
|0 <br> (following X)||Oldsmobile Silhouette extended length GL 2wd ('00, '03-'04), GLS 2wd ('00-'04)
|-
|1 <br> (following X)||Oldsmobile Silhouette extended length Premiere 2wd ('00-'04)
|-
|2 <br> (following X)||Oldsmobile Silhouette extended length GL 2wd ('01-'02)
|-
|0 <br> (following V)||Oldsmobile Silhouette extended length GLS Awd ('02-'04)
|-
|1 <br> (following V)||Oldsmobile Silhouette extended length Premiere Awd ('02-'04)
|-
|1 <br> (following S)||Oldsmobile Bravada 2wd ('02-'04)
|-
|1 <br> (following T)||Oldsmobile Bravada 4wd ('00-'04)
|-
|1 <br> (following V)||Buick Terraza Mobility (incomplete vehicle) 2wd ('05-'07)
|-
|2 <br> (following V)||Buick Terraza CX 2wd ('05-'07), CX Plus 2wd ('07)
|-
|3 <br> (following V)||Buick Terraza CXL 2wd ('05-'07)
|-
|2 <br> (following X)||Buick Terraza CX Awd ('05-'06)
|-
|3 <br> (following X)||Buick Terraza CXL Awd ('05-'06)
|-
|0 <br> (following A)||Buick Rendezvous 2wd ('02-'07)
|-
|0 <br> (following B)||Buick Rendezvous Awd ('02-'06)
|-
|1 <br> (following S)||Buick Rainier 2wd ('04-'07)
|-
|1 <br> (following T)||Buick Rainier 4wd ('04-'06)
|-
|1 <br> (following R)||Buick Enclave CX 2wd ('08-'09)
|-
|2 <br> (following R)||Buick Enclave CXL 2wd ('08-'09)
|-
|1 <br> (following V)||Buick Enclave CX Awd ('08-'09)
|-
|2 <br> (following V)||Buick Enclave CXL Awd ('08-'09)
|-
|9 <br> (following H)||Cadillac Commercial Chassis (incomplete vehicle) for Limousine or Hearse based on DeVille ('00-'01)
|-
|0 <br> (following H)||Cadillac Commercial Chassis (incomplete vehicle) for Hearse based on DeVille ('02-'05) or DTS ('06-'09)
|-
|9 <br> (following H)||Cadillac Professional Chassis (incomplete vehicle) for Limousine based on DeVille ('02-'05) or DTS ('06-'07)
|-
|9 <br> (following K)||Cadillac Professional Chassis (incomplete vehicle) for Limousine based on DTS ('08-'09)
|-
|6 <br> (following E)||Cadillac SRX ('04-'07)
|-
|2 <br> (following E)||Cadillac SRX RWD V8 ('08-'09)
|-
|4 <br> (following E)||Cadillac SRX AWD V6 ('08-'09)
|-
|5 <br> (following E)||Cadillac SRX AWD V8 ('08-'09)
|-
|6 <br> (following E)||When Pos. 8 of VIN is 7: Cadillac SRX RWD V6 ('08)
|-
|6 <br> (following E)||When Pos. 8 of VIN is A: Cadillac SRX AWD V8 ('08)
|-
|6 <br> (following E)||Cadillac SRX RWD V6 ('09)
|-
|1 <br> (following K)||Cadillac Escalade 4wd (Early '00)
|-
|4 <br> (following K)||Cadillac Escalade Platinum Edition 4wd ('08), Escalade ESV Platinum Edition 4wd ('08)
|-
|6 <br> (following C)||Cadillac Escalade 2wd ('02-'08), Escalade ESV 2wd ('08)
|-
|6 <br> (following K)||Cadillac Escalade 4wd (Mid '00, '02-'08), Escalade ESV 4wd ('03-'08), Escalade EXT 4wd ('02-'08)
|-
|1 <br> (following C)||Cadillac Escalade 2wd Base model ('09), Escalade ESV 2wd Base model ('09)
|-
|2 <br> (following C)||Cadillac Escalade 2wd w/Ultra Luxury Collection ('09), Escalade ESV 2wd w/Ultra Luxury Collection ('09)
|-
|3 <br> (following C)||Cadillac Escalade 2wd w/Platinum Edition ('09), Escalade ESV 2wd w/Platinum Edition ('09)
|-
|4 <br> (following C)||Cadillac Escalade Hybrid 2wd Base model ('09)
|-
|5 <br> (following C)||Cadillac Escalade 2wd w/Sport Package ('09), Escalade ESV 4wd w/Sport Package ('09)
|-
|1 <br> (following K)||Cadillac Escalade 4wd Base model ('09), Escalade ESV 4wd Base model ('09), Escalade EXT 4wd Base model ('09)
|-
|2 <br> (following K)||Cadillac Escalade 4wd w/Ultra Luxury Collection ('09), Escalade ESV 4wd w/Ultra Luxury Collection ('09),<br> Escalade EXT 4wd w/Ultra Luxury Collection ('09)
|-
|3 <br> (following K)||Cadillac Escalade 4wd w/Platinum Edition ('09), Escalade ESV 4wd w/Platinum Edition ('09)
|-
|4 <br> (following K)||Cadillac Escalade Hybrid 4wd Base model ('09)
|-
|5 <br> (following K)||Cadillac Escalade 4wd w/Sport Package ('09), Escalade ESV 4wd w/Sport Package ('09), Escalade EXT 4wd w/Sport Package ('09)
|-
|1 <br> (following M)||GMC Safari 2wd ('00-'05)
|-
|1 <br> (following L)||GMC Safari Awd ('00-'05)
|-
|1 <br> (following G)||GMC Savana 1500 series 2wd ('00-'09)
|-
|2 <br> (following G)||GMC Savana 2500 series 2wd ('00-'09)
|-
|3 <br> (following G)||GMC Savana 3500 series 2wd ('00-'09)
|-
|3 <br> (following G)||When VIN starts with 1GBK: GMC Savana 4500 series Cutaway 2wd ('09)
|-
|6 <br> (following G)||GMC Savana 1500 series SLT 2wd ('01-'02)
|-
|1 <br> (following H)||GMC Savana 1500 series Awd ('03-'09)
|-
|2 <br> (following H)||GMC Savana 2500 series Awd ('03-'05)
|-
|1 <br> (following R)||GMC Acadia SLE 2wd ('07-'09)
|-
|2 <br> (following R)||GMC Acadia SLT-1 2wd ('07-'09)
|-
|3 <br> (following R)||GMC Acadia SLT-2 2wd ('07-'09)
|-
|1 <br> (following V)||GMC Acadia SLE Awd ('07-'09)
|-
|2 <br> (following V)||GMC Acadia SLT-1 Awd ('07-'09)
|-
|3 <br> (following V)||GMC Acadia SLT-2 Awd ('07-'09)
|-
|1 <br> (following S)||GMC Jimmy 2wd ('00-'01)
|-
|6 <br> (following S)||GMC Jimmy Diamond Edition 2wd ('01)
|-
|1 <br> (following T)||GMC Jimmy 4wd ('00-'01 & '02-'05 in Canada)
|-
|6 <br> (following T)||GMC Jimmy Diamond Edition 4wd ('01)
|-
|1 <br> (following S)||GMC Envoy 2wd ('02-'08), Envoy XL 2wd ('02-'06), Envoy XUV 2wd ('04-'05)
|-
|6 <br> (following S)||GMC Envoy Denali 2wd ('05-'08), Envoy XL Denali 2wd ('05-'06)
|-
|1 <br> (following T)||GMC Envoy 4wd ('02-'08), Envoy XL 4wd ('02-'06), Envoy XUV 4wd ('04-'05)
|-
|6 <br> (following T)||GMC Envoy Denali 4wd ('05-'08), Envoy XL Denali 4wd ('05-'06)
|-
|3 <br> (following S)||GMC Envoy SLE 2wd ('09)
|-
|3 <br> (following T)||GMC Envoy SLE 4wd ('09)
|-
|4 <br> (following S)||GMC Envoy SLT 2wd ('09)
|-
|4 <br> (following T)||GMC Envoy SLT 4wd ('09)
|-
|5 <br> (following S)||GMC Envoy Denali 2wd ('09)
|-
|5 <br> (following T)||GMC Envoy Denali 4wd ('09)
|-
|1 <br> (following C)||GMC Yukon 2wd ('00-'06) [GMT800]
|-
|1 <br> (following K)||GMC Yukon 4wd ('00-'06) [GMT800]
|-
|1 <br> (following C)||GMC Yukon 2wd ('07-'08) [GMT900]
|-
|1 <br> (following K)||GMC Yukon 4wd ('07-'08) [GMT900]
|-
|1 <br> (following C)||GMC Yukon 2wd ('09) [GMT900]
|-
|1 <br> (following K)||GMC Yukon 4wd ('09) [GMT900]
|-
|1 <br> (following C)||GMC Yukon Hybrid 2wd ('09) [GMT900; 8th pos. of VIN is 5]
|-
|1 <br> (following K)||GMC Yukon Hybrid 4wd ('09) [GMT900; 8th pos. of VIN is 5]
|-
|2 <br> (following C)||GMC Yukon SLE 2wd ('09) [GMT900]
|-
|3 <br> (following C)||GMC Yukon SLT 2wd ('09) [GMT900]
|-
|2 <br> (following K)||GMC Yukon SLE 4wd ('09) [GMT900]
|-
|3 <br> (following K)||GMC Yukon SLT 4wd ('09) [GMT900]
|-
|1 <br> (following K)||GMC Yukon Denali 4wd (Early '00) [GMT400; 8th pos. of VIN is R]
|-
|6 <br> (following K)||GMC Yukon Denali 4wd (Mid '00) [GMT400; 8th pos. of VIN is R]
|-
|6 <br> (following K)||GMC Yukon Denali 4wd ('01-'06) [GMT800]
|-
|6 <br> (following C)||GMC Yukon Denali 2wd ('08) [GMT900]
|-
|6 <br> (following K)||GMC Yukon Denali 4wd ('07-'08) [GMT900]
|-
|0 <br> (following C)||GMC Yukon Denali 2wd ('09) [GMT900]
|-
|0 <br> (following K)||GMC Yukon Denali 4wd ('09) [GMT900]
|-
|1 <br> (following K)||GMC Yukon Denali 4wd ('09) [GMT900; 8th pos. of VIN is 2]
|-
|1 <br> (following C)||GMC Yukon Denali Hybrid 2wd ('09) [GMT900; 8th pos. of VIN is 5]
|-
|1 <br> (following K)||GMC Yukon Denali Hybrid 4wd ('09) [GMT900; 8th pos. of VIN is 5]
|-
|1 <br> (following C)||GMC Yukon XL 1500 series 2wd ('00-'08)
|-
|2 <br> (following C)||GMC Yukon XL 2500 series 2wd ('00-'08)
|-
|6 <br> (following C)||GMC Yukon XL Denali 1500 series 2wd ('08)
|-
|1 <br> (following K)||GMC Yukon XL 1500 series 4wd ('00-'08)
|-
|2 <br> (following K)||GMC Yukon XL 2500 series 4wd ('00-'08)
|-
|6 <br> (following K)||GMC Yukon XL Denali 1500 series 4wd ('01-'08)
|-
|1 <br> (following C)||GMC Yukon XL 1500 series 2wd ('09)
|-
|2 <br> (following C)||GMC Yukon XL 1500 series SLE 2wd ('09)
|-
|3 <br> (following C)||GMC Yukon XL 1500 series SLT 2wd ('09)
|-
|4 <br> (following C)||GMC Yukon XL 2500 series 2wd ('09)
|-
|5 <br> (following C)||GMC Yukon XL 2500 series SLE 2wd ('09)
|-
|6 <br> (following C)||GMC Yukon XL 2500 series SLT 2wd ('09)
|-
|0 <br> (following C)||GMC Yukon XL Denali 1500 series 2wd ('09)
|-
|1 <br> (following K)||GMC Yukon XL 1500 series 4wd ('09)
|-
|2 <br> (following K)||GMC Yukon XL 1500 series SLE 4wd ('09)
|-
|3 <br> (following K)||GMC Yukon XL 1500 series SLT 4wd ('09)
|-
|4 <br> (following K)||GMC Yukon XL 2500 series 4wd ('09)
|-
|5 <br> (following K)||GMC Yukon XL 2500 series SLE 4wd ('09)
|-
|6 <br> (following K)||GMC Yukon XL 2500 series SLT 4wd ('09)
|-
|0 <br> (following K)||GMC Yukon XL Denali 1500 series 4wd ('09)
|-
|1 <br> (following K)||GMC Yukon XL Denali 1500 series 4wd ('09) [8th pos. of VIN is 2]
|-
|1 <br> (following S)||GMC Sonoma 2wd ('00-'03)
|-
|1 <br> (following T)||GMC Sonoma 4wd ('00-'04)
|-
|1 <br> (following S)||GMC Canyon 2wd ('04-'07)
|-
|1 <br> (following T)||GMC Canyon 4wd ('04-'07)
|-
|1 <br> (following C)||GMC Sierra 1500 2wd ('00-'06), Sierra Classic 1500 2wd ('07) (Pos. 8 of VIN is X, V, T, Z, or N] [GMT800]
|-
|1 <br> (following K)||GMC Sierra 1500 4wd ('00-'06), Sierra Classic 1500 4wd ('07) (Pos. 8 of VIN is X, V, T, Z, B, or N] [GMT800]
|-
|1 <br> (following C)||GMC Sierra 1500HD 2wd ('01-'03, '05-'06), Sierra Classic 1500HD 2wd ('07) (Pos. 8 of VIN is U] [GMT800]
|-
|1 <br> (following K)||GMC Sierra 1500HD 4wd ('01-'03, '05-'06), Sierra Classic 1500HD 2wd ('07) (Pos. 8 of VIN is U] [GMT800]
|-
|6 <br> (following K)||GMC Sierra C3 1500 Awd ('01) [GMT800]
|-
|6 <br> (following K)||GMC Sierra Denali 1500 Awd ('02-'06), Sierra Classic Denali 1500 Awd ('07) (Pos. 8 of VIN is N] [GMT800]
|-
|2 <br> (following C)||GMC Sierra 2500 (LD) 2wd ('00-'04) [GMT800] (Pos. 8 of VIN is T ('00) or U ('00-'04)]
|-
|2 <br> (following K)||GMC Sierra 2500 (LD) 4wd ('00-'04) [GMT800] (Pos. 8 of VIN is U]
|-
|2 <br> (following C)||GMC Sierra Classic C2500 2wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R)
|-
|3 <br> (following C)||GMC Sierra Classic C3500 2wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R)
|-
|3 <br> (following C)||when 4th pos. of VIN is K: GMC Sierra C3500HD 2wd ('00-'02) [GMT400]
|-
|2 <br> (following K)||GMC Sierra Classic K2500 4wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R)
|-
|3 <br> (following K)||GMC Sierra Classic K3500 4wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R)
|-
|2 <br> (following C)||GMC Sierra 2500HD 2wd ('01-'06), Sierra Classic 2500HD 2wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800]
|-
|2 <br> (following K)||GMC Sierra 2500HD 4wd ('01-'06), Sierra Classic 2500HD 4wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800]
|-
|3 <br> (following C)||GMC Sierra 3500 2wd ('01-'06), Sierra Classic 3500 2wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800]
|-
|3 <br> (following K)||GMC Sierra 3500 4wd ('01-'06), Sierra Classic 3500 4wd ('07) (Pos. 8 of VIN is D, G, or U) [GMT800]
|-
|1 <br> (following C)||GMC Sierra 1500 2wd ('07-'08) (Pos. 8 of VIN is X, C, J, 0, or Y) [GMT900]
|-
|6 <br> (following C)||GMC Sierra Denali 1500 2wd ('07-'08) (Pos. 8 of VIN is 8) [GMT900]
|-
|1 <br> (following K)||GMC Sierra 1500 4wd ('07-'08) (Pos. 8 of VIN is X, C, J, M, 0, 3, or Y) [GMT900]
|-
|6 <br> (following K)||GMC Sierra Denali 1500 Awd ('07-'08) (Pos. 8 of VIN is 8) [GMT900]
|-
|2 <br> (following C)||GMC Sierra 2500HD 2wd ('07-'08) [GMT900]
|-
|2 <br> (following K)||GMC Sierra 2500HD 4wd ('07-'08) [GMT900]
|-
|3 <br> (following C)||GMC Sierra 3500HD 2wd ('07-'08) [GMT900]
|-
|3 <br> (following K)||GMC Sierra 3500HD 4wd ('07-'08) [GMT900]
|-
|1 <br> (following C)||GMC Sierra Work Truck, SL 1500 2wd ('09) [GMT900]
|-
|2 <br> (following C)||GMC Sierra SLE 1500 2wd ('09) [GMT900]
|-
|3 <br> (following C)||GMC Sierra SLT 1500 2wd ('09) [GMT900]
|-
|0 <br> (following C)||GMC Sierra Denali 1500 2wd ('09) [GMT900]
|-
|1 <br> (following K)||GMC Sierra Work Truck, SL 1500 4wd ('09) [GMT900]
|-
|2 <br> (following K)||GMC Sierra SLE 1500 4wd ('09) [GMT900]
|-
|3 <br> (following K)||GMC Sierra SLT 1500 4wd ('09) [GMT900]
|-
|0 <br> (following K)||GMC Sierra Denali 1500 Awd ('09) [GMT900]
|-
|4 <br> (following C)||GMC Sierra Work Truck 2500HD 2wd ('09) [GMT900]
|-
|5 <br> (following C)||GMC Sierra SLE 2500HD 2wd ('09) [GMT900]
|-
|6 <br> (following C)||GMC Sierra SLT 2500HD 2wd ('09) [GMT900]
|-
|4 <br> (following K)||GMC Sierra Work Truck 2500HD 4wd ('09) [GMT900]
|-
|5 <br> (following K)||GMC Sierra SLE 2500HD 4wd ('09) [GMT900]
|-
|6 <br> (following K)||GMC Sierra SLT 2500HD 4wd ('09) [GMT900]
|-
|7 <br> (following C)||GMC Sierra Work Truck 3500HD 2wd ('09) [GMT900]
|-
|8 <br> (following C)||GMC Sierra SLE 3500HD 2wd ('09) [GMT900]
|-
|9 <br> (following C)||GMC Sierra SLT 3500HD 2wd ('09) [GMT900]
|-
|7 <br> (following K)||GMC Sierra Work Truck 3500HD 4wd ('09) [GMT900]
|-
|8 <br> (following K)||GMC Sierra SLE 3500HD 4wd ('09) [GMT900]
|-
|9 <br> (following K)||GMC Sierra SLT 3500HD 4wd ('09) [GMT900]
|-
|0 <br> (following V)||Saturn Relay ''2'' 2wd ('05-'07)
|-
|2 <br> (following V)||Saturn Relay ''3'' 2wd ('05-'07)
|-
|5 <br> (following V)||Saturn Relay ''1'' 2wd ('07)
|-
|2 <br> (following X)||Saturn Relay ''3'' Awd ('05-'06)
|-
|2 <br> (following Z)||Saturn Vue I4, Man. Trans., Fwd ('02-'07)
|-
|3 <br> (following Z)||Saturn Vue I4, Auto. Trans., Fwd ('02-'07)
|-
|4 <br> (following Z)||Saturn Vue I4, Auto. Trans., Awd ('02-'05)
|-
|5 <br> (following Z)||Saturn Vue V6, Auto. Trans., Fwd ('03-'07)
|-
|6 <br> (following Z)||Saturn Vue V6, Auto. Trans., Awd ('02-'07)
|-
|3 <br> (following L)||Saturn Vue XE Fwd ('08-'09)
|-
|4 <br> (following L)||Saturn Vue XE Awd ('08-'09)
|-
|5 <br> (following L)||when 4th pos. of VIN is C: Saturn Vue XR Fwd ('08-'09)
|-
|7 <br> (following L)||Saturn Vue XR Awd (Early '08)
|-
|6 <br> (following L)||Saturn Vue XR Awd (Mid '08-'09)
|-
|5 <br> (following L)||when 4th pos. of VIN is D: Saturn Vue XR Awd ('09)
|-
|1 <br> (following L)||Saturn Vue Red Line Fwd ('08-'09)
|-
|9 <br> (following L)||Saturn Vue Red Line Awd ('08)
|-
|0 <br> (following L)||Saturn Vue Red Line Awd ('09)
|-
|0 <br> (following L)||Saturn Vue Green Line Fwd ('08)
|-
|9 <br> (following L)||Saturn Vue Green Line Fwd ('09)
|-
|1 <br> (following R)||Saturn Outlook XE 2wd ('07-'09)
|-
|2 <br> (following R)||Saturn Outlook XR 2wd ('07-'09)
|-
|3 <br> (following R)||Saturn Outlook XR 2wd w/Touring Package ('07-'09)
|-
|1 <br> (following V)||Saturn Outlook XE Awd ('07-'09)
|-
|2 <br> (following V)||Saturn Outlook XR Awd ('07-'09)
|-
|3 <br> (following V)||Saturn Outlook XR Awd w/Touring Package ('07-'09)
|-
|1 <br> (following N)||Hummer H3 ('06-'07)
|-
|1 <br> (following N)||Hummer H3 Base model ('08)
|-
|3 <br> (following N)||Hummer H3 Adventure ('08)
|-
|4 <br> (following N)||Hummer H3 Luxury ('08)
|-
|5 <br> (following N)||Hummer H3 X ('08)
|-
|6 <br> (following N)||Hummer H3 Alpha ('08)
|-
|1 <br> (following N)||Hummer H3, H3T ('09)
|-
|2 <br> (following N)||Hummer H2 ('03-'08), H2 SUT ('05-'08)
|-
|2 <br> (following N)||Hummer H2 Base model ('09), H2 SUT Base model ('09)
|-
|7 <br> (following N)||Hummer H2 Adventure ('09)
|-
|8 <br> (following N)||Hummer H2 Luxury ('09)
|-
|9 <br> (following N)||Hummer H2 SUT Adventure ('09)
|-
|0 <br> (following N)||Hummer H2 SUT Luxury ('09)
|-
|1 (following S)||Isuzu Hombre 2wd ('00), Isuzu i280 2wd ('06), Isuzu i290 2wd ('07-'08), Isuzu i370 2wd ('07-'08)
|-
|2 (following S)||Isuzu i290 2wd w/Preferred Equip. Pkg. ('08), Isuzu i370 2wd w/Comfort Pkg. or upgrade model ('08)
|-
|1 (following T)||Isuzu Hombre 4wd ('00), Isuzu i350 4wd ('06), Isuzu i370 4wd ('07-'08)
|-
|2 (following T)||Isuzu i370 4wd w/Comfort Pkg. ('08)
|-
|1 (following S)||Isuzu Ascender 2wd ('03-'08)
|-
|1 (following T)||Isuzu Ascender 4wd ('03-'08)
|-
|1 (following T)||Saab 9-7X ('05-'08: All, '09: 4.2i, 5.3i)
|-
|2 (following T)||Saab 9-7X Aero ('09)
|}
====Body style codes 1981-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle====
The Body type is specified as character 7 of the American GM VIN for light trucks.
{| border=1 style="margin:auto;"
!VIN
!Description
|-
|0||Sedan Pickup/Pickup Delivery ('81-'87 El Camino, Caballero)
|-
|0||Cadillac, Buick, Chevrolet Commercial Body/Chassis
|-
|0||Chassis Only
|-
|1||Cutaway Van
|-
|2||Forward Control ('81-'03) (includes '93-'95 Chevy G30HD/GMC G3500HD)
|-
|2||Sport Utility Truck (SUT) ('04-'09 Avalanche & Escalade EXT, '04-'05 Envoy XUV, '05-'09 Hummer H2 SUT)
|-
|3||Four-Door Cab pickup (Crew Cab) (includes '06-'08 Isuzu i-Series Crew Cab, '09 Hummer H3T)
|-
|3||4-door Passenger Minivan ('97-'09 U-bodies)
|-
|3||4-door SUV or MPV ('06-'09 HHR) (also includes '02-'03 Avalanche & Escalade EXT) ('05-'09 Saab 9-7X)
|-
|4||Two-Door Cab pickup (includes '83-'87 S-10/S-15 extended cab pickups, '03-'06 Chevy SSR, '96-'00 Isuzu Hombre Reg. Cab)
|-
|5||Van (Astro/Safari & full-size vans & '07-'09 HHR Panel)
|-
|6||Extended length 4-door SUV (Suburban, Yukon XL, Escalade ESV, Trailblazer EXT, Envoy XL, Isuzu Ascender 7-psgr.)
|-
|6||3-door Passenger Minivan ('90-'99 U-bodies)
|-
|7||Motor Home Chassis ('81-'09)
|-
|8||Two-Door SUV (Utility) (2-d Tracker, S-10 Blazer, S-15 Jimmy, Blazer, Jimmy, Tahoe, Yukon)
|-
|9||Stake (81-87)
|-
|9||Extended Cab pickup ('88-) (includes '97-'00 Isuzu Hombre Spacecab, '06-'08 Isuzu i-Series Ext. Cab)
|-
|9||Extended length van ('90-) (Astro/Safari & full-size vans)
|}
===American VIN format 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle===
GM's VIN format is as follows:
<table border=1 style="margin:auto;">
<tr>
<th>Position</th>
<th>Sample</th><th></th><th></th><th>Description</th>
</tr><tr>
<td>1</td>
<td>1</td><td></td><td></td><td rowspan=3>[[#GM WMIs|World Manufacturer Identifier]]</td>
</tr><tr>
<td>2</td>
<td>G</td><td></td><td></td></tr><tr>
<td>3</td>
<td>K</td><td></td><td></td></tr><tr>
<td>4</td>
<td>L</td><td></td><td></td><td>[[#GVWR/Brake System/Body Style 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle|GVWR/Brake System/Body Style 2010-]]</td>
</tr><tr>
<td>5</td>
<td>R</td><td></td><td></td><td>[[#Line & Chassis Type 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle|Line & Chassis Type for 2010-]]</td>
</tr><tr>
<td>6</td>
<td>L</td><td></td><td></td><td>[[#Series 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle|Series 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle]]</td>
</tr><tr>
<td>7</td>
<td>E</td><td></td><td></td><td>[[#Restraint codes for light trucks 2010-|Restraint type]]</td>
</tr><tr>
<td>8</td>
<td>D</td><td></td><td></td><td>[[#Engine codes for light trucks|Engine type]]</td>
</tr><tr>
<td>9</td>
<td>0</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Check digit |Check digit]]</td>
</tr><tr>
<td>10</td>
<td>A</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Model year|Model year]]</td>
</tr><tr>
<td>11</td>
<td>J</td><td></td><td></td><td>[[#GM factories supplying North America|Factory ID]]</td>
</tr><tr>
<td>12</td>
<td>1</td><td></td><td></td><td rowspan=6>Sequential number
</tr><tr>
<td>13</td>
<td>2</td><td></td><td></td></tr><tr>
<td>14</td>
<td>3</td><td></td><td></td></tr><tr>
<td>15</td>
<td>7</td><td></td><td></td></tr><tr>
<td>16</td>
<td>6</td><td></td><td></td></tr><tr>
<td>17</td>
<td>2</td><td></td><td></td>
</table>
====GVWR/Brake System/Body Style 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle====
The GVWR/Brake System is specified as character 4 of the American GM VIN for light trucks.
{| border=1 style="margin:auto;"
!VIN
!GVWR Range in lbs. & Weight Class
!Brake System
!Body Style
|-
| ||Class A: 0-3,000||Hydraulic||
|-
| ||Class B: 3,001-4,000||Hydraulic||
|-
|A||Class C: 4,001-5,000||Hydraulic||26: 4-door SUV or MPV ('10-'11 Chevy HHR Panel, '10-'26 Chevy Equinox, GMC Terrain, '10 Saturn Vue,<br> '12-'15 Chevy Captiva Sport, '19-'24 Cadillac XT4, '24-'26 Buick Encore GX)
|-
|B||Class C: 4,001-5,000||Hydraulic||46: 4-door MPV ('10-'11 Chevy HHR)
|-
|J||Class C: 4,001-5,000||Hydraulic||48: 4-door, 4 window Hatchback ('18-'23 Chevy Bolt EV w/Rear Seat Delete pkg. - incomplete vehicle)
|-
|C||Class C: 4,001-5,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('10-'12 Chevy Colorado, GMC Canyon)
|-
|D||Class C: 4,001-5,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('10-'12 Chevy Colorado, GMC Canyon)
|-
|E||Class C: 4,001-5,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('10-'12 Chevy Colorado, GMC Canyon)
|-
|7||Class C: 4,001-5,000||Hydraulic||75: Four-Door Wagon - High Roof Monocab (Canada only: '12-'14 Chevy Orlando)
|-
|M||Class C: 4,001-5,000||Hydraulic||06: 4-door SUV ('20-'23 Buick Encore GX)
|-
|9||Class C: 4,001-5,000||Hydraulic||56: 4-door SUV Extended ('21-'26 Chevy Trailblazer)
|-
|7||Class C: 4,001-5,000||Hydraulic||58: 4-door Utility Extended ('24-'26 Chevy Trax, Buick Envista)
|-
|C||Class C: 4,001-5,000||Hydraulic||76: 4-door SUV ('13-'22 Buick Encore, Canada only: '13-'14 Chevy Trax, US & Canada: '15-'22 Chevy Trax)
|-
|F||Class D: 5,001-6,000||Hydraulic||26: 4-door SUV ('10-'17 Chevy Equinox, GMC Terrain, '10 Saturn Vue, '10-'16 Cadillac SRX, '11 Saab 9-4X,<br> '12-'13 Chevy Captiva Sport, '16-'26 Buick Envision, '17 Cadillac XT5, '19-'25 Cadillac XT4)
|-
|H||Class D: 5,001-6,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('10 Chevy Colorado, GMC Canyon)
|-
|G||Class D: 5,001-6,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('11-'12 Chevy Colorado, GMC Canyon)
|-
|J||Class D: 5,001-6,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('10 Chevy Colorado, GMC Canyon)
|-
|H||Class D: 5,001-6,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('11-'12 Chevy Colorado, GMC Canyon)
|-
|G||Class D: 5,001-6,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('15-'24 Chevy Colorado, '15-'22 GMC Canyon)
|-
|K||Class D: 5,001-6,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('10 Chevy Colorado, GMC Canyon)
|-
|J||Class D: 5,001-6,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('11-'12 Chevy Colorado, GMC Canyon)
|-
|H||Class D: 5,001-6,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('15-'22 Chevy Colorado, GMC Canyon)
|-
|T||Class D: 5,001-6,000||Hydraulic||69: Commercial Chassis ('10 Cadillac DTS chassis for Limo/Hearse)
|-
|7||Class D: 5,001-6,000||Hydraulic||69: Commercial Chassis ('11 Cadillac DTS chassis for Limo/Hearse)
|-
|L||Class E: 6,001-7,000||Hydraulic||26: 4-door SUV ('10 Chevy Traverse, GMC Acadia, Buick Enclave, Saturn Outlook)
|-
|K||Class E: 6,001-7,000||Hydraulic||26: 4-door SUV ('11-'17 Chevy Traverse, Buick Enclave, '11-'23 GMC Acadia, '17 Acadia Limited,<br> '17-'26 Cadillac XT5, '19-'26 Chevy Blazer, '20-'25 Cadillac XT6, '23-'26 Cadillac Lyriq EV,<br> '24-'26 Chevy Blazer EV, '25-'26 Cadillac Optiq EV, '24-'26 Honda Prologue EV, '24 Acura ZDX EV A-Spec)
|-
|7||Class E: 6,001-7,000||Hydraulic||48: 4-door SUV ('24-'25 Chevy Equinox EV)
|-
|E||Class E: 6,001-7,000||Hydraulic||56: 4-door SUV Extended ('18-'26 Chevy Traverse, Buick Enclave, '24 Chevy Traverse Limited,<br> '24-'26 GMC Acadia
|-
|M||Class E: 6,001-7,000||Hydraulic||05: Cargo Van ('10 Chevy Express, GMC Savana)
|-
|L||Class E: 6,001-7,000||Hydraulic||05: Cargo Van ('11-'14 Chevy Express, GMC Savana)
|-
|M||Class E: 6,001-7,000||Hydraulic||06: 4-door SUV ('10 Chevy Tahoe, GMC Yukon, Hummer H3)
|-
|L||Class E: 6,001-7,000||Hydraulic||06: 4-door SUV ('11-'20 Chevy Tahoe Police Pursuit Vehicle 2wd)
|-
|N||Class E: 6,001-7,000||Hydraulic||36: Sport Utility Truck (SUT) ('10 Chevy Avalanche 2wd)
|-
|M||Class E: 6,001-7,000||Hydraulic||36: Sport Utility Truck (SUT) ('11-13 Chevy Avalanche 2wd)
|-
|P||Class E: 6,001-7,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra)
|-
|N||Class E: 6,001-7,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra,<br> '22 Chevy Silverado LTD, GMC Sierra Limited)
|-
|R||Class E: 6,001-7,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra, Hummer H3T)
|-
|P||Class E: 6,001-7,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra,<br> '22 Chevy Silverado LTD, GMC Sierra Limited, '16-'26 Chevy Colorado, GMC Canyon)
|-
|S||Class E: 6,001-7,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra)
|-
|R||Class E: 6,001-7,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra,<br> '19 Chevy Silverado LD, GMC Sierra Limited, '22 Chevy Silverado LTD, GMC Sierra Limited,<br> '16-'22 Chevy Colorado)
|-
|G||Class E: 6,001-7,000||Hydraulic||69: Commercial Chassis ('10 Cadillac DTS chassis for Limo/Hearse)
|-
|8||Class E: 6,001-7,000||Hydraulic||69: Commercial Chassis ('11 Cadillac DTS chassis for Limo/Hearse)
|-
|X||Class E: 6,001-7,000||Hydraulic||69: Commercial Chassis ('13-'19 Cadillac XTS chassis for Limo/Hearse)
|-
|U||Class F: 7,001-8,000||Hydraulic||05: Cargo Van or Incomplete Vehicle ('10 Chevy Express, GMC Savana)
|-
|S||Class F: 7,001-8,000||Hydraulic||05: Cargo Van or Incomplete Vehicle ('11-'14 Chevy Express, GMC Savana)
|-
|U||Class F: 7,001-8,000||Hydraulic||06: Passenger Van ('10 Chevy Express, GMC Savana)
|-
|S||Class F: 7,001-8,000||Hydraulic||06: Passenger Van ('11-'14 Chevy Express, GMC Savana)
|-
|U||Class F: 7,001-8,000||Hydraulic||06: 4-door SUV ('10 Chevy Tahoe, Suburban 1500, GMC Yukon, Yukon XL 1500, Cadillac Escalade, Escalade ESV)
|-
|S||Class F: 7,001-8,000||Hydraulic||06: 4-door SUV ('11-'26 Chevy Tahoe, Suburban 1500, GMC Yukon, Yukon XL 1500, Cadillac Escalade, Escalade ESV)
|-
|V||Class F: 7,001-8,000||Hydraulic||36: Sport Utility Truck (SUT) ('10 Chevy Avalanche 4wd, Cadillac Escalade EXT 4wd)
|-
|T||Class F: 7,001-8,000||Hydraulic||36: Sport Utility Truck (SUT) ('11-'13 Chevy Avalanche 4wd, Cadillac Escalade EXT 4wd)
|-
|X||Class F: 7,001-8,000||Hydraulic||26: 4-door SUV ('24 Acura ZDX EV Type S)
|-
|C||Class F: 7,001-8,000||Hydraulic||56: 4-door SUV Extended ('26- Cadillac Vistiq EV)
|-
|W||Class F: 7,001-8,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra)
|-
|X||Class F: 7,001-8,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra)
|-
|U||Class F: 7,001-8,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra,<br> '22 Chevy Silverado LTD, GMC Sierra Limited)
|-
|Y||Class F: 7,001-8,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra)
|-
|V||Class F: 7,001-8,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra,<br> '19 Chevy Silverado LD, GMC Sierra Limited, '22 Chevy Silverado LTD, GMC Sierra Limited)
|-
|U||Class F: 7,001-8,000||Hydraulic||69: Commercial Chassis ('10 Cadillac DTS chassis for Limo/Hearse)
|-
|9||Class F: 7,001-8,000||Hydraulic||69: Commercial Chassis ('11 Cadillac DTS chassis for Limo/Hearse)
|-
|Z||Class G: 8,001-9,000||Hydraulic||05: Cargo Van or Incomplete Vehicle ('10 Chevy Express, GMC Savana)
|-
|W||Class G: 8,001-9,000||Hydraulic||05: Cargo Van or Incomplete Vehicle ('11-'26 Chevy Express, GMC Savana)
|-
|Z||Class G: 8,001-9,000||Hydraulic||06: Passenger Van ('10 Chevy Express, GMC Savana)
|-
|W||Class G: 8,001-9,000||Hydraulic||06: Passenger Van ('11-'26 Chevy Express, GMC Savana)
|-
|Z||Class G: 8,001-9,000||Hydraulic||06: 4-door SUV ('10 Chevy Suburban 2500, GMC Yukon XL 2500)
|-
|W||Class G: 8,001-9,000||Hydraulic||06: 4-door SUV ('11-'13 Chevy Suburban 2500, GMC Yukon XL 2500)
|-
|2||Class H: 9,001-10,000||Hydraulic||05: Cargo Van or Incomplete Vehicle ('10 Chevy Express, GMC Savana)
|-
|Z||Class H: 9,001-10,000||Hydraulic||05: Cargo Van or Incomplete Vehicle ('11-'26 Chevy Express, GMC Savana,<br> '23-'24 BrightDrop Zevo 600, '24 BrightDrop Zevo 400, '25-'26 Chevrolet BrightDrop 400/600)
|-
|2||Class H: 9,001-10,000||Hydraulic||06: Passenger Van ('10 Chevy Express, GMC Savana)
|-
|Z||Class H: 9,001-10,000||Hydraulic||06: Passenger Van ('11-'26 Chevy Express, GMC Savana)
|-
|3||Class H: 9,001-10,000||Hydraulic||03: Van Cutaway ('10 Chevy Express, GMC Savana)
|-
|0||Class H: 9,001-10,000||Hydraulic||03: Van Cutaway ('11-'26 Chevy Express, GMC Savana)
|-
|3||Class H: 9,001-10,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra)
|-
|0||Class H: 9,001-10,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra)
|-
|4||Class H: 9,001-10,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra)
|-
|1||Class H: 9,001-10,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra,<br> '24-'25 GMC Hummer EV pickup w/20 module battery pack,<br> '24-'26 Chevy Silverado EV, '25-'26 GMC Sierra EV)
|-
|5||Class H: 9,001-10,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra)
|-
|2||Class H: 9,001-10,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('11-'13, '15-'26 Chevy Silverado, GMC Sierra)
|-
|B||Class H: 9,001-10,000||Hydraulic||26: 4-door SUV ('24-'25 GMC Hummer EV SUV)
|-
|6||Class 3: 10,001-14,000||Hydraulic||03: Van Cutaway ('10 Chevy Express, GMC Savana)
|-
|3||Class 3: 10,001-14,000||Hydraulic||03: Van Cutaway ('11-'26 Chevy Express, GMC Savana)
|-
|6||Class 3: 10,001-14,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra)
|-
|3||Class 3: 10,001-14,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra)
|-
|7||Class 3: 10,001-14,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra)
|-
|4||Class 3: 10,001-14,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra,<br> '22-'24 GMC Hummer EV pickup w/24 module battery pack, '25 GMC Hummer EV pickup w/20 or 24 module battery pack, '26 GMC Hummer EV pickup, '24-'25 Chevy Silverado EV, GMC Sierra EV)
|-
|8||Class 3: 10,001-14,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra)
|-
|5||Class 3: 10,001-14,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('11-'13, '15-'18, '20-'26 Chevy Silverado, GMC Sierra)
|-
|8||Class 3: 10,001-14,000||Hydraulic||06: 4-door SUV ('16-'19, '24-'26 Chevy Suburban 3500HD)
|-
|8||Class 3: 10,001-14,000||Hydraulic||05: Cargo Van ('22 BrightDrop EV600, '23-'24 BrightDrop Zevo 600, '24 BrightDrop Zevo 400,<br> '25-'26 Chevrolet BrightDrop 400/600)
|-
|T||Class 3: 10,001-14,000||Hydraulic||26: 4-door SUV ('25-'26 GMC Hummer EV SUV, '25-'26 Cadillac Escalade IQ [EV])
|-
|L||Class 3: 10,001-14,000||Hydraulic||56: 4-door SUV Extended ('26- Cadillac Escalade IQL [EV])
|-
|9||Class 4: 14,001-16,000||Hydraulic||03: Van Cutaway ('10 Chevy Express, GMC Savana)
|-
|6||Class 4: 14,001-16,000||Hydraulic||03: Van Cutaway ('11-'26 Chevy Express, GMC Savana)
|-
| ||Class 5: 16,001-19,500||Hydraulic||
|}
====Line & Chassis Type 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle====
The Line & Chassis Type is specified as character 5 of the American GM VIN for light trucks.
{| border=1 style="margin:auto;"
!VIN
!Description
|-
|A||Chevrolet HHR ('10-'11), HHR Panel ('10-'11)
|-
|A||Chevy Silverado 1500 2wd ('22-'26), Silverado HD 2500/3500 2wd ('25-'26)
|-
|B||Chevy Blazer 2wd & Awd '19-'26
|-
|C||Chevy Silverado 2wd ('10-'18), Silverado LD 1500 2wd '19, Silverado HD 2500/3500 2wd '19, GMC Sierra 2wd ('10)
|-
|C||Chevy Tahoe 2wd ('10-'24), Suburban 2wd ('10-'24), Avalanche 2wd ('10-'13),<br /> GMC Yukon 2wd ('10), Yukon XL 2wd ('10), Cadillac Escalade 2wd ('10), Escalade ESV 2wd ('10)
|-
|D||Chevy Silverado 1500 4wd ('22-'24)
|-
|D||Chevy Blazer EV ('24-'26), Chevy Equinox EV ('24-'26)
|-
|E||Cadillac Escalade IQ [EV] ('25-'26), Escalade IQL [EV] ('26-), GMC Hummer EV pickup ('26-), GMC Hummer EV SUV ('26-), GMC Sierra EV ('26-)
|-
|F||Chevy Bolt EV w/Rear Seat Delete pkg. - incomplete vehicle ('18-'23)
|-
|G||Cadillac Chassis for Limousine & for Armored Vehicle (Based on XTS '13-'19)
|-
|G||Cadillac Chassis for Hearse (Based on XTS '13-'19)
|-
|G||Chevy Express 2wd ('10-'26), GMC Savana 2wd ('10)
|-
|H||Chevy Express 4wd ('10-'14), GMC Savana 4wd ('10)
|-
|H||GMC Sierra 1500 2wd ('22-'26), Sierra HD 2500/3500 2wd ('25-'26)
|-
|H||Honda Prologue EV ('24-'26), Acura ZDX EV ('24)
|-
|J||Buick Encore 2wd & Awd ('13-'22), Chevy Trax 2wd & Awd (Canada: '13-'22, US: '15-'22)
|-
|J||BrightDrop EV600 ('22), BrightDrop Zevo 600 ('23-'24), BrightDrop Zevo 400 ('24), Chevrolet BrightDrop 400/600 ('25-'26)
|-
|K||Chevy Silverado 4wd ('10-'18), Silverado LD 1500 4wd ('19), Silverado HD 2500/3500 4wd ('19), GMC Sierra 4wd ('10)
|-
|K||Chevy Silverado 1500 4wd ('25-'26), Silverado HD 2500/3500 4wd ('25-'26)
|-
|K||Chevy Tahoe 4wd ('10-'24), Suburban 4wd ('10-'24), Suburban HD 4wd ('24-'26), Avalanche 4wd ('10-'13), GMC Yukon 4wd ('10), Yukon XL 4wd ('10),<br> Cadillac Escalade 4wd ('10), Escalade ESV 4wd ('10), Escalade EXT 4wd ('10)
|-
|K||Cadillac Professional Chassis for Limousine (Based on DTS '10-'11)
|-
|K||Cadillac Commercial Chassis for Hearse (Based on DTS '10-'11)
|-
|L||Chevy Equinox 2wd & Awd '10-'17, Captiva Sport 2wd '12-'15, Captiva Sport Awd '12, GMC Terrain 2wd & Awd '10-'17, Saturn Vue 2wd & Awd '10
|-
|L||GMC Terrain 2wd & Awd '18-'26
|-
|L||Buick Envista '24-'26, Chevy Trax '24-'26
|-
|M||Buick Encore GX 2wd & Awd ('20-'26), Chevy Trailblazer 2wd & Awd ('21-'26)
|-
|N||Cadillac SRX 2wd & Awd '10-'16, Saab 9-4X 2011
|-
|N||GMC Acadia 2wd & Awd '17-'26, Cadillac XT5 2wd & Awd '17-'26
|-
|N||Hummer H3, H3T 2010
|-
|P||Chevy Orlando (Canada only: '12-'14)
|-
|P||Cadillac XT6 2wd & Awd '20-'25
|-
|P||Cadillac Lyriq EV 2wd & Awd '23-'25
|-
|R||GMC Acadia 2wd '10-'16, Acadia Limited 2wd '17, Saturn Outlook 2wd '10, Buick Enclave 2wd '10-'17, Chevy Traverse 2wd '10-'17
|-
|R||Buick Enclave 2wd '18-'24, Chevy Traverse 2wd '18-'23
|-
|R||Buick Enclave 2wd '25-'26, Chevy Traverse 2wd '24-'26
|-
|S||Chevy Traverse Limited 2wd '24
|-
|S||Chevy Colorado 2wd ('10-'12, '15-'26), GMC Canyon 2wd ('10)
|-
|T||Chevy Colorado 4wd ('10-'12, '15-'26), GMC Canyon 4wd ('10)
|-
|T||Chevy Traverse Limited Awd '24
|-
|U||GMC Sierra 1500 4wd ('22-'26), Sierra HD 2500/3500 4wd ('25-'26)
|-
|V||GMC Acadia Awd '10-'16, Acadia Limited Awd '17, Saturn Outlook Awd '10, Buick Enclave Awd '10-'17, Chevy Traverse Awd '10-'17
|-
|V||Buick Enclave Awd '18-'24, Chevy Traverse Awd '18-'23
|-
|V||Buick Enclave Awd '25-'26, Chevy Traverse Awd '24-'26
|-
|W||Chevy Silverado 1500 2wd ('19-'21), Silverado LTD 1500 2wd ('22), Silverado HD 2500/3500 2wd ('20-'24)
|-
|X||Buick Envision 2wd & Awd '16-'20, Chevy Equinox 2wd & Awd '18-'26
|-
|Y||Chevy Silverado 1500 4wd ('19-'21), Silverado LTD 1500 4wd ('22), Silverado HD 2500/3500 4wd ('20-'24)
|-
|Z||Cadillac XT4 2wd & Awd '19-'25, Buick Envision 2wd '21-'23, Buick Envision Awd '21-'26
|-
|1||GMC Sierra 2wd ('11-'18), Sierra Limited 1500 2wd ('19), Sierra HD 2500/3500 2wd ('19), Yukon 2wd ('11-'26), Yukon XL 2wd ('11-'26)
|-
|1||GMC Canyon 2wd ('25-'26)
|-
|2||GMC Sierra 4wd ('11-'18), Sierra Limited 1500 4wd ('19), Sierra HD 2500/3500 4wd ('19), Yukon 4wd ('11-'26), Yukon XL 4wd ('11-'26)
|-
|2||GMC Canyon 4wd ('25-'26)
|-
|3||Cadillac Escalade 2wd ('11-'24), Escalade ESV 2wd ('11-'24)
|-
|3||Cadillac Optiq EV ('25-), Cadillac Vistiq EV ('26-)
|-
|4||Cadillac Escalade 4wd ('11-'24), Escalade ESV 4wd ('11-'24), Escalade EXT 4wd ('11-'13)
|-
|5||GMC Canyon 2wd ('11-'12, '15-'24)
|-
|5||Chevy Tahoe 2wd ('25-'26), Suburban 2wd ('25-'26)
|-
|6||GMC Canyon 4wd ('11-'12, '15-'24)
|-
|6||Chevy Tahoe 4wd ('25-'26), Suburban 4wd ('25-'26)
|-
|7||GMC Savana 2wd ('11-'26)
|-
|8||GMC Savana 4wd ('11-'14)
|-
|8||GMC Sierra 1500 2wd ('19-'21), Sierra Limited 1500 2wd ('22), Sierra HD 2500/3500 2wd ('20-'24)
|-
|8||Cadillac Escalade 2wd ('25-'26), Escalade ESV 2wd ('25-'26)
|-
|9||GMC Sierra 1500 4wd ('19-'21), Sierra Limited 1500 4wd ('22), Sierra HD 2500/3500 4wd ('20-'24)
|-
|9||Cadillac Escalade 4wd ('25-'26), Escalade ESV 4wd ('25-'26)
|-
|0||GMC Hummer EV pickup ('22-'25), GMC Hummer EV SUV ('24-'25), Chevy Silverado EV ('24-'26), GMC Sierra EV ('24-'25)
|}
====Series 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle====
The Series is specified as character 6 of the American GM VIN for light trucks.
{| border=1 style="margin:auto;"
!VIN
!Description
|-
|A (following L)||Saturn Vue XE 2wd ('10)
|-
|E (following L)||Saturn Vue XR V6 2wd ('10)
|-
|K (following L)||Saturn Vue XR-L V6 2wd ('10)
|-
|T (following R)||Saturn Outlook XE 2wd ('10)
|-
|U (following R)||Saturn Outlook XE Premium 2wd ('10)
|-
|V (following R)||Saturn Outlook XR-L 2wd ('10)
|-
|W (following R)||Saturn Outlook XR-L Premium 2wd ('10)
|-
|T (following V)||Saturn Outlook XE Awd ('10)
|-
|U (following V)||Saturn Outlook XE Premium Awd ('10)
|-
|V (following V)||Saturn Outlook XR-L Awd ('10)
|-
|W (following V)||Saturn Outlook XR-L Premium Awd ('10)
|-
|G (following N)||Hummer H3, H3T Base model ('10)
|-
|H (following N)||Hummer H3, H3T Adventure ('10)
|-
|J (following N)||Hummer H3, H3T Luxury ('10)
|-
|K (following N)||Hummer H3, H3T Alpha w/cloth ('10)
|-
|L (following N)||Hummer H3, H3T Alpha w/Leather ('10)
|-
|P (following N)||Saab 9-4X 3.0i 2wd ('11)
|-
|R (following N)||Saab 9-4X 3.0i Awd ('11)
|-
|S (following N)||Saab 9-4X 3.0i Premium 2wd ('11)
|-
|T (following N)||Saab 9-4X 3.0i Premium Awd ('11)
|-
|U (following N)||Saab 9-4X Aero Awd ('11)
|}
===Platform & Series Codes 1985- Passenger Car===
GM used a lettered system of automobile platform codes for three decades. These letters were used as the 4th position of the VIN. Though today's GM platforms use Greek characters, they are still encoded with Latin characters in the 4th position. Position 5 encodes the specific model and trim level of the vehicle.
{| border=1 style="margin:auto;"
!List of GM platforms
!Platform<br>Code
!Series<br>Code
!:Category:General Motors vehicles|Model
|-
|rowspan=14|GM A platform
|rowspan=14|A||W||Chevrolet Celebrity 1985-1990
|-
|E||Pontiac 6000 ''SE'' 1986-1988
|-
|F||Pontiac 6000 1985-1988, 6000 ''LE'' 1989-1991
|-
|G||Pontiac 6000 ''LE'' 1985-1988
|-
|H||Pontiac 6000 ''STE'' 1985-1989
|-
|J||Pontiac 6000 ''SE'' 1989-1991
|-
|G||Oldsmobile Cutlass Ciera ''S'' Sedan 1993-1994
|-
|J||Oldsmobile Cutlass Ciera ''LS'' 1985, Cutlass Ciera 1986-1989 & Cutlass Cruiser 1985-1989,<br /> Cutlass Ciera ''S'' Coupe 1986-1987, Cutlass Ciera ''S'' 1990-1991 & Cutlass Cruiser ''S'' 1990-1994, Cutlass Ciera ''SL'' & Cutlass Cruiser ''SL'' 1995, Ciera ''SL'' sedan & wagon 1996
|-
|L||Oldsmobile Cutlass Ciera 1990-1991, Cutlass Ciera ''S'' Sedan 1992
|-
|M||Oldsmobile Cutlass Ciera ''Brougham'' 1985-1988, Cutlass Ciera ''SL'' Coupe 1986-1989, Cutlass Ciera ''SL'' Sedan 1989-1993, Cutlass Cruiser ''Brougham'' 1987-1988, Cutlass Cruiser ''SL'' 1989-1993
|-
|S||Oldsmobile Cutlass Ciera ''International Series'' 1988-1990
|-
|G||Buick Century ''T-Type'' 1985-1986, Century ''Special'' 1991-1996
|-
|H||Buick Century ''Custom'' 1985-1995
|-
|L||Buick Century ''Limited'' 1985-1993, Century Estate Wagon 1986-1989
|-
|rowspan=14|GM B platform
|rowspan=14|B||L||Chevrolet Impala 1985, Caprice 1986-1992, Caprice Classic 1993-1996, Impala SS 1995-96
|-
|N||Chevrolet Caprice Classic 1985-1992, Caprice Classic LS 1993-1994,<br /> Caprice Classic LTZ 1991-1993, Impala SS 1994
|-
|U||Chevrolet Caprice Classic Brougham/Brougham LS 1987-1990
|-
|L||Pontiac Parisienne 1985-1986, Safari Wagon 1987-1989
|-
|T||Pontiac Parisienne Brougham 1985-1986
|-
|N||Oldsmobile Delta 88 Royale 1985
|-
|P||Oldsmobile Custom Cruiser 1985-1992
|-
|V||Oldsmobile Delta 88 Royale Brougham LS 1985
|-
|Y||Oldsmobile Delta 88 Royale Brougham 1985
|-
|N||Buick Le Sabre ''Custom'' 1985, Roadmaster sedan 1992-1996
|-
|P||Buick Le Sabre ''Limited'' 1985
|-
|R||Buick Le Sabre Estate Wagon 1985-1989, Estate Wagon 1990,<br /> Roadmaster Estate Wagon 1991-1996
|-
|T||Buick Roadmaster ''Limited'' sedan 1992-1996
|-
|V||Buick Electra Estate Wagon 1985-1989
|-
|rowspan=13|GM C platform - front-wheel drive
|rowspan=13|C
|V||Oldsmobile Touring Sedan 1988-1990, 98 Touring Sedan 1991-1993
|-
|W||Oldsmobile 98 Regency Brougham 1985-1990, 98 Regency Elite 1991-1996
|-
|X||Oldsmobile 98 Regency 1985-1990, 1992-1994
|-
|F||Buick Electra T-Type 1985-1990
|-
|U||Buick Electra Park Avenue Ultra 1989-1990, Park Avenue Ultra 1991-1996
|-
|W||Buick Electra Park Avenue 1985-1990, Park Avenue 1991-1996
|-
|X||Buick Electra 1985-1986, Electra Limited 1987-1990
|-
|B||1985-1992 Cadillac Fleetwood, Fleetwood D'Elegance, 1993 Cadillac Sixty Special
|-
|D||1985-1993 Cadillac DeVille
|-
|G||1991-1992 Cadillac Fleetwood Sixty Special
|-
|H||1985-1987 Cadillac Fleetwood Limousine
|-
|S||1987-1990 Cadillac Fleetwood Sixty Special
|-
|T||1991-1993 Cadillac DeVille Touring Sedan
|-
|rowspan=3|GM G platform (models formerly on C platform)
|rowspan=3|C
|-
|U||Buick Park Avenue Ultra 1997-2005
|-
|W||Buick Park Avenue 1997-2005
|-
|rowspan=2|GM D platform
|rowspan=2|D||W||1985-1986 Cadillac Fleetwood Brougham, 1987-1992 Cadillac Brougham
|-
|W||1993-1996 Cadillac Fleetwood
|-
|rowspan=31|GM Delta I platform
|rowspan=31|A
|-
|A||Chevrolet Cobalt LS w/manual trans. 2010
|-
|B||Chevrolet Cobalt LS w/automatic trans. 2010
|-
|C||Chevrolet Cobalt 1LT w/manual trans. 2010
|-
|D||Chevrolet Cobalt 1LT w/automatic trans. 2010
|-
|E||Chevrolet Cobalt 2LT w/manual trans. 2010
|-
|F||Chevrolet Cobalt 2LT w/automatic trans. 2010
|-
|G||Chevrolet Cobalt SS Turbo 2010
|-
|H||Chevrolet Cobalt (base model w/XFE) 2010
|-
|K||Chevrolet Cobalt (base model) 2005, Cobalt LS 2006-2008, Cobalt LS w/man. trans. 2009
|-
|L||Chevrolet Cobalt LS 2005, Cobalt LT 2006-2008, Cobalt LT w/manual trans. 2009
|-
|M||Chevrolet Cobalt SS 2006-2007, Cobalt Sport 2008
|-
|P||Chevrolet Cobalt SS Supercharged 2005-2007, SS Turbo 2008-2009
|-
|S||Chevrolet Cobalt LS w/automatic trans. 2009
|-
|T||Chevrolet Cobalt LT w/automatic trans. 2009
|-
|Z||Chevrolet Cobalt LT 2005, Cobalt LTZ 2006-2007
|-
|L||Pontiac G5 2007-2008, G5 w/manual trans. 2009
|-
|N||Pontiac G5 GT 2007-2008, G5 GT w/manual trans. 2009
|-
|S||Pontiac G5 w/automatic trans. 2009
|-
|T||Pontiac G5 GT w/automatic trans. 2009
|-
|F||Saturn Ion sedan Level 1 w/manual trans. 2003-2005
|-
|G||Saturn Ion sedan Level 1 w/automatic trans. 2003-2005
|-
|J||Saturn Ion sedan Level 2 w/automatic trans. 2003-2007
|-
|K||Saturn Ion sedan Level 3 w/manual trans. 2003-2007
|-
|L||Saturn Ion sedan Level 3 w/automatic trans. 2003-2007
|-
|M||Saturn Ion coupe Level 2 w/manual trans. 2003-2007
|-
|N||Saturn Ion coupe Level 2 w/automatic trans. 2003-2007
|-
|V||Saturn Ion coupe Level 3 w/manual trans. 2003-2007
|-
|W||Saturn Ion coupe Level 3 w/automatic trans. 2003-2007
|-
|Y||Saturn Ion coupe Red Line 2004-2007
|-
|Z||Saturn Ion sedan Level 2 w/manual trans. 2003-2007
|-
|rowspan=9|GM E platform
|rowspan=9|E
|-
|V||Oldsmobile Toronado Trofeo 1988-1992
|-
|Z||Oldsmobile Toronado Brougham 1985-1986, Toronado 1987-1992
|-
|C||Buick Reatta 1988-1991
|-
|Y||Buick Riviera T-Type 1985-1986
|-
|Z||Buick Riviera 1985-1993
|-
|C||Cadillac Eldorado Collector Series 2002
|-
|L||Cadillac Eldorado 1985-2002
|-
|T||Cadillac Eldorado Touring Coupe 1994-2002
|-
|rowspan=26|GM Epsilon I platform
|rowspan=26|Z||A||Chevrolet Malibu Fleet 2010-2012
|-
|B||Chevrolet Malibu LS 2010-2012
|-
|C||Chevrolet Malibu 1LT 2010-2012
|-
|D||Chevrolet Malibu 2LT 2010-2012
|-
|E||Chevrolet Malibu LTZ 2010-2011, Malibu 1LZ 2012
|-
|F||Chevrolet Malibu Hybrid 2008-2010, Malibu 3LT 2012
|-
|G||Chevrolet Malibu LS 2008-2009, Malibu 2LZ 2012
|-
|H||Chevrolet Malibu 1LT 2008-2009
|-
|J||Chevrolet Malibu 2LT 2008-2009
|-
|K||Chevrolet Malibu LTZ 2008-2009
|-
|S||Chevrolet Malibu 2004-2005, Malibu LS 2006-2007, Malibu Classic LS 2008
|-
|T||Chevrolet Malibu LS 2004-2005, Malibu LT 2006-2007, Malibu Classic LT 2008
|-
|U||Chevrolet Malibu LT 2004-2005, Malibu LTZ 2006-2007
|-
|W||Chevrolet Malibu SS 2006-2007
|-
|A||Pontiac G6 Sedan 2010
|-
|F||Pontiac G6 2.4L Sedan (Base model) 2006, G6 Value Leader (Base model w/1SV) 2007-2008
|-
|G||Pontiac G6 3.5L Sedan (Base model) 2005-2006, G6 (Base model) 2007-2009
|-
|H||Pontiac G6 GT 2005-2009
|-
|J||Pontiac G6 (Base model) 2009 1/2 (Mid-Cycle Revision)
|-
|K||Pontiac G6 GT 2009 1/2 (Mid-Cycle Revision)
|-
|L||Pontiac G6 GXP 2009 1/2 (Mid-Cycle Revision)
|-
|M||Pontiac G6 GTP 2006-2007, G6 GXP 2008-2009
|-
|R||Saturn Aura Green Line 2007-2009
|-
|S||Saturn Aura XE 2007-2009
|-
|V||Saturn Aura XR 2007-2008, Aura XR 2.4L 2009
|-
|X||Saturn Aura XR V6 2009
|-
|rowspan=6|GM F platform
|rowspan=6|F||P||Chevrolet Camaro Sport Coupe 1985-2002, Convertible 1987-1992, 1994-2002
|-
|S||Chevrolet Camaro Berlinetta 1985-1986
|-
|S||Pontiac Firebird 1985-2002, Firebird ''Formula'' 1987-1992
|-
|V||Pontiac Firebird ''Formula / Trans Am'' 1993-2002, Firebird ''Trans Am GT'' 1994
|-
|W||Pontiac Firebird ''Trans Am'' 1985-1992, Firebird ''Trans Am GTA'' 1987-1992
|-
|X||Pontiac Firebird ''S/E'' 1985-1986
|-
|rowspan=13|GM G platform - rear-wheel drive
|rowspan=13|G||Z||Chevrolet Monte Carlo 1985-1988
|-
|J||Pontiac Grand Prix 1985-1987
|-
|K||Pontiac Grand Prix LE 1985-1987
|-
|N||Pontiac Bonneville 1985-1986
|-
|P||Pontiac Grand Prix Brougham 1985-1987
|-
|R||Pontiac Bonneville Brougham 1985-1986
|-
|S||Pontiac Bonneville LE 1985-1986
|-
|K||Oldsmobile Cutlass Salon coupe 1985-1987
|-
|M||Oldsmobile Cutlass Supreme ''Brougham'' 1985-1987,<br /> Cutlass Supreme Classic ''Brougham'' 1988
|-
|R||Oldsmobile Cutlass Supreme 1985-1987, Cutlass Supreme Classic 1988
|-
|J||Buick Regal 1985-1987
|-
|K||Buick Regal T-Type 1985-1987
|-
|M||Buick Regal ''Limited'' 1985-1987
|-
|rowspan=4|GM G platform - front-wheel drive
|rowspan=4|G||D||1995-1999 Buick Riviera
|-
|R||1995-1999 Oldsmobile Aurora
|-
|R||2001-2002 Oldsmobile Aurora 3.5
|-
|S||2001-2003 Oldsmobile Aurora 4.0
|-
|rowspan=9|GM H platform
|rowspan=9|H||H||Buick Le Sabre 1987
|-
|P||Buick Le Sabre ''Custom'' 1986-1999
|-
|R||Buick Le Sabre ''Limited'' 1986-1999
|-
|C||Oldsmobile Regency 1997-1998, Eighty Eight 50th Anniversary Edition 1999
|-
|N||Oldsmobile Delta 88 Royale 1986-1988, 88 Royale 1989-1995, Eighty Eight & Eighty Eight LS 1996-99
|-
|Y||Oldsmobile Delta 88 Royale Brougham 1986-1988, 88 Royale Brougham 1989-91, Eighty Eight Royale LS 1992-1995, LSS 1996-1999
|-
|X||Pontiac Bonneville 1987, Bonneville LE 1988-1991, Bonneville ''SE'' 1992-1999
|-
|Y||Pontiac Bonneville SSE 1988-1991, Bonneville ''SSEi'' 1992-1993
|-
|Z||Pontiac Bonneville LE 1987, Bonneville SE 1988-1991, Bonneville ''SSE'' 1992-1999, Bonneville ''SSEi'' 1994-1999
|-
|rowspan=17|GM G platform (models formerly on H platform or their successors)
|rowspan=17|H||A||Buick Lucerne ''CX'' 2010-2011
|-
|B||Buick Lucerne ''CX-2'' 2010
|-
|C||Buick Lucerne ''CXL'' 2010-2011
|-
|D||Buick Lucerne ''CXL V6'' 2006-2009, Lucerne ''CXL Special Edition'' 2010
|-
|E||Buick Lucerne ''CXS'' 2006-2008, Lucerne ''CXL-3'' 2010
|-
|F||Buick Lucerne ''Super'' 2008-2009, Lucerne ''CXL-4'' 2010
|-
|G||Buick Lucerne ''CXL-5'' 2010
|-
|H||Buick Lucerne ''Super 1SP'' 2010
|-
|J||Buick Lucerne ''CXL Premium'' 2010-2011
|-
|K||Buick Lucerne ''Super 1XS'' 2010, Lucerne ''Super'' 2011
|-
|P||Buick Lucerne ''CX'' 2006-2009
|-
|R||Buick Lucerne ''CXL V8'' 2006-2007, Lucerne ''CXL Special Edition V8'' 2008
|-
|P||Buick Le Sabre ''Custom'' 2000-2005
|-
|R||Buick Le Sabre ''Limited'' 2000-2005
|-
|X||Pontiac Bonneville ''SE'' 2000-2005
|-
|Y||Pontiac Bonneville ''SLE'' 2000-2005
|-
|Z||Pontiac Bonneville ''SSEi'' 2000-2003, Bonneville GXP 2004-2005
|-
|rowspan=23|GM J platform
|rowspan=23|J
|-
|C||Chevrolet Cavalier 1985-1994, RS Convertible 1991-1994
|-
|D||Chevrolet Cavalier CS 1985-1987
|-
|E||Chevrolet Cavalier Type 10 1985, RS 1986-1988,<br /> Type 10 Convertible 1985, RS Convertible 1986-1987
|-
|F||Chevrolet Cavalier Z24 1986-1994, Z24 Convertible 1988-1989, 1992-1994
|-
|C||Chevrolet Cavalier 1995-2005, Cavalier RS 1997-1999
|-
|F||Chevrolet Cavalier LS Sedan 1995-2005, LS Coupe 2003-2005, Z24 Coupe 1995-2001,<br /> LS Convertible 1995-1997, Z24 Convertible 1998-2000
|-
|H||Chevrolet Cavalier Z24 Coupe/Sedan 2002, LS Sport 2002-2005
|-
|S||Chevrolet Cavalier LS Coupe 2002
|-
|B||Pontiac Sunbird 1985-1989, Sunbird LE 1990-1991, Sunbird SE 1992-1993,<br /> Sunbird LE 1994
|-
|C||Pontiac Sunbird LE 1985, Sunbird 1991, Sunbird LE 1992-1993
|-
|D||Pontiac Sunbird SE 1985-1991, Sunbird GT 1992-1993
|-
|L||Pontiac Sunbird SE 1994
|-
|U||Pontiac Sunbird GT 1986-1991
|-
|B||Pontiac Sunfire SE 1995-2002, Convertible 1995-2000, Sunfire 2003-2005
|-
|D||Pontiac Sunfire GT 1995-2002
|-
|C||Oldsmobile Firenza Base model 1985-1987, Firenza S 1985-1987, Firenza 1988
|-
|D||Oldsmobile Firenza LX 1985-1987, Firenza SX 1985, Firenza LC, GT 1986-1987
|-
|E||Buick Skyhawk T-Type 1985-1986
|-
|S||Buick Skyhawk Custom 1985-1987, Skyhawk Sport 1986-1987, Skyhawk 1988-1989
|-
|T||Buick Skyhawk Limited 1985-1987
|-
|G||Cadillac Cimarron 1985-1988
|-
|G, H||Toyota Cavalier (Japan only)
|-
|rowspan=8|GM2900 platform
|rowspan=8|J||C||Saturn L-Series|2004 Saturn L300.1
|-
|D||Saturn L-Series|2004 Saturn L300.2, 2005 Saturn L300
|-
|L||Saturn L-Series|2004 Saturn L300.3
|-
|R||Saturn L-Series|Saturn LS w/manual transmission '00/L100 w/manual transmission '01
|-
|S||Saturn L-Series|Saturn LS w/automatic transmission '00/L100 w/automatic transmission '01-'02
|-
|T||Saturn L-Series|Saturn LS1 w/manual transmission '00/L200 w/manual transmission '01-'03, LW200 w/manual trans. '02
|-
|U||Saturn L-Series|Saturn LS1 w/automatic transmission '00/L200 w/automatic transmission '01-'03,<br> Saturn LW1 w/automatic transmission '00/LW200 w/automatic transmission '01-'03
|-
|W||Saturn L-Series|Saturn LS2 '00, LW2 '00, L300 '01-'03, LW300 '01-'03
|-
|rowspan=5|GM K platform
|rowspan=5|K||D||Cadillac Deville 1994-1999
|-
|E||Cadillac Deville D'Elegance 1997-1999
|-
|F||Cadillac Deville Concours 1994-1999
|-
|S||Cadillac Seville 1985-1993 / Cadillac Seville SLS 1994-1997
|-
|Y||Cadillac Seville Touring Sedan / Cadillac Seville STS 1990-1997
|-
|rowspan=9|GM G platform (models formerly on K platform)
|rowspan=9|K||A||2010-2011 Cadillac DTS
|-
|D||2000-2005 Cadillac Deville, 2006-2009 Cadillac DTS, 2010-2011 DTS Luxury
|-
|E||2000-2005 Cadillac Deville DHS
|-
|F||2000-2005 Cadillac Deville DTS
|-
|H||2010-2011 Cadillac DTS Premium
|-
|P||2010-2011 Cadillac DTS Platinum
|-
|R||2010-2011 Cadillac DTS Livery
|-
|S|| 1998-2004 Cadillac Seville SLS
|-
|Y|| 1998-2003 Cadillac Seville STS
|-
|rowspan=33|GM Kappa platform
|rowspan=33|M||A||Pontiac Solstice w/automatic transmission 2010
|-
|B||Pontiac Solstice 2006-2007, Solstice w/manual transmission 2008-2009
|-
|B||Pontiac Solstice GXP w/automatic transmission 2010
|-
|C||Pontiac Solstice w/automatic transmission 2008
|-
|D||Pontiac Solstice w/manual transmission 2010
|-
|E||Pontiac Solstice GXP w/manual transmission 2010
|-
|F||Pontiac Solstice GXP w/automatic transmission 2008
|-
|G||Pontiac Solstice GXP 2007, Solstice GXP w/manual transmission 2008-2009
|-
|K||Pontiac Solstice Street Edition w/manual transmission 2009
|-
|N||Pontiac Solstice w/automatic transmission 2009
|-
|S||Pontiac Solstice SCCA SSB Championship Edition (2.4L) 2008
|-
|T||Pontiac Solstice SCCA T2 Championship Edition (2.0L Turbo) 2008
|-
|T||Pontiac Solstice GXP w/automatic transmission 2009
|-
|Z||Pontiac Solstice Street Edition w/automatic transmission 2009
|-
|B||Saturn Sky 2007, Sky w/manual transmission 2008-2009
|-
|B||Saturn Sky Redline w/automatic transmission 2010
|-
|C||Saturn Sky w/automatic transmission 2008
|-
|C||Saturn Sky Ruby Red (Merlot Jewel) Special Edition w/manual transmission 2009
|-
|C||Saturn Sky Preferred w/automatic transmission 2010
|-
|D||Saturn Sky Hydro Blue Special Edition w/manual transmission 2009
|-
|E||Saturn Sky Redline w/manual transmission 2010
|-
|F||Saturn Sky Redline w/automatic transmission 2008
|-
|F||Saturn Sky Preferred w/manual transmission 2010
|-
|G||Saturn Sky Redline 2007, Sky Redline w/manual transmission 2008-2009
|-
|H||Saturn Sky Redline Ruby Red (Merlot Jewel) Special Edition w/manual transmission 2009
|-
|L||Saturn Sky Redline Hydro Blue Special Edition w/manual transmission 2009
|-
|N||Saturn Sky w/automatic transmission 2009
|-
|P||Saturn Sky Ruby Red (Merlot Jewel) Special Edition w/automatic transmission 2009
|-
|R||Saturn Sky Hydro Blue Special Edition w/automatic transmission 2009
|-
|T||Saturn Sky Redline w/automatic transmission 2009
|-
|V||Saturn Sky Redline Ruby Red (Merlot Jewel) Special Edition w/automatic transmission 2009
|-
|X||Saturn Sky Redline Hydro Blue Special Edition w/automatic transmission 2009
|-
|G||Opel GT 2007-2010, Daewoo G2X 2007-2009
|-
|rowspan=8|GM L platform
|rowspan=8|L
|-
|D||Chevrolet Corsica ''Base'' 1994-1996
|-
|T||Chevrolet Corsica ''Base'' 1987-1989, Corsica ''LT'' 1990-1993
|-
|V||Chevrolet Beretta ''Base'' 1987-1996
|-
|W||Chevrolet Beretta "GT" 1989-1993 (RPO Z21) & Beretta ''Z26'' 1994-1996 (RPO Z04)
|-
|Z||Chevrolet Corsica ''LTZ'' 1989-1990 (RPO Z54)
|-
|Z||Chevrolet Beretta "GTZ" 1990-1993 (RPO Z04)
|-
|T||Pontiac Tempest (Canada only)
|-
|rowspan=5|GM M platform
|rowspan=5|M||R||Chevrolet Sprint
|-
|R||Geo Metro LSi, Metro
|-
|R||Pontiac Firefly (Canada only)
|-
|S||Chevrolet Sprint ER
|-
|S||Geo Metro, Metro XFi
|-
|rowspan=32|GM N platform
|rowspan=32|N
|-
|B||Oldsmobile Cutlass 1997, Cutlass ''GL'' 1998-1999
|-
|C||Buick Skylark 4-door ''Custom'' 1987-1991
|-
|D||Buick Skylark 4-door ''Limited'' 1987-1989, Skylark 4-door ''Luxury Edition'' 1990-1991
|-
|D||Chevrolet Malibu 1997-2003, Chevrolet Classic 2004-2005
|-
|E||Chevrolet Malibu ''LS'' 1997-2003
|-
|E||Pontiac Grand Am 1985-1988, Grand Am ''LE'' 1989-1991
|-
|E||Pontiac Grand Am ''SE'' 1992-2005
|-
|F||Oldsmobile Calais 1985-1987, Cutlass Calais 1988, Cutlass Calais ''S'' 1989-1991
|-
|F||Oldsmobile Achieva ''SL'' 1992-1994, Achieva ''SC'' 1994
|-
|F||Oldsmobile Alero ''GLS'' 1999-2004
|-
|F||Pontiac Grand Am ''SE1'' 2000-2004
|-
|G||Oldsmobile Cutlass ''GLS'' 1997-1999
|-
|G||Pontiac Grand Am 1991
|-
|G||Pontiac Grand Am ''SE2'' 2000, 2003-2004
|-
|J||Buick Somerset Regal 1985, Somerset ''Custom'' 1986-1987, Skylark 2-door ''Custom'' 1988-91, Skylark 4-door ''Custom'' 1986
|-
|J||Buick Skylark 1992, Skylark ''Limited'' 1993-1994, Skylark ''Custom'' 1996-1998,<br /> Skylark ''Limited'' & ''Gran Sport'' 1996-1997
|-
|K||Buick Somerset ''T-Type'' 1986
|-
|K||Oldsmobile Cutlass Calais ''International Series'' 1988-1991
|-
|K||Oldsmobile Alero ''GX'' 1999-2004
|-
|L||Oldsmobile Cutlass Calais 1989-1991
|-
|L||Oldsmobile Achieva ''S'' 1992-1995, Achieva ''SL'' 1996-1998, Achieva ''SC'' 1996-1997
|-
|L||Oldsmobile Alero ''GL'' 1999-2004
|-
|M||Buick Somerset Regal ''Limited'' 1985, Somerset ''Limited'' 1986-'87, Skylark 2-door ''Limited'' '88-'89, Skylark 2-door ''Gran Sport'' 1990-1991, Skylark 4-door ''Limited'' 1986
|-
|M||Buick Skylark ''Gran Sport'' 1992-1994
|-
|T||Oldsmobile Calais ''Supreme'' 1985-1987, Cutlass Calais ''SL'' 1988-1991
|-
|V||Buick Skylark 1990-1991
|-
|V||Buick Skylark ''Custom'' 1993-1995, ''Limited'' 1995, ''Gran Sport'' 1995
|-
|V||Pontiac Grand Am ''LE'' 1985-1988
|-
|V||Pontiac Grand Am ''GT1'' 2000-2005
|-
|W||Pontiac Grand Am ''SE'' 1986-1991
|-
|W||Pontiac Grand Am ''GT'' 1992-2005
|-
|rowspan=5|GM P platform - rear-wheel drive
|rowspan=5|P
|-
||E||Pontiac Fiero ''Coupe'' 1985-1988
|-
||F||Pontiac Fiero ''SE'' 1985-1987
|-
||G||Pontiac Fiero ''GT'' 1985-1988
|-
||M||Pontiac Fiero ''Sport coupe'' 1985-1987
|-
|rowspan=1|GM P platform - front-wheel drive
|rowspan=1|P||X||General Motors EV1 1997, 1999
|-
|rowspan=6|GM R platform
|rowspan=6|R
|-
||F||1985-1986 Chevrolet Spectrum
|-
||F||1987-1988 Chevrolet Spectrum 3-door hatchback, 1989 Geo Spectrum 3-door hatchback
|-
||F||1990-1993 Geo Storm
|-
||G||1987-1988 Chevrolet Spectrum 4-door sedan, 1989 Geo Spectrum 4-door sedan
|-
||T||1990-1993 Geo Storm GSi
|-
|rowspan=8|GM S platform
|rowspan=8|S||K||1985-1988 Chevrolet Nova
|-
|K||1989-1997 Geo Prizm, 1998-2002 Chevrolet Prizm
|-
|L||1988 Chevrolet Nova Twin Cam, 1990-1992 Geo Prizm GSi
|-
|L||2003-2008 Pontiac Vibe, 2009-2010 Pontiac Vibe FWD w/manual transmission
|-
|M||2003-2006 Pontiac Vibe ''AWD'', 2009-2010 Pontiac Vibe AWD w/automatic transmission
|-
|N||2003-2006 Pontiac Vibe ''GT'', 2009-2010 Pontiac Vibe GT FWD w/manual transmission
|-
|P||2009-2010 Pontiac Vibe FWD w/automatic transmission
|-
|R||2009-2010 Pontiac Vibe GT FWD w/automatic transmission
|-
|rowspan=32|GM Sigma platform
|rowspan=32|D||A||Cadillac CTS Base model RWD 2010-2013, CTS Coupe Base model RWD 2014
|-
|B||Cadillac CTS Wagon Luxury Collection RWD 2014
|-
|C||Cadillac CTS Base model AWD 2010-2013, CTS Coupe/Wagon Performance Collection RWD 2014
|-
|D||Cadillac CTS Coupe/Wagon Premium Collection RWD 2014
|-
|E||Cadillac CTS Luxury Collection RWD 2010-2013, CTS Coupe Base model AWD 2014
|-
|F||Cadillac CTS Auto. Trans. RWD 2008-2009, CTS Luxury Collection RWD w/Navigation 2010-2013, CTS Wagon Luxury Collection AWD 2014
|-
|G||Cadillac CTS Auto. Trans. AWD 2008-2009, CTS Luxury Collection AWD 2010-2013, CTS Coupe/Wagon Performance Collection AWD 2014
|-
|H||Cadillac CTS Auto. Trans. AWD w/Navigation 2008-2009, CTS Luxury Collection AWD w/Navigation 2010-2013, CTS Coupe/Wagon Premium Collection AWD 2014
|-
|J||Cadillac CTS Auto. Trans. RWD w/Navigation 2008-2009, CTS Performance Collection RWD 2010-2013
|-
|K||Cadillac CTS Performance Collection RWD w/Navigation 2010-2013
|-
|L||Cadillac CTS Performance Collection AWD 2010-2013
|-
|M||Cadillac CTS V6 2003-2004, CTS 2.8L 2005-2007, CTS Man. Trans. RWD 2008-2009, CTS Performance Collection AWD w/Navigation 2010-2013
|-
|N||Cadillac CTS V-Series 2004-2007, 2009
|-
|P||Cadillac CTS 3.6L 2005-2007, CTS Direct Inj. V6 Man. Trans. RWD 2008-2009, CTS Premium Collection RWD w/Navigation 2010-2013
|-
|R||Cadillac CTS Direct Inj. V6 Auto. Trans. RWD 2008
|-
|S||Cadillac CTS Direct Inj. V6 Auto. Trans. AWD 2008-2009, CTS Premium Collection AWD w/Navigation 2010-2013
|-
|T||Cadillac CTS Direct Inj. V6 Auto. Trans. AWD w/Navigation 2008-2009
|-
|U||Cadillac CTS Direct Inj. V6 Auto. Trans. RWD 2009
|-
|V||Cadillac CTS Direct Inj. V6 Auto. Trans. RWD w/Navigation 2008-2009, CTS sedan V-Series 2010-2014, CTS Wagon V-Series 2011-2014, CTS Coupe V-Series 2011-2015
|-
|0||Cadillac CTS Sport Appearance Pkg. 2010
|-
|1||Cadillac CTS Eco Luxury Pkg. 2010
|-
|2||Cadillac CTS Sport Appearance Pkg. 2011
|-
|A||Cadillac STS V6 AWD 2008-2009
|-
|B||Cadillac STS V8 AWD 2008-2009
|-
|C||Cadillac STS V8 2005-2007, STS V8 RWD 2008-2009
|-
|D||Cadillac STS V6 AWD w/Navigation 2008-2009
|-
|K||Cadillac STS V6 RWD w/Navigation 2008-2009
|-
|L||Cadillac STS V8 AWD w/Navigation 2008-2009
|-
|U||Cadillac STS (all models) 2010, STS (Base model) 2011
|-
|W||Cadillac STS V6 2005-2007, STS V6 RWD 2008-2009, STS Luxury 2011
|-
|X||Cadillac STS V-Series 2006-2009, STS Luxury Performance 2011
|-
|Z||Cadillac STS V8 RWD w/Navigation 2008-2009
|-
|rowspan=4|GM T platform - rear-wheel drive
|rowspan=4|T||B|| 1985-1987 Chevrolet Chevette CS
|-
|B||1985-1987 Pontiac Acadian (Canada only)
|-
|J||1985 Pontiac Acadian Scooter (Canada only)
|-
|L||1985-1987 Pontiac 1000
|-
|rowspan=4|GM T platform - front-wheel drive
|rowspan=4|T||N|| Pontiac LeMans 1988, LeMans LE 1989-1991, LeMans SE 1992-1993
|-
|R||1988-1989 Pontiac LeMans SE sedan
|-
|S||1988-1990 Pontiac LeMans GSE AeroCoupe
|-
|X||1988-1993 Pontiac LeMans VL AeroCoupe
|-
|rowspan=3|GM T platform - front-wheel drive
|rowspan=3|A
|-
|R||Saturn Astra XE (US: 2008, Canada: 2008-2009)
|-
|T||Saturn Astra XR (US: 2008, Canada: 2008-2009)
|-
|rowspan=4|Daewoo T200 platform
|rowspan=4|T||D||Chevrolet Aveo Special Value 2004-2008, Base model 2004, LS 2005-2011, Aveo 1LT 2009-2011
|-
|G||Chevrolet Aveo LT 2005-2008, Aveo 2LT 2009-2011
|-
|J||Chevrolet Aveo LS 2004
|-
|D||Pontiac G3 2009
|-
|rowspan=2|GM V platform - front-wheel drive
|rowspan=2|V||R||1987-1992 Cadillac Allanté with standard removable hardtop
|-
|S||1990-1993 Cadillac Allanté
|-
|rowspan=2|GM V platform - rear-wheel drive
|rowspan=2|V||R||1997-2001 Cadillac Catera
|-
|X||2004-2006 Pontiac GTO coupe
|-
|rowspan=49|GM W platform
|rowspan=49|W
|-
|A||Chevrolet Impala ''LS'' 2010-2013, Impala Limited ''LS'' 2014-2016
|-
|B||Chevrolet Impala ''LS'' 2006-2009, Impala ''LT'' 2010-2013, Impala Limited ''LT'' 2014-2016
|-
|C||Chevrolet Impala ''LT'' 3.9L 2006-2009, Impala ''LTZ'' 2010-2013, Impala Limited ''LTZ'' 2014-2016
|-
|D||Chevrolet Impala ''SS'' 2006-2009, Impala ''Police'' 2010-2013, Impala Limited ''Police'' 2014-2016
|-
|E||Chevrolet Impala ''Taxi'' 2010-2012
|-
|F||Chevrolet Impala 2000-2005, Impala ''LS'' Fleet (1FL) 2011-2013
|-
|G||Chevrolet Impala ''LT'' Fleet (2FL) 2011-2013
|-
|H||Chevrolet Impala ''LS'' 2000-2005
|-
|J||Chevrolet Monte Carlo ''LS'' 2006-2007
|-
|K||Chevrolet Monte Carlo ''LT'' 3.9L 2006, Monte Carlo ''LT'' 3.5L 2007
|-
|L||Chevrolet Lumina 1990-2001, Lumina ''LS'' 1997-1999
|-
|L||Chevrolet Monte Carlo ''SS'' 2006-2007
|-
|M||Chevrolet Monte Carlo ''LT'' 3.5L 2006
|-
|N||Chevrolet Lumina ''Euro'' 1990-1994, Lumina ''LS'' 1995-1996, Lumina ''LTZ'' 1997-1999
|-
|N||Chevrolet Monte Carlo ''LTZ'' 2006
|-
|P||Chevrolet Lumina ''Z34'' 1991-1994, Impala ''SS'' 2004-2005
|-
|S||Chevrolet Impala ''Police'' 2006-2009
|-
|T||Chevrolet Impala ''LT'' 3.5L 2006-2009
|-
|U||Chevrolet Impala ''LTZ'' 2006-2009
|-
|V||Chevrolet Impala ''50th Anniversary Edition'' 2008
|-
|W||Chevrolet Monte Carlo ''LS'' 1995-2005
|-
|X||Chevrolet Monte Carlo ''Z34'' 1995-1999, Monte Carlo ''SS'' 2000-2004, Monte Carlo ''LT'' 2005
|-
|Z||Chevrolet Monte Carlo ''SS Supercharged'' 2004-2005
|-
|C||Pontiac Grand Prix ''GXP'' 2005-2008
|-
|H||Pontiac Grand Prix ''LE'' 1991-1993
|-
|J||Pontiac Grand Prix 1988-1989, Grand Prix ''LE'' 1990, Grand Prix ''SE'' 1991-2000
|-
|K||Pontiac Grand Prix ''LE'' 1988-1989, Grand Prix ''SE1'' 2000-2003
|-
|P||Pontiac Grand Prix ''SE'' 1988-1990, Grand Prix ''GT'' 1991-1993, 1997-2003,<br /> Grand Prix ''GT1'' 2004, Grand Prix 2005-2008
|-
|R||Pontiac Grand Prix ''GTP'' 1999-2005, Grand Prix ''GT'' 2006-2007
|-
|S||Pontiac Grand Prix ''GT2'' 2004, Grand Prix ''GT'' 2005
|-
|T||Pontiac Grand Prix ''STE'' 1990-1993
|-
|H||Oldsmobile Cutlass Supreme 1988-1991, Cutlass Supreme ''S'' 1992-1994,<br /> Cutlass Supreme ''SL'' 1995-1997, Intrigue 1998, Intrigue ''GX'' 1999-2002
|-
|R||Oldsmobile Cutlass Supreme ''International Series'' 1988-1993
|-
|S||Oldsmobile Cutlass Supreme ''SL'' 1988-1991, Intrigue ''GL'' 1998-2002
|-
|T||Oldsmobile Cutlass Supreme Convertible 1990-1995
|-
|X||Oldsmobile Intrigue ''GLS'' 1998-2002
|-
|B||Buick Regal ''Custom'' 1988-1996, Regal ''GS'' Coupe 1995-1996, Regal ''LS'' 1997-2004
|-
|C||Buick Lacrosse ''CX'' 2005-2009
|-
|D||Buick Regal ''Limited'' 1988-1996, Lacrosse ''CXL'' 2005-2009
|-
|E||Buick Lacrosse ''CXS'' 2005-2008
|-
|F||Buick Regal ''GS'' Coupe 1992-1994, Regal ''GS'' Sedan 1992-2004
|-
|F||Buick Allure ''CX'' 2005-2009 (Canada only)
|-
|H||Buick Allure ''CXS'' 2005-2008 (Canada only)
|-
|J||Buick Allure ''CXL'' 2005-2009 (Canada only)
|-
|N||Buick Lacrosse ''Super'' 2008-2009
|-
|P||Buick Allure ''Super'' 2008-2009 (Canada only)
|-
|S||Buick Century ''Custom'' 1997-2005
|-
|Y||Buick Century ''Limited'' 1997-2002
|-
|rowspan=3|GM X platform
|rowspan=3|X||B||1985 Buick Skylark Custom
|-
|C||1985 Buick Skylark Limited
|-
|X||1985 Chevrolet Citation II
|-
|rowspan=39|GM Y platform
|rowspan=39|Y||V||2004-2009 Cadillac XLR
|-
|X||2006-2009 Cadillac XLR V-Series
|-
|Y||1985-2008 Chevrolet Corvette (all models except '90-'95 ZR-1)
|-
|Z||1990-1995 Chevrolet Corvette ZR-1
|-
|G||2009 Chevrolet Corvette GT1 Championship Edition (Base & Z06)
|-
|R||2009 Chevrolet Corvette ZR1 (after early production)
|-
|Y||2009 Chevrolet Corvette (Base model, Early production Z06, Early production ZR1)
|-
|Z||2009 Chevrolet Corvette Z06 (after early production)
|-
|A||2010-2013 Chevrolet Corvette Standard 1LT Man. Trans.
|-
|B||2010-2013 Chevrolet Corvette Preferred 2LT Man. Trans.
|-
|C||2010-2013 Chevrolet Corvette Premium 3LT Man. Trans.
|-
|D||2010-2013 Chevrolet Corvette Custom 4LT Man. Trans.
|-
|E||2010-2013 Chevrolet Corvette Standard 1LT Auto. Trans.
|-
|F||2010-2013 Chevrolet Corvette Preferred 2LT Auto. Trans.
|-
|G||2010-2013 Chevrolet Corvette Premium 3LT Auto. Trans.
|-
|H||2010-2013 Chevrolet Corvette Custom 4LT Auto. Trans.
|-
|J||2010-2013 Chevrolet Corvette Z06 Standard 1LZ Man. Trans.
|-
|K||2010-2013 Chevrolet Corvette Z06 Premium 2LZ Man. Trans.
|-
|L||2010-2013 Chevrolet Corvette Z06 Custom 3LZ Man. Trans.
|-
|M||2010-2013 Chevrolet Corvette ZR1 Standard 1ZR Man. Trans.
|-
|N||2010-2013 Chevrolet Corvette ZR1 Custom 3ZR Man. Trans.
|-
|P||2010-2013 Chevrolet Corvette Grand Sport Standard 1LT Man. Trans.
|-
|R||2010-2013 Chevrolet Corvette Grand Sport Preferred 2LT Man. Trans.
|-
|S||2010-2013 Chevrolet Corvette Grand Sport Premium 3LT Man. Trans.
|-
|T||2010-2013 Chevrolet Corvette Grand Sport Custom 4LT Man. Trans.
|-
|U||2010-2013 Chevrolet Corvette Grand Sport Standard 1LT Auto. Trans.
|-
|V||2010-2013 Chevrolet Corvette Grand Sport Preferred 2LT Auto. Trans.
|-
|W||2010-2013 Chevrolet Corvette Grand Sport Premium 3LT Auto. Trans.
|-
|X||2010-2013 Chevrolet Corvette Grand Sport Custom 4LT Auto. Trans.
|-
|Y||2013 Chevrolet Corvette 427 Convertible Collector Edition Premium 3LT Man. Trans.
|-
|Z||2013 Chevrolet Corvette 427 Convertible Collector Edition Custom 4LT Man. Trans.
|-
|1||2013 Chevrolet Corvette 60th Anniversary Edition Custom 4LT Man. Trans.
|-
|2||2013 Chevrolet Corvette 60th Anniversary Edition Custom 4LT Auto. Trans.
|-
|3||2013 Chevrolet Corvette Grand Sport 60th Anniversary Edition Custom 4LT Man. Trans.
|-
|4||2013 Chevrolet Corvette Grand Sport 60th Anniversary Edition Custom 4LT Auto. Trans.
|-
|5||2013 Chevrolet Corvette Z06 60th Anniversary Edition Custom 3LZ Man. Trans.
|-
|6||2013 Chevrolet Corvette ZR1 60th Anniversary Edition Custom 3ZR Man. Trans.
|-
|7||2013 Chevrolet Corvette 427 Convertible 60th Anniversary Edition Custom 4LT Man. Trans.
|-
|8||2013 Chevrolet Corvette 427 Convertible Collector Edition Preferred 2LT Man. Trans.
|-
|rowspan=13|GM Z platform
|rowspan=13|Z
|-
|E||Saturn SC1 (manual transmission 2-Door) 1993-1999
|-
|F||Saturn SC1 (automatic transmission 2-Door) 1993-1999, SL (manual transmission) 1991-02
|-
|G||Saturn SC (manual transmission) 1991-1992, SC2 (manual transmission 2-Door) 1993-99,<br /> SL1 (manual transmission) 1991-2002, SW1 (manual transmission) 1993-1999
|-
|H||Saturn SC (automatic transmission) 1991-92, SC2 (automatic transmission 2-Door) '93-'99,<br /> SL1 (automatic transmission) 1991-02, SW1 (automatic transmission LHD) '93-'99
|-
|J||Saturn SL2 (manual transmission) 1991-2002, SW2 (manual transmission) 1993-2001
|-
|K||Saturn SL2 (automatic transmission) 1991-2002, SW2 (automatic transmission 1993-1999)
|-
|M||Saturn SW1 "Postal" [SWP] (automatic transmission RHD) 1999-2001 <br>(Made for US Postal Service rural route mail carriers)
|-
|N||Saturn SC1 (manual transmission 3-Door) 1999-2002, SW2 (automatic transmission 2000-01)
|-
|P||Saturn SC1 (automatic transmission 3-Door) 1999-2002
|-
|R||Saturn SC2 (manual transmission 3-Door) 1999-2002
|-
|S||Saturn SL Spring Special 2002
|-
|Y||Saturn SC2 (automatic transmission 3-Door) 1999-2002
|-
|rowspan=3|GM Zeta platform (VE)
|rowspan=3|E||C||Pontiac G8 GT
|-
|P||Pontiac G8 GXP
|-
|R||Pontiac G8 (Base model)
|-
|rowspan=2|GM Zeta platform (VF)
|rowspan=2|F||1||2014-2017 Chevrolet SS w/automatic transmission
|-
|2||2015-2017 Chevrolet SS w/manual transmission
|-
|GM Zeta platform (WM)
|M||K||2011-2013 Chevrolet Caprice PPV
|-
|GM Zeta platform (WN)
|N||S||2014-2017 Chevrolet Caprice PPV
|-
|rowspan=19|GM Zeta platform (models formerly on F platform)
|rowspan=19|F||A||Chevrolet Camaro ''LS'' automatic transmission 2010-2011, ''2LS'' automatic transmission 2012-2014, ''LS'' manual transmission 2015
|-
|B||Chevrolet Camaro ''LT'' automatic transmission 2010-2014, ''2LS'' automatic transmission 2015
|-
|C||Chevrolet Camaro ''2LT'' automatic transmission 2010-2014, ''LT'' manual transmission 2015
|-
|D||Chevrolet Camaro ''LT'' automatic transmission 2015
|-
|E||Chevrolet Camaro ''LS'' manual transmission 2010-2014, ''2LT'' manual transmission 2015
|-
|F||Chevrolet Camaro ''LT'' manual transmission 2010-2014, ''2LT'' automatic transmission 2015
|-
|G||Chevrolet Camaro ''2LT'' manual transmission 2010-2014, ''SS'' manual transmission 2015
|-
|H||Chevrolet Camaro ''SS'' automatic transmission 2015
|-
|J||Chevrolet Camaro ''SS'' automatic transmission 2010-2014. Note: Must have "J" in 8th position of VIN.
|-
|J||Chevrolet Camaro ''ZL1'' automatic transmission 2012. Note: Must have "P" in 8th position of VIN.
|-
|J||Chevrolet Camaro ''2SS'' manual transmission 2015
|-
|K||Chevrolet Camaro ''2SS'' automatic transmission 2010-2015
|-
|L||Chevrolet Camaro ''ZL1'' automatic transmission 2013-2014, ''ZL1'' manual transmission 2015
|-
|M||Chevrolet Camaro ''ZL1'' automatic transmission 2015
|-
|S||Chevrolet Camaro ''SS'' manual transmission 2010-2014. Note: Must have "W" in 8th position of VIN.
|-
|S||Chevrolet Camaro ''ZL1'' manual transmission 2012. Note: Must have "P" in 8th position of VIN.
|-
|S||Chevrolet Camaro ''Z/28'' manual transmission 2014. Note: Must have "E" in 8th position of VIN.
|-
|T||Chevrolet Camaro ''2SS'' manual transmission 2010-2014
|-
|Z||Chevrolet Camaro ''ZL1'' manual transmission 2013-2014, ''Z/28'' manual transmission 2015
|-
|}
RHD= Right-Hand Drive
====Model Line 2010- Passenger Car (Using Vehicle Platforms introduced 2010 or later)====
The Model Line is specified as character 4 of the American GM VIN for Passenger Cars.
{| border=1 style="margin:auto;"
!VIN
!Description
|-
|A||Cadillac ATS 2013-2019
|-
|A||Cadillac CTS sedan 2014-2019, CTS V-Series sedan 2016-2019
|-
|B||Chevrolet Cruze 2016-2019
|-
|C||Chevrolet Spark 2013-2022, Spark EV 2014-2016
|-
|D||Cadillac CT4 2020-2026
|-
|D||Cadillac CT5 2020-
|-
|F||Chevrolet Camaro 2016-2024
|-
|F||Chevrolet Bolt EV 2017-2023, Bolt EUV 2022-2023, Bolt 2027
|-
|G||Buick LaCrosse 2010-2016
|-
|G||Buick Regal 2011-2020, Buick Regal TourX 2018-2020
|-
|J||Chevrolet Sonic 2016-2020
|-
|K||Cadillac CT6 2016-2020
|-
|M||Cadillac Celestiq EV 2025-
|-
|P||Buick Verano 2012-2017
|-
|P||Chevrolet Cruze 2011-2015, Cruze Limited 2016
|-
|R||Cadillac ELR 2014, 2016
|-
|R||Chevrolet Volt 2011-2019
|-
|W||Buick Cascada 2016-2019
|-
|Y||Chevrolet Corvette 2014-
|-
|Z||Buick LaCrosse 2017-2019
|-
|Z||Chevrolet Malibu 2016-2025
|-
|1||Cadillac XTS 2013-2019
|-
|1||Chevrolet Impala 2014-2020
|-
|1||Chevrolet Malibu 2013-2015, Malibu Limited 2016
|-
|}
===Body style codes 1987- Passenger Car===
The Body type is specified as character 6 of the American GM VIN for passenger cars.
{| border=1 style="margin:auto;"
!VIN
!Description
|-
|1||Two-Door Coupe/Sedan
|-
|2||Two-Door Hatchback
|-
|3||Two-Door Convertible
|-
|4||Two-Door Wagon ('91-'92 Geo Storm Hatchback)
|-
|5||Four-Door Sedan
|-
|6||Four-Door Hatchback
|-
|7||Four-Door Hatchback ('89-'90 Geo Prizm hatchback)
|-
|8||Four-Door Station Wagon
|-
|9||Four-Door Station Wagon - High Roof Monocab
|}
===American restraint types 1987-===
The restraint type is specified as character 7 of the American GM VIN for passenger cars.
{{center/top}}
====Restraint codes for passenger cars 1987-2009====
{{center/end}}
{| border=1 style="margin:auto;"
!VIN Code
!Description
|-
|1||Active (Manual) belts 1987-1996
|-
|2||Active (Manual) belts plus driver and passenger front airbags 1992-2005<br />(For '94-'96 Pontiac Grand Prix coupe: Passive (Automatic) belts plus driver and passenger front airbags)
|-
|3||Active (Manual) belts plus driver side front airbag 1988-1996 <br />(For '94 Geo Prizm: Active (Manual) belts plus driver and passenger front airbags)
|-
|4||Passive (Automatic) belts 1987-1996
|-
|4||Active (Manual) belts plus driver and passenger front & side airbags 1997-2005
|-
|4||Active (Manual) belts plus driver and passenger front & side curtain airbags 2006-2009
|-
|5||Passive (Automatic) belts plus driver side front airbag 1992-1996
|-
|5||Active (Manual) belts plus driver and passenger front airbags & driver-side side impact airbag 2000-2005
|-
|5||Active (Manual) belts plus driver and passenger front airbags & occupant sensor 2006-2009
|-
|6||Passive (Automatic) belts plus driver and passenger front airbags 1994-1996
|-
|6||Active (Manual) belts plus driver and passenger front & side airbags & occupant sensor 2000-2009
|-
|7||Active (Manual) belt driver & Passive (Automatic) belt passenger plus driver and passenger front airbags 1996
|-
|7||Active (Manual) belts plus driver and passenger front & side airbags & rear side airbags 2000-2005
|-
|7||Active (Manual) belts plus driver and passenger front & side & side curtain airbags & occupant sensor 2006-2009
|-
|8||Active (Manual) belts plus driver and passenger front & side curtain airbags & occupant sensor 2006-2009
|-
|9||
|}
{{center/top}}
====Restraint codes for passenger cars 2010-====
{{center/end}}
{| border=1 style="margin:auto;"
!VIN Code
!Description
|-
|D||Active (Manual) belts plus driver and passenger front & side airbags 2010-
|-
|E||Active (Manual) belts plus driver and passenger front & side & side curtain airbags 2010-2017, 2027
|-
|F||Active (Manual) belts plus driver and passenger front & side curtain airbags 2010
|-
|G||Active (Manual) belts plus driver and passenger front & side & rear side & side curtain airbags 2010-2017
|-
|N||Active (Manual) belts plus driver and passenger front & side & front knee airbags 2016-2019
|-
|R||Active (Manual) belts plus driver and passenger front & side & side curtain & front knee airbags 2012-
|-
|S||Active (Manual) belts plus driver and passenger front & side & rear side & side curtain & front knee airbags 2011-
|-
|T||Active (Manual) belts plus driver and passenger front & side & front row side curtain airbags 2011
|-
|U||Active (Manual) belts plus driver and passenger front & side & front row side curtain & front knee airbags 2012-2017
|}
{{center/top}}
====Restraint codes for light trucks 2010-====
{{center/end}}
{| border=1 style="margin:auto;"
!VIN Code
!Description
|-
|A||Active (Manual) belts plus driver-side front airbag 2010
|-
|B||Active (Manual) belts plus driver-side front airbag 2011-
|-
|B||Active (Manual) belts plus driver and passenger front airbags 2010
|-
|C||Active (Manual) belts plus driver and passenger front airbags 2011-
|-
|C||Active (Manual) belts plus driver and passenger front & side airbags 2010
|-
|D||Active (Manual) belts plus driver and passenger front & side airbags 2011-
|-
|D||Active (Manual) belts plus driver and passenger front airbags & side curtain airbags for up to 3 rows of seating 2010
|-
|E||Active (Manual) belts plus driver and passenger front & side & side curtain airbags 2010-
|-
|F||Active (Manual) belts plus driver and passenger front airbags & side curtain airbags for up to 3 rows of seating 2011-2015
|-
|F||Active (Manual) belts plus driver and passenger front & side airbags & side curtain airbags for up to 3 rows of seating 2016-
|-
|H||Active (Manual) belts plus driver-side front airbag & driver-side side-impact airbag & driver-side side curtain airbag 2023-2024
|-
|K||Active (Manual) belts plus driver and passenger front & side & side curtain & front center airbags 2013-
|-
|L||Active (Manual) belts plus driver and passenger front & side & side curtain & front center & driver-side knee airbags 2017-2023
|-
|M||Active (Manual) belts plus driver and passenger front & side & side curtain & front center & front knee airbags 2025-
|-
|R||Active (Manual) belts plus driver and passenger front & side & side curtain & front knee airbags 2017-
|-
|S||Active (Manual) belts plus driver and passenger front & side & rear side & side curtain & front knee airbags 2013-
|-
|T||Active (Manual) belts plus driver-side front airbag & driver- and passenger-side side-impact airbags & side curtain airbags 2023-
|-
|U||Active (Manual) belts plus driver and passenger front & side & front row side curtain & front knee airbags 2013-2019
|}
===American engine codes 1981-===
GM encodes the engine type in character 8 of the VIN. The following table outlines the various engines encoded there:
====Engine codes for passenger cars====
Warning: Issues with decoding are related to year/model combinations. Each year has a different breakdown for each code along with plants and some model/trim breakdowns over years.
Entry: 1985-1988 Pontiac Fiero has a 9 engine code for the 2.8L L44 V6. Entry: 1986-1990 Cadillac Brougham, Oldsmobile 307 Cu. In. V8 vin code Y.
{| border=1 style="margin:auto;"
!VIN
!RPO
!Size
!Type
!Fuel
!Valvetrain
!Engine Family/Notes/Applications
|-
|A||LD5||3.8 L||V6||2 Barrel Carburetor |2BBL||OHV||Buick V6. (231 cu. in.) '81 Chevy Camaro (CA), Pontiac Catalina, Firebird, LeMans, Buick Century,<br /> '81-'83 Chevy Malibu (CA), '81-'84 Monte Carlo, Caprice, Impala (CA), '81-'87 Pontiac Grand Prix, Oldsmobile Cutlass/Cutlass Supreme, Buick Regal, '81-'85 Oldsmobile Delta 88, Buick LeSabre,<br /> '81-'86 Pontiac Bonneville, '84 Parisienne
|-
|A||LG0||2.3 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Oldsmobile Quad 4 H.O. '89-'94 Pontiac Grand Am, '89-'91 Oldsmobile Cutlass Calais, '92-'94 Achieva, '90 Cutlass Supreme, '90-'94 Chevy Beretta
|-
|A||LH2||4.6 L||V8||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 32 valve||Cadillac Northstar V8 (For RWD) (Premium V). '04-'09 Cadillac XLR, '05-'10 Cadillac STS
|-
|A||LCV||2.5 L||Straight-4|I4||Direct Injection|DI||DOHC,<br /> 16 valve||GM Ecotec engine, Gen III. VVT. '13 Chevy Malibu, '16 Malibu Limited, '16-'19 Impala,<br /> '13-'16 Cadillac ATS
|-
|A||LV7||1.4 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Small Gasoline Engine. VVT. Made in Changwon, S. Korea. '16-'22 Chevy Spark.
|-
|B||LG2||3.8 L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||Buick V6. '86 Oldsmobile 98, Toronado, Buick Electra, Riviera.
|-
|B||L26||4.9 L||V8||Fuel injection#Multi-port fuel injection|MFI||OHV||Cadillac High Technology V8.<br /> '91-'93 Cadillac Eldorado, Seville, '91-'95 DeVille, '91-'92 Fleetwood, '91-'93 Sixty Special
|-
|B||LE5||2.4 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. VVT. '06-'08 Chevy Cobalt, '06-'07 Saturn Ion, '06-'10 Pontiac G6, Solstice,<br /> '07-'08 Pontiac G5, '07-'10 Saturn Sky, '08-'09 Saturn Aura, '08-'10 Chevy Malibu
|-
|B||LUV||1.4L||I4 Turbo||Fuel injection#Sequential Multi-port fuel injection|SFI||DOHC,<br /> 16 valve||GM Family 0 Engine, Gen III. VVT. '12-'20 Chevy Sonic, '13-'15 Chevy Cruze, '16 Cruze Limited
|-
|C||L17||1.6 L||Straight-4|I4||2 Barrel Carburetor |2BBL||SOHC,<br /> 8 valve||Isuzu G161Z engine made by GM in US. '82-'87 Chevy Chevette, Pontiac T1000/1000
|-
|C||LN3||3.8 L||V6||Fuel injection#Multi-port fuel injection|MFI||OHV||Buick V6 (3800). '88-'90 Oldsmobile 98, Toronado, Buick Electra, Riviera, Reatta, <br /> '88-'91 Buick LeSabre, Oldsmobile Delta 88/Eighty Eight, Pontiac Bonneville
|-
|C||L47||4.0 L||V8||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 32 valve||Oldsmobile Aurora V8 (Premium V). Oldsmobile Aurora '95-'99, Aurora 4.0 '01-'03
|-
|C||LS4||5.3 L||V8||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads. Active Fuel Management.<br /> Transversely mounted for FWD. '05-'08 Pontiac Grand Prix GXP, '06-'07 Chevy Monte Carlo SS,<br /> '06-'09 Chevy Impala SS, '08-'09 Buick LaCrosse Super.
|-
|C||LAF||2.4 L||Straight-4|I4||Direct Injection|DI||DOHC,<br /> 16 valve||GM Ecotec engine, Gen II. VVT. Buick LaCrosse '10-'11, Regal '11.
|-
|C||LUJ||1.4L||I4 Turbo||Fuel injection#Sequential Multi-port fuel injection|SFI||DOHC,<br /> 16 valve||GM Family 0 Engine, Gen III. VVT. Early production engines were made in Aspern, Austria; later made in Flint, MI. '12 Chevy Cruze
|-
|D||LJ5||1.8 L||Straight-4|I4||Indirect injection Diesel||SOHC,<br /> 8 valve||Isuzu 4FB1 diesel engine imported from Japan. '81-'86 Chevy Chevette
|-
|D||LD2||2.3 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Oldsmobile Quad 4. '88-'95 Pontiac Grand Am, '88-'91 Oldsmobile Cutlass Calais, '92-'95 Achieva,<br /> '88-'91 &'95 Buick Skylark, '90-'91 Pontiac Grand Prix, Oldsmobile Cutlass Supreme,<br /> '95 Chevy Cavalier, Pontiac Sunfire
|-
|D||LC3||4.4 L||V8 Supercharged||Fuel injection#Sequential Multi-port point injection|SFI||DOHC,<br /> 32 valve||Cadillac Northstar V8 (Premium V). '06-'09 Cadillac XLR V-Series, Cadillac STS V-Series
|-
|E||LK9||3.0 L||V6||2 Barrel Carburetor |2BBL||OHV||Buick V6. '82-'85 Oldsmobile Cutlass Ciera, Buick Century, '85 Oldsmobile 98, Buick Electra
|-
|E||LA1||3.4 L||V6||Fuel injection#Sequential Multi-port point injection|SFI||OHV||Chevrolet 60° V6. '99-'05 Grand Am, '99-'04 Alero, '00-'05 Impala, Monte Carlo
|-
|E||L03||5.0 L||V8||Fuel injection#Throttle Body injection|TBI||OHV||Gen I Chevy Small-Block V8 (305 cu. in.). '88-'92 Camaro/Firebird, '89-'93 Chevy Caprice,<br /> '91 Buick Roadmaster Estate wagon, '91-'92 Oldsmobile Custom Cruiser, Cadillac Brougham.
|-
|E||LXV||1.6 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Family 1 Gen 3 engine. W/VVT. '09-'11 Chevy Aveo, '09 Pontiac G3
|-
|E||LS7||7.0 L||V8||Fuel injection#Sequential Multi-port point injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads.<br /> '06-'13 Corvette Z06, '13 Corvette 427, '14-'15 Camaro Z/28
|-
|E||LH7||1.6 L||I4 Turbo||Direct injection <br /> Common-rail Diesel||DOHC,<br /> 16 valve||GM Medium Diesel engine ("Whisper Diesel"). Made by Opel in Szentgotthárd, Hungary.<br /> Aluminum Block & Heads. '17-'19 Chevy Cruze Diesel.
|-
|F||LV8||4.3 L||V8||2 Barrel Carburetor |2BBL||OHV||Oldsmobile "Rocket" V8 (260 cu. in.) '81 Oldsmobile Cutlass, Delta 88.
|-
|F||L61||2.2 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen I. '00-'04 Saturn L-Series, '02-'05 Chevy Cavalier, Pontiac Sunfire, Grand Am,<br /> '02-'04 Oldsmobile Alero, '03-'06 Saturn Ion, '04-'06 Chevy Malibu, '05-'06 Chevy Cobalt
|-
|F||L61||2.2 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. '07-'08 Chevy Cobalt, Malibu, Pontiac G5, '07 Saturn Ion.
|-
|F||LB9||5.0 L||V8||Tuned-port fuel injection|TPI||OHV||Gen I Chevy Small-Block V8. (305 cu. in.). '85-'92 Chevy Camaro, Pontiac Firebird.
|-
|G||L46||1.8 L||I4||2 Barrel Carburetor |2BBL||OHV||Chevrolet "122" engine. '82 J-cars.
|-
|G||L69||5.0 L||V8||4 Barrel Quadrajet Carburetor |4BBL||OHV||Gen I Chevy Small-Block V8 (High Output 5.0L). (305 cu. in.)<br /> '84-'86 Camaro/Firebird, '84-'88 Chevy Monte Carlo SS
|-
|G||LM3||2.2 L||I4||Fuel injection#Throttle Body injection|TBI||OHV||Chevrolet "122" engine. '90-'91 Chevy Cavalier & Corsica/Beretta.
|-
|G||LS1||5.7 L||V8||Fuel injection#Multi-port fuel injection|MFI||OHV||Gen III Chevy Small-Block V8. (346 cu. in.) Aluminum Block & Heads.<br /> '97-'04 Corvette, '98-'02 Camaro/Firebird, '04 Pontiac GTO
|-
|G||LF1||3.0L||V6||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. VVT. 2010 Buick LaCrosse, Cadillac CTS
|-
|G||LWE||1.8 L||Straight-4|I4||Fuel injection#Sequential Multi-port fuel injection|SFI||DOHC,<br /> 16 valve||GM Family 1 engine, Gen III. VVT. PZEV emissions.<br /> '13-'15 Chevy Cruze, '16 Cruze Limited, '13-'18 Sonic.
|-
|H||LG4||5.0 L||V8||4 Barrel Quadrajet Carburetor |4BBL||OHV||Gen I Chevy Small-Block V8. (305 cu. in.) '81-'87 F-bodies, '81-'83 Chevy Malibu, '81-'85 Impala,<br /> '81-'88 Caprice, Monte Carlo, '83-'86 Pontiac Bonneville, Parisienne, '83-'87 Grand Prix
|-
|H||LE4||2.0 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 8 valve||GM Family II engine. Made in Brazil. '92-'94 Pontiac Sunbird.
|-
|H||LX5||3.5 L||V6||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 24 valve||Oldsmobile "Shortstar" V6 (Premium V). Oldsmobile Intrigue '99-'02, Aurora 3.5 '01-'02.
|-
|H||LAP||2.2 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. VVT. '09 Chevy Cobalt, Pontiac G5.
|-
|H||LUW||1.8 L||Straight-4|I4||Fuel injection#Sequential Multi-port fuel injection|SFI||DOHC,<br /> 16 valve||GM Family 1 engine, Gen III. VVT. '11-'15 Chevy Cruze, '16 Cruze Limited, '12-'18 Sonic.
|-
|J||L39||4.4 L||V8||2 Barrel Carburetor |2BBL||OHV||Gen I Chevy Small-Block V8 (267 cu. in.) '81-'82 Chevy Caprice, Impala, Malibu, Monte Carlo,<br /> '81 Chevy Camaro
|-
|J||LA5||1.8 L||Straight-4|I4 Turbo||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 8 valve||GM Family II engine. Made in Brazil. '84-'86 Pontiac Sunbird, Buick Skyhawk.
|-
|J||LT5||5.7 L||V8||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 32 valve||Based on Chevy Small-Block V8. Designed with Lotus Engineering.<br /> Made by Mercury Marine. Aluminum Block & Heads. '90-'95 Corvette ZR-1
|-
|J||LG8||3.1 L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||Chevrolet 60° V6. Gen III. 3100. '99-'03 Chevy Malibu, '99 Oldsmobile Cutlass, '00-'01 Chevy Lumina,<br /> '00-'03 Pontiac Grand Prix SE, '00-'05 Buick Century
|-
|J||L99||6.2 L||V8||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen IV Chevy Small-Block V8. VVT. With Active Fuel Management. Aluminum Block & Heads.<br /> '10-'15 Camaro SS (auto. trans.)
|-
|J||LTA||4.2 L||V8 Twin Turbo||Direct injection|DI||DOHC,<br /> 32 valve||Cadillac Blackwing V8. VVT. '19-'20 Cadillac CT6 Platinum & V-series
|-
|K||LC3||3.8 L||V6||2 Barrel Carburetor |2BBL||OHV||Chevrolet 90° V6 (Chevy Small-Block V8 Derived). 229 cu. in. <br /> '81-'82 Malibu, Monte Carlo, Impala, Caprice, '81 Camaro.
|-
|K||LC5||1.5 L||I4||2 Barrel Carburetor |2BBL||SOHC,<br /> 8 valve||Isuzu 4XC1 engine. '85 Chevrolet Spectrum.
|-
|K||LT2||2.0 L||Straight-4|I4||Fuel injection#Throttle Body injection|TBI||SOHC,<br /> 8 valve||GM Family II engine. Made in Brazil.<br /> '87-'91 Pontiac Sunbird, '87-'88 Oldsmobile Firenza, Buick Skyhawk.
|-
|K||LT2||2.0 L||Straight-4|I4||Fuel injection#Throttle Body injection|TBI||SOHC,<br /> 8 valve||GM Family II engine. Made in Australia by Holden.<br /> '89-'90 Pontiac LeMans GSE Aerocoupe, '89 LeMans SE sedan
|-
|K||L36||3.8 L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||Buick V6 (3800 Series II). '95-'05: Various W-, H-, C-, & G-body models. '95-'02 Camaro/Firebird.
|-
|K||LZE||3.5L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||GM High Value 60° V6. 3510cc. VVT. Flex-Fuel E85 compatible.<br /> '06-'07 Chevy Monte Carlo, '06-'11 Chevy Impala, '09-'10 Chevy Malibu, Pontiac G6
|-
|K||LEA||2.4 L||Straight-4|I4||Direct Injection|DI||DOHC,<br /> 16 valve||E85 Flex Fuel. GM Ecotec engine, Gen II. VVT. Buick Regal, Verano '12-'17 (except '13 Regal).
|-
|K||LSY||2.0 L||Straight-4|I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||GM Ecotec engine, Gen III. Active Fuel Management. VVT. VVL.<br /> '19 Cadillac CT6, '20+ Cadillac CT4, CT5
|-
|L||LM1||5.7 L||V8||4 Barrel Carburetor |4BBL||OHV||Gen I Chevy Small-Block V8.<br> '81 Camaro Z28 (only w/auto. trans. in US), '81-'82 Impala 9C1 Police, '81 Malibu 9C1 Police
|-
|L||LL1||2.8 L||V6||2 Barrel Carburetor |2BBL||OHV||Chevrolet 60° V6 H.O. (longitudinally mounted). '83-'84 Pontiac Firebird.
|-
|L||LN7||3.0 L||V6||Fuel injection#Multi-port fuel injection|MFI||OHV||Buick V6. '85-'87 Pontiac Grand Am, '85-'88 Oldsmobile & Buick N-bodies,<br /> '86 Oldsmobile Delta 88, Buick LeSabre
|-
|L||L27||3.8 L||V6||Fuel injection#Tuned port injection|TPI||OHV||Buick V6 (3800 Series I). '90-'95 Buick Regal, '91-'94 Oldsmobile 98, Buick Park Avenue, '91 Reatta, '91-'93 Riviera, '91-'92 Oldsmobile Toronado, '92-'95 Buick LeSabre, '92-'94 Pontiac Bonneville, Oldsmobile 88
|-
|L||LNK||1.8 L||Straight-4|I4||Fuel injection#Sequential multi-port injection|SFI||DOHC,<br /> 16 valve||Toyota 2ZZ-GE engine. VVTL-i. '03-'06 Pontiac Vibe GT
|-
|L||LKW||2.5 L||Straight-4|I4||Direct Injection|DI||DOHC,<br /> 16 valve||GM Ecotec engine, Gen III. VVT. VVL. '14-'15 Chevy Malibu, Impala
|-
|L||L3B||2.7L||I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||GM L3B Tripower engine. VVT, VVL. Active Fuel Management. '20+ Cadillac CT4, CT4-V
|-
|M||LY9||1.0 L||Straight-3|I3||2BBL||SOHC,<br /> 6 valve ||Suzuki G10A engine. '85 Chevrolet Sprint
|-
|M||LT3||2.0 L||Straight-4|I4 Turbo||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 8 valve||GM Family II engine. Made in Brazil.<br /> '87-'90 Pontiac Sunbird, '87 Buick Skyhawk T-Type, '87-'89 Pontiac Grand Am SE.
|-
|M||L82||3.1 L||V6||Fuel injection#Sequential Multi Port Fuel injection|SFI||OHV||Chevrolet 60° V6 (transversely mounted). Gen III. 3100. '93-'97 Oldsmobile Cutlass Supreme,<br /> '94-'98 Pontiac Grand Am, Oldsmobile Achieva, Buick Skylark, '94-'99 Pontiac Grand Prix,<br /> '94-'96 Chevy Corsica/Beretta, Oldsmobile Cutlass Ciera, Buick Regal, '94-'99 Century,<br /> '95-'99 Chevy Lumina, Monte Carlo, '97-'99 Chevy Malibu, Oldsmobile Cutlass
|-
|M||LY9||2.6 L||V6||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 24 valve||Opel 54° V6 engine (Made in the UK). Euro-market Cadillac CTS '03-'04.
|-
|M||LGD||3.9L||V6||Fuel injection#Sequential Multi Port Fuel injection|SFI||OHV||E85 Flex Fuel. GM High Value 60° V6. VVT. '09-'11 Chevy Impala, Buick Lucerne
|-
|M||LE2||1.4 L||Straight-4|I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||GM Small Gasoline Engine. VVT. '16-'19 Chevy Cruze.
|-
|N||LF9||5.7 L||V8||Indirect injection Diesel||OHV||Oldsmobile Diesel V8. '81-'85 Chevy Caprice, Impala, '82-'83 Malibu, '82-'84 Monte Carlo,<br /> '81-'84 Pontiac Grand Prix, Bonneville, '81 Catalina, '83-'85 Parisienne,<br /> '81-'84 Oldsmobile 98, '81-'85 Cutlass/Cutlass Supreme, Delta 88, Custom Cruiser, Toronado,<br /> '81-'83 Buick Electra, '81-'85 LeSabre, Electra Estate wagon, Riviera, '82-'83 Regal,<br /> '81-'84 Cadillac DeVille, '81-'85 Fleetwood Brougham, Eldorado, Seville
|-
|N||LG7||3.3 L||V6||Fuel injection#Multi-port fuel injection|MFI||OHV||Buick V6 (3300). '89-'93 Buick Century, Skylark, Oldsmobile Cutlass Ciera, '89-'91 Cutlass Calais,<br /> '92-'93 Achieva, Pontiac Grand Am.
|-
|N||LA3||3.2 L||V6||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 24 valve||Opel 54° V6 engine (Made in the UK). '03-'04 Cadillac CTS
|-
|N||LZ4||3.5L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||GM High Value 60° V6. 3510cc. VVT. '06-'07 Chevy Monte Carlo, '06-'10 Chevy Impala,<br /> '07-'10 Chevy Malibu, Pontiac G6, '07-'08 Saturn Aura
|-
|N||LFR||3.6L||V6||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 24 valve||(Bi-Fuel Gas/CNG). GM High Feature V6. '15-'17 Chevy Impala Bi-Fuel
|-
|P||LQ5||2.0 L||I4||Fuel injection#Throttle Body injection|TBI||OHV||Chevrolet "122" engine. '83-'86 J-cars ('83-'84 for Pontiac).
|-
|P||LT1||5.7 L||V8||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen II Chevy Small-Block V8. Aluminum Heads: '92-'96 Corvette, '93-'97 Camaro/Firebird.<br /> Iron Heads: '94-'96 Chevy Caprice, Impala SS, Buick Roadmaster, Cadillac Fleetwood.
|-
|P||LSJ||2.0 L||SC Straight-4|I4 Supercharged||Fuel injection#Sequential central point injection|SFI||DOHC,<br /> 16 valve||GM Ecotec Gen I. Made by Opel in Kaiserslautern, Germany.<br /> '04-'07 Saturn Ion Red Line, '05-'07 Chevy Cobalt SS Supercharged.
|-
|P||LSA||6.2 L||V8 Supercharged||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads.<br /> Cadillac CTS V-Series '09-'15, Camaro ZL1 '12-'15
|-
|P||LF4||3.6L||V6 Twin Turbo||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. Cadillac CT4-V Blackwing '22+
|-
|R||LR8||2.5L||I4||Fuel injection#Throttle Body injection|TBI||OHV||Pontiac Iron Duke/Tech IV engine. Transversely mounted. '82-'85 Chevy Citation, Buick Skylark,<br /> '82-'84 Pontiac Phoenix, Oldsmobile Omega, '82-'90 Chevy Celebrity, '82-'91 Pontiac 6000,<br /> '82-'92 Oldsmobile Cutlass Ciera, Buick Century, '84-'88 Pontiac Fiero, '90-'92 Chevy Lumina
|-
|R||L81||3.0 L||V6||Fuel injection#Multi-port fuel injection|SFI||DOHC,<br /> 24 valve||Opel 54° V6 engine (Made in the UK). '97-'01 Cadillac Catera, '00-'05 Saturn L-Series
|-
|R||LZ8||3.9L||V6||Fuel injection#Sequential Multi Port Fuel injection|SFI||OHV||GM High Value 60° V6. VVT. Active Fuel Management. '07 Chevy Impala
|-
|R||LS9||6.2 L||V8 Supercharged||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads. '09 Corvette ZR1.
|-
|R||LUK||2.4L||I4||Direct Injection|DI||DOHC,<br /> 16 valve||Mild Hybrid. GM Ecotec Gen II. VVT. '12-'16 Buick LaCrosse eAssist, Regal eAssist,<br /> '13-'14 Chevy Malibu Eco, '14 Chevy Impala Eco
|-
|S||LS5||4.3 L||V8||2 Barrel Carburetor |2BBL||OHV||Pontiac V8. 265 cu. in.<br /> '81 Pontiac Bonneville, Catalina, Firebird, Grand Prix, LeMans, Buick Century, Regal.
|-
|S||LU5||5.0 L||V8||Cross-Fire fuel injection|CFI||OHV||Gen I Chevy Small-Block V8. (305 cu. in.) '83 Camaro, Firebird. Dual throttle-body fuel injection.
|-
|S||LB8||2.8 L||V6||Fuel injection#Multi Port Fuel injection|MPFi||OHV||Chevrolet 60° V6 (longitudinally mounted). '85-'89 Chevy Camaro, Pontiac Firebird.
|-
|S||L32||3.4 L||V6||Fuel injection#Multi Port Fuel injection|MPFi||OHV||Chevrolet 60° V6 (longitudinally mounted). '93-'95 Chevy Camaro, Pontiac Firebird.
|-
|S||LS6||5.7 L||V8||Fuel injection#Sequential Multi Port injection|SFI||OHV||Gen III Chevy Small-Block V8. (346 cu. in.) Aluminum Block & Heads.<br /> '01-'04 Corvette Z06, '04-'05 Cadillac CTS V-Series
|-
|S||LGX||3.6L||V6||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6, 4th gen. VVT. Active Fuel Management. '16-'19 Cadillac ATS, CTS, '16-'20 CT6, '16-'24 Chevrolet Camaro, '17-'19 Buick LaCrosse, '18–'20 Buick Regal GS
|-
|T||LU8||4.9 L||V8 Turbo||4 Barrel Carburetor |4BBL||OHV||Pontiac V8. 301 cu. in. '81 Pontiac Firebird Formula & Trans Am.
|-
|T||LT7||4.3 L||V6||Indirect injection Diesel||OHV||Oldsmobile Diesel V6. FWD version for '82-'85 GM A-bodies.
|-
|T||LS2||4.3 L||V6||Indirect injection Diesel||OHV||Oldsmobile Diesel V6. FWD version for '85 GM C-bodies.
|-
|T||LH0||3.1 L||V6||Fuel injection#Multi Port Fuel injection|MPFi||OHV||Chevrolet 60° V6 (longitudinally mounted). '90-'92 Chevy Camaro, Pontiac Firebird.
|-
|T||LH0||3.1 L||V6||Fuel injection#Multi Port Fuel injection|MPFi||OHV||Chevrolet 60° V6 (transversely mounted). Gen II. '88-'91 Pontiac 6000,<br /> '89-'93 Grand Prix, Oldsmobile Cutlass Supreme, Buick Regal, '90-'94 Chevy Cavalier, Lumina,<br /> '91-'94 Pontiac Sunbird, '90-'93 Chevy Corsica/Beretta, '90 Celebrity
|-
|T||LD9||2.4 L||Straight-4|I4||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 16 valve||Oldsmobile Quad 4 ("2.4 Twin Cam"). '96-'01 Pontiac Grand Am, '96-'97 Oldsmobile Achieva, Buick Skylark, '99-'01 Oldsmobile Alero, '97-'99 Chevy Malibu, '96-'02 Chevy Cavalier, Pontiac Sunfire
|-
|T||LP1||2.8 L||V6||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 24 valve||GM High Feature V6. '05-'07 Cadillac CTS
|-
|T||LS9||6.2 L||V8 Supercharged||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads. '10-'13 Corvette ZR1.
|-
|T||LFV||1.5L||I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||GM Small Gasoline Engine. VVT. '16-'25 Chevy Malibu.
|-
|U||L68||2.5L||I4||Fuel injection#Throttle Body injection|TBI||OHV||Pontiac Iron Duke/Tech IV engine. Transversely mounted. '85-'91 N-bodies
|-
|U||LS2||6.0 L||V8||Fuel injection#Sequential Multi-port fuel injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads.<br /> '05-'07 Corvette, '05-'06 Pontiac GTO, '06-'07 Cadillac CTS V-Series
|-
|U||LE9||2.4 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. E85 Flex-Fuel. 2011-12 Chevy Malibu.
|-
|U||LKN||1.8L||I4||Direct Injection|DI||DOHC,<br /> 16 valve||Full Hybrid. GM Medium Gasoline Engine. VVT. Made in Szentgotthárd, Hungary.<br> '16-'19 Chevy Malibu Hybrid
|-
|V||LT6||4.3 L||V6||Indirect injection Diesel||OHV||Oldsmobile Diesel V6. RWD version.<br /> '82-'83 Chevy Malibu, Monte Carlo, '82-'85 Oldsmobile Cutlass Supreme, Buick Regal
|-
|V||LG5||3.1 L||V6 Turbo||Fuel injection#Multi-port fuel injection|MPFI||OHV||Chevrolet 60° V6. Gen II. Intercooled. (ASC/McLaren modified).<br /> '89-'90 Pontiac Grand Prix Turbo coupe, '90 Grand Prix STE Turbo sedan
|-
|V||LLT||3.6L||V6||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. '08-'11 Cadillac CTS, STS, '10-'11 Chevrolet Camaro, Buick LaCrosse
|-
|V||LHU||2.0 L||Straight-4|I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||E85 Flex Fuel (N/A on Regal GS). GM Ecotec engine, Gen II. VVT.<br /> Buick Regal '11-'13, Verano '13-'16.
|-
|W||L37||4.9 L||V8||4 Barrel Carburetor |4BBL||OHV||Pontiac V8. 301 cu. in. '81 Pontiac Firebird, LeMans Safari wagon.
|-
|W||LB6||2.8 L||V6||Fuel injection#Multi-port fuel injection|MFI||OHV||Gen I/II Chevrolet 60° V6 (transversely mounted). '85 Chevy Citation, Buick Skylark,<br /> '85-'89 Chevy Cavalier, Celebrity, Pontiac 6000, '85-'88 Cadillac Cimarron,<br /> '85-'87 Oldsmobile Firenza, '86-'89 Cutlass Ciera, '87-'88 Buick Century, '87-'89 Chevy Corsica/Beretta, '88-'89 Pontiac Grand Prix, Oldsmobile Cutlass Supreme, Buick Regal
|-
|W||L64||3.1 L||V6||Fuel injection#Multi-port fuel injection|MFI||OHV||Flex-fuel: Gas/M85 or Gas/E85 (2 versions). Gen II Chevrolet 60° V6. '93 Chevy Lumina VFV
|-
|W||L99||4.3 L||V8||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen II Chevy Small-Block V8. '94-'96 Chevy Caprice.
|-
|W||LS3||6.2 L||V8||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads.<br /> '08-'13 Corvette, '10-'15 Camaro SS (man. trans.), '09 Pontiac G8 GXP, '14-'17 Chevy SS
|-
|W||LGY||3.0L||V6 Twin Turbo||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6, 4th gen. VVT. Active Fuel Management. '20+ Cadillac CT5, CT5-V
|-
|X||LE2||2.8 L||V6||2 Barrel Carburetor |2BBL||OHV||Chevrolet 60° V6 (transversely mounted). '81-'85 Chevy Citation, Buick Skylark,<br /> '81-'84 Pontiac Phoenix, Oldsmobile Omega, '82-'86 Chevy Celebrity, Pontiac 6000,<br /> '86 Oldsmobile Cutlass Ciera, Buick Century
|-
|X||LQ1||3.4 L||V6||Fuel injection#Multi-port fuel injection|MPFI||DOHC,<br /> 24 valve||Chevrolet 60° V6 ("Twin Dual Cam V6"). '91-'97 Chevy Lumina, '95-'97 Chevy Monte Carlo,<br /> '91-'96 Pontiac Grand Prix, Oldsmobile Cutlass Supreme
|-
|X||LNF||2.0 L||Straight-4|I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||GM Ecotec engine, Gen II. VVT.<br /> '07-'10 Pontiac Solstice GXP, Saturn Sky Red Line, '08-'10 Chevy Cobalt SS Turbo.
|-
|X||LTG||2.0 L||Straight-4|I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||GM Ecotec engine, Gen III. VVT. '13-'22 Chevy Malibu, '13-'19 Cadillac ATS, '14-'20 Buick Regal,<br /> '14-'19 Cadillac CTS, '16-'23 Chevy Camaro, '16-'18 Cadillac CT6.
|-
|X||LTG||2.0 L||Straight-4|I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||Plug-in hybrid. GM Ecotec engine, Gen III. VVT. '17-'18 Cadillac CT6 PHEV. (VIN starts with LRE)
|-
|Y||LV2||5.0 L||V8||4 Barrel Carburetor |4BBL||OHV||Oldsmobile "Rocket" V8 (307 cu. in.) '86-'90 Chevy Caprice wagon, '87 Caprice sedan (Can.),<br /> '81 Pontiac Bonneville, Catalina, '86 Parisienne, '87-'89 Safari wagon, '81-'84 Oldsmobile 98,<br /> '81-'85 Delta 88, Toronado, '81-'90 Custom Cruiser, '81 Cutlass Cruiser, '82-'87 Cutlass Supreme,<br /> '88 Cutlass Supreme Classic, '81-'84 Buick Electra, '85-'89 Electra Estate wagon,<br /> '81-'85 LeSabre, Riviera, '86-'89 LeSabre Estate wagon, '90 Estate wagon, '86-'87 Regal,<br /> '86 Cadillac Fleetwood Brougham, '87-'90 Brougham
|-
|Y||LD8||4.6 L||V8||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 32 valve||Cadillac Northstar V8 (Torque tuned FWD) (Premium V). '93-'02 Cadillac Eldorado,<br /> '94-'04 Cadillac Seville SLS, '94-'05 Cadillac DeVille, '06-'11 Cadillac DTS,<br /> '04-'05 Pontiac Bonneville GXP, '06-'08 Buick Lucerne
|-
|Y||L76||6.0 L||V8||Fuel injection#Sequential Multi-port fuel injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads. With Active Fuel Management.<br /> '08-'09 Pontiac G8 GT.
|-
|Y||LF1||3.0L||V6||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. VVT. 2011 Cadillac CTS
|-
|Y||LF4||3.6L||V6 Twin Turbo||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. Cadillac ATS-V '16-'19
|-
|Z||LH7||2.8 L||V6||2 Barrel Carburetor |2BBL||OHV||Chevrolet 60° V6 (transversely mounted). H.O. '81-'84 Chevy Citation, '82-'84 Pontiac Phoenix, Oldsmobile Omega ES, Buick Skylark, '83-'84 Pontiac 6000 STE, '84 Chevy Celebrity
|-
|Z||LB4||4.3L||V6||Fuel injection#Throttle Body injection|TBI||OHV||Chevrolet 90° V6 (Chevy Small-Block V8 Derived). '85 Chevy Impala, '85-'90 Caprice,<br /> '92-'93 Caprice 9C6 taxi, '85-'88 Monte Carlo, '85-'86 Pontiac Parisienne, '86-'87 Grand Prix,<br> '86 Bonneville.
|-
|Z||LAT||2.4L||I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Mild Hybrid. GM Ecotec Gen II. VVT. '10 Chevy Malibu Hybrid
|-
|Z||LUZ||2.0 L||I4 Turbo||Direct injection <br /> Common-rail Diesel||DOHC,<br /> 16 valve||GM Family B Diesel (Based on Fiat JTD engine). Made by Opel in Kaiserslautern, Germany.<br /> Iron Block, Aluminum Heads. '14-'15 Chevy Cruze Diesel.
|-
|1||LC1||2.8 L||V6||2 Barrel Carburetor |2BBL||OHV||Chevrolet 60° V6 (longitudinally mounted). '82-'84 Camaro/Firebird.
|-
|1||LL8||2.0 L||I4||Fuel injection#Throttle Body injection|TBI||OHV||Chevrolet "122" engine. '87-'89 Chevy/Olds/Buick J-cars & Chevy L-cars.
|-
|1||L67||3.8 L||V6 Supercharged||Fuel injection#Sequential Multi-port injection|SFI||OHV||Buick V6 (3800 Supercharged Series I). '91-'95 Buick Park Avenue Ultra,<br /> '92-'95 Pontiac Bonneville, Oldsmobile 98, '95 Buick Riviera, Oldsmobile LSS
|-
|1||L67||3.8 L||V6 Supercharged||Fuel injection#Sequential Multi-port injection|SFI||OHV||Buick V6 (3800 Supercharged Series II). '96-'05 Buick Park Avenue Ultra,<br /> '96-'99 Buick Riviera, Oldsmobile LSS, '96-'03 Pontiac Bonneville, '97-'03 Grand Prix,<br /> '97-'04 Buick Regal, '04-'05 Chevy Impala SS, Monte Carlo SS Supercharged
|-
|1||LZ9||3.9L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||GM High Value 60° V6. VVT.<br /> '06-'07 Chevy Malibu SS, '06-'09 Pontiac G6, '06 Chevy Monte Carlo, Impala, '09-'10 Buick Lucerne
|-
|1||2H0||1.8 L||Straight-4|I4||Fuel injection#Sequential Multi-port fuel injection|SFI||DOHC,<br /> 16 valve||GM Family 1 engine, Gen III. VVT. Made in Szentgotthárd, Hungary. '08 (& '09 in Canada) Saturn Astra
|-
|1||LE5||2.4 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. VVT. '11 & some '12 Chevy Malibu w/LE5 engine.
|-
|2||LQ9||2.5L||I4||Fuel injection#Throttle Body injection|TBI||OHV||Pontiac Iron Duke/Tech IV engine. Longitudinally mounted. '82-'85 Camaro/Firebird.
|-
|2||LS3||1.0 L||Straight-3|I3 Turbo||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 6 valve ||Suzuki G10T engine. '87-'88 Chevrolet Sprint Turbo
|-
|2||LY8||1.3 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 16 valve||Suzuki G13BB engine. '98-'01 Chevrolet Metro
|-
|2||L26||3.8 L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||Buick V6 (3800 Series III). '04-'08 Pontiac Grand Prix, '05-'09 Buick LaCrosse, '06-'08 Buick Lucerne
|-
|2||L77||6.0 L||V8||Fuel injection#Sequential Multi-port fuel injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads. With Active Fuel Management.<br /> E85 Flex Fuel. '11-'17 Chevy Caprice PPV.
|-
|3||LC8||3.8 L||V6|V6 Turbo||4 Barrel Carburetor |4BBL||OHV||Buick V6. 231 cu. in. '81-'82 Buick Regal, Riviera, '81 Chevy Monte Carlo.
|-
|3||LG3||3.8 L||V6||Fuel injection#(Sequential) Multi-port injection|MFI/SFI||OHV||Buick V6. '84-'88 Oldsmobile Cutlass Ciera, Buick Century, '85 & '87 Oldsmobile 98, Buick Electra,<br /> '86-'88 Oldsmobile Delta 88, Buick LeSabre, '87 Oldsmobile Toronado, Buick Riviera,<br /> '87-'88 Pontiac Bonneville.
|-
|3||LW2||4.5 L||V8||Fuel injection#Multi-port fuel injection|MFI||OHV||Cadillac High Technology V8. '90 Cadillac DeVille/Fleetwood/Sixty Special/Eldorado/Seville.
|-
|3||L40||2.3 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 8 valve||Oldsmobile Quad 4 ("Quad OHC"). '92-'94 Pontiac Grand Am, Oldsmobile Achieva, Buick Skylark
|-
|3||LZG||3.9L||V6||Fuel injection#Sequential Multi Port Fuel injection|SFI||OHV||E85 Flex Fuel. GM High Value 60° V6. VVT. Active Fuel Management. '08 Chevy Impala
|-
|3||LFX||3.6L||V6||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. VVT. E85 Flex Fuel.<br /> '12-'16 Buick LaCrosse, '12-'15 Chevrolet Camaro, Cadillac CTS, '12-'17 Chevrolet Caprice PPV,<br /> '12-'20 Chevrolet Impala, '14-'16 Chevrolet Impala Limited, '13-'15 Cadillac ATS, '13-'19 Cadillac XTS
|-
|3||LT6||5.5 L||V8||Direct injection|DI||DOHC,<br /> 32 valve||Chevrolet Gemini Small-Block V8. Aluminum Block & Heads. Flat-plane crank. VVT.<br /> For mid-engine C8 Corvette Z06 '23+.
|-
|4||LC4||4.1 L||V6|V6||4 Barrel Carburetor |4BBL||OHV||Buick V6. '81-'84 Buick LeSabre, Electra, Riviera, Oldsmobile Toronado, '81-'82 Cadillac DeVille, Fleetwood Brougham, Eldorado, Seville, '81-'83 Oldsmobile 98, '82-'84 Buick Regal,<br /> '82 Pontiac Grand Prix, Bonneville G
|-
|4||LC9||1.6 L||Straight-4|I4||2 Barrel Carburetor |2BBL||SOHC,<br /> 8 valve||Toyota 4A-C engine. '85-'88 Chevy Nova
|-
|4||LN2||2.2 L||Straight-4|I4||Fuel injection#(Sequential) Multi-port injection|MPI/SFI||OHV||Chevrolet "122" engine. '92-'02 Cavalier, '95-'02 Sunfire, '92-'96 Corsica/Beretta, '93 Lumina,<br /> '93-'96 Cutlass Ciera, Century.
|-
|4||L32||3.8 L||V6 Supercharged||Fuel injection#Sequential Multi-port injection|SFI||OHV||Buick V6 (3800 Supercharged Series III). '04-'07 Pontiac Grand Prix
|-
|4||LUU||1.4L||I4||Fuel injection#Sequential Multi-port fuel injection|SFI||DOHC,<br /> 16 valve||GM Family 0 Engine, Gen III. VVT. ([[w:EREV|Range extender]]). Early production engines were made in Aspern, Austria; later made in Flint, MI. '11-'15 Chevy Volt, '14 & '16 Cadillac ELR.
|-
|4||LT2||6.2 L||V8||Direct injection|DI||OHV||Gen V Chevy Small-Block V8. Aluminum Block & Heads. Active Fuel Management. VVT.<br /> For mid-engine C8 Corvette Stingray '20+.
|-
|4||LT2||6.2 L||V8||Direct injection|DI||OHV||Full Hybrid. Gen V Chevy Small-Block V8. Aluminum Block & Heads. Active Fuel Management. VVT.<br /> For mid-engine C8 Corvette E-Ray '24+.
|-
|5||LW9||2.5L||I4||2 Barrel Carburetor |2BBL||OHV||Pontiac Iron Duke engine. '81 Chevy Citation, Pontiac Phoenix, Oldsmobile Omega, Buick Skylark.
|-
|5||LR6||4.5 L||V8||Fuel injection#Throttle Body injection|TBI (DFI)||OHV||Cadillac High Technology V8. '88-'89 Cadillac DeVille/Fleetwood/Sixty Special/Eldorado/Seville.
|-
|5||LY9||1.0 L||Straight-3|I3||2BBL||SOHC,<br /> 6 valve ||Suzuki G10A engine. '86 Chevrolet Sprint
|-
|5||LM9||1.0 L||Straight-3|I3||2BBL||SOHC,<br /> 6 valve ||Suzuki G10A engine. '87-'88 Chevrolet Sprint
|-
|5||LW0||1.6 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Toyota 4A-GE engine. '88 Chevy Nova Twin Cam, '90-'92 Geo Prizm GSi
|-
|5||LW0||1.6 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Isuzu 4XE1-UW engine. '90-'91 Geo Storm GSi
|-
|5||LT4||5.7 L||V8||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen II Chevy Small-Block V8. '96 Corvette (man. trans.)
|-
|5||LAT||2.4L||I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Mild Hybrid. GM Ecotec Gen II. VVT. '07-'09 Saturn Aura Green Line, '08-'09 Chevy Malibu Hybrid
|-
|5||LAP||2.2 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. VVT. '10 Chevy Cobalt.
|-
|5||LFW||3.0L||V6||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. VVT. '12-'13 Cadillac CTS, '14 CTS wagon
|-
|5||L3A||1.5L||I4||Direct Injection|DI||DOHC,<br /> 16 valve||GM Small Gasoline Engine. VVT. ([[w:EREV|Range extender]]). '16-'19 Chevy Volt.
|-
|5||LWC||1.6L||I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||GM Medium Gasoline Engine, H.O. VVT. Made in Szentgotthárd, Hungary. '16-'19 Buick Cascada
|-
|5||LS6||6.7 L||V8||Port/Direct injection||OHV||Gen VI Chevy Small-Block V8. Aluminum Block & Heads. Active Fuel Management. VVT.<br /> For mid-engine C8 Corvette Stingray, Grand Sport '27+.
|-
|5||LS6||6.7 L||V8||Port/Direct injection||OHV||Full Hybrid. Gen VI Chevy Small-Block V8. Aluminum Block & Heads. Active Fuel Management. VVT.<br /> For mid-engine C8 Corvette Grand Sport X '27+.
|-
|6||L81||5.7 L||V8||4 Barrel Carburetor |4BBL||OHV||Gen I Chevy Small-Block V8. '81 Corvette
|-
|6||LM1||5.7 L||V8||4 Barrel Carburetor |4BBL||OHV||Gen I Chevy Small-Block V8. '83-'85 Impala 9C1 Police, '86-'88 Caprice 9C1 Police
|-
|6||L73||1.6 L||Straight-4|I4||Fuel injection#Throttle Body injection|TBI||SOHC,<br /> 8 valve||GM Family 1 engine. Made in South Korea by Daewoo. '88-'93 Pontiac LeMans
|-
|6||LP2||1.0 L||Straight-3|I3||Fuel injection#Throttle Body injection|TBI||SOHC,<br /> 6 valve ||Suzuki G10A engine. '89-'97 Geo Metro, '98-'00 Chevrolet Metro
|-
|6||L01||1.6 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Toyota 4A-FE engine. '89-'97 Geo Prizm base/LSi
|-
|6||L01||1.6 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 12 valve||Isuzu 4XE1-V engine. '90-'93 Geo Storm (base model)
|-
|6||L42||2.2 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen I (Bi-Fuel Gas/CNG). '03-'04 Chevy Cavalier
|-
|6||L91||1.6 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||E-TEC II. '04-'07 Chevy Aveo
|-
|6||LXT||1.6 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||E-TEC II. '08 Chevy Aveo
|-
|6||LGW||3.0L||V6 Twin Turbo||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6, 4th gen. VVT. Active Fuel Management. '16-'19 Cadillac CT6
|-
|6||LT4||6.2 L||V8 Supercharged||Direct injection|DI||OHV||Gen V Chevy Small-Block V8. Aluminum Block & Heads. With Active Fuel Management. VVT.<br /> '15-'19 Corvette Z06, '17-'24 Camaro ZL1, '16-'19 Cadillac CTS V-Series,<br /> '22+ Cadillac CT5-V Blackwing
|-
|7||LU5||5.0 L||V8||Cross-Fire fuel injection|CFI||OHV||Gen I Chevy Small-Block V8. (305 cu. in.) '82 Camaro, Firebird. Dual throttle-body fuel injection.
|-
|7||L69||5.0 L||V8||4 Barrel Quadrajet Carburetor |4BBL||OHV||Gen I Chevy Small-Block V8 (High Output 5.0L). (305 cu. in.). '83 F-cars, '83 Chevy Monte Carlo SS
|-
|7||LC5||1.5 L||I4||2 Barrel Carburetor |2BBL||SOHC,<br /> 8 valve||Isuzu 4XC1 engine. '86-'88 Chevrolet Spectrum, '89 Geo Spectrum.
|-
|7||LC2||3.8 L||V6|V6 Turbo||Fuel injection#Sequential multi-port injection|SFI||OHV||Intercooled. Buick V6. '86-'87 Buick Regal. '89 Pontiac 20th Anniversary Turbo Trans Am
|-
|7||LC7||4.1 L||V8||Fuel injection#Multi-port fuel injection|MFI||OHV||Cadillac High Technology V8. '87-'88 Cadillac Allante.
|-
|7||L05||5.7 L||V8||Fuel injection#Throttle Body injection|TBI||OHV||Gen I Chevy Small-Block V8. '89-'93 Chevy Caprice (police only for '89-'91),<br /> '92-'93 Buick Roadmaster, '92 Oldsmobile Custom Cruiser, '90-'92 Cadillac Brougham, '93 Fleetwood.
|-
|7||LL0||1.9 L||Straight-4|I4||Fuel injection#Multi-port injection|MFI||DOHC,<br /> 16 valve||Saturn I4 engine. '91-'02 Saturn S-Series
|-
|7||LY7||3.6 L||V6||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 24 valve||GM High Feature V6. VVT. '04-'09 Cadillac CTS, '05-'07 STS, '05-'08 Buick LaCrosse,<br /> '07-'09 Pontiac G6, Saturn Aura, '08-'09 Pontiac G8, '08-'12 Chevy Malibu
|-
|7||LT1||6.2 L||V8||Direct injection|DI||OHV||Gen V Chevy Small-Block V8. Aluminum Block & Heads. With Active Fuel Management. VVT.<br /> '14-'19 Corvette, '16-'24 Camaro SS
|-
|7||LT7||5.5 L||V8 Twin Turbo||Port/Direct injection||DOHC,<br /> 32 valve||Chevrolet Gemini Small-Block V8. Aluminum Block & Heads. Flat-plane crank. VVT.<br /> For mid-engine C8 Corvette ZR1 '25+. (1,064 hp)
|-
|7||LT7||5.5 L||V8 Twin Turbo||Port/Direct injection||DOHC,<br /> 32 valve||Full Hybrid. Chevrolet Gemini Small-Block V8. Aluminum Block & Heads. Flat-plane crank. VVT.<br /> For mid-engine C8 Corvette ZR1X '26+. (1,250 hp)
|-
|8||LV8||4.3 L||V8||2 Barrel Carburetor |2BBL||OHV||Oldsmobile "Rocket" V8 (260 cu. in.) '82 Oldsmobile Cutlass, Delta 88.
|-
|8||LT8||4.1 L||V8||Fuel injection#Throttle Body injection|TBI (DFI)||OHV||Cadillac High Technology V8. '82-'87 Cadillac DeVille, Eldorado, Seville, '82-'85 Fleetwood Brougham, '85-'87 Fleetwood, '87 Fleetwood Sixty Special.
|-
|8||LC8||3.8 L||V6|V6 Turbo||4 Barrel Carburetor |4BBL||OHV||Buick V6. '83 Buick Regal, Riviera.
|-
|8||L83||5.7 L||V8||Cross-Fire fuel injection|CFI||OHV||Gen I Chevy Small-Block V8. '82, '84 Corvette. Dual throttle-body fuel injection. 1st fuel injected Corvette since 1965.
|-
|8||L98||5.7 L||V8||Tuned-port fuel injection|TPI||OHV||Gen I Chevy Small-Block V8. '85-'91 Corvette, '87-'92 Chevy Camaro, Pontiac Firebird.
|-
|8||LQ6||4.5 L||V8||Fuel injection#Multi-port fuel injection|MFI||OHV||Cadillac High Technology V8. '89-'92 Cadillac Allante.
|-
|8||L24||1.9 L||Straight-4|I4||Fuel injection#Multi-port injection|MFI||SOHC,<br /> 8 valve||Saturn I4 engine. '95-'02 Saturn S-Series
|-
|8||LX9||3.5 L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||GM High Value 60° V6. 3498cc. '04-'06 Chevy Malibu, '05-'06 Pontiac G6
|-
|8||LF3||3.6L||V6 Twin Turbo||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. '14-'19 Cadillac CTS V-Sport, XTS V-Sport
|-
|8||LV6||1.8 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Isuzu 4XF1 engine. '92-'93 Geo Storm GSi.
|-
|8||LV6||1.8 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Toyota 7A-FE engine. '93-'97 Geo Prizm
|-
|8||LV6||1.8 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Toyota 1ZZ-FE engine. VVT-i from '00. '98-'02 Chevrolet Prizm, '03-'08 Pontiac Vibe
|-
|8||LAY||1.8 L||Straight-4|I4||Fuel injection#Sequential multi-port injection|SFI||DOHC,<br /> 16 valve||Toyota 2ZR-FE engine. Dual VVT-i. '09-'10 Pontiac Vibe
|-
|9||L17||1.6 L||Straight-4|I4||2 Barrel Carburetor |2BBL||SOHC,<br /> 8 valve||Isuzu G161Z engine made by GM in US. '81 Chevy Chevette, Pontiac T1000
|-
|9||L62||6.0 L||V8||Fuel injection#Throttle Body injection|TBI (DFI)||OHV||Cadillac 472-series V8 engine family. V8-6-4 cylinder deactivation.<br /> '81 Cadillacs, '82-'84 Fleetwood Limousine.
|-
|9||LC3||3.8 L||V6||2 Barrel Carburetor |2BBL||OHV||Chevrolet 90° V6 (Chevy Small-Block V8 Derived). 229 cu. in. <br /> '83 Malibu, '83-'84 Monte Carlo, Impala, Caprice, '83 Pontiac Parisienne.
|-
|9||LG8||5.0 L||V8||4 Barrel Carburetor |4BBL||OHV||Oldsmobile "Rocket" V8 (307 cu. in.) H.O. '83-'84 Hurst/Olds, '85-'87 Oldsmobile Cutlass 442
|-
|9||LM9||3.8 L||V6|V6 Turbo||Fuel injection#Sequential multi-port injection|SFI||OHV||Buick V6. '84-'85 Buick Regal, Riviera.
|-
|9||L44||2.8 L||V6||Fuel injection#Multi-port fuel injection|MFI||OHV||Chevrolet 60° V6 (transversely mounted). H.O. '85-'88 Pontiac Fiero
|-
|9||LC0||1.5 L||I4 Turbo||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 8 valve||Isuzu 4XC1-T engine. '87-'88 Chevrolet Spectrum Turbo
|-
|9||LK0||1.9 L||Straight-4|I4||Fuel injection#Throttle Body injection|TBI||SOHC,<br /> 8 valve||Saturn I4 engine. '91-'94 Saturn S-Series
|-
|9||L37||4.6 L||V8||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 32 valve||Cadillac Northstar V8 (H.O. FWD) (Premium V). '93 Cadillac Allanté,<br /> '93-'02 Cadillac Eldorado Touring Coupe, '93-'04 Cadillac Seville STS, '96-'05 Cadillac DeVille,<br /> '06-'11 Cadillac DTS, '08-'11 Buick Lucerne Super
|-
|9||L72||1.3 L||Straight-4|I4||Fuel injection#Throttle Body injection|TBI||SOHC,<br /> 8 valve ||Suzuki G13BA engine. '95-'97 Geo Metro
|-
|9||LUJ||1.4L||I4 Turbo||Fuel injection#Sequential Multi-port fuel injection|SFI||DOHC,<br /> 16 valve||GM Family 0 Engine, Gen III. VVT. Early production engines were made in Aspern, Austria; later made in Flint, MI. '11 Chevy Cruze
|-
|9||LL0||1.2 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Daewoo S-TEC II engine (1249 cc). VVT. Made in Changwon, S. Korea. '13-'15 Chevy Spark.
|-
|9||LT5||6.2 L||V8 Supercharged||Port/Direct injection||OHV||Gen V Chevy Small-Block V8. Aluminum Block & Heads. VVT. '19 Corvette ZR1.
|-
|0||LH8||1.8 L||Straight-4|I4||Fuel injection#Throttle Body injection|TBI||SOHC,<br /> 8 valve||GM Family II engine. Made in Brazil.<br /> '82-'86 Pontiac J2000/2000/Sunbird, Oldsmobile Firenza, Buick Skyhawk.
|-
|0||LAX||2.4 L||Straight-4|I4||Fuel injection#Sequential multi-port injection|SFI||DOHC,<br /> 16 valve||Toyota 2AZ-FE engine. VVT-i. '09-'10 Pontiac Vibe
|-
|0||LE9||2.4 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. E85 Flex-Fuel. 2010 Chevy Malibu.
|-
|0||LE5||2.4 L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. VVT. Most '12 Chevy Malibu w/LE5 engine.
|}
H.O.=High Output, CNG=Compressed Natural Gas, VVT=Variable Valve Timing, VVL=Variable Valve Lift
====Motor codes for electric passenger cars====
{| class="wikitable"
|-
! VIN !! RPO !! Fuel !! Drive Wheels !! Application/Notes
|-
| 5 ||LN1|| Electricity || Front || '97, '99 General Motors EV1
|-
| 0 ||EN0|| Electricity || Front || '14-'16 Chevrolet Spark EV
|-
| 0 ||EN0|| Electricity || Front || '17-'23 Chevrolet Bolt EV
|-
| 0 ||EN0|| Electricity || Front || '22-'23 Chevrolet Bolt EUV
|-
|}
====Motor codes for LFP-powered electric passenger cars====
{| class="wikitable"
|-
! VIN !! Motor <br /> RPO code !! # of Motors !! Battery Pack <br /> RPO code !! Fuel !! Drive Wheels !! Application/Notes
|-
|-
| V ||P9D (HPB)|| 1 || EJW || Electricity || Front || '27 Chevrolet Bolt
|}
LFP=Lithium Iron Phosphate
====Motor codes for Ultium-powered electric passenger cars====
{| class="wikitable"
|-
! VIN !! Motor <br /> RPO code !! # of Motors !! Battery Module <br /> RPO code !! # of Modules !! Fuel !! Drive Wheels !! Application/Notes
|-
|-
| 1 ||X0E|| 2 || EXN || 16 || Electricity || All || '25- Cadillac Celestiq
|-
| 2 ||X0E|| 2 || EHT || 16 || Electricity || All || '25- Cadillac Celestiq <br> (Battery Module RPO code EHT is Configuration B)
|}
====Engine codes for light trucks====
GM encodes the engine type in character 8 of the VIN. The following table outlines the various engines encoded there:
{| class="wikitable"
|-
! VIN !! RPO !! Size !! Type !! Fuel !! Valvetrain !! Engine Family/Notes/Applications
|-
| A ||LD5|| 3.8L || V6 || Gas ||OHV||2-bbl carb. Buick V6. (231 cu. in.) '81-'84 Chevy El Camino, GMC Caballero (CA emissions).
|-
| A ||LR1|| 1.9L || I4 || Gas ||SOHC,<br /> 8 valve||2-bbl carb. Isuzu G200 engine imported from Japan.<br /> '82-'85 Chevy S-10/GMC S-15, '83-'85 Chevy S-10 Blazer/GMC S-15 Jimmy
|-
| A ||L38|| 2.5L || I4 || Gas ||OHV||TBI. Pontiac Iron Duke/Tech IV engine. '91-'93 Chevy S-10/GMC Sonoma.
|-
| A ||LH2|| 4.6L || V8 || Gas ||DOHC,<br /> 32 valve||SFI. Cadillac Northstar V8 (For RWD) (Premium V). '04-'09 Cadillac SRX
|-
| A ||L20|| 4.8L || V8 || Gas/E85 ||OHV|| Flex Fuel. SFI. Gen IV Chevrolet Small-Block V8. Iron Block/Aluminum Heads. VVT.<br /> '10-'13 GMT900 pickups, '10-'14 Express/Savana
|-
| A ||LCV|| 2.5L || I4 || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen III. Direct Injection. VVT. '15-'22 Chevy Colorado, GMC Canyon,<br /> '17-'20 Buick Envision, '17-'21 GMC Acadia, '19-'21 Chevy Blazer
|-
| B ||LR2|| 2.8L || V6 || Gas ||OHV||2-bbl carb. Chevrolet 60° V6.<br /> '82-'85 Chevy S-10/GMC S-15, '83-'85 Chevy S-10 Blazer/GMC S-15 Jimmy
|-
| B ||LU2|| 4.3L || V6 || Gas ||OHV|| TBI. Chevrolet 90° V6 (Chevy Small-Block V8 Derived). '90-'91 Astro/Safari higher output engine option.
|-
| B ||L81|| 3.0L || V6 || Gas ||DOHC,<br /> 24 valve||SFI. Opel 54° V6 engine (Made in the UK). '02-'03 Saturn Vue
|-
| B ||L33|| 5.3L || V8 || Gas ||OHV||SFI. Gen III Chevrolet Small-Block V8. Vortec 5300 H.O. 310hp. Aluminum Block & Heads.<br /> '05-'06 Silverado/Sierra 1500 4wd ext. cab short bed,<br> '07 Silverado Classic 1500/Sierra Classic 1500 4wd ext. cab short bed.
|-
| B ||LE8|| 2.2L || I4 || Gas/E85 ||DOHC,<br /> 16 valve||Flex-Fuel. SFI. GM Ecotec Gen II. VVT. '09-'10 Chevy HHR
|-
| B ||LC8|| 6.0L || V8 || Gas/CNG ||OHV||Bi-Fuel (Also Gas/LPG in Express/Savana). SFI. Gen IV Chevrolet Small-Block V8. Iron Block & Aluminum Heads. VVT. '11-'20 Express/Savana, '13-'19 Silverado HD/Sierra HD.
|-
| B ||LUV|| 1.4L ||I4 Turbo|| Gas ||DOHC,<br /> 16 valve||GM Family 0 Engine, Gen III. SFI. VVT.<br /> '13-'21 Buick Encore, '15-'21 Chevy Trax (also '13-'14 Trax in Canada)
|-
| C ||LH6|| 6.2L || V8 || Diesel ||OHV||Detroit Diesel V8. For sub-8,500 lb. GVWR trucks '82-'93. '82-'86 C/K pickups, '87 R/V pickups,<br /> '88-'93 C/K, Sierra pickups, '82-'91 Blazer/Jimmy, Suburban, '83-'93 full-size vans
|-
| C ||L34|| 2.0L || I4 || Gas ||DOHC,<br /> 16 valve||Suzuki J20A engine. MFI. '99-'03 Chevrolet Tracker
|-
| C ||LY2|| 4.8L || V8 || Gas ||OHV||SFI. Gen IV Chevrolet Small-Block V8. Iron Block/Aluminum Heads.<br /> '07-'09 GMT900 pickups, '07-'09 Tahoe/Yukon, '08-'09 Express/Savana
|-
| C ||LAF|| 2.4L || I4 || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen II. Direct Injection. VVT. Chevy Equinox, GMC Terrain '11.
|-
| C ||L83|| 5.3L || V8 || Gas/E85 ||OHV|| Flex Fuel. Gen V Chevrolet Small-Block V8 (EcoTec3). Direct injection, VVT. Active Fuel Management<br /> '14-'19 K2XX pickups, '15-'20 K2XX SUVs.
|-
| C ||L2R|| 2.7L ||I4 Turbo||| Gas ||DOHC,<br /> 16 valve||GM L3B Tripower engine ("TurboMax") - Detuned version. Direct Injection. VVT, VVL. Active Fuel Management. '23-'24 Chevy Colorado.
|-
| D ||LE3|| 4.1L || I6 || Gas ||OHV||2-bbl carb. Chevrolet Turbo-Thrift I6.<br /> '81-'84 Chevy/GMC C/K pickups, full-size vans, '81-'82 Blazer/Jimmy
|-
| D ||LG6|| 3.1L || V6 || Gas ||OHV||TBI. Chevrolet 60° V6. '90-'95 U-body minivans.
|-
| D ||L61|| 2.2L || I4 || Gas ||DOHC,<br /> 16 valve||SFI. GM Ecotec Gen I. '02-'07 Saturn Vue, '06 Chevy HHR.
|-
| D ||L61|| 2.2L || I4 || Gas ||DOHC,<br /> 16 valve||SFI. GM Ecotec Gen II. '07-'08 Chevy HHR.
|-
| D ||LLT|| 3.6L || V6 || Gas ||DOHC,<br /> 24 valve||GM High Feature V6. Direct Injection. '09-'16 GMC Acadia, '17 GMC Acadia Limited,<br /> '09-'17 Chevrolet Traverse, Buick Enclave, '09-'10 Saturn Outlook
|-
| D ||LBZ|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine.<br /> Mid '06 Silverado HD/Sierra HD & '07 Silverado Classic HD/Sierra Classic HD
|-
| D ||L84|| 5.3L || V8 || Gas/E85 ||OHV|| Gen V Chevrolet Small-Block V8 (EcoTec3). Direct injection, VVT. With Dynamic Fuel Management<br /> '19+ Chevy/GMC Silverado 1500/Sierra 1500, '21+ Tahoe/Yukon, Suburban/Yukon XL.
|-
| E ||LN8|| 2.5L || I4 || Gas ||OHV||TBI. Pontiac Iron Duke/Tech IV engine.<br /> '85-'90 Chevy/GMC S-10/S-15, Astro/Safari Cargo Van, '85-'88 S-10 Blazer/S-15 Jimmy.
|-
| E ||LLR|| 3.7L || I5 || Gas ||DOHC,<br /> 20 valve||Atlas I5. SFI. VVT.<br /> '07-'12 Colorado/Canyon, '07-'08 Isuzu i-370, '07-'10 Hummer H3, '09-'10 Hummer H3T
|-
| E ||LA1|| 3.4L || V6 || Gas ||OHV||Chevrolet 60° V6. '96 GMT199 (U-body) minivans, '97-'05 GMT200 (U-body) minivans,<br /> '01-'05 Pontiac Aztek, '02-'05 Buick Rendezvous
|-
| F ||LF3|| 5.0L || V8 || Gas ||OHV|| 4-bbl carb. Gen I Chevrolet Small-Block V8. '81-'86 C/K, full-size vans, '81-'82 Blazer/Jimmy.<br /> CA emissions version of LE9 5.0 V8.
|-
| F ||L65|| 6.5L || V8 Turbo || Diesel ||OHV||Detroit Diesel V8. For over-8,500 lb. GVWR Chevy C/K, GMC Sierra trucks '92-'02,<br /> Chevy/GMC Suburban 1500/2500 '94-'99, over-8,500 lb. GVWR Express/Savana '96-'02
|-
| F ||LNJ|| 3.4L || V6 || Gas ||OHV||Chevrolet 60° V6. Made in China by SAIC-GM. '05-'09 Chevy Equinox, '06-'09 Pontiac Torrent.
|-
| F ||L94|| 6.2L || V8 || Gas/E85 ||OHV||Flex-Fuel. Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads. SFI. VVT. Active Fuel Management. '10-'14 GMC Yukon Denali/Yukon XL Denali, Cadillac Escalade/Escalade ESV.
|-
| F ||L20|| 4.8L || V8 || Gas/E85 ||OHV|| Flex Fuel. SFI. Gen IV Chevrolet Small-Block V8. Iron Block/Aluminum Heads. VVT.<br /> '15-'17 Express/Savana
|-
| F ||L82|| 5.3L || V8 || Gas ||OHV|| Gen V Chevrolet Small-Block V8 (EcoTec3). Direct injection, VVT. With Active Fuel Management<br /> '19-'21 Chevy Silverado 1500, GMC Sierra 1500 (T1XX).
|-
| G ||LG9|| 5.0L || V8 || Gas ||OHV|| 2-bbl carb. Gen I Chevrolet Small-Block V8. '81 Chevy/GMC C/K pickups, Blazer/Jimmy, full-size van
|-
| G ||L18|| 8.1L || V8 || Gas ||OHV||MFI. Vortec 8100. Gen VII Chevrolet Big-Block V8. '01-'02 C3500HD, '01-'06 Silverado HD/Sierra HD, '07 Silverado Classic HD/Sierra Classic HD, '01-'06 Suburban/Yukon XL 2500, '02-'06 Avalanche 2500, '01-'02 Express/Savana
|-
| G ||L96|| 6.0L || V8 || Gas/E85 ||OHV||Flex Fuel. SFI. Gen IV Chevrolet Small-Block V8. Iron Block & Aluminum Heads. VVT.<br /> '10-'19 Silverado HD/Sierra HD, '10-'13 Suburban 2500/Yukon XL 2500, '16-'19 Suburban 3500,<br /> '10-'20 Express/Savana.
|-
| G ||LSD|| 1.5L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||GM Small Gasoline Engine. Direct Injection. VVT. '23+ Chevy Equinox, GMC Terrain
|-
| H ||LG4|| 5.0L || V8 || Gas ||OHV||4-bbl carb. Gen I Chevy Small-Block V8. (305 cu. in.) '81-'87 Chevy El Camino, GMC Caballero.
|-
| H ||LE9|| 5.0L || V8 || Gas ||OHV|| 4-bbl carb. Gen I Chevrolet Small-Block V8. '81-'86 C/K pickups, Blazer/Jimmy, Suburban, full-size vans
|-
| H ||L03|| 5.0L || V8 || Gas ||OHV|| TBI. Gen I Chevrolet Small-Block V8. '87 R/V pickups, '88-'95 C/K, Sierra pickups, '87-'95 full-size vans, '87 Blazer/Jimmy, Suburban.
|-
| H ||LN2|| 2.2L || I4 || Gas ||OHV||SFI. Chevrolet "122" engine. '03 Chevy S-10/GMC Sonoma
|-
| H ||LS2|| 6.0L || V8 || Gas ||OHV||SFI. Gen IV Chevy Small-Block V8. Chevy SSR '05-'06, Trailblazer SS '06-'09, Saab 9-7X Aero '08-'09.
|-
| H ||LV3|| 4.3L || V6 || Gas/E85 ||OHV||Flex Fuel. Chevrolet 90° V6 - Gen V Chevrolet Small-Block V6 (EcoTec3). Direct injection, VVT. Active Fuel Management. '14-'21 Chevy Silverado 1500/GMC Sierra 1500.
|-
| J ||L39|| 4.4L || V8 || Gas ||OHV||2-bbl carb. Gen I Chevy Small-Block V8 (267 cu. in.) '81-82 Chevy El Camino, GMC Caballero.
|-
| J ||LL4|| 6.2L || V8 || Diesel ||OHV||Detroit Diesel V8. For over-8,500 lb. GVWR trucks '82-'93. '82-'86 C/K pickups, '87-'91 R/V pickups,<br /> '88-'93 C/K, Sierra pickups, '82-'91 Blazer/Jimmy, Suburban, '83-'93 full-size vans
|-
| J ||L29|| 7.4L || V8 || Gas ||OHV|| MFI. Vortec 7400. Gen VI Chevrolet Big-Block V8.<br /> '96-'00 C/K, Sierra pickups, Express/Savana, '96-'99 Suburban 2500
|-
| J ||LY5|| 5.3L || V8 || Gas ||OHV||SFI. Gen IV Chevrolet Small-Block V8. Active Fuel Management. Iron Block & Aluminum Heads.<br /> '07-'09 Silverado/Sierra 1500, Tahoe/Yukon, Suburban/Yukon XL 1500, Avalanche
|-
| J ||LZ1|| 6.0L || V8 || Gas-Electric Hybrid ||OHV||2-Mode Hybrid. Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads. VVT. Active Fuel Management. '10-'13 Tahoe Hybrid, Yukon Hybrid, Escalade Hybrid, Silverado Hybrid, Sierra Hybrid
|-
| J ||L86|| 6.2L || V8 || Gas ||OHV||Gen V Chevrolet Small-Block V8 (EcoTec3). Direct injection, VVT. Active Fuel Management. <br /> '14-18 Chevy/GMC Silverado 1500/Sierra 1500,<br /> '18-20 Chevy Tahoe Premier, '19-'20 Chevy Suburban Premier, GMC Yukon/Yukon XL SLT,<br /> '15-'20 GMC Yukon Denali/Yukon XL Denali, Cadillac Escalade/Escalade ESV.
|-
| K ||LC3|| 3.8L || V6 || Gas ||OHV||2-bbl carb. Chevrolet 90° V6 (Chevy Small-Block V8 Derived). 229 cu. in. <br /> '81-'82 Chevy El Camino, GMC Caballero (49-state emissions)
|-
| K ||L05|| 5.7L || V8 || Gas ||OHV|| TBI. Gen I Chevrolet Small-Block V8. '87 R/V pickups, '88-'95 C/K, Sierra pickups, '87-'95 full-size vans, '96 G-Classic full-size vans, '87-'94 Blazer, '95 Tahoe, '87-'91 Jimmy, '92-'95 Yukon, '87-'95 Suburban.
|-
| K ||LY6|| 6.0L || V8 || Gas ||OHV||SFI. Gen IV Chevrolet Small-Block V8. Iron Block & Aluminum Heads. VVT.<br /> '07-'09 Silverado HD/Sierra HD, '07-'09 Suburban 2500/Yukon XL 2500, '08-'09 Express/Savana
|-
| K ||LEA|| 2.4L || I4 || Gas/E85 ||DOHC,<br /> 16 valve||Flex Fuel. GM Ecotec engine, Gen II. Direct Injection. VVT. Chevy Equinox, GMC Terrain '12-'17,<br /> Chevy Captiva Sport '12-'14, Chevy Orlando '14.
|-
| K ||L3B|| 2.7L ||I4 Turbo||| Gas ||DOHC,<br /> 16 valve||GM L3B Tripower engine ("TurboMax"). Direct Injection. VVT, VVL. Active Fuel Management.<br /> '19+ Chevy Silverado 1500, GMC Sierra 1500, '23+ Chevy Colorado, GMC Canyon.
|-
| L ||LS9|| 5.7L || V8 || Gas ||OHV|| 4-bbl carb. Gen I Chevrolet Small-Block V8. For sub-8,500 lb. GVWR trucks, vans, Suburban, Blazer/Jimmy (CA) '81-'86.
|-
| L ||L27|| 3.8L || V6 || Gas ||OHV||Buick V6 (3800 Series I). '92-'95 U-body minivans
|-
| L ||LX9|| 3.5L || V6 || Gas ||OHV||GM High Value 60° V6. 3498cc. SFI. '05-'06 GMT201 minivans, '06-'07 Buick Rendezvous
|-
| L ||LH8|| 5.3L || V8 || Gas ||OHV||SFI. Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads.<br /> '08-'09 Hummer H3 Alpha, '09 Colorado/Canyon, Hummer H3T Alpha
|-
| L ||LGH|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine. Mid '10-'16 Express/Savana, '11-'12 Silverado HD/Sierra HD chassis cabs
|-
| L ||L87|| 6.2L || V8 || Gas ||OHV||Gen V Chevrolet Small-Block V8 (EcoTec3). Direct injection, VVT. Dynamic Fuel Management.<br /> '19+ Chevy/GMC Silverado 1500/Sierra 1500, '21+ Tahoe/Yukon, Suburban/Yukon XL,<br /> Cadillac Escalade/Escalade ESV.
|-
| L ||L3T|| 1.3L || I3 Turbo || Gas ||DOHC,<br /> 12 valve||GM E-Turbo Engine. Direct Injection. VVT. '20+ Buick Encore GX, '21+ Chevy Trailblazer.
|-
| M ||LT9|| 5.7L || V8 || Gas ||OHV|| 4-bbl carb. Gen I Chevy Small-Block V8.<br /> For over-8,500 lb. GVWR C/K trucks, full-size vans, Suburban '81-'86, full-size van cutaway '81-'88.<br /> '88 Chevy/GMC R30/3500 Chassis Cab w/C7C (10,500 lb. GVWR),<br /> V30/3500 Chassis Cab w/C7E (11,000 lb. GVWR)
|-
| M ||L30|| 5.0L || V8 || Gas ||OHV||Gen 1+ Chevrolet Small-Block V8. Vortec 5000. CPI.<br /> '96-'99 Chevy C/K, GMC Sierra, '96-'02 Express/Savana
|-
| M ||LNF|| 2.0L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen II. Direct Injection. VVT. 2010 Chevy HHR SS.
|-
| M ||LH6|| 5.3L || V8 || Gas ||OHV||SFI. Gen IV Chevrolet Small-Block V8. Active Fuel Management. Aluminum Block & Heads.<br /> '05-'06 GMT370 SUVs (Trailblazer EXT/Envoy XL/Isuzu Ascender 7-psgr.), '05-'07 Buick Rainier,<br /> '05-'09 GMC Envoy Denali, Saab 9-7X, '06-'08 Chevy Trailblazer, '05 GMC Envoy XUV,<br /> '07-'09 Silverado/Sierra 1500
|-
| M ||LAF|| 2.4L || I4 || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen II. Direct Injection. VVT. Chevy Orlando '12.
|-
| M ||LE2|| 1.4L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||GM Small Gasoline Engine. Direct Injection. VVT. '16-'19 & '21-'22 Buick Encore, '21-'22 Chevy Trax.
|-
| N ||L10|| 1.8L || I4 || Gas ||SOHC,<br /> 8 valve||2-bbl carb. Isuzu G180Z engine imported from Japan. '81-'82 Chevy LUV
|-
| N ||LF9|| 5.7L || V8 || Diesel ||OHV||Oldsmobile Diesel V8. '83-'84 Chevy El Camino/GMC Caballero.
|-
| N ||LB1|| 4.3L || V6 || Gas ||OHV|| 4-bbl carb. Chevrolet 90° V6 (Chevy Small-Block V8 Derived).<br /> '85 Astro/Safari, '85-'86 C/K pickups & full-size vans
|-
| N ||L19|| 7.4L || V8 || Gas ||OHV|| Mark IV Chevrolet Big-Block V8. TBI.<br /> '87-'90 R/V pickups, Suburban 2500, '88-'90 C/K, Sierra pickups, full-size vans
|-
| N ||L19|| 7.4L || V8 || Gas ||OHV|| Gen V Chevrolet Big-Block V8. TBI.<br /> '91 R/V pickups, '91-'95 C/K, Sierra pickups, Suburban 2500, full-size vans. '96 G-Classic full-size vans
|-
| N ||LZ4|| 3.5L || V6 || Gas ||OHV||GM High Value 60° V6. 3510cc. SFI. VVT. '08-'09 Saturn Vue
|-
| N ||LQ9|| 6.0L || V8 || Gas ||OHV|| Gen III Chevrolet Small-Block V8. Vortec 6000 H.O. or VortecMAX. Iron Block/Aluminum Heads.<br /> 345 hp. '02-'06 Cadillac Escalade, '03-'06 Cadillac Escalade ESV, '03-'06 Chevy Silverado SS,<br /> '05-'06 GMC Sierra Denali, '07 GMC Sierra Classic Denali.
|-
| N ||LGZ|| 3.6L || V6 || Gas ||DOHC,<br /> 24 valve||GM High Feature V6, 4th gen. Direct Injection. VVT. Active Fuel Management.<br /> '17-'22 Chevy Colorado, GMC Canyon.
|-
| P ||L49|| 6.5L || V8 || Diesel ||OHV||Detroit Diesel V8. For sub-8,500 lb. GVWR Chevy C/K, GMC Sierra trucks & full-size vans '94-'95
|-
| P ||LM4|| 5.3L || V8 || Gas ||OHV||Gen III Chevrolet Small-Block V8. Vortec 5300. 290hp. Aluminum Block & Heads.<br /> '03-'04 Chevy SSR, '03-'04 GMT370 SUVs (Trailblazer EXT/Envoy XL/Isuzu Ascender 7-psgr.),<br /> '04 Buick Rainier, GMC Envoy XUV
|-
| P ||LE5|| 2.4L || I4 || Gas ||DOHC,<br /> 16 valve||MFI. GM Ecotec Gen II. VVT. '06-'08 Chevy HHR, '08-'09 Saturn Vue
|-
| P ||LH9|| 5.3L || V8 || Gas/E85 ||OHV||Flex Fuel. SFI. Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads. VVT.<br /> '10-'12 Colorado/Canyon, '10 Hummer H3 Alpha, H3T Alpha
|-
| P ||LV1|| 4.3L || V6 || Gas ||OHV||Chevrolet 90° V6 - Gen V Chevrolet Small-Block V6 (EcoTec3). Direct injection, VVT.<br /> '18+ Chevy Express/GMC Savana.
|-
| P ||LBP|| 1.2L || I3 Turbo || Gas/E85 ||DOHC,<br /> 12 valve||Flex Fuel. GM E-Turbo Engine. Direct Injection. VVT.<br /> '25+ Buick Encore GX, Chevy Trailblazer, '25- Chevy Trax, Buick Envista.
|-
| R ||LL2|| 2.8L || V6 || Gas ||OHV||TBI. Chevrolet 60° V6. '86-'93 Chevy S-10, GMC S-15/Sonoma,<br /> '86-'89 Chevy S-10 Blazer/GMC S-15 Jimmy
|-
| R ||L31|| 5.7L || V8 || Gas ||OHV||Gen 1+ Chevrolet Small-Block V8. Vortec 5700. CPI.<br /> '96-'99 Chevy C/K, GMC Sierra, '96-'99 Chevy Tahoe/GMC Yukon, Chevy/GMC Suburban, '99-'00 GMC Yukon Denali, Cadillac Escalade, '00 Chevy Tahoe Limited/Z71, '96-'02 Chevy Express/GMC Savana.
|-
| R ||L8B|| 5.3L || V8 || Gas ||OHV||Mild Hybrid. Gen V Chevrolet Small-Block V8 (EcoTec3). Direct injection, VVT. Active Fuel Management. '16-'18 Chevy Silverado 1500, GMC Sierra 1500.
|-
| S ||LQ7|| 2.2L || I4 || Diesel ||OHV||Isuzu C220 engine imported from Japan. '81-'82 Chevy LUV, '84-'85 Chevy S-10/GMC S-15
|-
| S ||L56|| 6.5L || V8 Turbo || Diesel ||OHV||Detroit Diesel V8. For sub-8,500 lb. GVWR Chevy C/K, GMC Sierra trucks '94-'99,<br /> Chevy Blazer '94, Chevy Tahoe 2-d '95-'99, GMC Yukon 2-d '94-'97
|-
| S ||LL8|| 4.2L || I6 || Gas ||DOHC,<br /> 24 valve||Atlas I6. SFI. VVT. '02-'09 GMT360/370 SUVs (Chevy Trailblazer, GMC Envoy, Oldsmobile Bravada, Buick Rainier, Isuzu Ascender, Saab 9-7X)
|-
| S ||LGX|| 3.6L || V6 || Gas ||DOHC,<br /> 24 valve||GM High Feature V6, 4th gen. Direct Injection. VVT. Active Fuel Management.<br /> '17+ Cadillac XT5, '17-'23 GMC Acadia, '19+ Chevrolet Blazer, '20-'25 Cadillac XT6.
|-
| S ||LK0|| 2.5L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||L3B engine family. Direct Injection. VVT. '24- Chevy Traverse, GMC Acadia, '25- Buick Enclave
|-
| T ||L25|| 4.8L || I6 || Gas ||OHV||1-bbl carb. Chevrolet Turbo-Thrift I6. '81-'86 Chevy/GMC C/K pickups, '88 R/V pickups
|-
| T ||LM7|| 5.3L || V8 || Gas ||OHV|| Gen III Chevrolet Small-Block V8. Iron Block & Aluminum Heads. Vortec 5300. 270/285/295hp.<br /> '99-'07 GMT800 pickups & SUVs including '02-'05 Escalade 2wd, '07 Silverado Classic 1500/<br> Sierra Classic 1500, '03-'07 Express/Savana
|-
| T ||LEA|| 2.4L || I4 || Gas/E85 ||DOHC,<br /> 16 valve||Flex Fuel. GM Ecotec engine, Gen II. Direct Injection. VVT. Chevy Orlando '13.
|-
| T ||LM2|| 3.0L || I6 Turbo|| Diesel ||DOHC,<br /> 24 valve|| Duramax Diesel I6. Aluminum Block & Heads. '20-'22 Silverado/Sierra 1500, '21-'24 Tahoe/Suburban, Yukon/Yukon XL, Escalade/Escalade ESV.
|-
| U ||LS5|| 1.6L || I4 || Gas ||SOHC,<br /> 8 valve||Suzuki G16A engine. TBI. '89-'95 Geo Tracker
|-
| U ||LQ4|| 6.0L || V8 || Gas ||OHV|| Gen III Chevrolet Small-Block V8. Iron Block & Aluminum Heads (Iron Heads in '99-'00).<br /> '99-'06 GMT800 pickups, '07 Silverado Classic 1500HD/Sierra Classic 1500HD,<br> '00-'06 Suburban/Yukon XL 2500, '01-'06 Yukon Denali/Yukon XL Denali,<br> '06 Suburban LTZ, '03-'07 Express/Savana, '03-'07 Hummer H2.
|-
| U ||LE9|| 2.4L || I4 || Gas/E85 ||DOHC,<br /> 16 valve||Flex-Fuel. GM Ecotec Gen II. 2011 Chevy HHR
|-
| U ||LH7|| 1.6L ||I4 Turbo|| Diesel ||DOHC,<br /> 16 valve||GM Medium Diesel engine ("Whisper Diesel"). Made by Opel in Szentgotthárd, Hungary.<br /> Aluminum Block & Heads. '18-'19 Chevy Equinox & GMC Terrain Diesel.
|-
| V ||LR4|| 4.8L || V8 || Gas ||OHV||Gen III Chevrolet Small-Block V8. Iron Block/Aluminum Heads.<br> '99-'06 GMT800 pickups, '07 Silverado Classic 1500/Sierra Classic 1500,<br /> '00-'06 Tahoe/Yukon, '03-'07 Express/Savana
|-
| V ||LE9|| 2.4L || I4 || Gas/E85 ||DOHC,<br /> 16 valve||Flex-Fuel. GM Ecotec Gen II. 2009-2010 Chevy HHR
|-
| V ||LYX|| 1.5L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||GM Small Gasoline Engine. Direct Injection. VVT. '18-'22 Chevy Equinox, GMC Terrain
|-
| W ||LE8|| 7.4L || V8 || Gas ||OHV|| Mark IV Chevrolet Big-Block V8. 4bbl carb. '81-'86 Chevy/GMC C/K pickups, Suburban.<br /> '88-'89 Chevy/GMC R30/3500 Chassis Cab w/C7C (10,500 lb. GVWR),<br /> V30/3500 Chassis Cab w/C7E (11,000 lb. GVWR)
|-
| W ||L35|| 4.3L || V6 || Gas ||OHV|| CPI. Vortec 4300 H.O. Chevrolet 90° V6 (Chevy Small-Block V8 Derived).<br /> '92-'95 Sonoma, S-10 Blazer/Jimmy, Astro/Safari, '94-'95 S-10, '92-'94 Oldsmobile Bravada
|-
| W ||L35|| 4.3L || V6 || Gas ||OHV|| SFI. Vortec 4300 H.O. Chevrolet 90° V6 (Chevy Small-Block V8 Derived). '96-'02 S-10/Sonoma, Blazer/Jimmy, Express/Savana, C/K, Silverado, Sierra, '96-'01 Bravada, Astro/Safari, '00 Isuzu Hombre
|-
| W ||LGD|| 3.9L || V6 || Gas/E85 ||OHV||Flex Fuel. GM High Value 60° V6. SFI. VVT. '07-'09 GMT201 minivans
|-
| W ||LAF|| 2.4L || I4 || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen II. Direct Injection. VVT. Chevy Equinox, GMC Terrain '10.
|-
| W ||LE8|| 2.2L || I4 || Gas/E85 ||DOHC,<br /> 16 valve||Flex-Fuel. SFI. GM Ecotec Gen II. VVT. 2011 Chevy HHR.
|-
| W ||LFY|| 3.6L || V6 || Gas ||DOHC,<br /> 24 valve||GM High Feature V6. Direct Injection.<br> '18-'23 Chevrolet Traverse, '24 Chevrolet Traverse Limited, '18-'24 Buick Enclave.
|-
| X ||LF6|| 4.3L || V6 || Gas ||OHV||SFI. Vortec 4300. Chevrolet 90° V6 (Chevy Small-Block V8 Derived).<br /> '96-'99 S-10/Sonoma, '97-'99 Isuzu Hombre.
|-
| X ||LU3|| 4.3L || V6 || Gas ||OHV||Vortec 4300. Chevrolet 90° V6 (Chevy Small-Block V8 Derived). '03-'04 S-10/Sonoma,<br /> '03-'05 Blazer/Jimmy, '02-'05 Astro/Safari, '03-'14 Express/Savana, '03-'13 Silverado/Sierra,<br> '07 Silverado Classic 1500/Sierra Classic 1500
|-
| X ||LNF|| 2.0L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen II. Direct Injection. VVT. '08-'09 Chevy HHR SS.
|-
| X ||LTG|| 2.0L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen III. Direct Injection. VVT.<br /> '16-'20 Buick Envision, '18-'20 Chevy Equinox, GMC Terrain, '18-'19 Chevy Traverse RS
|-
| Y ||LQ2|| 2.0L || I4 || Gas ||OHV||2-bbl carb. Chevrolet "122" engine.<br /> '83-'84 Chevy S-10/GMC S-15, '83-'84 Chevy S-10 Blazer/GMC S-15 Jimmy
|-
| Y ||L57|| 6.5L || V8 || Diesel ||OHV||Detroit Diesel V8. For over-8,500 lb. GVWR full-size vans '94-'95 & '96 G-Classic full-size vans
|-
| Y ||L76|| 6.0L || V8 || Gas ||OHV||SFI. Gen IV Chevy Small-Block V8. Aluminum Block & Heads. VVT. With Active Fuel Management.<br /> '07-'09 Silverado/Sierra, Suburban/Yukon XL, Chevy Avalanche
|-
| Y ||LF1|| 3.0L || V6 || Gas ||DOHC,<br /> 24 valve||GM High Feature V6. Direct Injection. VVT.<br /> '10-'11 Cadillac SRX, '11 Saab 9-4X, '10 Chevy Equinox, GMC Terrain
|-
| Y ||L5P|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine. '17+ Silverado HD/Sierra HD. Engine updated in '24.
|-
| Z ||LF9|| 5.7L || V8 || Diesel ||OHV||Oldsmobile Diesel V8. '81 Chevy C10/GMC C1500 full-size pickups.
|-
| Z ||LB4|| 4.3L || V6 || Gas ||OHV|| TBI. Chevrolet 90° V6 (Chevy Small-Block V8 Derived). '85-'87 Chevy El Camino/GMC Caballero,<br /> '86-'94 Astro/Safari, '87 R/V pickups, '88-'95 C/K & Sierra pickups, '87-'95 full-size vans & <br /> '96 G-Classic full-size vans, '88-'95 S-10, S-15/Sonoma, '88-'94 S-10 Blazer, S-15 Jimmy,<br /> '91-'92 Oldsmobile Bravada
|-
| Z ||LB4|| 4.3L || V6 Turbo || Gas ||OHV|| MPI. For GMC Syclone & Typhoon. Chevrolet 90° V6 (Chevy Small-Block V8 Derived)
|-
| Z ||L59|| 5.3L || V8 || Gas/E85 ||OHV||Flex Fuel. Gen III Chevrolet Small-Block V8. Iron Block & Aluminum Heads. Vortec 5300. 285/295hp.<br /> '02-'07 GMT800 pickups, '07 Silverado Classic 1500/Sierra Classic 1500,<br> '02-'06 Suburban/Yukon XL, Avalanche.
|-
| Z ||LAT|| 2.4L || I4 || Gas ||DOHC,<br /> 16 valve||Mild Hybrid. MFI. GM Ecotec Gen II. VVT. '07-'09 Saturn Vue Green Line
|-
| 1 ||LZ9|| 3.9L || V6 || Gas ||OHV||GM High Value 60° V6. SFI. VVT. '06-'09 GMT201 minivans
|-
| 1 ||LE5|| 2.4L || I4 || Gas ||DOHC,<br /> 16 valve||MFI. GM Ecotec Gen II. VVT. '10 Saturn Vue.
|-
| 1 ||LB7|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine. First version of the Duramax V8. '01-Mid '04 Silverado HD/Sierra HD
|-
| 1 ||LWN|| 2.8L || I4 Turbo || Diesel ||DOHC,<br /> 16 valve||Based on VM Motori A428 engine. Made by GM Powertrain Thailand 2016-2020. Made in Brazil for '22. '16-'22 Colorado/Canyon, '17-'22 Express/Savana.
|-
| 2 ||LLY|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine. Mid '04-Mid '06 Silverado HD/Sierra HD, '06-Mid '07 Express/Savana
|-
| 2 ||L9H|| 6.2L || V8 || Gas/E85 ||OHV||Flex-Fuel. Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads. SFI. VVT.<br /> '09-'13 Chevy Silverado 1500, GMC Sierra 1500, Sierra Denali 1500,<br /> '09 Chevy Tahoe LTZ, GMC Yukon Denali/Yukon XL Denali, Cadillac Escalade/Escalade ESV,<br> Hummer H2
|-
| 2 ||LIH|| 1.2L || I3 Turbo || Gas ||DOHC,<br /> 12 valve||GM E-Turbo Engine. Direct Injection. VVT.<br /> '20-'24 Buick Encore GX, '21-'24 Chevy Trailblazer, '24 Chevy Trax, Buick Envista,<br> '25 Chevy Trax, Buick Envista (Canada only).
|-
| 3 ||LC9|| 5.3L || V8 || Gas/E85 ||OHV||Flex Fuel. SFI. Gen IV Chevrolet Small-Block V8. Active Fuel Management. VVT added for '10. Aluminum Block & Heads.<br /> '07-'11 Silverado/Sierra 1500, Tahoe/Yukon, Suburban/Yukon XL 1500, '07-'09 & '11 Avalanche
|-
| 3 ||LFX|| 3.6L || V6 || Gas ||DOHC,<br /> 24 valve||GM High Feature V6. Direct Injection. VVT. E85 Flex Fuel.<br /> '12-'16 Cadillac SRX, '13-'17 Chevrolet Equinox, GMC Terrain, '15-'16 Colorado/Canyon
|-
| 4 ||LN2|| 2.2L || I4 || Gas ||OHV||MFI (94-95). SFI (96-00). Chevrolet "122" engine. '94-'00 S-10/Sonoma, '96-'00 Isuzu Hombre
|-
| 4 ||LE8|| 2.5L || V6 || Gas ||DOHC,<br /> 24 valve||Suzuki H25A engine. MFI. '01-'04 Chevrolet Tracker
|-
| 4 ||L66|| 3.5L || V6 || Gas ||SOHC,<br /> 24 valve||Honda J35S1 V6. VTEC. '04-'07 Saturn Vue
|-
| 4 ||LMF|| 5.3L || V8 || Gas/E85 ||OHV||Flex Fuel. SFI. Gen IV Chevrolet Small-Block V8. Iron Block & Aluminum Heads. VVT.<br /> '08-'14 Express/Savana 1500
|-
| 4 ||LAU|| 2.8L || V6 Turbo || Gas ||DOHC,<br /> 24 valve||GM High Feature V6. SFI. '10 Cadillac SRX
|-
| 4 ||LSY|| 2.0L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen III. Direct Injection. Active Fuel Management. VVT. VVL.<br /> '19-'25 Cadillac XT4, '20+ Chevy Blazer, Cadillac XT5, '20-'23 GMC Acadia,<br /> '21+ Buick Envision, '21-'25 Cadillac XT6
|-
| 5 ||L43|| 2.2L || I4 || Gas/E85 ||OHV||Flex-Fuel. SFI. Chevrolet "122" engine. '00-'02 S-10/Sonoma, '00 Isuzu Hombre
|-
| 5 ||LFA|| 6.0L || V8 || Gas-Electric Hybrid ||OHV||2-Mode Hybrid. Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads. VVT. Active Fuel Management. '08-'09 Tahoe Hybrid/Yukon Hybrid, '09 Escalade Hybrid, Silverado Hybrid/Sierra Hybrid
|-
| 5 ||LFW|| 3.0L || V6 || Gas/E85 ||DOHC,<br /> 24 valve||Flex-Fuel. GM High Feature V6. Direct Injection. VVT. '11-'12 Chevy Equinox, GMC Terrain,<br /> '12 Chevy Captiva Sport
|-
| 6 ||L01|| 1.6L || I4 || Gas ||SOHC,<br /> 16 valve||Suzuki G16B engine. MFI. '94-'97 Geo Tracker, '98-'00 Chevrolet Tracker
|-
| 6 ||L52|| 3.5L || I5 || Gas ||DOHC,<br /> 20 valve||Atlas I5. SFI. VVT. '04-'06 Colorado/Canyon, '06 Isuzu i-350, '06 Hummer H3
|-
| 6 ||LAU|| 2.8L || V6 Turbo || Gas ||DOHC,<br /> 24 valve||GM High Feature V6. SFI. '11 Cadillac SRX, Saab 9-4X
|-
| 6 ||LMM|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine. '07-'10 Silverado HD/Sierra HD (GMT900), Mid '07-Mid '10 Express/Savana
|-
| 7 ||LY7|| 3.6L || V6 || Gas ||DOHC,<br /> 24 valve||GM High Feature V6. '04-'06 Buick Rendezvous, '04-'09 Cadillac SRX,<br /> '07-'08 GMC Acadia, Saturn Outlook, '08 Buick Enclave, '08-'10 Saturn Vue
|-
| 7 ||LC9|| 5.3L || V8 || Gas/E85 ||OHV||Flex Fuel. SFI. Gen IV Chevrolet Small-Block V8. Active Fuel Management. VVT.<br /> Aluminum Block & Heads.<br /> '12-'13 Silverado/Sierra 1500, Avalanche, '12-'14 Tahoe/Yukon, Suburban/Yukon XL 1500
|-
| 7 ||L8T|| 6.6L || V8 || Gas ||OHV||Gen V Chevrolet Small-Block V8. Iron Block/Aluminum Heads. Direct injection, VVT.<br /> '20+ Silverado HD/Sierra HD, '21+ Express/Savana
|-
| 8 ||LK5|| 2.8L || I4 || Gas ||DOHC,<br /> 16 valve||Atlas I4. SFI. VVT. '04-'06 Colorado/Canyon, '06 Isuzu i-280.
|-
| 8 ||L92|| 6.2L || V8 || Gas ||OHV||Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads. SFI. VVT.<br /> '07-'08 GMC Sierra Denali, Yukon Denali/Yukon XL Denali, Cadillac Escalade/Escalade ESV,<br> '08 Chevy Tahoe LTZ, Hummer H2.
|-
| 8 ||LML|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine.<br /> '11-'16 Silverado HD/Sierra HD pickups, '13-'16 Silverado HD/Sierra HD chassis cabs.
|-
| 8 ||LZ0|| 3.0L || I6 Turbo|| Diesel ||DOHC,<br /> 24 valve|| Duramax Diesel I6. Aluminum Block & Heads.<br> '23+ Silverado/Sierra 1500, '24+ Suburban HD, '25+ Tahoe/Suburban, Yukon/Yukon XL.
|-
| 9 ||LC3|| 3.8L || V6 || Gas ||OHV||2-bbl carb. Chevrolet 90° V6 (Chevy Small-Block V8 Derived). 229 cu. in. <br /> '83-'84 Chevy El Camino, GMC Caballero (49-state emissions).
|-
| 9 ||LLV|| 2.9L || I4 || Gas ||DOHC,<br /> 16 valve||Atlas I4. SFI. VVT. '07-'12 Colorado/Canyon, '07-'08 Isuzu i-290.
|-
| 9 ||LT4|| 6.2L ||V8 Supercharged|| Gas ||OHV||Gen V Chevy Small-Block V8. Aluminum Block & Heads. Direct injection. VVT. Active Fuel Management. '23+ Cadillac Escalade/Escalade ESV V-Series.
|-
| 0 ||LMG|| 5.3L || V8 || Gas/E85 ||OHV||Flex-Fuel. SFI. Gen IV Chevrolet Small-Block V8. Active Fuel Management. VVT added for '10.<br /> Iron Block & Aluminum Heads.<br /> '07-'13 Silverado/Sierra 1500, Avalanche, '07-'14 Tahoe/Yukon, Suburban/Yukon XL 1500.
|}
H.O.=High Output, VVT=Variable Valve Timing, VVL=Variable Valve Lift, GVWR=Gross Vehicle Weight Rating, CNG=Compressed Natural Gas, LPG=Liquefied Petroleum Gas (Propane Autogas)
====Motor codes for electric light trucks====
{| class="wikitable"
|-
! VIN !! RPO !! Fuel !! Drive Wheels !! Application/Notes
|-
| H ||LN1|| Electricity || Front || '97-'98 Chevrolet S-10 Electric.
|-
|}
====Motor codes for Ultium-powered electric light trucks====
{| class="wikitable"
|-
! VIN !! Motor <br /> RPO code !! # of Motors !! Battery Module <br /> RPO code !! # of Modules !! Fuel !! Drive Wheels !! Application/Notes
|-
| A ||XRL|| 3 || ETN || 24 || Electricity || All || '22- GMC Hummer EV pickup 3X
|-
| B ||XRL|| 3 || ETI || 20 || Electricity || All || '24- GMC Hummer EV pickup 3X
|-
| C ||XRL|| 3 || ETJ || 20 || Electricity || All || '24- GMC Hummer EV SUV 3X
|-
| D ||XRJ|| 2 || ETI || 20 || Electricity || All || '24 Chevrolet Silverado EV 3WT, '25- Silverado EV 5WT, 3LT,<br> '25 Silverado EV RST (2SP), '26- Silverado EV Trail Boss (2TR),<br> '24- GMC Hummer EV pickup 2X, '25- GMC Sierra EV Denali 5SC,<br> '26- Sierra EV Elevation 3SC, AT4 4SC
|-
| E ||XRJ|| 2 || ETJ || 20 || Electricity || All || '24- GMC Hummer EV SUV 2X
|-
| G ||XRJ|| 2 || ETJ || 20 || Electricity || All || '23 BrightDrop Zevo 600
|-
| H ||XRJ|| 2 || EWX || 14 || Electricity || All ||'26- Chevrolet Silverado EV 4WT, 2LT,<br> '26- GMC Sierra EV Elevation 3SB, Denali 5SB
|-
| J ||X0C|| 2 || EC5 || 10 || Electricity || All || '24 Chevy Blazer EV 2LT, 1RS AWD,<br> '25- Chevy Blazer EV 4LT, 3RS AWD, '24-'26 Honda Prologue AWD
|-
| K ||X0D|| 1 || EC6 || 12 || Electricity || Rear || '23- Cadillac Lyriq RWD, '24-'25 Chevrolet Blazer EV 2RS RWD,<br> '24 Acura ZDX A-Spec RWD
|-
| L ||X0E|| 2 || EC6 || 12 || Electricity || All || '23- Cadillac Lyriq AWD, '24- Chevrolet Blazer EV PPV AWD,<br> '25- Chevrolet Blazer EV SS AWD, '26- Cadillac Vistiq AWD,<br> '24 Acura ZDX A-Spec, Type S AWD
|-
| L ||XRJ|| 2 || ETN || 24 || Electricity || All || '24 Chevrolet Silverado EV 4WT, RST (3SP), '25- Silverado EV 8WT,<br> '25 Silverado EV RST (3SP), '26- Silverado EV 4LT, Trail Boss (3TR),<br> '24- GMC Sierra EV Denali 5SD, '26- Sierra EV AT4 4SD,<br> '25- Cadillac Escalade IQ, '26- Cadillac Escalade IQL
|-
| M ||X0B|| 1 || EC5 || 10 || Electricity || Front || '24-'26 Honda Prologue FWD, '25- Chevy Blazer EV 2LT, 1RS FWD
|-
| P ||X0B|| 1 || EC3 || 10 || Electricity || Front || '24- Chevrolet Equinox EV FWD
|-
| R ||X0C|| 2 || EC3 || 10 || Electricity || All || '24- Chevrolet Equinox EV AWD, '25 Cadillac Optiq AWD
|-
| Y ||XRJ|| 2 || ETC || 12 || Electricity || All || '24 BrightDrop Zevo 400, Zevo 600,<br> '25-'26 Chevrolet BrightDrop 400/600 AWD
|-
| Z ||XRJ|| 2 || ETJ || 20 || Electricity || All || '24 BrightDrop Zevo 400, Zevo 600,<br> '25-'26 Chevrolet BrightDrop 400/600 AWD
|-
| 4 ||X0E|| 2 || EC3 || 10 || Electricity || All || '26- Cadillac Optiq AWD
|-
| 5 ||X0D|| 1 || EC3 || 10 || Electricity || Rear|| '26- Cadillac Optiq RWD
|-
| 6 ||XRM|| 1 || ETC || 12 || Electricity || Front || '25-'26 Chevrolet BrightDrop 400/600 FWD
|-
| 7 ||XRJ|| 2 || EWU || 14 || Electricity || All || '26 Chevrolet BrightDrop 600 AWD
|}
SB=Standard Range, SC=Extended Range, SD=Max Range
====Engine codes for medium duty trucks 2016-====
GM encodes the engine type in character 8 of the VIN. The following table outlines the various engines encoded there:
{| class="wikitable"
|-
! VIN !! RPO !! Size !! Type !! Fuel !! Valvetrain !! Engine Family/Notes/Applications
|-
| B ||L96|| 6.0L || V8 || Gas ||OHV||SFI. Gen IV Chevrolet Small-Block V8. Iron Block & Aluminum Heads. VVT.<br /> '16-'20 Chevy LCF 3500/4500.
|-
| C ||LC8|| 6.0L || V8 || Gas/CNG or<br>Gas/LPG ||OHV||Bi-Fuel. SFI. Gen IV Chevrolet Small-Block V8. Iron Block & Aluminum Heads. VVT.<br /> '16-'20 Chevy LCF 3500/4500.
|-
| D ||L8T|| 6.6L || V8 || Gas ||OHV||Gen V Chevrolet Small-Block V8. Iron Block/Aluminum Heads. Direct injection, VVT.<br /> '21-'23 Chevy LCF 3500/4500, '24- Chevy LCF 3500HG/4500HG/5500HG/5500XG.
|-
| F ||LCB|| 6.7L || I6 Turbo || Diesel ||OHV,<br /> 32 valve||Cummins B Series ISB engine. '22- Chevy LCF 6500XD, '23- Chevy LCF 7500XD.
|-
| 6 ||I1B|| 5.2L || I4 Turbo || Diesel ||SOHC,<br /> 16 valve||Isuzu 4HK1-TC engine. '17- Chevy LCF 4500HD/XD, 5500XD, '17-'24 Chevy LCF 5500HD,<br /> '18-'21 Chevy LCF 6500XD.
|-
| 7 ||IZ3|| 3.0L || I4 Turbo || Diesel ||DOHC,<br /> 16 valve||Isuzu 4JJ1-TC engine. '16-'18 Chevy LCF 3500HD.
|-
|}
====Engine codes for AM General-built Hummer H1 2000-2006====
AM General encodes the engine type in character 4 of the VIN.
{| class="wikitable"
|-
! VIN !! RPO !! Size !! Type !! Fuel !! Valvetrain !! Engine Family/Notes
|-
| F || || 6.5L || V8 Turbo || Diesel ||OHV||Detroit Diesel V8 built by GEP (General Engine Products), a subsidiary of AM General.<br> '01-'04 Hummer H1 & '06 H1 Fleet models.
|-
| P ||LLY|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine. '06 Hummer H1 Alpha.
|-
| Z ||L65|| 6.5L || V8 Turbo || Diesel ||OHV||Detroit Diesel V8 built by GM. '00-'01 Hummer H1.
|-
|}
====Engine codes for Nissan-built vans====
Nissan encodes the engine type in character 4 of the VIN.
{| class="wikitable"
|-
! VIN !! RPO !! Size !! Type !! Fuel !! Valvetrain !! Engine Family/Notes
|-
| 3 ||L0A|| 2.0L || I4 || Gas ||DOHC,<br /> 16 valve||Nissan MR20DE engine. SFI. VVT. For the '15-'18 Chevrolet City Express.
|-
|}
====Engine codes for Navistar-built medium-duty trucks====
Navistar encodes the engine type in character 6 & 7 of the VIN.
{| class="wikitable"
|-
! VIN !! RPO !! Size !! Type !! Fuel !! Valvetrain !! Engine Family/Notes
|-
| PV ||L5D|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine. For the Chevy Silverado Medium Duty '19+.
|-
|}
==GM factories supplying North America==
===North American GM factories===
[[w:List_of_General_Motors_factories | List of GM Factories]]
{| class="wikitable"
!VIN code
!Location
!Notes
|-
|A
|Lakewood Assembly (Lakewood Heights, Atlanta, Georgia)
|through 1990 model year
|-
|A
|Artisan Center (Warren, Michigan)
|From 2026 model year. Cadillac CT5-V Blackwing "Curated by Cadillac" program only.
|-
|B
|Baltimore Assembly (Baltimore, Maryland)
|through 2005 model year
|-
|B
|Reatta Craft Centre/Lansing Craft Centre (Lansing Township, Michigan)
|1988-2006 model year (except GM EV1)
|-
|B
|GM Defense-Manufacturing Customer Innovation Center (MCIC) (Concord, North Carolina)
|From 2024 model year. Chevrolet Suburban HD (a.k.a. HD SUV) (for US govt. only).
|-
|C
|South Gate Assembly (South Gate, California)
|through 1982 model year
|-
|C
|Lansing Car Assembly (Lansing, Michigan)
|South assembly line 1985-2004 model year
|-
|D
|Doraville Assembly (Doraville, Georgia)
|through 2009 model year
|-
|E
|Linden Assembly (Linden, New Jersey)
|through 1991 model year
|-
|E
|Pontiac East Assembly (Pontiac, Michigan)
|1988-2009 model year
|-
|E
|AM General Military plant (Mishawaka, Indiana)
|1992-2006 Hummer H1
|-
|F
|Flint Truck Assembly (Flint, Michigan)
|since 1953
|-
|F
|Fairfax II Assembly (Kansas City, Kansas)
|since 1988 model year
|-
|G
|Framingham Assembly (Framingham, Massachusetts)
|through 1989 model year
|-
|G
|Silao Assembly (Silao, Guanajuato, Mexico)
|since 1995 model year
|-
|H
|Buick City Assembly (Flint, Michigan)
|through 1999 model year
|-
|H
|AM General Commercial plant (Mishawaka, Indiana)
|2003-2009 Hummer H2
|-
|H
|Navistar Springfield plant (Main Line) (Springfield, Ohio)
|2019- Chevrolet Silverado Medium Duty (4500HD/5500HD/6500HD)
|-
|J
|Janesville Assembly (Janesville, Wisconsin)
|through 2009 model year
|-
|J
|Lansing Delta Township Assembly (Lansing, Michigan)
|since 2007 model year
|-
|K
|Leeds Assembly (Leeds, Kansas City, Missouri)
|through 1988 model year
|-
|K
|Linden Assembly (Linden, New Jersey)
|from 1994-2005 model year
|-
|K
|Nissan plant (Cuernavaca, Morelos, Mexico)
|2015-2018 Chevrolet City Express
|-
|L
|Van Nuys Assembly (Van Nuys, California)
|through 1992 model year
|-
|L
|San Luis Potosí Assembly (San Luis Potosí, Mexico)
|since 2009 model year
|-
|M
|Lansing Car Assembly (Lansing, Michigan)
|through 1984 model year, North assembly line 1985-2005 model year
|-
|M
|Toluca Assembly (Toluca, Mexico state, Mexico)
|through 2008 model year
|-
|N
|Norwood Assembly (Norwood, Ohio)
|through 1987 model year
|-
|N
|Navistar Springfield plant (Secondary Line) (Springfield, Ohio)
|2017- Chevrolet Express cutaway, GMC Savana cutaway
|-
|P
|Pontiac Assembly (Pontiac, Michigan)
|through 1988 model year
|-
|R
|Arlington Assembly (Arlington, Texas)
|since 1965 [all GM brands]. (R plant code used only by Chevrolet in 1963-64)
|-
|S
|St. Louis Assembly (St. Louis, Missouri)
|through 1987 model year
|-
|S
|Spring Hill Manufacturing (Spring Hill, Tennessee)
|2002-2007 Saturn Vue & 2009-2010 Chevrolet Traverse only
|-
|S
|Spartan Motors/Shyft Group plant (Charlotte, Michigan)
|2016- Chevrolet Low Cab Forward 3500/3500HG/4500/4500HG/5500HG/5500XG/6500XD/7500XD
|-
|S
|Ramos Arizpe Assembly (Ramos Arizpe, Coahuila, Mexico)
|since 1982
|-
|T
|Tarrytown Assembly (North Tarrytown, New York)
|through 1996 model year
|-
|U
|Detroit/Hamtramck Assembly (Factory Zero) <br /> (Detroit & Hamtramck, Michigan)
|since 1986 model year
|-
|U
|Artisan Center (Warren, Michigan)
|From 2025 model year. Cadillac Celestiq only.
|-
|V
|Pontiac Central Assembly (Pontiac, Michigan)
|through 1991 model year
|-
|V
|Pontiac East Assembly (Pontiac, Michigan)
|through 1985 model year
|-
|W
|Willow Run Assembly (Ypsilanti Township, Michigan)
|through 1993 model year
|-
|X
|Fairfax Assembly (Fairfax I) (Kansas City, Kansas)
|through 1987 model year
|-
|Y
|Wilmington Assembly (Wilmington, Delaware)
|through 2010 model year
|-
|Z
|Fremont Assembly (Fremont, California)
|through 1982 model year
|-
|Z
|NUMMI (Fremont, California)
|1985-2010 model year
|-
|Z
|Spring Hill Manufacturing (Spring Hill, Tennessee)
|since 1991 model year (except Vue & Traverse)
|-
|Z
|Fort Wayne Assembly (Roanoke, Indiana)
|since 1988 model year
|-
|0
|Pontiac West Assembly (Pontiac, Michigan)
|through 1994 model year
|-
|0
|Lansing Craft Centre (Lansing Township, Michigan)
|GM EV1 only
|-
|0
|Lansing Grand River Assembly (Lansing, Michigan)
|since 2003 model year
|-
|0
|Artisan Center (Warren, Michigan)
|2024 Cadillac CT5-V Blackwing 20th Anniversary Edition where the final eight digits of the VIN are R0912004 through R0912024 or R0962004 through R0962024
|-
|1
|Wentzville Assembly (Wentzville, Missouri)
|since 1985 model year
|-
|1
|Oshawa Car Assembly (Oshawa, Ontario, Canada)
|from 1967-1983 model year
|-
|1
|Oshawa Car Assembly (Line 2 a.k.a. Consolidated Line) (Oshawa, Ontario, Canada)
|from 1984-2019 model year; switched to pickup trucks for 2019 model year
|-
|1
|Oshawa Car Assembly (Oshawa, Ontario, Canada)
|Silverado pickup trucks since 2022 model year
|-
|1
|Oshawa Truck Assembly (Oshawa, Ontario, Canada)
|through 2009 model year
|-
|2
|Moraine Assembly (Moraine, Ohio)
|through 2009 model year
|-
|2
|Sainte-Thérèse Assembly (Boisbriand, Quebec, Canada)
|through 2002 model year
|-
|3
|Detroit Truck & Bus plant (Piquette Ave., Detroit, Michigan)
|through 1999 model year
|-
|3
|Saint-Eustache Bus Plant (Saint-Eustache, Quebec, Canada)
|through 1987 model year
|-
|4
|Orion Assembly (Orion Township, Michigan)
|since 1985 model year
|-
|4
|Scarborough Van Assembly (Scarborough, Ontario, Canada)
|through 1993 model year
|-
|5
|Bowling Green Assembly (Bowling Green, Kentucky)
|since 1981 model year
|-
|6
|Oklahoma City Assembly (Oklahoma City, Oklahoma)
|through 2006 model year
|-
|6
|CAMI plant (Ingersoll, Ontario, Canada)
|1990-2022 model year
|-
|7
|Lordstown Assembly (Warren, Ohio)
|from 1979-2019 model year
|-
|8
|Shreveport Assembly (Shreveport, Louisiana)
|through 2012 model year
|-
|9
|Detroit Assembly (Clark Street, Detroit, Michigan)<br> (Cadillac plant)
|from 1979-1988 model year
|-
|9
|Oshawa Car Assembly (Line 1 a.k.a. Flex Line)<br> (Oshawa, Ontario, Canada)
|from 1984-2020 model year
|-
|9
|KUKA plant (Livonia, Michigan)
|2022 model year only (BrightDrop Zevo 600)
|-
|9
|CAMI plant (Ingersoll, Ontario, Canada)
|2023-2026 model year (BrightDrop Zevo/Chevrolet BrightDrop)
|}
===Non-North American GM factories supplying North America===
{| class="wikitable"
!VIN code
!Location
!Models Sourced
|-
|A
|SAIC-GM plant: Jinqiao, Pudong district, Shanghai, China
|2017-2018 Cadillac CT6 Plug-in Hybrid
|-
|B
|Daewoo/GM Daewoo/GM Korea plant: Bupyeong, South Korea
|1988-1993 Pontiac LeMans, 2004-2011 Chevrolet Aveo, 2005-2010 Pontiac Wave/G3, 2004-2006 Chevrolet <br /> Epica (Canada), 2013-2022 Chevrolet Trax, Buick Encore, 2021- Chevrolet Trailblazer, 2020- Buick Encore GX, 2024- Buick Envista
|-
|C
|GM Daewoo/GM Korea plant: Changwon, South Korea
|2003-2010 Pontiac Matiz/Matiz G2 (Mexico), 2013-2022 Chevrolet Spark, 2024- Chevrolet Trax
|-
|D
|SAIC-GM Dongyue Motors plant: Yantai, Shandong province, China
|2016- Buick Envision, 2019-2023 Chevrolet Aveo (Mexico), 2023- Chevrolet Onix (Mexico)
|-
|G
|Opel plant: Gliwice, Poland
|2016-2019 Buick Cascada
|-
|K
|Suzuki plant: Kosai, Shizuoka prefecture, Japan
|1985-1988 Chevrolet Sprint, 1989-1990 Geo Metro hatchback, 1990-1993 Geo Metro convertible, 1985-1990 Pontiac Firefly (Canada), 1991 & 1994 Pontiac Firefly convertible & sedan (Canada)
|-
|K
|GM Daewoo/GM Korea plant: Kunsan, South Korea
|2004-2007 Chevrolet Optra (Canada), 2012-2014 Chevrolet Orlando (Canada)
|-
|L
|Holden plant: Elizabeth, South Australia, Australia
|2004-2006 Pontiac GTO, 2008-2009 Pontiac G8, 2011-2017 Chevrolet Caprice PPV, 2014-2017 Chevrolet SS
|-
|R
|Opel plant: Rüsselsheim, Germany
|1997-2001 Cadillac Catera
|-
|T
|GM India plant: Talegaon, Maharashtra, India
|2017-2021 Chevrolet Spark Classic/Beat (Mexico)
|-
|V
|SAIC-GM Wuhan plant: Wuhan, Hubei province, China
|2018-2021 Chevrolet Cavalier (Mexico), 2022- Chevrolet Cavalier Turbo (Mexico)
|-
|W
|Suzuki plant: Iwata, Shizuoka prefecture, Japan
|1989-1990 Geo Tracker
|-
|1
|Opel plant: Rüsselsheim, Germany
|2011, 2018-2020 Buick Regal
|-
|3
|Isuzu plant: Kawasaki, Kanagawa prefecture, Japan
|1987-1998 Chevrolet/GMC W5, 1989-1996 Chevrolet/GMC W6, 1984-1996 Chevrolet/GMC W7
|-
|5
|Opel plant: Antwerp, Belgium
|2008-2009 Saturn Astra
|-
|7
|Isuzu plant: Fujisawa, Kanagawa prefecture, Japan
|1988 Chevrolet Spectrum, 1988 Pontiac Sunburst (Canada), 1989 Geo Spectrum, 1990-1993 Geo Storm,<br /> 1999-2008 Chevrolet/GMC W3500, 1988-2009 Chevrolet/GMC W4, 1999-2009 Chevrolet/GMC W5,<br /> 2000-2004 Chevrolet/GMC WT5500,<br /> 2016- Chevrolet Low Cab Forward 3500HD/4500HD/4500XD/5500HD/5500XD
|-
|8
|Isuzu plant: Fujisawa, Kanagawa prefecture, Japan
|1981-1982 Chevrolet LUV, 1985-1987 Chevrolet Spectrum, 1985-1987 Pontiac Sunburst (Canada),<br /> 1986-1987 Chevrolet/GMC W4
|}
==GM WMIs==
{| class=wikitable
!WMI
!Marque
!Country
|-
|1G1||rowspan=57|Chevrolet||United States
|-
|1G8||United States (MPV 1981-1986)
|-
|1GA||United States (bus [van with more than 3 rows of seats])
|-
|1GB||United States (incomplete vehicle)
|-
|1GC||United States (truck)
|-
|1GN||United States (MPV 1987-)
|-
|1HA||United States (Express incomplete vehicle made by Navistar)
|-
|1HT||United States ([[w:Chevrolet Silverado#Medium duty version_(4500HD,_5500HD,_6500HD,_and_International_CV)|Silverado Medium Duty]] incomplete vehicle made by Navistar)
|-
|1Y1||United States (made by NUMMI)
|-
|2C1||Canada (car made by CAMI)
|-
|2CN||Canada (SUV made by CAMI - 1998-2011)
|-
|2G1||Canada
|-
|2G5||Canada (truck - Chevrolet BrightDrop '25)
|-
|2G8||Canada (MPV 1981-1986)
|-
|2GA||Canada (bus [van with more than 3 rows of seats])
|-
|2GB||Canada (incomplete vehicle)
|-
|2GC||Canada (truck - includes Chevrolet BrightDrop '26)
|-
|2GN||Canada (MPV 1987-)
|-
|3G1||Mexico
|-
|3GC||Mexico (truck)
|-
|3GN||Mexico (MPV)
|-
|3N6||Mexico (Truck - City Express made by Nissan)
|-
|4G1||United States (made by Genasys L.C.)
|-
|4KB||United States (W-Series incomplete vehicle made by GM - through 2009)
|-
|4W1||United States (MPV - Chevrolet Suburban HD made for US govt. in Concord, NC)
|-
|54D||United States (incomplete vehicle made by Spartan Motors/The Shyft Group)
|-
|6G1||Australia (2011-2013 Caprice PPV)
|-
|6G3||Australia (2014-2017 Caprice PPV & SS performance sedan)
|-
|ADM||South Africa
|-
|J81||Japan (car made by Isuzu)
|-
|J8B||Japan (incomplete vehicle made by Isuzu - through 2009)
|-
|J8Z||Japan (LUV pickup made by Isuzu)
|-
|JAL||Japan (incomplete vehicle made by Isuzu - 2016+)
|-
|JG1||Japan (car made by Suzuki)
|-
|KL1||South Korea (car)
|-
|KL7||South Korea (MPV - 2012+)
|-
|KL8||South Korea (Spark)
|-
|LSF||China (S-10 Max made by SAIC-Maxus - Mexico only)
|-
|LSG||China (SAIC-GM)
|-
|LSH||China (Express Max made by SAIC-Maxus - Mexico only)
|-
|LZW||China (SAIC-GM-Wuling)
|-
|MA6||India
|-
|MJB||Indonesia (GM Indonesia)
|-
|MK3||Indonesia (SGMW Motor Indonesia)
|-
|MMM||Thailand
|-
|XUF||Russia (GM Russia - St. Petersburg plant)
|-
|XUU||Russia (Chevrolet Korea models made by Avtotor in Kaliningrad)
|-
|XWB||Uzbekistan (GM Uzbekistan, UzAuto Motors)
|-
|XWF||Russia (Chevrolet Tahoe & Trailblazer [GMT360] made by Avtotor in Kaliningrad)
|-
|X9L||Russia (GM-AvtoVAZ)
|-
|8AG||Argentina
|-
|8GG||Chile
|-
|8LD||Ecuador
|-
|8Z1||Venezuela
|-
|9BG||Brazil
|-
|93C||Brazil
|-
|9GC||Colombia
|-
|J81||rowspan=6|Geo||Japan (car made by Isuzu)
|-
|JG1||Japan (car made by Suzuki)
|-
|JGC||Japan (SUV made by Suzuki)
|-
|1Y1||United States (car made by NUMMI)
|-
|2C1||Canada (car made by CAMI)
|-
|2CN||Canada (SUV made by CAMI - 1990-1997)
|-
|KLA||rowspan=3|GM Daewoo/<br />GM Korea||South Korea (Bupyeong & Kunsan plants)
|-
|KLY||South Korea (Changwon plant)
|-
|5GD||United States (G2X)
|-
|1G2||rowspan=12|Pontiac||United States
|-
|1G5||United States (incomplete vehicle - for '89-'90 Turbo Grand Prix by ASC/McLaren & '03-'05 Montana Mobility, '06 Montana SV6 Mobility)
|-
|1GM||United States (MPV)
|-
|2CK||Canada (2006-2009 Torrent made by CAMI)
|-
|2G2||Canada
|-
|2G7||Canada (US market 1983 Pontiac Parisienne)
|-
|3G2||Mexico
|-
|3G7||Mexico (MPV: 2001-2005 Aztek)
|-
|4G2||United States (made by Genasys L.C.)
|-
|5Y2||United States (made by NUMMI)
|-
|6G2||Australia
|-
|KL2||South Korea (made by Daewoo/GM Daewoo)
|-
|1G7||rowspan=6|Pontiac<br />(Canada only)||United States
|-
|2C7||Canada (car made by CAMI)
|-
|2CG||Canada (SUV made by CAMI)
|-
|2G7||Canada
|-
|J87||Japan (car made by Isuzu)
|-
|JG7||Japan (car made by Suzuki)
|-
|KL7||Passport<br />(Canada only)||South Korea (car made by Daewoo)
|-
|J87||rowspan=3|Asüna<br />(Canada only)||Japan (car made by Isuzu)
|-
|KL7||South Korea (car made by Daewoo)
|-
|2CG||Canada (SUV made by CAMI)
|-
|1G3||rowspan=3|Oldsmobile||United States
|-
|1GH||United States (MPV/SUV)
|-
|2G3||Canada
|-
|1G4||rowspan=9|Buick||United States
|-
|2G4||Canada
|-
|3G4||Mexico
|-
|3G5||Mexico (MPV)
|-
|4GL||United States (incomplete vehicle)
|-
|5GA||United States (MPV)
|-
|KL4||South Korea (MPV)
|-
|LRB||China (SAIC-GM)
|-
|W04||Germany & Poland
|-
|KLA||Alpheon||South Korea (2011-2015)
|-
|1G6||rowspan=10|Cadillac||United States
|-
|1GE||United States (incomplete vehicle)
|-
|1GY||United States (SUV)
|-
|2G6||Canada
|-
|2GE||Canada (incomplete vehicle)
|-
|3GY||Mexico (SUV)
|-
|LRE||China (SAIC-GM)
|-
|W06||Germany
|-
|XWF||Russia (made by Avtotor in Kaliningrad)
|-
|YSC||Sweden
|-
|1G8||rowspan=4|Saturn||United States
|-
|3GS||Mexico (SUV)
|-
|5GZ||United States (MPV/SUV)
|-
|W08||Belgium
|-
|1G0||rowspan=22|GMC||United States (bus 1981-1986)
|-
|1G5||United States (MPV 1981-1986)
|-
|1GD||United States (incomplete vehicle)
|-
|1GJ||United States (bus 1987-)
|-
|1GK||United States (MPV 1987-)
|-
|1GT||United States (truck)
|-
|2CK||Canada (1990-1991 Tracker made by CAMI - Canada only)
|-
|2CT||Canada (2010-2011 Terrain made by CAMI)
|-
|2G0||Canada (bus [van with more than 3 rows of seats] 1981-1986)
|-
|2G5||Canada (MPV 1981-1986)
|-
|2GD||Canada (incomplete vehicle)
|-
|2GH||Canada (transit bus)
|-
|2GJ||Canada (bus [van with more than 3 rows of seats] 1987-)
|-
|2GK||Canada (MPV 1987-)
|-
|2GT||Canada (truck)
|-
|3GK||Mexico (SUV)
|-
|3GT||Mexico (truck)
|-
|4KD||United States (W-Series incomplete vehicle made by GM - through 2009)
|-
|7GZ||United States (incomplete vehicle made by Navistar)
|-
|J8D||Japan (incomplete vehicle made by Isuzu - through 2009)
|-
|JGT||Japan (SUV made by Suzuki - Canada only)
|-
|KL6||South Korea (Middle East market Terrain '08-'10)
|-
|4GD||WhiteGMC||United States (1988-1989 Brigadier made by GM)
|-
|137||rowspan=6|Hummer||United States (H1 made by AM General)
|-
|5GN||United States (H3T)
|-
|5GR||United States (H2 made by AM General)
|-
|5GT||United States (H3)
|-
|ADM||South Africa (H3)
|-
|XWF||Russia (H2 & H3 made by Avtotor in Kaliningrad)
|-
|4G5||General Motors||United States (EV1)
|-
|2G5||rowspan=2|BrightDrop||Canada (Truck 2023-2024)
|-
|5G5||United States (Truck made by Kuka AG - 2022 only)
|-
|5G2||rowspan=2|Cruise||United States (car) (Cruise AV)
|-
|5G3||United States (MPV) (Cruise Origin AV)
|-
|YS3||rowspan=4|Saab||Sweden
|-
|JF4||Japan (9-2X made by Subaru)
|-
|3G0||Mexico (9-4X)
|-
|5S3||United States (9-7X)
|-
|W0L||rowspan=19|Opel/Vauxhall||Germany & the rest of Europe (2017 and earlier)
|-
|W0V||Germany & the rest of Europe (2018 and later) & Opel Ampera-e Mid-2017 - 2019
|-
|W0L||when plant code is H: Thailand (Zafira A)
|-
|W0L||when plant code is 0: South Korea (Antara) or B: South Korea (Antara, Mokka A, Mokka X [A])
|-
|W0L||when plant code is C: South Korea (Opel Karl/Vauxhall Viva)
|-
|W0V||when plant code is B: South Korea (Mokka X [A]) or C: South Korea (Opel Karl/Vauxhall Viva)
|-
|SCC||UK (Opel Lotus Omega made by Lotus)
|-
|SED||UK (made by IBC Vehicles)
|-
|TW8||Portugal
|-
|VF1||France (Arena made by Renault)
|-
|VN1||France (Movano A made by Renault at SOVAB plant in Batilly, France)
|-
|VSX||Spain
|-
|XUF||Russia (Opel made by GM Russia - St. Petersburg plant)
|-
|XWF||Russia (Opel made by Avtotor in Kaliningrad)
|-
|1G0||United States (Opel GT, Opel/Vauxhall Ampera, Opel Ampera-e Early - Mid-2017)
|-
|4GD||United States (Sintra)
|-
|ADM||South Africa
|-
|JAA||Japan (Opel Campo made by Isuzu)
|-
|JAC||Japan (Monterey made by Isuzu)
|-
|SKA||rowspan=4|Vauxhall Motors||UK
|-
|SCC||UK (Vauxhall Lotus Carlton made by Lotus)
|-
|6G1||Australia (Vauxhall Monaro & VXR8 made by Holden)
|-
|JAA||Japan (Vauxhall Brava made by Isuzu)
|-
|SKF||rowspan=2|Bedford Vehicles||UK
|-
|JAA||Japan (Bedford Brava made by Isuzu)
|-
|6G1||rowspan=18|Holden||Australia (2003-2017)
|-
|6H8||Australia (1989-2002)
|-
|JAA||Japan (Rodeo pickup [TF] made by Isuzu)
|-
|JAC||Japan (Jackaroo/Monterey made by Isuzu)
|-
|JSA||Japan (YG Cruze made by Suzuki)
|-
|KL3||South Korea
|-
|MMM||Thailand ('09-'11 Colorado pickup [RC] made by GM Thailand)
|-
|MMU||Thailand ('13-'20 Colorado pickup [RG], '13-'16 Colorado 7, '17-'20 Trailblazer made by GM Thailand)
|-
|MPA||Thailand ('04-'08 Rodeo pickup [RA] made by Isuzu Thailand)
|-
|SED||UK (1st gen. Frontera made by IBC Vehicles)
|-
|W0L||Germany & the rest of Europe (2017 and earlier)
|-
|W0L||when plant code is H: Thailand (Zafira A)
|-
|W0V||Germany & the rest of Europe (2018-2020)
|-
|1GH||United States (Acadia)
|-
|3G0||Mexico (Equinox)
|-
|3GM||Mexico (Suburban)
|-
|4S2||United States (2nd gen. Frontera made by [[w:Subaru Isuzu Automotive|SIA]])
|-
|5G8||United States (Volt)
|-
|1GG||rowspan=4|Isuzu||United States (Truck - Hombre & i-Series made by GM)
|-
|4GT||United States (H-Series & T-Series incomplete vehicle made by GM - through 2009)
|-
|4KL||United States (N-Series incomplete vehicle made by GM - through 2009)
|-
|4NU||United States (MPV/SUV - Ascender made by GM)
|-
|W0L||Subaru||Thailand [plant code H] (Traviq made by GM Thailand for export to Japan)
|-
|4G3||Toyota||United States (Cavalier made by GM for export to Japan)
|-
|3GP||Honda||Mexico (MPV/SUV: 2024-2026 Prologue made by GM)
|-
|4W5||Acura||United States (MPV/SUV: 2024 ZDX EV made by GM)
|}
{{BookCat}}
iqtmkglqdk948ikavngwzxrplf33pu6
Punjabi/Vocabulary/Relations
0
166013
4656321
4536500
2026-08-05T07:13:58Z
~2026-43019-26
3619316
/* ਸਾਕ- Relations */
4656321
wikitext
text/x-wiki
{{Punjabi/Mobile}}
== ਸਾਕ- Relations ==
[[File:Bahadur_Shah_I_with_his_sons_handing_a_sarpech_to_a_grandson,_ca._1710._San_Diego_Museum_of_Art.jpg|thumb|ਪਿਓ ਬਹਾਦੁਰ ਸ਼ਾਹ ਤੇ ਊਦੇ ੨ ਪੁੱਤ]]
A relation is called ਸਾਕ in Punjabi. We continue with the concept of gender we introduced in Animals chapter. The list below contains masculine relations only where the noun is regular but where ever the noun is irregular the feminine gender form is also provided. For a description of regular and irregular nouns [[Punjabi/Grammar/Noun|click here]]
<div style="column-count:2;-moz-column-count:2;-webkit-column-count:2">
#ਪਿਓ, ਪੇ= father
#ਬਾਪੂ/ਭਾਪਾ = Dad/Dady vocative)
#ਮਾਂ/ਮਾਏ = mother
#ਬੀਬੀ/ਬੇਬੇ/ਅੰਮੀ = mom/mummy (vocative)
#ਪੁੱਤਰ/ਪੁੱਤ = son
#ਧੀ = daughter
#ਭਰਾ = brother
#ਬਾਈ/ਭਾਜੀ/ਭਾਊ = bro/brother (vocative)
#ਭੈਣ = sister
#ਘਰਆਲਾ, ਖਸਮ, ਕੰਤ = husband
#ਘਰਆਲੀ, ਵਹੁਟੀ = wife
#ਦਾਦਾ = paternal grandfather (father's father)
#ਦਾਦੀ = paternal grandmother (father's mother)
#ਪੜਦਾਦਾ = father's grandfather
#ਪੜਦਾਦੀ = father's grandmother
#ਨੱਤੜਦਾਦਾ = grandfather's grandfather
#ਨੱਤੜਦਾਦੀ = grandfather's grandmother
#ਪੋਤਾ/ਪੋਤਰਾ= grand-son (son's son)
#ਪੋਤੀ/ਪੋਤਰੀ = grand-daughter (son's daughter)
#ਪੜੋਤਾ/ਪੜਪੋਤਾ = great grandson (grandson's son)
#ਪੜੋਤੀ/ਪੜਪੋਤੀ = great granddaughter (grandson's daughter)
#ਨੱਤਾ = grandson's grandson
#ਨੱਤੀ = grandson's granddaughter
#ਪੜਨੱਤਾ = grandson's great grandson
#ਪੜਨੱਤੀ = grandson's great granddaughter
#ਨਾਨਾ = maternal grandfather (mother's father)
#ਨਾਨੀ = maternal grandmother (mother's mother)
#ਪੜਨਾਨਾ = mother's grandfather
#ਪੜਨਾਨੀ = mother's granddaughter
#ਦੋਹਤਾ/ਦੋਹਤਰਾ/ਦੋਹਤਵਾਨ = grand son (daughter's son)
#ਦੋਹਤੀ/ਦੋਹਤਰੀ =grand daughter (daughter's daughter)
#ਪੜਦੋਹਤਾ = granddaughter's son or daughter's grandson
#ਪੜਦੋਹਤੀ = granddaughter's daughter or daughter's granddaughter
#ਚਾਚਾ = uncle (younger brother of father)
#ਚਾਚੀ = aunt (wife of father's younger brother)
#ਚਚੇਰ ਭਰਾ/ਭੈਣ = cousins (from father's younger brother)
#ਤਾਇਆ = uncle (elder brother of father)
#ਤਾਈ = aunt (wife of father's elder brother)
#ਭਤੀਜਾ/ਭਤੀਜੀ= nephew (brother's son/daughter)
#ਭਣੇਵਾ/ਭਨੇਵੀ = nephew (sister's son/daughter)
#ਮਾਮਾ = uncle (mother's brother)
#ਮਾਮੀ = aunt (wife of mother's brother)
#ਮਲੇਰ ਭਰਾ/ਭੈਣ = cousins (from mother's brother)
#ਫੁੱਫੜ = husband of father's sister
#ਭੂਆ = father's sister
#ਫਫੇਰ ਭਰਾ/ਭੈਣ = cousins (from father's sister)
#ਮਾਸੜ = husband of mother's sister
#ਮਾਸੀ = mother's sister
#ਮਸੇਰ ਭਰਾ/ਭੈਣ = cousins (from mother's sister)
#ਸੌਂਕਣ = husband's other wife
#ਮਤਈ = step-mother
#ਮਤੇਰ ਭਰਾ/ਭੈਣ = step-brother/sister
#ਪਤੰਦਰ = step-father
#ਹੁੱੜਤ = son of wife's previous husband
#ਪਿੱਛਲੱਗ = daughter of wife's previous husband
#ਸੁਕੁੱਤਰ = son of husband's another wife
#ਮਿੱਤ,ਬੇਲੀ/ਆੜੀ= friend
#ਸੇਹਲੀ = female friend
#ਸਹੁਰਾ = father-in-law
#ਸੱਸ = mother-in-law
#ਪਤੇਓਰਾ = father-in-law's brother
#ਪਤੀਸ = wife of father-in-law's brother
#ਫਫੇਓਰਾ = husband of father-in-law's sister
#ਫਫੀਸ/ਫਫੇਸ = father-in-law's sister
#ਮਲੇਓਰਾ = mother-in-law's brother
#ਮਰੀਸ/ਮਲੇਸ = wife of mother-in-laws brother
#ਦਦੇਓਰਾ = father of father-in-law
#ਦਦੀਸ = mother of father-in-law
#ਨਨੇਓਰਾ = father of mother-in-law
#ਨਨੀਸ = mother of mother-in-law
#ਜੁਆਈ = son-in-law
#ਨੂੰਹ = daughter-in-law
#ਸਾਲ਼ਾ = brother-in-law (wife's brother)
#ਸਾਲੇਹਾਰ = wife of wife's brother
#ਸਾਲੀ = wife's sister
#ਸਾਂਢੂ = husband of wife's sister
#ਭਣਵੀਆ/ਭਣੋਈਆ = brother-in-law (sister's husband)
#ਜੇਠ = brother-in-law (elder brother of husband)
#ਦਿਉਰ = brother-in-law (younger brother of husband)
#ਭਰਜਾਈ/ਭਾਬੋ = sister-in-law (brother's wife)
#ਨਨਾਣ = sister-in-law (husband's sister)
#ਨਨਾਣਵੀਆ/ਨੰਨਦੋਈਆ = husband of husband's sister
#ਕੁੜਮ = father-in-law of son or daughter
#ਕੁੜਮਣੀ = mother-in-law of son or daughter
#ਸਾਕ = relation
#ਸਕਾ = related/real (ex - real brother/sister)
#ਸਕੀਰੀ = relationship
#ਸ਼ਰੀਕ = related/members of extended family
#ਟੱਬਰ = family
</div>
=== Exercises ===
1. Write the feminine gender form of the following:
:ਸਾਲਾ, ਮਾਮਾ, ਚਾਚਾ, ਪੋਤਾ
{{HideNseek|title=Solutions|text=
:ਸਾਲੀ, ਮਾਮੀ, ਚਾਚੀ, ਪੋਤੀ }}
2. Write the masculine gender form of the following:
:ਦਾਦੀ, ਭਣੇਂਵੀ, ਭਤੀਜੀ
{{HideNseek|title=Solutions|text=
:ਦਾਦਾ, ਭਣੇਂਵਾ, ਭਤੀਜਾ}}
3. Change the gender of the following nouns:
:ਮਾਸੀ, ਸੱਸ, ਜੇਠ, ਦਿਉਰ, ਭੂਆ
{{HideNseek|title=Solutions|text=
:ਮਾਸੜ, ਸਹੁਰਾ, ਜੇਠਾਣੀ, ਦਰਾਣੀ, ਫੁੱਫੜ }}
{{Punjabi}}
90e78tvwlsx00n45ud66q3tff4e9moj
Cookbook:Mixing
102
167684
4656298
4641261
2026-08-05T02:57:50Z
~2026-42951-75
3619274
/* Tossing */
4656298
wikitext
text/x-wiki
{{technique}}
'''Mixing''' is the process of combining ingredients together, usually to make a well-distributed mixture, and is an important step in cooking. The techniques used in combining ingredients contribute significant textural changes and greatly influence the quality of the final product—it is important to use the correct mixing technique for the task at hand in order to achieve the desired results. In [[Cookbook:Sauce|sauce making]], for example, the emulsification, incorporation of hot liquid and starch, mounting of a sauce with butter, and more are special skills that must be mastered by every cook. In baking, such procedures as the folding of egg whites or whipped cream into cake batter, mousses, and moulds are special skills. The mixing of batters in general is a science in itself.
== Stirring ==
== Folding ==
Folding is a way of gently mixing ingredients, used to incorporate ingredients into a [[Cookbook:Batter|batter]] or other mixture. Use a wooden spoon or broad spatula and mix the ingredients a spoonful at a time. The technique is often used when one of the ingredients (e.g., [[Cookbook:Egg|egg white]] or [[Cookbook:Cream|cream]]) has been whipped, and strenuous mixing would risk driving out the air that has been incorporated. Similarly, if a delicate ingredient, such as cooked fish, is to be mixed, folding will prevent the pieces being broken up.
For most recipes, it can be helpful to "lighten" the batter with the whipped egg whites or other delicate ingredient. This means that you first put a quarter or so of the whipped egg whites into the main batter, and fold that together. Then add the rest of the egg whites and fold again.
== Sifting ==
Sifting separates dry-ingredients into smaller and larger particle sizes. Smaller-finer particles fall through a mesh, when it is shaken or scraped.
Bran and germ are available to use separately, when removed from their flour.
Sifting is used to mix dry leavening ingredients more completely into flours and meals.
Sifting can break dry lumps.
Doughs and batters made from finer flour may raise more evenly.
== Beating ==
Beating is vigorously mixing the ingredients, often with an [[Cookbook:Mixer|electric mixer]]. Some recipes and ingredients that often require beating are [[Cookbook:Whipped Cream|whipped cream]], [[Cookbook:Egg|egg whites]], and [[Cookbook:Butter|butter]]. Beating butter is sometimes referred to as [[Cookbook:Creaming|creaming]].
== Creaming ==
Creaming is a form of beating that combines sugar with solid fat. The sugar's sharp particles cut into the butter, introducing air bubbles. It is the most important step for cookies and cakes because it allows them to rise. It can be done by hand using a wooden spoon or spatula; or mechanically, using the paddle attachment of a mixer.
== Whipping ==
Whipping is a technique where a food is mixed very vigorously in order to incorporate a large amount of air. This results in a fluffy and/or foamy product. It can be done by hand using a whisk, or with a mixer fitted with a whisk attachment. The foam produced by whipping must be stabilized by a fat, protein, or other gelling agent—otherwise, it will dissipate. Some of the most commonly-whipped ingredients include [[Cookbook:Cream|cream]] (see: [[Cookbook:Whipped Cream|whipped cream]]) and [[Cookbook:Egg|eggs]], especially egg whites (see: [[Cookbook:Meringue|meringue]]).<gallery mode="packed">
File:Making meringue - whisking.jpg|Whipping egg whites
File:Melieren-01.jpg|Whipping a meringue
</gallery>
== Blending ==
Blending is a process involving items being put in a [[Cookbook:Blender|blender]].
== Cutting ==
Cutting involves using a sharp object to cut the item.
== Kneading ==
Kneading is a process in which a dough is repeatedly worked in order to combine everything thoroughly, increase water absorption, and, in the case of wheat-based doughs, develop gluten. It can be accomplished using your hands or a [[Cookbook:Mixer|mixer]] fitted with a dough hook. Longer kneading times are required for significant gluten development.
== Tossing ==
Tossing is a cooking process in which ingredients are repeatedly lifted and turned so they move through the mixture and coat evenly. It is commonly used for foods such as salads, stir-fries, pasta, and roasted vegetables to distribute dressing, oil, sauce, or seasoning. Tossing can be done by hand in a bowl or with utensils, often using short, rhythmic motions to ensure uniform coverage while helping prevent ingredients from clumping. It may be repeated until the desired flavor distribution and consistency are achieved.
== Other techniques ==
=== Avoiding lumps: Mixing hot liquids with dry flours or meals ===
To mix wet and dry ingredients without forming lumps; consider mixing order, quantity and temperature.
Adding dry ingredients like flours and other powders directly into hot liquids will almost always form lumps. This is because the fine particles begin to cook immediately when they touch the hot liquid, and stick together. To prevent lumping, first stir small quantities of cold liquid into the dry ingredients until they are uniformly wet and smooth; only after this should you stir hot liquid into the wet mixture. Do not use more liquid than a recipe calls for. For example, if the recipe calls for 2 cups of hot liquid, but you used a ½ cup cold, then subtract 1/2 from 2; now you will only need 1½ cups of hot liquid.
* Mixing order
Add wet ingredients into dry ingredients, not dry into wet.
* Quantity
Add a small amount of wet ingredients, and mix thoruoughly before adding more.
* Temperature
Add a small amount of '''cool''' wet ingredients, and mix it well, before adding '''hot''' wet ingredients. Avoid adding hot wet-ingredients directly to dry meals or flours.
== References and links ==
* [http://www.ivillage.com/food/experts/com/articles/0,,418994_419032-2,00.html Julia Child's Baking Tips]
* https://nielsenmassey.com/betteryourbake/how-to-whip-ingredients/
* http://www.welike2cook.com/2012/01/tow-whipping.html
* https://www.cooksinfo.com/whip
* https://www.bakingnook.com/whipping-vs-beating/
"The method of adding the butter to the flour is either the cutting-in method, where a corne (see page 196) or a pastry cutter is used to reduce the butter to smaller and smaller pieces, or the sabler method (sablage), also called the sanding method, where the two ingredients are rubbed together between the palms of the hands, resulting in a very fine, even textured result that makes for a more homog- enous dough once the liquids (e.g., eggs) are worked in"<ref name=":0">{{Cite book |last=The Chefs of Le Cordon Bleu |first= |url=https://books.google.com/books?id=Xni7wAEACAAJ&newbks=0&hl=en |title=Le Cordon Bleu Patisserie and Baking Foundations |date=2011-12-02 |publisher=Cengage Learning |isbn=978-1-4390-5713-1 |language=en}}</ref>
"An alternative method is the crèmer method or creaming method. This can be applied mainly to sweet shortcrusts. Ideally, the butter or fat should be cold, but if your butter is at room temperature or softer you can first cream the but- ter with the sugar and liquid before gradually incorporating the flour by cut- ting it in, using a corne."<ref name=":0" />
cerqvru9hge38kw98c0vgd0ofemjwt7
4656299
4656298
2026-08-05T03:11:02Z
~2026-42951-75
3619274
/* Stirring */
4656299
wikitext
text/x-wiki
{{technique}}
'''Mixing''' is the process of combining ingredients together, usually to make a well-distributed mixture, and is an important step in cooking. The techniques used in combining ingredients contribute significant textural changes and greatly influence the quality of the final product—it is important to use the correct mixing technique for the task at hand in order to achieve the desired results. In [[Cookbook:Sauce|sauce making]], for example, the emulsification, incorporation of hot liquid and starch, mounting of a sauce with butter, and more are special skills that must be mastered by every cook. In baking, such procedures as the folding of egg whites or whipped cream into cake batter, mousses, and moulds are special skills. The mixing of batters in general is a science in itself.
== Stirring ==
Stirring is a technique where ingredients are mixed by moving a spoon or utensil through the mixture repeatedly, usually in a circular or back-and-forth motion. This helps combine ingredients thoroughly, distribute heat evenly, and prevent ingredients from sticking or settling. Stirring can be done by hand or with a mixer, depending on the recipe and desired consistency. It is especially important for sauces, soups, and batters to ensure even texture and to dissolve ingredients such as sugar or salt without forming lumps.
== Folding ==
Folding is a way of gently mixing ingredients, used to incorporate ingredients into a [[Cookbook:Batter|batter]] or other mixture. Use a wooden spoon or broad spatula and mix the ingredients a spoonful at a time. The technique is often used when one of the ingredients (e.g., [[Cookbook:Egg|egg white]] or [[Cookbook:Cream|cream]]) has been whipped, and strenuous mixing would risk driving out the air that has been incorporated. Similarly, if a delicate ingredient, such as cooked fish, is to be mixed, folding will prevent the pieces being broken up.
For most recipes, it can be helpful to "lighten" the batter with the whipped egg whites or other delicate ingredient. This means that you first put a quarter or so of the whipped egg whites into the main batter, and fold that together. Then add the rest of the egg whites and fold again.
== Sifting ==
Sifting separates dry-ingredients into smaller and larger particle sizes. Smaller-finer particles fall through a mesh, when it is shaken or scraped.
Bran and germ are available to use separately, when removed from their flour.
Sifting is used to mix dry leavening ingredients more completely into flours and meals.
Sifting can break dry lumps.
Doughs and batters made from finer flour may raise more evenly.
== Beating ==
Beating is vigorously mixing the ingredients, often with an [[Cookbook:Mixer|electric mixer]]. Some recipes and ingredients that often require beating are [[Cookbook:Whipped Cream|whipped cream]], [[Cookbook:Egg|egg whites]], and [[Cookbook:Butter|butter]]. Beating butter is sometimes referred to as [[Cookbook:Creaming|creaming]].
== Creaming ==
Creaming is a form of beating that combines sugar with solid fat. The sugar's sharp particles cut into the butter, introducing air bubbles. It is the most important step for cookies and cakes because it allows them to rise. It can be done by hand using a wooden spoon or spatula; or mechanically, using the paddle attachment of a mixer.
== Whipping ==
Whipping is a technique where a food is mixed very vigorously in order to incorporate a large amount of air. This results in a fluffy and/or foamy product. It can be done by hand using a whisk, or with a mixer fitted with a whisk attachment. The foam produced by whipping must be stabilized by a fat, protein, or other gelling agent—otherwise, it will dissipate. Some of the most commonly-whipped ingredients include [[Cookbook:Cream|cream]] (see: [[Cookbook:Whipped Cream|whipped cream]]) and [[Cookbook:Egg|eggs]], especially egg whites (see: [[Cookbook:Meringue|meringue]]).<gallery mode="packed">
File:Making meringue - whisking.jpg|Whipping egg whites
File:Melieren-01.jpg|Whipping a meringue
</gallery>
== Blending ==
Blending is a process involving items being put in a [[Cookbook:Blender|blender]].
== Cutting ==
Cutting involves using a sharp object to cut the item.
== Kneading ==
Kneading is a process in which a dough is repeatedly worked in order to combine everything thoroughly, increase water absorption, and, in the case of wheat-based doughs, develop gluten. It can be accomplished using your hands or a [[Cookbook:Mixer|mixer]] fitted with a dough hook. Longer kneading times are required for significant gluten development.
== Tossing ==
== Other techniques ==
=== Avoiding lumps: Mixing hot liquids with dry flours or meals ===
To mix wet and dry ingredients without forming lumps; consider mixing order, quantity and temperature.
Adding dry ingredients like flours and other powders directly into hot liquids will almost always form lumps. This is because the fine particles begin to cook immediately when they touch the hot liquid, and stick together. To prevent lumping, first stir small quantities of cold liquid into the dry ingredients until they are uniformly wet and smooth; only after this should you stir hot liquid into the wet mixture. Do not use more liquid than a recipe calls for. For example, if the recipe calls for 2 cups of hot liquid, but you used a ½ cup cold, then subtract 1/2 from 2; now you will only need 1½ cups of hot liquid.
* Mixing order
Add wet ingredients into dry ingredients, not dry into wet.
* Quantity
Add a small amount of wet ingredients, and mix thoruoughly before adding more.
* Temperature
Add a small amount of '''cool''' wet ingredients, and mix it well, before adding '''hot''' wet ingredients. Avoid adding hot wet-ingredients directly to dry meals or flours.
== References and links ==
* [http://www.ivillage.com/food/experts/com/articles/0,,418994_419032-2,00.html Julia Child's Baking Tips]
* https://nielsenmassey.com/betteryourbake/how-to-whip-ingredients/
* http://www.welike2cook.com/2012/01/tow-whipping.html
* https://www.cooksinfo.com/whip
* https://www.bakingnook.com/whipping-vs-beating/
"The method of adding the butter to the flour is either the cutting-in method, where a corne (see page 196) or a pastry cutter is used to reduce the butter to smaller and smaller pieces, or the sabler method (sablage), also called the sanding method, where the two ingredients are rubbed together between the palms of the hands, resulting in a very fine, even textured result that makes for a more homog- enous dough once the liquids (e.g., eggs) are worked in"<ref name=":0">{{Cite book |last=The Chefs of Le Cordon Bleu |first= |url=https://books.google.com/books?id=Xni7wAEACAAJ&newbks=0&hl=en |title=Le Cordon Bleu Patisserie and Baking Foundations |date=2011-12-02 |publisher=Cengage Learning |isbn=978-1-4390-5713-1 |language=en}}</ref>
"An alternative method is the crèmer method or creaming method. This can be applied mainly to sweet shortcrusts. Ideally, the butter or fat should be cold, but if your butter is at room temperature or softer you can first cream the but- ter with the sugar and liquid before gradually incorporating the flour by cut- ting it in, using a corne."<ref name=":0" />
5io3p1h2doh4ayk2rm7su4zzt8spies
4656300
4656299
2026-08-05T03:14:05Z
~2026-42951-75
3619274
/* Tossing */
4656300
wikitext
text/x-wiki
{{technique}}
'''Mixing''' is the process of combining ingredients together, usually to make a well-distributed mixture, and is an important step in cooking. The techniques used in combining ingredients contribute significant textural changes and greatly influence the quality of the final product—it is important to use the correct mixing technique for the task at hand in order to achieve the desired results. In [[Cookbook:Sauce|sauce making]], for example, the emulsification, incorporation of hot liquid and starch, mounting of a sauce with butter, and more are special skills that must be mastered by every cook. In baking, such procedures as the folding of egg whites or whipped cream into cake batter, mousses, and moulds are special skills. The mixing of batters in general is a science in itself.
== Stirring ==
Stirring is a technique where ingredients are mixed by moving a spoon or utensil through the mixture repeatedly, usually in a circular or back-and-forth motion. This helps combine ingredients thoroughly, distribute heat evenly, and prevent ingredients from sticking or settling. Stirring can be done by hand or with a mixer, depending on the recipe and desired consistency. It is especially important for sauces, soups, and batters to ensure even texture and to dissolve ingredients such as sugar or salt without forming lumps.
== Folding ==
Folding is a way of gently mixing ingredients, used to incorporate ingredients into a [[Cookbook:Batter|batter]] or other mixture. Use a wooden spoon or broad spatula and mix the ingredients a spoonful at a time. The technique is often used when one of the ingredients (e.g., [[Cookbook:Egg|egg white]] or [[Cookbook:Cream|cream]]) has been whipped, and strenuous mixing would risk driving out the air that has been incorporated. Similarly, if a delicate ingredient, such as cooked fish, is to be mixed, folding will prevent the pieces being broken up.
For most recipes, it can be helpful to "lighten" the batter with the whipped egg whites or other delicate ingredient. This means that you first put a quarter or so of the whipped egg whites into the main batter, and fold that together. Then add the rest of the egg whites and fold again.
== Sifting ==
Sifting separates dry-ingredients into smaller and larger particle sizes. Smaller-finer particles fall through a mesh, when it is shaken or scraped.
Bran and germ are available to use separately, when removed from their flour.
Sifting is used to mix dry leavening ingredients more completely into flours and meals.
Sifting can break dry lumps.
Doughs and batters made from finer flour may raise more evenly.
== Beating ==
Beating is vigorously mixing the ingredients, often with an [[Cookbook:Mixer|electric mixer]]. Some recipes and ingredients that often require beating are [[Cookbook:Whipped Cream|whipped cream]], [[Cookbook:Egg|egg whites]], and [[Cookbook:Butter|butter]]. Beating butter is sometimes referred to as [[Cookbook:Creaming|creaming]].
== Creaming ==
Creaming is a form of beating that combines sugar with solid fat. The sugar's sharp particles cut into the butter, introducing air bubbles. It is the most important step for cookies and cakes because it allows them to rise. It can be done by hand using a wooden spoon or spatula; or mechanically, using the paddle attachment of a mixer.
== Whipping ==
Whipping is a technique where a food is mixed very vigorously in order to incorporate a large amount of air. This results in a fluffy and/or foamy product. It can be done by hand using a whisk, or with a mixer fitted with a whisk attachment. The foam produced by whipping must be stabilized by a fat, protein, or other gelling agent—otherwise, it will dissipate. Some of the most commonly-whipped ingredients include [[Cookbook:Cream|cream]] (see: [[Cookbook:Whipped Cream|whipped cream]]) and [[Cookbook:Egg|eggs]], especially egg whites (see: [[Cookbook:Meringue|meringue]]).<gallery mode="packed">
File:Making meringue - whisking.jpg|Whipping egg whites
File:Melieren-01.jpg|Whipping a meringue
</gallery>
== Blending ==
Blending is a process involving items being put in a [[Cookbook:Blender|blender]].
== Cutting ==
Cutting involves using a sharp object to cut the item.
== Kneading ==
Kneading is a process in which a dough is repeatedly worked in order to combine everything thoroughly, increase water absorption, and, in the case of wheat-based doughs, develop gluten. It can be accomplished using your hands or a [[Cookbook:Mixer|mixer]] fitted with a dough hook. Longer kneading times are required for significant gluten development.
== Tossing ==
Tossing is a cooking process in which ingredients are repeatedly lifted and turned so they move through the mixture and coat evenly. It is commonly used for foods such as salads, stir-fries, pasta, and roasted vegetables to distribute dressing, oil, sauce, or seasoning. Tossing can be done by hand in a bowl or with utensils, often using short, rhythmic motions to ensure uniform coverage while helping prevent ingredients from clumping. It may be repeated until the desired flavor distribution and consistency are achieved.
== Other techniques ==
=== Avoiding lumps: Mixing hot liquids with dry flours or meals ===
To mix wet and dry ingredients without forming lumps; consider mixing order, quantity and temperature.
Adding dry ingredients like flours and other powders directly into hot liquids will almost always form lumps. This is because the fine particles begin to cook immediately when they touch the hot liquid, and stick together. To prevent lumping, first stir small quantities of cold liquid into the dry ingredients until they are uniformly wet and smooth; only after this should you stir hot liquid into the wet mixture. Do not use more liquid than a recipe calls for. For example, if the recipe calls for 2 cups of hot liquid, but you used a ½ cup cold, then subtract 1/2 from 2; now you will only need 1½ cups of hot liquid.
* Mixing order
Add wet ingredients into dry ingredients, not dry into wet.
* Quantity
Add a small amount of wet ingredients, and mix thoruoughly before adding more.
* Temperature
Add a small amount of '''cool''' wet ingredients, and mix it well, before adding '''hot''' wet ingredients. Avoid adding hot wet-ingredients directly to dry meals or flours.
== References and links ==
* [http://www.ivillage.com/food/experts/com/articles/0,,418994_419032-2,00.html Julia Child's Baking Tips]
* https://nielsenmassey.com/betteryourbake/how-to-whip-ingredients/
* http://www.welike2cook.com/2012/01/tow-whipping.html
* https://www.cooksinfo.com/whip
* https://www.bakingnook.com/whipping-vs-beating/
"The method of adding the butter to the flour is either the cutting-in method, where a corne (see page 196) or a pastry cutter is used to reduce the butter to smaller and smaller pieces, or the sabler method (sablage), also called the sanding method, where the two ingredients are rubbed together between the palms of the hands, resulting in a very fine, even textured result that makes for a more homog- enous dough once the liquids (e.g., eggs) are worked in"<ref name=":0">{{Cite book |last=The Chefs of Le Cordon Bleu |first= |url=https://books.google.com/books?id=Xni7wAEACAAJ&newbks=0&hl=en |title=Le Cordon Bleu Patisserie and Baking Foundations |date=2011-12-02 |publisher=Cengage Learning |isbn=978-1-4390-5713-1 |language=en}}</ref>
"An alternative method is the crèmer method or creaming method. This can be applied mainly to sweet shortcrusts. Ideally, the butter or fat should be cold, but if your butter is at room temperature or softer you can first cream the but- ter with the sugar and liquid before gradually incorporating the flour by cut- ting it in, using a corne."<ref name=":0" />
gtiehepfjngd6mkjir860u7y0jcwttv
Wikibooks:Collections/Preface
4
174982
4656302
4445557
2026-08-05T03:32:13Z
~2026-43310-65
3619282
/* Happy Reading! */
4656302
wikitext
text/x-wiki
__NOTOC__
This book was created by volunteers at Wikibooks (http://en.wikibooks.org).
== What is Wikibooks? ==
[[Image:Wikibooks-logo-en-noslogan.svg|150px|right]]
Started in 2003 as an offshoot of the popular Wikipedia project, Wikibooks is a free, collaborative wiki website dedicated to creating high-quality textbooks and other educational books for students around the world. In addition to English, Wikibooks is available in over 120 languages, a complete listing of which can be found at http://www.wikibooks.org. Wikibooks is a "wiki", which means anybody can edit the content there at any time. If you find an error or omission in this book, you can log on to Wikibooks to make corrections and additions as necessary. All of your changes go live on the website immediately, so your effort can be enjoyed and utilized by other readers and editors without delay.
Books at Wikibooks are written by volunteers, and can be accessed and printed for free from the website. Wikibooks is operated entirely by donations, and a certain portion of proceeds from sales is returned to the Wikimedia Foundation to help keep Wikibooks running smoothly. Because of the low overhead, we are able to produce and sell books for much cheaper than proprietary textbook publishers can. '''This book can be edited by anybody at any time, including you.''' We don't make you wait two years to get a new edition, and we don't stop selling old versions when a new one comes out.
Note that Wikibooks is not a publisher of books, and is not responsible for the contributions of its volunteer editors. PediaPress.com is a print-on-demand publisher that is also not responsible for the content that it prints. Please see our disclaimer for more information: http://en.wikibooks.org/wiki/Wikibooks:General_disclaimer .
== What is this book? ==
This book was generated by the volunteers at Wikibooks, a team of people from around the world with varying backgrounds. The people who wrote this book may not be experts in the field. Some may not even have a passing familiarity with it. The result of this is that some information in this book may be incorrect, out of place, or misleading. For this reason, you should never rely on a community-edited Wikibook when dealing in matters of medical, legal, financial, or other importance. Please see our disclaimer for more details on this.
Despite the warning of the last paragraph, however, books at Wikibooks are continuously edited and improved. If errors are found they can be corrected immediately. If you find a problem in one of our books, we ask that you '''be bold''' in fixing it. You don't need anybody's permission to help or to make our books better.
Wikibooks runs off the assumption that many eyes can find many errors, and many able hands can fix them. Over time, with enough community involvement, the books at Wikibooks will become very high-quality indeed. '''You are invited to participate at Wikibooks to help make our books better'''. As you find problems in your book don't just complain about them: Log on and fix them! This is a kind of proactive and interactive reading experience that you probably aren't familiar with yet, so log on to http://en.wikibooks.org and take a look around at all the possibilities. We promise that we won't bite!
== Who are the authors? ==
The volunteers at Wikibooks come from around the world and have a wide range of educational and professional backgrounds. They come to Wikibooks for different reasons, and perform different tasks. Some Wikibookians are prolific authors, some are perceptive editors, some fancy illustrators, others diligent organizers. Some Wikibookians find and remove spam, vandalism, and other nonsense as it appears. Most Wikibookians perform a combination of these jobs.
It's difficult to say who are the authors for any particular book, because so many hands have touched it and so many changes have been made over time. It's not unheard of for a book to have been edited thousands of times by hundreds of authors and editors. ''You could be one of them too'', if you're interested in helping out.
<!-- At the time this book was prepared for print, there have been over '''{{NUMBEROFEDITS}}''' edits made by over '''{{NUMBEROFUSERS}}''' registered users. These numbers are growing every day.-->
== Wikibooks in Class ==
Books at Wikibooks are free, and with the proper editing and preparation they can be used as cost-effective textbooks in the classroom or for independent learners. In addition to using a Wikibook as a traditional read-only learning aide, it can also become an interactive class project. Several classes have come to Wikibooks to write new books and improve old books as part of their normal course work. In some cases, the books written by students one year are used to teach students in the same class next year. Books written can also be used in classes around the world by students who might not be able to afford traditional textbooks.
== Happy Reading! ==
We at Wikibooks have put a lot of effort into these books, and we hope that you enjoy reading and learning from them. We want you to keep in mind that what you are holding is not a finished product but instead a work in progress. These books are never "finished" in the traditional sense, but they are ever-changing and evolving to meet the needs of readers and learners everywhere. Despite this constant change, we feel our books can be reliable and high-quality learning tools at a great price, and we hope you agree. Never hesitate to stop in at Wikibooks and make some edits of your own. We hope to see you there one day. '''Happy reading!'''
WikipediaThe Free Encyclopedia
Search Wikipedia
Search
Donate
Create account
Log in
Contents hide
(Top)
Creation and portrayal
Star Wars
Return of the Jedi
A New Hope – 1997 Special Edition
Characterization
Appearances
Films
The Clone Wars
Other
Star Wars Legends
Reception
Notes
References
Citations
Works cited
Further reading
External links
Jabba the Hutt
Article
Talk
Read
Edit
View history
Appearance hide
Text
Small
Standard
Large
Width
Standard
Wide
Color
Automatic
Light
Dark
From Wikipedia, the free encyclopedia
Listen
•
0 sec
Open Speechify library
"Jabba's Palace" redirects here. For the card game expansion set, see Star Wars Customizable Card Game.
Jabba the Hutt
Star Wars character
Jabba the Hutt in Return of the Jedi (1983)
First appearance Return of the Jedi
Created by George Lucas
Voiced by
Larry Ward[a]
Ben Burtt[b]
Ed Asner[c]
Clint Bajakian[d]
David W. Collins[e]
Brian Drummond[f]
Kevin M. Richardson[g]
Dee Bradley Baker[h]
Performed by David Barclay
Toby Philpott
Mike Edmonds
In-universe information
Full name Jabba Desilijic Tiure[1]
Species Hutt[2]
Gender Male[3]
Occupation Crime lord[3]
Affiliation Grand Hutt Council[4]
Crymorah Syndicate[4]
Family
Crakka (cousin)[5]
Ebor (uncle)[6]
Gorga (nephew)[7]
Graballa (nephew)[8]
"The Twins" (cousins)[5]
Ziro (uncle)[6]
Others in Legends[i]
Children Rotta (son)[13]
Homeworld Nal Hutta[14]
Jabba the Hutt (/ˈdʒɑːbə/ JAH-bə) is a fictional character in the Star Wars franchise. He is a large, slug-like crime lord of the Hutt species. Jabba first appeared in the 1983 film Return of the Jedi, in which he is portrayed by a one-ton puppet operated by several puppeteers. In 1997, he appeared in the Special Edition of the original Star Wars film, which had been retitled Star Wars: Episode IV—A New Hope. Jabba made his third film appearance in the 1999 prequel film The Phantom Menace. Jabba is voiced by Larry Ward in Return of the Jedi, and Ben Burtt in A New Hope Special Edition and The Phantom Menace. In the end credits of The Phantom Menace, Jabba is also credited as playing "himself".[15]
In the original film trilogy, Jabba lives in a palace on the desert planet Tatooine. He places a bounty on the smuggler Han Solo, and sends bounty hunters to capture him. After Darth Vader freezes Solo in carbonite, the bounty hunter Boba Fett delivers the frozen Solo to Jabba, who puts him on display in his palace. A group of Solo's friends attempt to rescue him, but are captured by Jabba; he enslaves Princess Leia and decrees that Luke Skywalker, Chewbacca, and Solo will be fed to a Sarlacc. Luke orchestrates an escape, and during the chaos Leia strangles Jabba to death.
Creation and portrayal
Star Wars
George Lucas wrote and directed Star Wars, which was released in 1977. The script included a scene in which the smuggler Han Solo negotiates with Jabba about a payment he owes him. The scene was meant to give Solo the motivation to transport dangerous passengers for a high fare. It was also meant to explain why Solo was imprisoned in the following film, The Empire Strikes Back.[16]
In a 1985 interview, Lucas said that he originally imagined Jabba as a furry creature that resembled a Wookiee. By the time he completed the Star Wars screenplay, Jabba had evolved into a fat, slug-like creature with a gaping mouth and eyes on extended feelers. When filming Jabba's scene, Declan Mulholland served as a stand-in for Jabba; Lucas planned to replace Mulholland in post-production with an animated creature.[17] Lucas ultimately cut the scene due to budget and time constraints, and because he felt it did not contribute to the film's plot.[18] According to Paul Blake, who plays the bounty hunter Greedo, his character's scene was added to Star Wars after Lucas decided to cut the scene with Jabba.[19]
Return of the Jedi
Although Jabba did not appear in the original version of Star Wars, he is mentioned in the film and its first sequel, The Empire Strikes Back. He finally appears in the second sequel, Return of the Jedi (1983). His appearance is similar to the way he was described in the Star Wars script—a large, slug-like creature with a wide mouth. Before Lucas settled on this design, he considered other versions of the character. At various points, Jabba resembled an ape, a worm and a snail. One design made Jabba appear almost human, resembling a Fu Manchu character.[20][21] Nilo Rodis-Jamero, the costume designer for Return of the Jedi, said he had envisioned Jabba as a refined, intelligent man resembling Orson Welles.[20]
After an initial Jabba design was approved, further design work was done by Phil Tippett, the film's visual effects artist. He based Jabba's body structure and reproductive system on the anatomy of annelid worms. He modeled Jabba's head on that of a snake, complete with bulbous, slit-pupilled eyes and a mouth that opens wide enough to swallow large prey. He gave Jabba's skin a moist, amphibian quality.[j]
Concept art of Jabba the Hutt for Return of the Jedi
The next task was to create the Jabba puppet, a process which took three months and cost $500,000. Stuart Freeborn and the Industrial Light & Magic Creature Shop designed the one-ton puppet, while John Coppinger sculpted its latex, clay, and foam pieces. The puppet had its own makeup artist and required three puppeteers to operate, making it one of the largest puppets ever used in a film.[21][24] The puppeteers included David Barclay, Toby Philpott, and Mike Edmonds, who were members of Jim Henson's Muppet group. Barclay operated the right arm and mouth, while Philpott controlled the left arm, head, and tongue. Edmonds was responsible for the movement of Jabba's tail. The character's eyes and face were operated by radio control.[k] Lucas complained about the difficulty of moving the massive puppet around the set. He was also disappointed by its appearance, later stating that Jabba would have been a computer-generated character if the required technology had existed at the time.[25]
Jabba's voice was provided by Larry Ward,[l] who was uncredited in the film. A heavy, booming quality was given to Ward's voice by pitching it an octave lower than normal and processing it through a subharmonic generator.[m] Jabba's burping sounds were provided by the sound engineer Howie Hammerman.[32][33] Wet, slimy sound effects were recorded to accompany the movement of Jabba's body and mouth; some of the sounds were created by moving human hands around in a bowl of cheese casserole.[34][35] For a scene in which Jabba and his minions are laughing together, the laughter was created by mixing human laughter with noises of hippos, hyenas and other animals.[35] The film's composer, John Williams, arranged a musical theme for Jabba that is played on a tuba.[36] He later turned the theme into a symphonic piece which he performed with the Boston Pops Orchestra, and which was described as both "monstrous" and "lyrical" by the musicologist Gerald Sloan.[37] According to the film historian Laurent Bouzereau, Jabba's strangulation by Leia was inspired by a scene from The Godfather (1972), in which the obese character Luca Brasi is garroted by an assassin.[38]
A New Hope – 1997 Special Edition
Harrison Ford as Han Solo (left) and Declan Mulholland, the stand-in for Jabba the Hutt
A digital version of Jabba replaced Mulholland in the 1997 Special Edition of A New Hope.
In 1997, the Special Edition of Star Wars was released, now titled Star Wars: Episode IV—A New Hope. Lucas revisited the Jabba scene he had filmed—and ultimately cut—and completed it for the Special Edition, replacing the stand-in actor Declan Mulholland with a computer-generated version of Jabba. Lucas also replaced the English dialogue with Huttese, a fictional language created by Ben Burtt, the film's sound designer.[n] The scene consisted of five shots and took over a year to complete. Joseph Letteri, the visual effects supervisor for the Special Edition, said his goal was to make Jabba look as realistic as a flesh-and-blood character.[39][40] The scene was refined for the 2004 DVD release, with improvements to Jabba's appearance made possible by advancements in CGI.[41][better source needed]
At one point during the scene, Harrison Ford walks behind Mulholland. This became a problem when adding the digital Jabba, since his tail would be in Solo's path. The solution was to have Solo step on Jabba's tail, causing him to yelp in pain. In the 2004 DVD release, Jabba reacts more strongly, seemingly ready to punch Solo. In this version, shadows cast by Solo were added to Jabba's body to make the CGI more convincing.[25] According to Lucas, some viewers were disappointed with the digital Jabba's appearance, complaining that the character did not look realistic. Lucas dismissed this criticism, saying that regardless of whether a character is portrayed by a puppet or CGI, it will always look unrealistic to some degree.[25]
Characterization
Jabba has been described as an exemplar of lust, sloth, gluttony, and greed.[42] His criminal operations include slavery, gunrunning, spice-smuggling and extortion, and he amuses himself by torturing, humiliating and killing both his enemies and his own subordinates.[43][44] He surrounds himself with scantily-clad slave girls of various species, often chained to his dais.[45] Jabba's appetite is insatiable, and he sometimes threatens to eat his underlings.[46][47]
In Return of the Jedi, Solo calls Jabba a "slimy piece of worm-ridden filth". The writers Martha Veitch and Tom Veitch called his body a "miasmic mass" that seems to release "a greasy discharge, sending fresh waves of rotten stench" into the air.[48] Arthur Knight of The Hollywood Reporter described Jabba as a "truly frightening ... walrus-shaped grotesque."[49] The science fiction writer Jeanne Cavelos wrote that he deserves an award for "most disgusting alien", while the film critic Roger Ebert described him as loathsome and evil.[50][51]
Appearances
Films
Although he was mentioned in previous films, Jabba was first seen in Return of the Jedi (1983), the third film of the original trilogy. The beginning of the film features the attempts of Princess Leia, Chewbacca and Luke Skywalker to rescue Han Solo, who was imprisoned in carbonite in The Empire Strikes Back (1980). Jabba has put the hibernating Solo on display in his throne room as a decoration. Leia is able to free Han from the carbonite, but she is caught and enslaved by Jabba, who forces her to wear a metal bikini. Luke arrives to bargain for Solo's life, but Jabba rejects his offer and attempts to feed him to a rancor. After Luke kills the monster, Jabba decrees that he, Solo and Chewbacca will be fed to a Sarlacc, a deadly ground-dwelling beast. Luke orchestrates an escape with the help of R2-D2, and defeats Jabba's thugs. During the chaos, Leia strangles Jabba to death with the chain used to enslave her. As Luke and his friends depart, Jabba's sail barge explodes.
Jabba appears in the Special Edition of Star Wars, which was released in 1997. In the film, Jabba meets with Solo, who pledges to pay Jabba for lost cargo. Jabba threatens to place a large bounty on him if he does not follow through. Jabba also appears briefly in the 1999 prequel film The Phantom Menace. He launches a podrace at Mos Espa, then falls asleep and misses the conclusion of the race.[52]
The Clone Wars
Jabba's son Rotta is captured by Separatists in the animated film The Clone Wars (2008). It is later revealed that Ziro, Jabba's uncle, took part in the kidnapping as part of his plan to take control of the Hutt Clan. The Jedi Knight Anakin Skywalker and his apprentice Ahsoka Tano return Rotta to Jabba in exchange for the safe passage of Republic ships through his territory. Padmé Amidala exposes Ziro's crimes to Jabba who vows that Ziro will be severely punished.[53]
Jabba appears in several episodes of The Clone Wars series (2008–2014; 2020). In "Sphere of Influence", he is confronted by Chairman Papanoida, whose daughters were kidnapped by Greedo. Jabba allows a sample of Greedo's blood to be taken to prove he is the kidnapper.[54][55] In "Evil Plans", Jabba hires the bounty hunter Cad Bane to bring him plans for the Galactic Senate building. When Bane returns with the plans, Jabba and the Hutt Council send him to free Ziro from prison.[56][57] Jabba makes a brief appearance in "Hunt for Ziro", in which he laughs at his uncle's death at the hands of Sy Snootles, and pays her for delivering Ziro's holo-diary.[53][58] In "Eminence", Jabba and the Hutt Council are approached by the Shadow Collective leaders Darth Maul, Savage Opress and Pre Vizsla. Jabba is not willing to ally with them, and sends the bounty hunters Embo, Dengar, Sugi and Latts Razzi to capture them. After a battle, the Shadow Collective confronts Jabba at his palace on Tatooine, where he finally agrees to an alliance.[59][60]
Other
Jabba is voiced by Ed Asner in the radio dramatizations of the original trilogy.[61]
Star Wars Legends
See also: Star Wars in other media
Following the acquisition of Lucasfilm by The Walt Disney Company in 2012, most of the licensed Star Wars novels and comics produced between 1977 and 2014 were rebranded as Star Wars Legends and declared non-canon to the franchise. The Legends works comprise a separate narrative universe.[o]
"Jabba the Hut" as he appears in Marvel Comics' adaptation of the first Star Wars film
The first appearances of Jabba in any visual capacity were in Marvel Comics' adaptation of A New Hope, which includes Six Against the Galaxy (1977), What Ever Happened to Jabba the Hut? (1979)[p] and In Mortal Combat (1980). In these comics, Jabba appears as a tall humanoid with a walrus-like face, a topknot, and a brightly-colored uniform.[66] He was based on a character later named Mosep Binneed, who appears briefly in the Mos Eisley Cantina scene in Star Wars.[17][67][68]
While awaiting the sequel to Star Wars, Marvel kept the monthly comic going with its own stories, one of which depicts Jabba tracking down Solo and Chewbacca to an old hideaway they use for smuggling. Circumstances force Jabba to lift the bounty on Solo and Chewbacca, which enables them to return to Tatooine for an adventure with Luke. In another story, Solo kills the space pirate Crimson Jack and busts up his operation, which Jabba bankrolled. Jabba then renews the bounty on Solo.[67][68]
The 1977 novelization of Lucas's Star Wars script describes Jabba as a "great mobile tub of muscle and suet topped by a shaggy scarred skull", but gives no further detail about his appearance or species.[69]
Zorba the Hutt's Revenge (1992), a young-adult novel by Paul and Hollace Davids, identifies Jabba's father as another powerful crime lord named Zorba and reveals that Jabba was born 596 years before the events of A New Hope, making him around 600 years old at the time of his death in Return of the Jedi.[70] Four comics exploring Jabba's backstory were written by Jim Woodring and released by Dark Horse Comics between 1995–1996; these were published collectively as Jabba the Hutt: The Art of the Deal in 1998.[71][72] Ann C. Crispin's novel The Hutt Gambit (1997) explains how Jabba and Solo become business associates and depicts the events that lead to a bounty being placed on Han's head.[73]
Tales from Jabba's Palace (1996), a collection of short stories edited by Kevin J. Anderson, pieces together the lives of Jabba's various minions and their relationship to him during the last days of his life. These stories reveal that many of Jabba's servants are resentful towards him and want to assassinate him. After Jabba is killed in Return of the Jedi, his surviving courtiers join forces with his rivals on Tatooine. At the same time, Jabba's family on the Hutt homeworld Nal Hutta make claims to his palace, fortune, and criminal empire.[14] Timothy Zahn's novel Heir to the Empire (1991) reveals that a smuggler named Talon Karrde eventually replaces Jabba as the "big fish in the pond" and moves the headquarters of his criminal empire off of Tatooine.[74]
Reception
The Telegraph called Jabba one of the most memorable creatures in the Star Wars franchise.[75] Business Insider's Travis Clark said, "Like Stormtroopers or Darth Vader, some villains just come to mind when you think of Star Wars. Jabba is another one of them."[76] Rolling Stone said that Jabba is "without a doubt the finest Star Wars portrait of the id" and that one has to "admire his dedication of being his true, absolutely horrendous self".[77] The Denver Post applauded the special effects team on Return of the Jedi for making Jabba look like a "horrid creature".[78]
Several commentators have derided the computer-generated versions of Jabba and other Hutts. Phil Owen of TheWrap said the digital Jabba in the 1997 release of A New Hope looked "incredibly horrible", while Matt Goldberg of Collider called it "awful".[79][80] After the appearance of the Hutt Twins in the series The Book of Boba Fett, Matt Singer of ScreenCrush wrote that no Hutt should ever be computer-generated, as it does not appear realistic.[81]
Notes
Return of the Jedi
Star Wars Special Edition
The Phantom Menace
Return of the Jedi radio drama
The Phantom Menace (video game)
Star Wars: Demolition
Star Wars: Galactic Battlegrounds
Star Wars: Bounty Hunter
Star Wars: The Force Unleashed
Lego Star Wars: The Yoda Chronicles
The Clone Wars film and television series
Disney Infinity 3.0
Lego Star Wars: The Freemaker Adventures
Lego Star Wars: The Skywalker Saga
Star Wars: Outlaws
Jabba the Hutt's family members in the Star Wars Legends narrative universe include his father Zorba,[9] his uncle Jiliac,[10] his uncle Pazda,[11] and his nephew Grubba.[12]
Attributed to multiple references:[22][23][24]
Attributed to multiple references:[17][21][25][24]
Attributed to multiple references:[26][27][28][29]
Attributed to multiple references:[30][26][31][27][28]
Huttese was based on the Quechuan languages.[27]
Attributed to multiple references:[62][63][64][65]
"Hutt" was originally spelled "Hut".
References
Citations
"Jabba the Hutt, Expanded Universe". StarWars.com. Archived from the original on January 21, 2008. Retrieved February 16, 2025.
"Hutt". StarWars.com. Retrieved July 28, 2024.
"Jabba the Hutt". StarWars.com. Retrieved July 28, 2024.
Beecroft & Hidalgo 2016, p. 105.
Morrison, Matt (January 5, 2022). "The Twins & Hutt Clans Explained: How They Connect To Jabba". ScreenRant. Retrieved July 28, 2024.
"Ziro the Hutt". StarWars.com. Retrieved July 28, 2024.
Hidalgo & Sansweet 2008a, p. 353.
Sumerak, Marc (November 6, 2018). Star Wars: Droidography. HarperCollins. ISBN 978-0-06-286219-8.
Hidalgo & Sansweet 2008b, p. 130.
Hidalgo & Sansweet 2008b, p. 163.
Hidalgo & Sansweet 2008c, p. 15.
Hidalgo & Sansweet 2008a, p. 372.
"Rotta the Huttlet". StarWars.com. Retrieved July 30, 2024.
Anderson, Kevin J., ed. (1996). Tales from Jabba's Palace. New York City: Bantam Spectra. ISBN 0-553-56815-9.
"Star Wars: Episode I - The Phantom Menace Cast & Crew". Metacritic. Retrieved June 24, 2025.
Lucas, George (1997). Interview on Star Wars: Episode IV—A New Hope, Special Edition (VHS). 20th Century Fox.
"Jabba the Hutt, Behind the Scenes". StarWars.com. Archived from the original on May 1, 2008. Retrieved July 3, 2006.
Lucas, George (2004) Commentary track on Star Wars: Episode IV—A New Hope, Special Edition (DVD). 20th Century Fox.
Carbone, Gina (November 17, 2019). "Greedo Actor Is Confused By 'Maclunkey,' And Star Wars In General". CinemaBlend. Archived from the original on November 17, 2019. Retrieved November 17, 2019.
Bouzereau, Laurent (1997). Star Wars: The Annotated Screenplays. New York: Del Rey. p. 239. ISBN 0-345-40981-7.
From Star Wars to Jedi: The Making of a Saga (1992). CBS Fox Video (VHS).
"Biography of Phil Tippett". StarWars.com. Archived from the original on July 8, 2006. Retrieved July 3, 2006.
Sansweet, Stephen J. (1998). "Hutt". Star Wars Encyclopedia. New York: Del Rey. p. 134. ISBN 0-345-40227-8.
Benning, Jamie (January 25, 2022). "Jabba was born 40 years ago today – "The first thing he said was 'Boshuda'"". Filmumentaries. Retrieved March 2, 2025.
Lucas, George (2004). Commentary track on Star Wars: Episode VI—Return of the Jedi, Special Edition (DVD). 20th Century Fox.
Rinzler, J.W. (October 14, 2010). The Sounds of Star Wars. Simon & Schuster. ISBN 978-0857200761.
Wainerdi, Brandon (May 25, 2023). "Jedi at 40: Ben Burtt and Randy Thom on Crafting Ewokese, Jabba's Voice, and the Rancor's Roar". StarWars.com. Archived from the original on December 21, 2025. Retrieved January 17, 2026.
Knox, Kelly; Sandell, Clayton; Bende, S.T. (April 23, 2024). Star Wars: Return of the Jedi: A Visual Archive. Insight Edition. p. 52. ISBN 979-8886635294. Retrieved March 2, 2025.
"Jabba the Hutt Voice". Behind the Voice Actors. Retrieved July 13, 2024.
Holman, Tomlinson (2002). Sound for Film and Television. Burlington, Massachusetts: Focal Press. p. 11. ISBN 0-240-80453-8.
Holman, Tomlinson (June 20, 2014). Surround Sound: Up and Running – 2nd Edition. Taylor & Francis. ISBN 9781136115899. Retrieved April 12, 2021.
Burtt, Ben (August 7, 2001). Star Wars: Galactic Phrase Book and Travel Guide. Del Rey. ISBN 978-0553392883.
Wainerdi, Brandon (December 20, 2010). "Animal Howls, Human Belches Helped Create 'The Sounds Of Star Wars'". WBUR. Retrieved March 2, 2025.
Burtt, Ben (2004). Commentary track on Star Wars: Episode VI—Return of the Jedi, Special Edition (DVD). 20th Century Fox.
INDEPTH Sound Design (February 9, 2021). Star Wars: Return of the Jedi sound design explained by Ben Burtt. Retrieved January 17, 2026 – via YouTube.
"Review of Return of the Jedi soundtrack". Filmtracks.com. Archived from the original on June 16, 2006. Retrieved July 3, 2006.
Sloan, Gerald (June 27, 2000). "Evening The Score: UA Professor Explores Tuba Music In Film". Daily Digest. University of Arkansas. Archived from the original on December 26, 2008. Retrieved July 3, 2006.
Bourezeau, Laurent (1997). Star Wars: The Annotated Screenplays. Ballantine Books. p. 259. ISBN 978-0345409812.
Letteri, Joseph (1997). Interview on Star Wars: Episode IV—A New Hope, Special Edition (VHS). 20th Century Fox.
"A New Hope: Special Edition – What has changed?". StarWars.com. Archived from the original on February 29, 2008. Retrieved October 3, 2016.
Campbell, Malcolm; Woodward, Tom. "Star Wars: The Changes — Part One". DVDActive. Archived from the original on December 23, 2010.
Pomerance, Murray (2004). Schneider, Steven Jay (ed.). "Hitchcock and the Dramaturgy of Screen Violence". New Hollywood Violence. Manchester, England: Manchester University Press: 47. ISBN 0-7190-6723-5.
"Character: Jabba the Hutt". StarWars.com. Archived from the original on March 25, 2008. Retrieved July 3, 2006.
Kahn, James (May 12, 1983). Return of the Jedi: Star Wars: Episode VI. Random House Worlds. ISBN 978-0-345-30767-5.
Tyers, Kathy (1996). "A Time to Mourn, A Time to Dance: Oola's Tale". In Anderson, Kevin J. (ed.). Tales from Jabba's Palace. p. 80.
Windham, Ryder (1996). "This Crumb for Hire". A Decade of Dark Horse #2. Dark Horse Comics.
Friesner, Esther M. (1996). "That's Entertainment: The Tale of Salacious Crumb". In Anderson, Kevin J. (ed.). Tales from Jabba's Palace. pp. 60–79.
Veitch, Tom; Veitch, Martha (1996). "A Hunter's Fate: Greedo's Tale". In Anderson, Kevin J. (ed.). Tales from the Mos Eisley Cantina. New York City: Bantam Spectra. pp. 49–53. ISBN 0-553-56468-4.
Knight, Arthur (November 28, 2014). "'Star Wars: Return of the Jedi': THR's 1983 Review". The Hollywood Reporter. Retrieved March 2, 2022.
Cavelos, Jeanne (1999). Just Because It Goes 'Ho Ho Ho' Doesn't Mean It's Santa: The Science of Star Wars: An Astrophysicist's Independent Examination of Space Travel, Aliens, Planets, and Robots as Portrayed in the Star Wars Films and Books. New York City: St. Martin's Press. p. 57. ISBN 0-312-20958-4.
Ebert, Roger (May 25, 1983). "Return of the Jedi review". Chicago Sun-Times. Chicago: Sun-Times Media Group. Archived from the original on February 3, 2013. Retrieved July 3, 2006.
"Mos Espa Grand Arena". StarWars.com. Archived from the original on March 3, 2008. Retrieved July 5, 2024.
Roy, Jennifer (December 20, 2022). "Will Star Wars: The Book of Boba Fett Feature Jabba the Hutt's Family?". ComicBook.com. Retrieved February 2, 2022.
Blauvelt, Christian (October 1, 2010). "'Star Wars: The Clone Wars' recap: Greedo shot first!". Entertainment Weekly. Retrieved February 2, 2022.
McEwan, Cameron (October 4, 2010). "Star Wars: The Clone Wars season 3 episode 4 review: Sphere Of Influence". Den of Geek. Retrieved February 2, 2022.
McEwan, Cameron (November 15, 2010). "Star Wars: The Clone Wars season 3 episode 8 review: Evil Plans". Den of Geek. Retrieved February 2, 2022.
Goldman, Eric (May 4, 2012). "Star Wars: The Clone Wars - "Evil Plans" Review". IGN. Retrieved February 2, 2022.
Goldman, Eric (May 4, 2012). "Star Wars: The Clone Wars - "Hunt for Ziro" Review". IGN. Retrieved February 2, 2022.
"SHADOWS OF THE SITH". StarWars.com. Retrieved February 2, 2022.
Goldman, Eric (January 19, 2013). "Star Wars: The Clone Wars - "Eminence" Review". IGN. Retrieved February 2, 2022.
Ryan, Mike (April 2, 2015). "That Time John Lithgow Played Yoda And Ed Asner Played Jabba The Hutt For A 'Star Wars' Radio Broadcast". Uproxx. Retrieved February 2, 2022.
McMilian, Graeme (April 25, 2014). "Lucasfilm Unveils New Plans for Star Wars Expanded Universe". The Hollywood Reporter. Archived from the original on April 29, 2016. Retrieved May 26, 2016.
"The Legendary Star Wars Expanded Universe Turns a New Page". StarWars.com. April 25, 2014. Archived from the original on September 10, 2016. Retrieved May 26, 2016.
"Disney and Random House announce relaunch of Star Wars Adult Fiction line". StarWars.com. April 25, 2014. Archived from the original on May 14, 2016. Retrieved May 26, 2016.
Dinsdale, Ryan (May 4, 2023). "The Star Wars Canon: The Definitive Guide". IGN. Retrieved May 31, 2024.
Mcguire, Liam (October 6, 2021). "Star Wars: Marvel Accidentally Made Jabba The Hutt A Different Creature". Screen Rant. Retrieved February 2, 2022.
Roy Thomas (w). "Six Against the Galaxy" Marvel Star Wars, no. 2 (August 1977). Marvel.
Archie Goodwin (w). "In Mortal Combat" Marvel Star Wars, no. 37 (July 1980). Marvel..
Lucas, George (1977). Star Wars: From the Adventures of Luke Skywalker (paperback ed.). New York: Del Rey. p. 107. ISBN 0-345-26079-1.
Davids, Paul; Davids, Hollace (1992). Zorba the Hutt's Revenge. New York City: Bantam Spectra. ISBN 0-553-15889-9.
Jim Woodring (w). Jabba the Hutt: The Art of the Deal (1998). Dark Horse Comics, ISBN 1-56971-310-3.
Von Busack, Richard (August 6, 1998). "Jabba the Hutt slimes his way through a new graphic novel". metroactive.com. Metroactive Books. Archived from the original on December 31, 2007. Retrieved March 6, 2019.
Crispin, Anne C. (1997). The Hutt Gambit. New York City: Bantam Spectra. ISBN 0-553-57416-7.
Zahn, Timothy (1991). Heir to the Empire. New York City: Bantam Spectra. p. 27. ISBN 0-553-29612-4.
"Jabba the Hutt: 67 Star Wars characters, ranked from worst to best". The Telegraph. May 4, 2021. Archived from the original on March 2, 2022.
Clark, Travis (May 23, 2018). "The 30 most important 'Star Wars' movie villains, ranked from worst to best". Business Insider. Retrieved February 5, 2022.
Hoffman, Jordan; Fischer, Russ; Tobias, Scott; Ehrlich, David; Murray, Noel; Grierson, Tim; Collins, Sean (May 4, 2020). "50 Best 'Star Wars' Characters of All Time". Rolling Stone. Retrieved February 5, 2022.
""Return of the Jedi" original Star Wars movie review – 1983". The Denver Post. May 25, 1983. Retrieved March 2, 2021.
Owen, Phil (August 23, 2021). "13 Movies That Had Absolutely Aweful CGI (Photos)". TheWrap. Retrieved March 2, 2022.
Goldberg, Matt (February 10, 2012). "Editorial: It's Time to Make Peace with STAR WARS". Collider. Retrieved March 2, 2022.
Singer, Matt (January 6, 2022). "'Star Wars' Hutts Should Never, Ever Be CGI". ScreenCrush. Retrieved March 2, 2022.
Works cited
Beecroft, Simon; Hidalgo, Pablo (2016). Star Wars Character Encyclopedia: Updated and Expanded (eBook ed.). New York: DK Publishing. ISBN 9781465454966. Archived from the original on January 15, 2023. Retrieved June 21, 2024.
Hidalgo, Pablo; Sansweet, Stephen (2008a). The Complete Star Wars Encyclopedia. Vol. I (First ed.). New York: Del Rey. ISBN 9780345477637.
Hidalgo, Pablo; Sansweet, Stephen (2008b). The Complete Star Wars Encyclopedia. Vol. II (First ed.). New York: Del Rey. ISBN 9780345477637.
Hidalgo, Pablo; Sansweet, Stephen (2008c). The Complete Star Wars Encyclopedia. Vol. III (First ed.). New York: Del Rey. ISBN 9780345477637.
Further reading
Deerwester, Jayme (August 20, 2016). "Carrie Fisher: Trump should play Jabba the Hutt". USA Today. Retrieved March 1, 2022.
Failla, Zak (April 3, 2021). "First Accuser Compares Cuomo Embrace To Star Wars Character". The Daily Voice. Retrieved February 5, 2022.
Kuiper, Koenraad (Spring 1988). "Star Wars: An Imperial Myth". Journal of Popular Culture. 21 (4): 78. doi:10.1111/j.0022-3840.1988.78417.x.
Peckham, Matt (January 24, 2013). "Is This LEGO Star Wars Toy Racist?". Time. Retrieved March 1, 2022.
External links
Jabba the Hutt in the StarWars.com Databank
vte
Star Wars original trilogy
vte
Star Wars prequel trilogy
vte
Star Wars: The Clone Wars
vte
Fictional universe of Star Wars
Portals:
icon Speculative fiction
Film
Categories: Characters created by George LucasDeceased fictional charactersExtraterrestrial supervillainsFictional arms dealersFictional crime bossesFictional criminals in filmsFictional criminals in televisionFictional dictatorsFictional gamblersFictional gangstersFictional gastropodsFictional kidnappersFictional mass murderersFictional slave ownersFilm characters introduced in 1983Film supervillainsMale characters in animated television seriesMale film villainsReturn of the JediStar Wars Skywalker Saga charactersStar Wars: The Clone Wars charactersFictional monsters
This page was last edited on 26 July 2026, at 13:48 (UTC). Page was rendered with Parsoid.
Text is available under the Creative Commons Attribution-ShareAlike 4.0 License; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.
Privacy policyAbout WikipediaDisclaimersContact WikipediaLegal & safety contactsCode of ConductDevelopersStatisticsCookie statementMobile view
Wikimedia Foundation
Powered by MediaWiki
4df2hgs62adl3c4kauiodc7w3pmr5bx
Aros/Platforms/x86 Complete System HCL
0
237398
4656262
4656249
2026-08-04T13:42:52Z
Jeff1138
301139
4656262
wikitext
text/x-wiki
{{ArosNav}}
==Introduction==
This a list of computer hardware tested with mostly native AROS installs and, in the recommended sections, of virtual machines
With 64bit support it is recommended 8Gb ram is needed and that SSE 4.1 and AVX are supported in the CPU i.e. from year 2012 for Intel CPUs and 2013 for AMD CPUs. They are x86-64 instruction sets designed to perform the same operations on multiple data items simultaneously, a technique known as Single Instruction, Multiple Data (SIMD). This allows for increased performance in tasks involving parallel computation. SSE 4.1 is a 128-bit SIMD instruction set, while AVX introduced 256-bit SIMD, further enhancing performance. Some apps require these features to run well, like 3D, multimedia decoding or JIT (javascript) in Odyssey web browser. If not the apps may work slower or might fail.
If you have encountered differently (i.e. problems, incompatibilities, faults, annoyances, environment, errors, review of setup etc) please update this information.
Please bear in mind that AROS has only a few hardware driver developers, whilst Linux counts in the tens and Windows in the hundreds.
[[#Laptops]]
[[#Netbook]]
[[#Desktop Systems]]
[[#AMD Sockets]]
[[#Intel Sockets]]
[[#Recommended hardware (32-bit)]]
[[#Recommended hardware (64-bit)]]
=== Laptops ===
[[#top|...to the top]]
* 2006/2007 Dell Latitude D-series laptops - business class machines, good support in Aros, easy to replace wifi card
* 2006 some [https://www.techradar.com/reviews/pc-mac/laptops-portable-pcs/laptops-and-netbooks/toshiba-satellite-pro-a200-28550/review Satellite Pro A200]
* 2008 For the tiny carry anywhere, the early run of Acer Aspire netbooks
Rough estimate from taking a random laptop notebook what you can expect from a Native install of AROS
{| class="wikitable sortable" width="100%"
! width="10%" |Date
! width="5%" |Overall
! width="5%" |Gfx VESA
! width="5%" |Gfx 2D Acceleration
! width="10%" |Gfx 3D Acceleration
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="10%" |Wireless
! width="20%" |Comments
|-
| Before 2002 || Poor to OK || VESA 90% || 2D 10% || {{N/A}} || Audio 10% || 40% || Wired 70% || 2% || Max RAM 512MB
|-
| 2002-2005 || OK || VESA 95% || 2D 10% || 3D 0% || Audio 30% || 70% || Wired 50% || 10% || Max RAM 2GB (for 32bit)
|-
| 2005-2012 || Good || VESA 98% || 2D 60% || 3D 30% || Audio 40% || 80% || Wired 30% || 10% || Max RAM 3Gb (32bit) to 8GB (64bit)
|-
| 2013-2017 || OK || VESA 98% || 2D 30% || 3D 0% || Audio 30% || 60% once usb3 completed || Wired 20% || 0% || Max RAM 8GB / 16GB better to go Intel / AMD Ryzen over AMD A series
|-
| 2018-2024 || OK || VESA 98% || 2D 20% || 3D 0% || Audio 40% || 40% once usb3 completed || Wired 30% || 0% || Max RAM 32GB better 64bit options if has an internal dvd drive and working ethernet
|-
| 2025-202x || Poor || VESA 95% || 2D 0% || 3D 0% || Audio 0% || 0% || Wired 10% || 0% || Max RAM 64GB AI disruption of previous hardware
|-
|}
3D tests now conducted with apps found in Demos/AROS/Mesa and run at default size (may need to View As -> Show All to see them.
Any laptop with Windows 7(TM) 64bit or higher install, the bios and hard drive set in uefi/gpt mode (install of AROS incompatible)
Most vendor suppliers get OEM (original equipment manufacturers) to make their laptops. These brand name companies purchase their laptops from
*80% ODM (Original Design Manufacturer) such as Quanta, Compal, Wistron, Inventec, Foxconn (Hon Hai), Flextronics and Asus (now Pegatron)
*20% MiTAC, FIC, Arima, Uniwill, ECS, Tonfang Origin and Clevo
{| class="wikitable sortable" width="100%"
| <!--OK-->{{Yes|'''Works well'''}} || <!--May work-->{{Maybe|'''Works a little'''}} || <!--Not working-->{{No|'''Does not work'''}} || <!--Not applicable-->{{N/A|'''N/A not applicable'''}}
|-
|}
====Acer/Gateway/Emachines====
Company founded under the name of Multitech in Taiwan in 1976, renamed to Acer or Acer Group in 1987
Order of build quality (Lowest to highest)
<pre >
Packard Bell
Aspire
Extensa
TimeLine
Travelmate
</pre >
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="2%" |Ethernet
! width="5%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Travelmate 505 506 507 508 Series || <!--Chipset-->P2 Celeron 466Mhz || <!--IDE-->{{Yes|boots}} || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA Neo Magic Magic Graph 128XD (NM2160)}} || <!--Audio-->{{No|AC97 Crystal CS}} || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->1998 minimal support but no audio etc - 506T, 506DX, 507T, 507DX, 508T
|-
| <!--Name-->TravelMate 340 342 343 345 347 || <!--Chipset-->ALi M1621 with piii || <!--IDE--> || <!--SATA--> || <!--Gfx-->Trident Cyber 9525 || <!--Audio-->{{No|ESS ES1969 Solo-1}} || <!--USB-->2 ALi OHCI USB 1.1 || <!--Ethernet-->a few have Intel e100 || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->2000 32bit - 340T, 341T, 342T, 342TV, 343TV, 345T, 347TV
|-
| <!--Name-->TravelMate 350 351 352 353 || <!--Chipset-->Ali with piii || <!--IDE-->{{Yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->Trident Cyber Blade DSTN/Ai1 || <!--Audio-->{{No|ali5451}} || <!--USB-->2 USB 1.1 Ali M5237 OHCI || <!--Ethernet-->e100 || <!--Wireless-->Acer InviLink IEEE 802.11b || <!--Test Distro--> || <!--Comments-->2001 32bit very limited support but no support for PCMCIA O2 Micro OZ6933 - 350T, 351TEV, 352TEV, 353TEV
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->TravelMate 610 series 611 612 613 614 || <!--Chipset-->815 P3 || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->Intel 82815 cgc || <!--Audio-->AC97 || <!--USB-->USB 1.1 || <!--Ethernet-->Intel e100 pro || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->2001 32bit - 610TXVi 610T 611TXV 612TX 613TXC
|-
| Aspire 3003LM || SIS AMD 3000 1.8GHz || {{yes}} || {{N/A}} || {{maybe|SIS AGP M760GX (VESA only)}} || {{yes|AC97 SIS codec}} || 3 USB 2.0 || {{yes|SIS900}} || {{no|Broadcom BCM4318 AirForce One 54g}} || Icaros 1.2.4 || 2003 sempron
|-
| Travelmate 2310 Series ZL6 || Intel Celeron M 360 1.4GHz with SiS 661MX || {{yes}} || {{N/A}} || {{maybe|SiS Mirage M661MX (VESA only)}} || {{yes|SIS SI7012 AC97 with realtek ALC203 codec speakers only}} || || {{yes|SIS900}} || {{N/A|LM version has pci card slot but no antenna}} || 2017 Icaros 2.1.1 || 2004 32bit - No USB boot option but boot from DVD - reports of wifi losing connection (isolate/remove the metallic grounding foil ends of the antennas) - 2312LM_L -
|-
| <!--Name-->Aspire 3000 3002LMi 3500 5000 || <!--Chipset-->AMD CPU W-with SIS M760 || <!--IDE--> || <!--SATA--> || <!--Gfx-->SIS 760 || <!--Audio-->SIS || <!--USB--> || <!--Ethernet-->SIS 900 || <!--Wireless-->{{No|Broadcom BCM4318 swap for Atheros}} || <!--Test Distro--> || <!--Comments-->2005 32bit
|-
| <!--Name-->Aspire 3050 5020 5050 || <!--Chipset-->AMD Single and Turion MK-36 Dual and RS480 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Use VESA - RS482M Xpress 1100 or RS485M Xpress 1150 || <!--Audio-->HD Audio Realtek ALC883 || <!--USB--> || <!--Ethernet-->8139 || <!--Wireless-->Atheros 5006G or Broadcom BCM 4318 || <!--Test Distro--> || <!--Comments-->2005 32bit MK36 gets very hot
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->TravelMate 2410 2420 2430 series || <!--Chipset-->915GM || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel Mobile 915GMS 910GML || <!--Audio-->Intel AC97 ICH6 with ALC203 codec || <!--USB-->4 USB2.0 || <!--Ethernet-->Realtek RTL-8139 || <!--Wireless-->Atheros 5005GS || <!--Test Distro--> || <!--Comments-->2005 32bit 2428AWXMi -
|-
| <!--Name-->Acer Aspire 3610 - WISTRON MORAR 3614WLMI || <!--Chipset-->Intel 915 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Yes|Intel GMA 2D and 3D}} || <!--Audio-->{{yes|[http://www.amiga.org/forums/showpost.php?p=644066&postcount=13 AC97]}} || <!--USB--> || <!--Ethernet-->{{yes|RTL 8139 8139C+}} || <!--Wireless-->{{Maybe|Atheros AR5001X+, AR5BMB5 or Broadcom 4318}} || <!--Test Distro--> Icaros 1.2.4 || <!--Comments-->2005 32bit with good support [http://ubuntuforums.org/showthread.php?p=6205188#post6205188 wifi issues]
|-
| <!--Name-->TravelMate 2480 series 2483 WXMi (HannStar J MV4 94V) 2483NWXCi Aspire 3680, 3690 || <!--Chipset-->940GML i943 with Celeron 430 1.77GHz - 14.1" || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes| }} || <!--Gfx-->{{Yes|2D and 3D openGL 1.x - Tunnel 181 gearbox 104 scores}} || <!--Audio-->{{Yes|HD Audio with ALC883 codec playback}} || <!--USB-->{{Yes|3 USB 2.0}} || <!--Ethernet-->{{No|Marvell 88E8038 yukon sky2}} || <!--Wireless-->{{No|Atheros 5k AR5005G AR5BMB5 mini pci}} suspect laptop hardware issues || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2006 Works well shame about the internet options - noisy fan - poor battery life - no boot option for TI based mass storage sd card - Max 2GB memory - LCD Inverter Board IV12090/T-LF -
|-
| <!--Name-->TravelMate 2490 series 2492WXMi || <!--Chipset-->940GML || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Yes|Intel 945 2D and 3D tunnel 164 gearbox 105}} || <!--Audio-->{{Yes|HD Audio}} || <!--USB--> || <!--Ethernet-->{{Maybe|Broadcom BCM4401}} || <!--Wireless-->{{No|Atheros AR5005GS suspect hardware issue}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2006 32bit - 15inch screen - strange curved up at ends keyboard style - overall plastic construction - Atheros AR5005G(s) -
|-
| <!--Name-->Gateway ML6227B MA7 || <!--Chipset-->Celeron M 520 1.6Ghz with 945GM || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{Yes|945GM 2D and 3D tunnel 169 gearbox 132}} || <!--Audio-->{{No|HDA Intel with STAC9250 codec}} || <!--USB--> || <!--Ethernet-->{{No|Marvell 88E8038}} || <!--Wireless-->{{No|8187L but swap ath5k mini pcie}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2006 15.4 ultrabrite widescreen - Wifi Switch on side Fn/F2 -
|-
| <!--Name-->Acer Aspire 5630-6796 6288 BL50 || <!--Chipset-->T5200 T5500 Intel® Core™2 Duo T7200 T7400 T7600 || <!--IDE-->{{Yes| }} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Yes|Intel® GMA 950 with S-Video out with 2D and 3D}} || <!--Audio-->{{Yes|HDAudio with ALC883? codec}} || <!--USB-->{{Yes|4 USB}} || <!--Ethernet-->{{yes|Broadcom BCM4401}} || <!--Wireless-->{{No|Intel 3945abg swap for Atheros 5K}} || <!--Test Distro-->Tiny AROS || <!--Comments-->2006 - 64bit 39.1 cm (15.4" 1280 x 800) - 2 DDR2-SDRAM slots max 4GB - green mobo?? -
|-
| <!--Name-->Acer Aspire 5633WMLI BL51 || <!--Chipset-->T5500 with Intel® 945PM/GM Express || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE mode}} || <!--Gfx-->{{Yes|Nvidia Go 7300 with 2D and 3D}} || <!--Audio-->{{Yes|HD Audio with Realtek codec}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{yes|Broadcom 440x}} || <!--Wireless-->{{No|Intel 3945 swap for Atheros 5k}} || <!--Test Distro-->Tiny Aros || <!--Comments-->2007 64 bit dual core2 - 15.4 WXGA screen - ddr2 max 4gb - OrbiCam no support - ENE chipset SD card - blue mobo?? -
|-
| <!--Name-->Acer Aspire 9410 9420 || <!--Chipset-->Intel Core Duo with 945PM Express || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes| }} || <!--Gfx-->{{Yes|2D NVIDIA GeForce Go 7300 - 128 MB VRAM G72M}} || <!--Audio-->{{Yes|Intel HD audio with codec}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{Yes|rtl8169 8111 }} || <!--Wireless-->{{No|Intel 3945ABG but could swap with atheros 5k}} || <!--Test Distro-->Icaros 2.3 || <!--Comments-->2007 32bit - 17in TFT 1,440 x 900 WXGA+ - 2 ddr2 sodimm slots max 4gb -
|-
| <!--Name-->eMachines E510 series KAL10 || <!--Chipset-->Intel Celeron M 560 2.13Ghz with PM965 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel x3100 || <!--Audio-->{{Yes|Intel with codec}} || <!--USB-->Intel || <!--Ethernet-->{{No|Broadcom BCM5906M}} || <!--Wireless-->{{No|Atheros G AR5BXB63 bios issue??}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2007 32bit very budget machine with InsydeH20 bios and F10 boot menu
|-
| <!--Name-->ACER Aspire 5920 [http://tim.id.au/laptops/acer/aspire%205920g.pdf 5920G] || <!--Chipset-->Santa Rosa Core 2 Duo T7300 T7500 later T9300 with GM965 and PM965(G) Express || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|use VESA for X3100M or 8600M GS (rev a1) 9500M GT 256MB vram (G) but some AMD/ATI RV635 M86 HD 3650}} || <!--Audio-->{{No|HD Audio with realtek alc268, [https://forums.opensuse.org/t/no-sound-on-acer-aspire-5920g/32392 ALC883] or Realtek ALC1200 / alc888s codec ICH8}} || <!--USB-->{{Yes|USB2 }} || <!--Ethernet-->{{No|Broadcom BCM5787M}} || <!--Wireless-->{{unk|Intel 3945ABG 4965 or Atheros 9k AR9285}} || <!--Test Distro-->Deadwood test iso 2023-01 2023-11 || <!--Comments-->2008 64bit boot with 'noacpi' or 'noioapic' - 15.4in 1280 x 800 pixels 16:10 - BMW Designworks ‘Gemstone’ design - over 3.0kg with options for 8-cell or 6-cell batteries - 2 SODIMM DDR2 667MT/s max 4GB - synaptics touchpad -
|-
| <!--Name-->Acer A0521 Ao721 || Athlon II Neo K125 + AMD M880G || {{N/A}} || {{maybe| }} || {{maybe|ATI Radeon HD 4225 (VESA only)}} || {{No|Conexant}} || {{Maybe| }} || {{no|AR8152 l1c}} || {{unk|AR9285 ath9k}} || AspireOS 1.7 || 2006 64bit possible
|-
| <!--Name--> Extensa 5630Z || <!--Chipset-->T6600 with Intel GL40 Express || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe|IDE mode}} || <!--Gfx--> {{Yes|Intel GMA 4500M HD (2D)}} || <!--Audio--> {{Yes|HD Audio}} || <!--USB--> {{Yes|USB 2.0}} || <!--Ethernet--> {{No|Broadcom BCM 5764M}} || <!--Wireless--> {{No|RaLink RT2860}} || <!--Test Distro--> || <!--Comments-->2008 64bit
|-
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Aspire 5250 series 5253 BZ400 BZ602 || <!--Chipset-->E350 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{no|VESA 2D for AMD HD6310}} || <!--Audio-->{{yes|HDaudio for codec Conexant CX20584}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no|Atheros AR8151}} || <!--Wireless-->{{no|Atheros 9k AR5B97}} || <!--Test Distro--> || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->Aspire V5 V5-121 V5121 AO725 One 725 || <!--Chipset-->AMD C-70 C70 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{no|VESA for AMD 6290G}} || <!--Audio-->{{no|Realtek ALC269 codec}} || <!--USB-->{{yes|2 x USB2}} || <!--Ethernet-->{{no|Broadcom}} || <!--Wireless-->{{no|Broadcom}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->Aspire V5-122P MS2377 || <!--Chipset-->C-70 C70 with M55, AMD A4-1250 or A6 1450 up to 1.4Ghz || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->AMD 8210 || <!--Audio-->{{unk|HDaudio with codec}} || <!--USB-->{{maybe|FCH USB EHCI OHCI}} || <!--Ethernet-->{{Maybe|rtl8169 but LAN/VGA Combo Port Cable (AK.LAVGCA 001) or MiniCP port to Acer Converter Cable (Mini CP to VGA/LAN/USB) (NP.OTH11 00C) needed}} || <!--Wireless-->{{unk|Atheros 9k AR9565}} || <!--Test Distro-->Aros One || <!--Comments-->2012 64bit but no sse4 or avx - 26w battery internal, extension possible - 11.6in 1366 x 768 ips touchscreen - 7mm hd ssd - 2gb ddr3l soldered with 1 slot free max 4GB - bios hacking needed for virtualisation -
|-
| <!--Name-->Packard Bell EasyNote TE69 TE69KB 522 || <!--Chipset-->slow E1-2500, E2-3800 2c2t Dual or A4-5000 4c4t Quad both soldered BGA769 (FT3) on Hudson-2 FCH || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe|Use IDE mode}} setting AHCI to IDE mode - boots if UEFI set to Legacy || <!--Gfx-->{{Maybe|VESA 2D for ATI Radeon 8120 8240, 8320, 8330 or 8280 islands}} || <!--Audio-->{{Yes|HDAudio with ALC282 0x10ec, 0x0282 codec but not HDMI}} || <!--USB-->{{Yes|Bios, Boot, set Boot mode to Legacy, nothing from USB3}} || <!--Ethernet-->{{No|Atheros AR8171 AR8175 or Broadcom BCM57780}} || <!--Wireless-->{{unk|Atheros AR9565 0x1969 0x10a1}} || <!--Test Distro-->Aspire OS Xenon and AROS One 1.6 usb || <!--Comments-->2013 64bit with sse4.1 and AVX - 15.6in washed out screen big netbook - Boots with noacpi after using F2 to enter EFI firmware and f12 boot device - 2 ddr3 sodimm slots max 16Gb -
|-
| <!--Name-->ASPIRE Acer Aspire ES1-520 521 522 Series N15C4 ES1-523 || <!--Chipset-->AMD AMD E1-7010, A8-7410 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{partial|VESA for RADEON R5}} || <!--Audio-->{{no|Realtek ALC 233 or CX20752 HD AUDIO CODEC}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{no|Atheros AR8151 Gigabit or Broadcom 590x}} || <!--Wireless-->{{no|Realtek RTL8187 or 8812BU}} || <!--Test Distro-->Aros One || <!--Comments-->2015 64bit with sse4.1 and AVX - 2 ddr3l slots - keyboard connected to top case -
|-
| <!--Name-->Acer Aspire V15 NITRO Black edition || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->GTX 860M || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2015 64bit
|-
| <!--Name-->Predator 15 (G9-591-) (G9-593-72VT) || <!--Chipset-->Intel i7-6700HQ || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->GTX 960M to 980M, GTX 1060 || <!--Audio-->{{unk|HDAudio with Realtek ALC255 @ Intel Sunrise Point PCH High Definition Audio Controller}} || <!--USB-->USB3 || <!--Ethernet-->{{no| }} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2015 64bit -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Nitro 5 an515-42 || <!--Chipset-->Ryzen 2500u || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->AMD rx560x || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2018 64bit -
|-
| <!--Name-->aspire 3 A315-41 || <!--Chipset-->Ryzen 2500u || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->AMD Vega || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2018 64bit -
|-
| <!--Name-->swift 3 sf315-41 || <!--Chipset-->Ryzen 2500u || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->AMD Vega || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2018 64bit -
|-
| <!--Name-->Acer Aspire 3 A315-23 || <!--Chipset-->AMD Ryzen 3020e, r3 3200u || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD || <!--Audio-->{{unk|HDAudio with codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe| }} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2019 64bit -
|-
| <!--Name-->Aspire 3, 5 A515-44-R0ZN || <!--Chipset-->AMD Ryzen 5 4500u || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{unk|HDAudio with ALC codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2020 64bit - 14in or 15.6" 1080p - 19v round charging - [https://www.youtube.com/watch?v=vr0tC3QJWxk repair], 4gb soldered with 1 ddr4 sodimm slot -
|-
| <!--Name-->Swift 3 SF314-42 series N19C4 , Swift SF315-4 || <!--Chipset-->Ryzen 5 4500U, 7 4700U|| <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD || <!--Audio-->{{unk|HDAudio with codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2020 64bit 1080p - small round ac 19v 3.42A or usb-c - mobo FH4FR LA-J731P -
|-
| <!--Name-->Acer Swift 3 SF314-43, Swift SF315-41 || <!--Chipset-->Ryzen 7 5700U || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD || <!--Audio-->{{unk|HDAudio with codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2021 64bit 1080p - small round ac or usb-c -
|-
| <!--Name-->Aspire 5 A515-45 || <!--Chipset-->r7 5700U || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->AMD || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2021 64bit - 15.6in 1080p - asus round ac -
|-
| <!--Name-->Aspire 5 A515-47 || <!--Chipset-->ryzen 5 5625U, || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->AMD || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2021 64bit - 15.6in 1080p - asus round ac -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Asus====
[[#top|...to the top]]
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Asus L8400-K Medion MD9467 || <!--Chipset-->Intel desktop 850MHz || <!--IDE--> || <!--SATA--> || <!--Gfx-->S3 Savage MX || <!--Audio-->{{No|ESS allegro 1988}} || <!--USB--> || <!--Ethernet-->Realtek 8139 || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2001 32bit
|-
| <!--Name-->Asus L2000 L2400 L2D Series Medion 9675 || <!--Chipset-->Athlon 4 mobile || <!--IDE--> || <!--SATA--> || <!--Gfx-->use vesa sis630 || <!--Audio-->{{No|sis7018}} || <!--USB--> || <!--Ethernet-->sis900 || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2002 32bit
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->x51R X51RL || <!--Chipset-->Duo T2250 T2330 with RS480 || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->{{Maybe|use VESA RC410 [Radeon Xpress 200M]}} || <!--Audio-->{{Yes|HD with codec}} || <!--USB-->{{Maybe|boots and detects}} || <!--Ethernet-->{{Yes|RTL-8139}} || <!--Wireless-->{{No|Atheros AR5006EG AR5111 ath5k AzureWave AW-GE780 - could be ATI Chipset}} || <!--Test Distro-->Icaros 2.2, deadwood 2021, || <!--Comments-->2003 32bit 15.4 WXGA - 19v barrel - ESC boot select - F2 bios -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Asus R2H Ultra Mobile PC UMPC || <!--Chipset-->Celeron 900Mhz 910GML || <!--IDE--> || <!--SATA--> || <!--Gfx-->GMA900 || <!--Audio-->Ac97 ALC880 || <!--USB--> || <!--Ethernet-->realtek 8169 8101e || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2004 32bit [https://www.youtube.com/watch?v=Jm4fOrqyj3g boots]
|-
| <!--Name-->Asus A3 series A3F Ergo Ensis 211 RM || <!--Chipset-->P-M 1.6GHz to Core Duo with 950 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 945 || <!--Audio-->Ac97 ALC655 || <!--USB--> || <!--Ethernet-->Realtek 8100CL 10/100 || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2004 32bit only
|-
| <!--Name-->Z33 || <!--Chipset-->915 || <!--IDE--> || <!--SATA--> || <!--Gfx-->915GM || <!--Audio-->HD Audio ALC880 || <!--USB--> || <!--Ethernet-->Realtek 8139 || <!--Wireless-->Intel 2915ABG || <!--Test Distro--> || <!--Comments-->2005 32bit Z33A Z33AE N5M N5A
|-
| Z70A Z70V Z70Va M6A z7000 z7000a || i915 + ICH6 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{yes|mobile 915GML}} || <!--Audio-->{{no|ICH6 HD Audio}} || <!--USB-->{{yes|USB2.0}} || <!--Ethernet-->{{no|Marvell 88E8001}} || {{no|Intel PRO 2200BG Fn / F2}} || Icaros 1.3 || 2005 32bit
|-
| [http://www.progweb.com/en/2010/09/linux-sur-un-portable-asus-a6jm/ A6jm] A6JC || 945GM || IDE || SATA || {{yes|nVidia GeForce Go 7600 G70}} || {{no|HD Audio}} || {{yes|USB}} || {{yes|RTL8111 8168B}} || {{no|Intel 3945 ABG}} || Icaros 1.2.4 || 2006 32bit only
|-
| <!--Name-->F3Jc || <!--Chipset-->945PM || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->G72M Quadro NVS 110M, GeForce Go 7300 || <!--Audio-->D audio || <!--USB--> || <!--Ethernet-->realtek 8169 8111 || <!--Wireless-->Intel 3945 || <!--Test Distro--> || <!--Comments-->2007 32bit -
|-
| <!--Name-->X50GL F5GL || <!--Chipset-->T5800 with 965 || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe}} || <!--Gfx-->{{Maybe|use VESA 2d - Nvidia 8200M G84 runs hot}} || <!--Audio-->{{No|HD Audio MCP79 with codec}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|MCP79}} || <!--Wireless-->{{No|Atheros AR5B91 AW-NE77}} || <!--Test Distro-->Icaros 2.2 || <!--Comments-->2008 64bit not much support no display with nouveau - 19v barrel - ddr2 max 4gb -
|-
| <!--Name-->ASUS G50 & G51 series G50V G50Vt G51V G51VX G51J G51Jx G50VT X1 X5 ROG || <!--Chipset-->AMD64 with MCP71 || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes}} || <!--Gfx-->nVidia GeForce 9800M GS (G94M) up to GT200 [GeForce GTX 260M] (G92M) || <!--Audio-->Nvidia HD Audio with codec || <!--USB--> || <!--Ethernet-->{{No|Atheros L1C atl1c}} || <!--Wireless-->Atheros G or Intel || <!--Test Distro-->Icaros 2.3 || <!--Comments-->2009 64bit not all GPUs are failing but a much higher % failing early, 8x00 and 9x00 G84, G86, G92, G94, and G96 series chips dying - ddr2 max 4gb -
|-
| <!--Name-->M50V M50 series || <!--Chipset-->Intel Core 2 Duo P8400 or T9400 with Intel PM45 ICH9 || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|BIOS set to compatibility IDE mode}} || <!--Gfx-->NVIDIA GeForce 9600M GS or 9650M GT || <!--Audio-->HDAudio with Realtek ALC663 || <!--USB-->USB2 || <!--Ethernet-->{{Yes|rtl8169 realtek 8169 8111C}} || <!--Wireless-->{{unk|Intel 5100 or Atheros AR928X}}|| <!--Test Distro-->AROS One 2.0 USB || <!--Comments-->2009 64bit - 15.40 inch 16:10, 1680 x 1050 glossy - the "Infusion" design - heavy 3kg - ddr2 ram max 4gb -
|-
| <!--Name-->Series F9 F9E F9dc F9f F9j F9s || <!--Chipset-->965GM || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{maybe|Vesa}} || <!--Audio-->{{yes|HD Audio ALC660 playback}} || <!--USB-->{{yes|works}} || <!--Ethernet-->{{yes|RTL8169 }} || <!--Wireless-->{{no|intel 3495 not working}} || <!--Test Distro-->Icaros 1.41 || <!--Comments-->2009 64bit - ddr2 max 4gb -
|-
| P52F SO006X || i3-370M || IDE || SATA || {{yes|nVidia G92 [GeForce 9800 GT] (2D)}} || {{no|Intel HD Audio}} || {{yes|2 USB2.0}} || {{no|Atheros AR8121 AR8113 AR8114 (l1e)}} || {{dunno}} || Icaros 1.3 || 2010 64bit - ddr3 slot -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Asus
* X53U MB Ver K53U or K52U Asus K53U MB Ver K53U
* A53U XT2 X53B MB ver: K53BY (compal)
|| <!--Chipset-->Slow atom like speed E-350 (2011), E-450 (2011) on AMD M780G, much slower C-50 C50 (2012), C-60 C60 on the AMD A50M dark brown plastic build || <!--IDE-->{{N/A|}} || <!--SATA-->{{yes|Set IN Bios IDE MODE}} || <!--Gfx-->{{Maybe|use VESA ATi 6310M, 6320M later 6250M or 6290M}} || <!--Audio-->{{Yes|HD audio with alc269 codec Altec Lansing® Speakers}} || <!--USB-->{{Yes|3 x USB2}} || <!--Ethernet-->{{Unk|rtl8169 with RTL8111 phy}} || <!--Wireless-->{{unk|Atheros half height ar9285}} || <!--Test Distro-->2016 Icaros 2.1.2 and 2018 AROS One 1.6 USB || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 - 15.6in 1368 x 768 dull 50% srgb screen - f2 bios setup, esc boot drive - 5200 or 7800 mAh battery covers ASUS K53S K53E X54C X53S K84L X53SV X54HR K53F X53U laptops - 2 DDR3L slots max 8Gb - 19v barrel 5.5 / 2.5 mm -
|-
| <!--Name-->Asus K53T, Asus A53Z X53Z
|| <!--Chipset-->AMD A4-3305M on AMD M780G, A6-3420M dark brown plastic build || <!--IDE-->{{N/A|}} || <!--SATA-->{{yes|Set IN Bios IDE MODE}} || <!--Gfx-->{{Maybe|VESA 2D for AMD 6520G, 7670M}} || <!--Audio-->{{Yes|HD audio with codec}} || <!--USB-->{{Yes|3 x USB2}} || <!--Ethernet-->{{Yes|rtl8169 with RTL8111 phy}} || <!--Wireless-->{{No|Atheros half height}} || <!--Test Distro-->AROS One USB || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - 15.6in 1368 x 768 dull 50% srgb screen - f2 bios setup, esc boot drive - 2 DDR3L slots max 8Gb - 19v barrel 5.5 / 2.5 mm - Altec Lansing® Speakers -
|-
| <!--Name-->X55U X401U X501U 1225B || <!--Chipset-->slow C-60 C60, C-70 C70 or E1 1200 E2 1800 || <!--IDE--> || <!--SATA--> || <!--Gfx-->6290G || <!--Audio-->{{No| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->Realtek 8111 8169 || <!--Wireless-->{{unk| Atheros AR9485}} || <!--Test Distro--> || <!--Comments-->2013 64bit does not support AVX or SSE 4.1 - 11.6" display - ram soldered -
|-
| <!--Name-->Asus A43TA A53TA K53TA XE2 A73T || <!--Chipset-->AMD A4-3300M, A6 3400M (laptop chip) || <!--IDE-->{{N/A|}} || <!--SATA-->{{yes|Set IN Bios IDE MODE}} || <!--Gfx-->{{Maybe|use VESA AMD Radeon HD 6520G Integrated + HD 6470M (1GB GDDR3)}} || <!--Audio-->{{yes| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{Unk|}} || <!--Wireless-->{{No|Atheros}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - f2 bios setup, esc boot drive -
|-
| <!--Name-->X102BA || <!--Chipset-->Llano E1 1200 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes|ide bios setting}} || <!--Gfx-->Radeon HD 8180 || <!--Audio-->{{No| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->RTL8101E RTL8102E || <!--Wireless-->{{unk| Qualcomm Atheros AR9485}} || <!--Test Distro--> || <!--Comments-->2013 64bit does not support AVX or SSE 4.1 - 10.1” Touchscreen - special asus 45w ac adapter -
|-
| <!--Name-->K55N, K75DE || <!--Chipset-->AMD a6 4400M A8 4500M || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->AMD 7640G || <!--Audio-->HD Audio with ALC codec none through ATi Trinity HDMI || <!--USB-->{{maybe| }} || <!--Ethernet-->rtl8169 || <!--Wireless-->{{unk| Atheros AR9485}} || <!--Test Distro--> || <!--Comments-->2013 64bit does support AVX or SSE 4.1 - 17.3-inch -
|-
| <!--Name-->X452EA X552EA F552E || <!--Chipset-->AMD E1 2100 or A4 5000M A8 4500M A10 4600M with A || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA for AMD ATI Sun XT Radeon HD 8330 8670A 8670M 8690M}} || <!--Audio-->{{Yes|AMD FCH Azalia rev 02 with ALC898 codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{{Yes|Realtek RTL8111 8168 8411}} || <!--Wireless-->{{unk|Atheros AR9485}} || <!--Test Distro-->2016 Icaros 2.1 || <!--Comments-->2013 64bit may support avx kabini trinity -
|-
| <!--Name-->Asus ROG G751GY || <!--Chipset-->Intel i7-4720HQ || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->GTX 980M || <!--Audio-->HDAudio || <!--USB-->USB3 || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2014 64bit -
|-
| <!--Name-->Asus ROG G752VY || <!--Chipset-->Intel i7-6700HQ || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->GTX 980M || <!--Audio-->HDAudio || <!--USB-->USB3 || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2015 64bit -
|-
| <!--Name-->Asus X555Y || <!--Chipset-->AMD A6-7210 A8-7410 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|2.5" and mSATA form factors using SATA Rev 3.0 interface }} || <!--Gfx-->{{Maybe|VESA 2D for AMD R5}} || <!--Audio-->{{unk|HD Audio codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{Maybe|rtl8169 Realtek}} || <!--Wireless-->{{no| }}Realtek || <!--Test Distro--> || <!--Comments-->2015 64bit does support AVX or SSE 4.1 - 4gb soldered with 1 ddr3 slot - silver-colored plastic - internal battery -
|-
| <!--Name-->Asus X555B X555DG X555S X555U X555YI X555LAB || <!--Chipset-->Intel Core i5-4210U to || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|2.5" and mSATA form factors using SATA Rev 3.0 interface }} || <!--Gfx-->{{Maybe|VESA 2D for Intel}} || <!--Audio-->{{No|HDAudio with coxenant and realtek alc codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{Maybe|Realtek}} || <!--Wireless-->{{no| }}Realtek || <!--Test Distro--> || <!--Comments-->2015 64bit does support AVX or SSE 4.1 - 4gb soldered with 1 ddr3 slot - silver-colored plastic - internal battery -
|-
| <!--Name-->Asus X555D || <!--Chipset-->AMD A10-8700P || <!--IDE-->{{N/A}} || <!--SATA-->{{unk|2.5" and mSATA form factors using SATA Rev 3.0 interface }} || <!--Gfx-->{{Maybe|VESA 2D for AMD R6}} || <!--Audio-->{{unk|HD Audio codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|Realtek}} || <!--Wireless-->{{No|Realtek}} || <!--Test Distro--> || <!--Comments-->2016 64bit - 15.6in 1366 x 768 - 4gb soldered with 1 ddr3 slot - silver-coloured plastic - internal battery - keyboard swap problematic -
|-
| <!--Name-->ASUS X555Q || <!--Chipset-->AMD® Bristol Ridge A10-9600P 7th Gen, A12-9720p || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|2.5" and mSATA form factors using SATA Rev 3.0 interface}} || <!--Gfx-->{{Maybe|R5 + Radeon™ R6 M435DX Dual Graphics with VRAM GCN 3}} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no|Realtek 8821AE}} || <!--Test Distro--> || <!--Comments-->2017 64bit - FHD 15.6 1920x1080 - 37W battery internal - 4gb soldered with 1 ddr3 slot - internal battery -
|-
| <!--Name-->ASUS M509ba || <!--Chipset-->AMD A9-9425 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|2.5" and mSATA form factors using SATA Rev 3.0 interface}} || <!--Gfx-->{{Maybe|Vesa 2d for RADEON R5}} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2020 64bit - 15.6in 1366 x 768 - 1 ddr4 sodimm slot max 16Gb - 19VDC 2.37A Max 45W 4.0mm x 1.35mm - keyboard swap problematic -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->ExpertBook P1410, ASUS ExpertBook P1 P1510CD, Expertbook Y1511CD || <!--Chipset-->Ryzen 3 3200U, Ryzen 5 3500U || <!--IDE-->{{N/A}} || <!--SATA-->Nvme || <!--Gfx-->{{Maybe|Vesa 2d for AMD}} || <!--Audio-->{{unk|HDaudio with codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2019 64bit 14in or 15.6in 768p to 1080p - keyboard swap problematic - 19V 3.42A asus barrel connector 4.0MM X 1.35MM 4phi -
|-
| <!--Name-->ASUSTeK ASUS EXPERTBOOK L1 L1400CDA, L1500CDA - 19v 3.42a 4.5phi Barrel with centre pin Outer 4.5mm Inner 3mm asus special untested EXA1203XH, EXA1203YH, EXA1208UH, PA-1650-30, PA-1650-78, PA-1650-93, ADP-65GD B, ADP-65DW B (Euro) || <!--Chipset-->'''tested''' Ryzen 5 3500U - '''untested''' Ryzen 3 3200U, 3250U || <!--IDE-->{{N/A}} || <!--SATA-->{{no|1 Nvme m.2 slot will not boot with sata3 m.2, optional 1 sata hdd with ribbon cable, no dvd drive}} || <!--Gfx-->{{Maybe|Vesa 2d for AMD vega 3, 8}} || <!--Audio-->{{unk|HDaudio 0x15de 0x15e3 with ALC256 codec 0x10ec 0x0256}} || <!--USB-->{{maybe|USB3 1 usb-c and 3 usb-a }} || <!--Ethernet-->{{maybe|rtl8169 Realtek RTL8111HSH-CG }} || <!--Wireless-->{{No| }} || <!--Test Distro-->3500U with AROS One 64bit 1.2 usb installed to m.2 sata on another machine || <!--Comments-->2019 64bit 14in or 15.6in 1080p - keyboard swap problematic - up to 8Gb ddr4 sodimm soldered on board and 1 slot - micro sd card slot on some models - 42Whr B31N1915 C31N1915 C31N2204 - hold down F2 and press power for bios setup -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
==== Dell ====
[[#top|...to the top]]
Order of build quality (Lowest to highest)
<pre >
Studio
Inspiron
Vostro
XPS
Alienware
Precision
Latitude
</pre >
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="10%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="5%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Latitude CP 233GT, CPi d233xt d266xt D300XT a366xt, CPt S400GT S500GT S550GT S600GT S700ST, CPt C333GT C400GT || <!--Chipset-->Neo Magic || <!--IDE--> || <!--SATA--> || <!--Gfx-->Use VESA - Neo magic Magic Media 2160 2360 256ZX || <!--Audio-->{{No|crystal pnp 4237b or magic media 256zx sound nm2360}} || <!--USB-->USB 1.1 || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->1998 32bit Low-Density 16-chip 144p 144-pin 32Mx64 3.3V SODIMM -
|-
| <!--Name-->Dell Latitude CPx H450GT H500GT H Series, CPt V433GT V466GT V600, Inspiron 5000 || <!--Chipset-->Intel 440BX with Pentium 3M (CPx) or Celeron (CPt) || <!--IDE-->{{{Yes| }} || <!--SATA-->{{N/A| }} || <!--Gfx-->{{Maybe|Use Vesa - ATi Rage Pro Mobility M1}} || <!--Audio-->{{No|ESS ES1978 Maestro 2E Canyon 3D}} || <!--USB-->{{Yes|1 slot 1.1 only}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{N/A| }} || <!--Test Distro-->NB May 2013 || <!--Comments-->1998 32bit - 3 pin PA-6 PA6 power adapter plug - CDROM DVD Cxxx family media bay accessories untested
|-
| <!--Name-->Latitude C500 C600 (Quanta TM6) Inspiron 4000 7500, CPx J Series || <!--Chipset-->440BX ZX/DX || <!--IDE-->{{yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{partial|ATI Rage 128Pro Mobility M3 (VESA only)}} || <!--Audio-->{{no|ES1983S Maestro 3i}} || <!--USB-->{{yes|USB 1.1 only}} || <!--Ethernet-->{{N/A|some models had mini pci e100}}|| <!--Wireless-->{{N/A|a few came with internal antenna wiring}} || <!--Test Distro--> || <!--Opinion-->1999 square 3 pin charger PA9 PA-9 - C/Dock II untested - C/Port untested - Parallel to Floppy cable untested - CPx J600GT J650GT J700GT J750GT J800GT J850GT
|-
| <!--Name-->Latitude C510 C610 Insprion 4100 PP01L 2600 || <!--Chipset-->i830 and 1GHz+ P3-M || <!--IDE-->{{yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{partial|use VESA - ATI Radeon Mobility M6}} || <!--Audio-->{{No|AC97 CS4205}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{yes|3Com Etherlink}} || <!--Wireless-->{{Maybe|internal antenna wiring for an Atheros mini pci card}} || <!--Test Distro--> || <!--Opinion-->2000 poor build quality - hard to find in good working order
|-
| <!--Name-->Latitude C400 || <!--Chipset-->Intel 830 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA Intel 830 CGC}} || <!--Audio-->{{No|ac97 Crystal 4205}} || <!--USB--> || <!--Ethernet-->{{Yes|3Com 3c905C TX/TX-M}} || <!--Wireless-->{{N/A| }} || <!--Test Distro--> || <!--Comments-->2000 Slim for the time - no media bays
|-
| <!--Name-->Latitude C640 (Quanta TM8) C840 Inspiron 8k2 8200 i8200 precision m50 || <!--Chipset-->P4M with 845EP || <!--IDE--> || <!--SATA--> || <!--Gfx-->use VESA if ATi - use nouveau if 64mb Nvidia Gforce 4 440 Go || <!--Audio-->AC97 CS4205 || <!--USB--> || <!--Ethernet-->3com 905c || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2001 C640 had one fan so was noisy and hot - C840 had 2 fans and ran slightly cooler but fan noise louder
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| Latitude D400 || P-M 82845 || {{yes|82801 ide}} || {{N/A}} || {{partial|VESA only}} || {{yes|AC97 Audio playback only}} || {{maybe|USB 2.0}} || {{maybe|PRO 100 VM (KM)}} || {{no|BCM4318 AirForce one 54g replace with atheros 5k mini pci}} || <!--Test Distro--> Icaros 1.2.4 || 2003 32bit might boot from USB stick but won't boot from USB-DVD - no sd card slot - power plug style -
|-
| Latitude D500 / D505 PP10L, Inspiron 510m
|| 855GME
* revA00
* revA03
* revA06
| {{yes|IDE but needs the Dell adapter}} || {{N/A}} || {{partial|855GM Gfx (VESA only)}} || {{Yes|Intel AC97 with IDT STAC 9750 codec playback head phones only}} || {{maybe| }} || {{yes|Intel PRO 100 VE}} || {{no|Broadcom BCM4306 but exchange with atheros g in panel on laptop bottom}} || <!--Test Distro-->2016 Icaros 2.1.1 || 2003 - 14 / 15 inch XGA 4:3 screen - plastic build - no sd card slot - boots from bay optical drive - not powering on/off with ac adapter is a [http://www.geekzone.co.nz/forums.asp?forumid=37&topicid=30585 mobo fault of PC13 SMT 1206 ceramic cap hot] suggest [http://www.die4laser.com/D505fix/ 0.1uF 50V instead] - pc2700 333Mhz ram 1Gb max -
|-
| Latitude D505 (some) || VIA VT8237 VX700 || {{yes|IDE}} || || {{partial|VESA 2d on ATI RV350 Radeon 9550}} || {{no|VIA AC97 with codec}} || {{maybe|VIA USB glitchy}} || {{yes|VIA VT6102 Rhine-II}} || {{no|Intel 2200g Calexico2}} || <!--Test Distro--> || 2003 32bit little support - diagnostics pressing holding the Fn key, press the Power ON button (battery removed). Check the LEDs pattern - cmos battery behind flap in laptop battery slot -
|-
| <!--Name-->Inspiron 1000 || <!--Chipset-->SIS || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->{{maybe|use VESA SIS}} || <!--Audio-->{{Yes|AC97 SIS with AD1981B codec playback}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{Yes|SIS 900 but}} || <!--Wireless-->{{N/A}} || <!--Test Distro-->2016 Icaros 2.1 || <!--Comments-->2004 32bit [https://forum.level1techs.com/t/my-time-with-icaros-desktop-and-what-i-am-doing-as-a-dev-contributor-also-some-other-shit/113358 aremis using it]
|-
| <!--Name-->Inspiron 1100 PP07L || <!--Chipset-->845 || <!--IDE-->{{Yes| }} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Maybe|use VESA Intel 845G}} || <!--Audio-->{{Yes|AC'97 playback}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{Maybe|Broadcom 4401}} || <!--Wireless--> || <!--Test Distro-->Icaros 1.5 || <!--Comments-->2004
|-
| <!--Name-->Inspiron 8500 5150 || <!--Chipset-->P4 855GM || <!--IDE-->{{Yes| }} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Yes|Nvidia 5200 Go - VESA if intel gfx}} || <!--Audio-->{{Yes|MCP AC97 with SigmaTel 9750}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{Yes|Broadcom 440x}} || <!--Wireless-->{{No|Broadcom 4306 rev 02 use Atheros Mini PCI}} || <!--Test Distro-->Icaros 2.3 || <!--Comments-->2004 32bit P4 runs well but hot
|-
| Latitude X300 PP04S small, slim and light case
|| 855GME
* revA00 Intel ULV 1.2 Ghz
* revA01 Intel ULV 1.4Ghz
| {{yes|IDE internal and will boot cd/dvd through dock PR04S}} || {{N/A}} || {{partial|855GM Gfx (VESA only)}} || {{Yes|Intel AC97 with STAC 97xx codec but no audio out of the dock}} || {{maybe|works but dock usb ports and usb DVD PD01S not detected}} || {{No|Broadcom BCM5705M gigabit}} || {{no|Broadcom BCM4306 later intel - replace with atheros in the underside}} || <!--Test Distro-->2016 Icaros 2.1.1, 2020 AROS One 1.6 usb, || 2003 12.1" 1024 x 768 - 19.5v PA-10 or PA-12 dell - ACPI works but bad s3 ram suspend sleep - no sd card boot - 1Gb max sodimm ddr 2700
|-
| <!--Name-->Latitude D600 (Quanta JM2) PP05L - 600m
|| <!--Chipset-->82855 PM i855
* reva00
* revA01
* revA02
* revA03
* revA04
| <!--IDE--> {{yes}} || <!--SATA--> {{N/A}} || <!--Gfx-->{{Maybe|Use VESA - ATI Radeon RV250 Mobility FireGL 9000}} || <!--Audio-->{{Yes|AC97 - STAC 9750}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no|Broadcom BCM5705}} || <!--Wireless-->{{no|Intel 2100 or Broadcom BCM4306 - swap for Atheros panel in base}} || <!--Test Distro-->2011 Icaros 1.3 and [http://www.amiga.org/forums/archive/index.php/t-62187.html 1.4.1 and 2016 2.1.1] || <!--Opinion-->2003 32bit 14inch using pc2100 memory with Caps light blinking is usually a memory error - Dell D505 D600 power up pressing the case docking port -
|-
| <!--Name-->Latitude D600 (Quanta JM2) || <!--Chipset-->82855 PM i855 || <!--IDE--> {{yes}} || <!--SATA--> {{N/A}} || <!--Gfx-->{{Yes|2D only vidia NV28 GeForce4 Ti 4200 Go 5200 Go 5650 Go}} || <!--Audio-->{{Yes|AC97 - STAC 9750}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no|Broadcom BCM5705}} || <!--Wireless-->{{no|Broadcom BCM4306 mini pci - swap for Atheros}} || <!--Test Distro--> Icaros 1.3 and [http://www.amiga.org/forums/archive/index.php/t-62187.html 1.4.1] || <!--Opinion-->2003 32bit 14" - solder joints on the bios chip (press down f7/f8 keys) - RAM clean with eraser - memory cover plate maybe apply some pressure -
|-
| <!--Name-->D800 (Compal LA-1901) || <!--Chipset-->Intel 855 || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio-->AC97 || <!--USB-->{{maybe| }} || <!--Ethernet-->Broadcom 570x || <!--Wireless-->Broadcom 4309 || <!--Test Distro--> || <!--Comments-->2004 32bit - trackpoint type pointing device -
|-
| <!--Name-->D800 || <!--Chipset-->Intel 855 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{No|Nvidia }} || <!--Audio-->AC97 || <!--USB-->{{maybe| }} || <!--Ethernet-->Broadcom 570x || <!--Wireless-->Broadcom 4309 || <!--Test Distro--> || <!--Comments-->2004 32bit 15inch 39cm
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Inspiron 1200 2200 PP10S Latitude 110L m350 1.3Ghz || <!--Chipset-->Intel 915GM || <!--IDE--> {{yes|UDMA boots cd or DVD and installs to HDisk}} || <!--SATA--> {{N/A}}|| <!--Gfx-->{{yes|Intel GMA900 (2D and 3D openGL 1.x) Gearbox 56}} || <!--Audio-->{{yes|Intel AC97 playback only}} || <!--USB-->{{maybe|USB 2.0}} || <!--Ethernet-->{{yes|Intel PRO 100 VE}} || <!--Wireless-->{{no|BroadCom BCM4318 - swap for Atheros mini PCI in base panel}} || <!--Test Distro-->Icaros 1.4.5 || <!--Comments-->2005 single core 32bit 14" 4:3 1024 768 XGA screen - heavy 6 lbs - PA16 barrel 19V 3.16A AC adapter - battery life 4cell 29WHr lasts 2 hours - 256mb soldered with 1 ddr pc2100 sodimm 1gb max -
|-
| <!--Name-->Inspiron 1300 business B130 home PP21L Latitude 120L B120 by Compal - Inspiron 630m || <!--Chipset-->Intel Celeron M360 1.4GHz, M370 1.50 GHz, M380 1.73GHz || <!--IDE-->{{Yes|boots cd or DVD and installs to HDisk}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Yes|GMA 915 2D and 3D openGL 1.x tunnel 172 gearbox 70}} || <!--Audio-->{{Yes|HD Audio playback ear phones only}} || <!--USB-->{{maybe|works but waiting boot fail with AROS One usb version}} || <!--Ethernet-->{{Yes|Broadcom 440x}} || <!--Wireless-->{{No|intel 2200 or BCM4318 swap for Atheros mini pci underside - one antenna lead for main wifi}} || <!--Test Distro-->2016 Icaros 2.1.2, 2020 AROS One 1.6 usb, || <!--Comments-->2005 32bit single core - 14.1″ XGA 4:3 or 15.4" WXGA wide 1280 x 800 matte - ddr2 sodimm ram 2gb max - PA-16 19v psu tip 7.4mm * 5mm - f10 boot select f1 f2 bios
|-
| Latitude X1 PP05S || PP-M GMA915 rev A00 1.1GHz non-pae || {{yes|ide 1.8in zif/ce under keyboard}} || {{N/A}} || {{Maybe|Vesa for Intel 915GM}} || {{yes|AC97 6.6 playback only with STAC codec}} || {{maybe|USB 2.0 but partial boot to blank screen}} || {{No|Broadcom 5751}} || {{no|Intel 2200BG - swap for Atheros mini pci under keyboard palm rest - disassembly of all laptop}} || <!--Test Distro-->Icaros 2.3 dvd iso image virtualbox'd onto usb, Aros One 1.5 and 1.8 usb (2022) || 2005 32bit 12.1" 4:3 1024 x 768 - sd slot not bootable - 256mb soldered to board and 1 sodimm max 1GB ddr2 under keyboard - F12 bios boot F2 - pa-17 pa17 19v octagonal psu port
|-
| Latitude D410 PP06S
*rev A00
*A01, A02
*A03
|| GMA915 1.6GHz Pentium® M 730, 1.7GHz, 750 1.86GHz & 760 2.0GHz, 770 2.13GHz || {{yes|caddy and adapter needed 2.5" - remove hdd and write}} || {{N/A}} || {{Yes|Intel 915GM 2D and 3D OpenGL 1.3 tunnel 170 and gearbox 75}} || {{yes|AC97 playback only with STAC 9751 codec}} || {{maybe|works but will not boot from USB-DVD or AROS One 1.5 usb version}} || {{No|Broadcom 5751}} || {{no|Intel 2915ABG or later 2200BG - swap for Atheros mini pci under keyboard}} || <!--Test Distro-->2015 Icaros 1.4, 2016 2.1.1 and AROS One 1.5 usb, || 2005 32bit 12.1" 4:3 1024 x 768 - no sd card slot - PR06S dock base
|-
| <!--Name-->Latitude D510 (Quanta DM1) || <!--Chipset-->915GM socket 479 || <!--IDE--> {{N/A}} || <!--SATA--> {{partial|IDE mode}}|| <!--Gfx-->{{yes|Intel GMA 915 2D and 3D}} || <!--Audio-->{{Yes|AC97 STAC 975x}} || <!--USB--> {{maybe|USB 2.0}} || <!--Ethernet-->{{no|Broadcom BCM5751}} || <!--Wireless-->{{no|Intel PRO Wireless 2200BG swap Atheros mini pci in base}} || <!--Test Distro--> || <!--Comments-->2005 14.1" 32bit single core Intel Celeron M 1.6GHz Pentium M 730 1.73Ghz - squarish 3:2 - issues with 3rd party battery 4 quick flashes of red led with 1 final green
|-
| <!--Name-->Latitude D610 (Quanta JM5B) PP11L
|| <!--Chipset-->910GML 915GM with mobile 1.6 to 2.26ghz
* Rev A0x
* Rev A0x
* Rev A07 1.73Ghz
| <!--IDE--> {{N/A}} || <!--SATA--> {{partial|IDE mode}}|| <!--Gfx-->{{yes|Intel GMA 915 2D and 3D tunnel 174 gearbox 74}} || <!--Audio-->{{yes|Intel AC97 speaker head phones playback only with stac codec}} || <!--USB--> {{maybe|USB 2.0}} || <!--Ethernet-->{{no|Broadcom BCM5751}} || <!--Wireless-->{{no|Intel 2200BG or Broadcom mini pci under keyboard, swap wifi card for atheros 5k}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2005 32bit 14" 1024 x 768 - very noisy clicky trackpad buttons - one dimm slot under keyboard and other in underside 2GB 533Mhz 667Mhz DDR2 max -
|-
| <!--Name-->Latitude D610 (Quanta JM5B) 0C4717 REV A05, 0K3879 REV.A00 || <!--Chipset-->915GM || <!--IDE--> {{N/A}} || <!--SATA--> {{partial|IDE mode}}|| <!--Gfx-->{{Maybe|Use VESA 2d - Ati X300 no radeon 2d}} || <!--Audio-->{{yes|Intel AC97}} || <!--USB--> {{maybe|USB 2.0}} || <!--Ethernet-->{{no|Broadcom NetXtreme 57xx Gigabit replace with Atheros 5k}} || <!--Wireless-->{{no|Intel PRO Wireless 2200BG mini pci use Atheros 5k}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2005 32bit 14" 1024 x 768 - very noisy clicky trackpad buttons - 19.5v psu
|-
| <!--Name-->Latitude D810 (Quanta ) || <!--Chipset-->915GM || <!--IDE-->{{Yes| }} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Maybe|Use VESA 2d - Ati X300 RV370 M22 later x600}} || <!--Audio-->{{yes|Intel AC97 stereo playback only idt 9751 codec}} || <!--USB--> {{maybe|USB 2.0 but no boot from usb on 1.5}} || <!--Ethernet-->{{no|Broadcom NetXtreme 57xx Gigabit}} || <!--Wireless-->{{no|Intel PRO Wireless 2200BG mini pci replace with Atheros 5k}} || <!--Test Distro-->2017 Icaros 2.1.1, aros one 1.5 || <!--Comments-->2005 32bit 15.4" F12 one time boot menu - 19.5v 90w psu ideal - battery not same as later dx20 ones -
|-
| <!--Name-->Inspiron 6000 6400, E1505 PP20L
*A00 Pentium M
*A0? Core Duo
|| <!--Chipset-->GM945 with PM 1.73Ghz, T2050 or T2060 || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe|}} || <!--Gfx-->{{Maybe|vesa 2d - Ati 9700, x1300 RV515 M52, x1400 or nvidia go 7300 on mxm board}} || <!--Audio-->{{yes|HD Audio IDT 9200}} || <!--USB-->{{Yes|usb boot }} || <!--Ethernet-->{{Yes|Broadcom BCM4401 B0}} || <!--Wireless-->{{No|Intel 2200 3945 - swap for Atheros 5k}} || <!--Test Distro-->2016 Icaros 2.1, AROS One 1.6 || <!--Comments-->2006 mostly 32bit - 15.4 inch glossy - 2 ddr2 sodimm slots - broadcom bcm92045 bluetooth detected but no support - 19.5v dell psu socket - f2 bios setup, f12 boot order -
|-
| <!--Name-->Inspirion E1705 9200 9300 9400 PP12L PP14L || <!--Chipset-->945GM || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->proprietary Dell card/socket format Nvidia 6800, ati X300 or nVidia 7900GS gpu 3d corrupt || <!--Audio-->{{Maybe| }} || <!--USB-->{{Maybe| }} || <!--Ethernet-->{{Maybe|Broadcom BCM4401}} || <!--Wireless-->Intel 3945 swap with Atheros 5k mini pcie || <!--Test Distro--> || <!--Comments-->2006 [http://amigaworld.net/modules/news/article.php?mode=flat&order=0&item_id=6481 increasing vertical lines issues] 32bit -
|-
| <!--Name-->Studio XPS M1210 || <!--Chipset-->GM945 with Core Duo to intel C2D T5500, T7400 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->nVidia G72M 7300 7400m || <!--Audio-->HD Audio IDT 92xx || <!--USB-->{{Maybe| }} || <!--Ethernet-->{{Maybe|Broadcom BCM4401 B0}} || <!--Wireless-->{{No|Broadcom BCM4311 - swap for Atheros 5k mini pci-e}} || <!--Test Distro--> || <!--Comments-->2006 64bit - 2 ddr2 slots max 4Gb -
|-
| <!--Name-->Inspiron 1501 PP23LA Latitude 131L || <!--Chipset-->AMD Sempron 1.8GHz Turion MK-36 or X2 1.6Ghz TL-50 or TL-56 on ATI RS480 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|Use VESA 2d - ATI 1150 (x300) RS482M Mobility Radeon Xpress 200}} || <!--Audio-->{{Yes|HD audio with stac 92xx codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{Maybe|Broadcom bcm 4401}} || <!--Wireless-->{{No|Broadcom bcm4311 replace with Atheros 5k}} || <!--Test Distro-->Icaros 1.5 || <!--Comments-->2006 64bit 15.4 inch matt 16:10 1280x800 WXGA -
|-
| <!--Name-->Inspiron 6400 (Quanta FM1)
*A00 Pentium M
*A0? Core Duo
*A08 Core2 Duo
|| <!--Chipset-->GM945 with BGA479 (socket M) T2050 1.6Ghz, T2060 1.60Ghz, T2080 1.73Ghz much later T5500 1.66Ghz || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{Yes|GMA 2D and 3D}} || <!--Audio-->{{Yes|HD Audio with IDT 92xx codec}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{Yes|Broadcom BCM4401 B0}} || <!--Wireless-->{{No|Broadcom BCM4311 swap for Atheros 5k mini pci-e under keyboard}} || <!--Test Distro-->deadwood 2019-04-16 iso || <!--Comments-->2006 mostly 32bit - 15.4" glossy - sd card - front multimedia keys - dvd rw - generic dell keyboard - coin cr2032 bios battery under keyboard -
|-
| <!--Name-->Inspiron 640m PP19L XPS M140 e1405 || <!--Chipset-->Core Solo T2050, T2300 Duo 1.83GHz T2400 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel GMA 950 || <!--Audio-->HD Audio IDT || <!--USB--> || <!--Ethernet-->Broadcom BCM4401-B0 100Base || <!--Wireless-->{{No|Intel 3945 or Broadcom 43xx, swap for Atheros 5k - Wireless Internet ON or OFF press the Function key + F2}} || <!--Test Distro--> || <!--Comments-->2006 32 bit - 12.1 LCD CCFL WXGA 1280x800 up to 14.1 inch 16:10 1440x900 pixel, WXGA+ UltraSharp - supports also SSE3 on duos -
|-
| <!--Name-->Latitude D420 (Compal LA-3071P) PP09S
|| <!--Chipset-->945
* revA00 Solo 1.2Ghz ULV U1400
* revA01 Duo 1.06Ghz u2500
* revA02 Duo 1.2Ghz
| <!--IDE-->{{yes|ZIF/CE 1.8" slow under battery, ribbon cable}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{yes|Intel GMA950 - 2D and 3D opengl tunnel 138 gearbox 103}} || <!--Audio-->{{yes|HD Audio with STAC 92xx playback speakers head phones only)}} || <!--USB-->{{yes|2 and external usb optical drive works}} || <!--Ethernet-->{{no|Broadcom BCM5752}} || <!--Wireless-->{{No|Intel 3945 mini pcie - swap Atheros 5k in base panel}} || <!--Test Distro-->Icaros Desktop 1.4 || <!--Opinion-->2006 32bit only - 12.1" 1280x800 - PR09S dock base rev02 DVD-RW usb boots - 1GB DDR2 2Rx16 max in base panel - f2 setup f5 diagnostics f12 boot list -
|-
| <!--Name-->Latitude D520 PP17L
|| <!--Chipset-->
* 64bit rev A01, A02 945GM Core2 Duo 1.83Ghz to 2.3Ghz
* 32bit rev A00, A01 940GML Solo later Duo T2400
| <!--IDE-->{{yes| Philips SDR089, Philips CDD5263, TEAC DW224EV, Optiarc AD-5540A, HL-DL-ST GSAT21N, TSSTcorp TS-L632D}} || {{Yes|bios sata set to ide mode}} || {{Yes|Intel GMA 900 series 2D and OpenGL1 3D tunnel 210 gearbox 153 teapot 27}} || {{Yes|HD audio with STAC 9200 codec}} || {{Yes|Boots and detects USB2.0}} || {{Yes|Broadcom 4400}} || {{No|Broadcom BCM4312 BCM4321 Dell 1390 / 1490 mini pcie - easy to replace with atheros 5k in base panel}} || <!--Test Distro-->Icaros 1.4 and 2.2 and both AROS One 1.8 and AROS One x64 1.1 USB boot || 2006 mostly 64bit 4:3 aspect ratio 14.1 (XGA 1024x768) or later 15 inches (XGA+ 1400 by 1050) - F2 enter bios F12 choose boot - 19.5v dell tip pa-12 charger - bios coin cell cr2032 battery socketed in base panel -
|-
| <!--Name-->Latitude D620 (Compal LA-2792) PP18L
|| <!--Chipset-->945GMS
* rev A00 all Core Duo's 32 bit
* rev A0x all Core 2 Duo's 64 bit
| <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Intel GMA 950 (2D and 3D tunnel gearbox opengl1 || <!--Audio-->{{yes|HD Audio playback}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no|Broadcom BCM5752}} || <!--Wireless-->{{no|Intel 3945 mini pcie swap with Atheros 5k}} || <!--Test Distro-->AspireOS Xenon || <!--Opinion-->2006 64bit AROS capable with later revisions - 14" 1280 x 800
|-
| <!--Name-->Latitude D620
|| <!--Chipset-->Intel i945
* revA00 all Core Duo's 32 bit
* revA01 all Core 2 Duo's 64 bit
| <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Nvidia 7300, 7600 NVS 110M G72 || <!--Audio-->{{dunno|HD Audio with STAC 9200 codec}} || <!--USB--> || <!--Ethernet-->{{No|Broadcom BCM5752}} || <!--Wireless--> {{dunno}} || <!--Test Distro--> || <!--Opinion-->2007 1440x900 screen - LA-2792P Rev.2.0 - DT785 UC218 Fan/ Heatsink (64bit) -
|-
| <!--Name-->Latitude D820 (Quanta JM6)
|| <!--Chipset-->945GMS 940GML
* rev A00
* rev A01
| <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Yes|Intel GMA 2D and 3D tunnel 195 - 100? gearbox 156}} || <!--Audio-->{{Yes|HD Audio with STAC 9200 playback}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|Broadcom BCM5752}} || <!--Wireless-->{{No|BCM4310 replace with mini pcie atheros 5k}} || <!--Test Distro-->2016 Icaros 2.1.2 || <!--Opinion-->2007 widescreen 15 inch 1280 x 800 matte - -
|-
| <!--Name-->Latitude D820 (Quanta JM)
|| <!--Chipset-->945GMS 940GML
* revA00
* revA01
| <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|Nvidia NVS 110M 120M G72}} || <!--Audio-->{{Yes|HD Audio STAC 9200}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|Broadcom BCM5752}} || <!--Wireless-->{{No|BCM4310 swap with Atheros 5k mini pcie}} || <!--Test Distro--> || <!--Opinion-->2007 64bit 15.4 1650x1050 WXGA or WSXGA+ or 1920x1200 WUXGA -
|-
| <!--Name-->Dell Latitude D531 15" || <!--Chipset-->AMD Turion X2 TL56 or TL60 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{Maybe|Use VESA - ATi xpress X1270}} || <!--Audio-->HD Audio with IDT codec || <!--USB-->{{Maybe| }} || <!--Ethernet-->{{No|Broadcom 57xx}} || <!--Wireless-->Intel 3945 or Dell Wireless 1390, 1505 or BCM4311 mini pcie || <!--Test Distro--> || <!--Comments-->2007 64bit possible - no trackpoint - fails and goes wrong often -
|-
| <!--Name-->Latitude D430 PP09S
|| <!--Chipset-->945 with Core2 Duo C2D U7500 1.06GHz U7600 1.2GHz U7700 1.33GHz
* rev A00
* rev A01
* rev A02
| <!--IDE-->ZIF PATA IDE 1.8inch under battery and ribbon cable - slow use USB instead || <!--SATA-->{{N/A}} || <!--Gfx-->{{yes|945GML 2D and 3D opengl 1.x 171 tunnel 105 gearbox}} || <!--Audio-->{{yes|STAC 92xx HD Audio speaker and ear phone - mono speaker}} || <!--USB-->{{yes|3 }} || <!--Ethernet-->{{no|Broadcom BCM5752}} || <!--Wireless-->{{no|Intel 4965 AGN or 3945 ABG mini pci-e underside with Atheros 5k mini pci-e}} || <!--Test Distro-->Aspire 1.8 || <!--Comments-->2007 64bit capable - sd card not supported - 19.5v PA12 power adapter - 12.1" 1280x800 matte - f2 setup f5 diagnostics f12 boot list -
|-
| <!--Name-->Latitude D530 || <!--Chipset-->GM965 + ICH8 || <!--IDE-->{{N/A}} || <!--SATA-->{{partial|IDE mode}}|| <!--Gfx-->{{partial|nVidia Quadro NVS 135M 2D 3d glitches G86}} || <!--Audio-->{{partial|HD Audio with STAC 9205 head phones only}} || <!--USB-->{{yes|USB 2.0}}|| <!--Ethernet-->{{no|Broadcom BCM5755M}} || <!--Wireless-->{{no|Intel PRO Wireless 3945ABG swap with Atheros 5k}} || <!--Test Distro-->Icaros 1.4.5 || <!--Comments-->2007 [http://amigaworld.net/modules/news/article.php?mode=flat&order=0&item_id=6481 ] cool air intake from underneath needed with pa-10 or pa-3e 90w psu required - standard 4:3 ratio aspect screen -
|-
| <!--Name-->Latitude D630 (Compal LA-3301P) PP18L
|| <!--Chipset-->GM965 + ICH8 T7250 2.0Ghz T7300
* revA00
* revA01
| <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{yes|Intel GMA X3100 (2D only, no external monitor)}} || <!--Audio-->{{yes|HD Audio STAC 9205 but speaker and head phones}} || <!--USB-->{{yes|4 USB 2.0}}|| <!--Ethernet-->{{no|Broadcom BCM5755M}} || <!--Wireless-->{{no|Broadcom BCM4312 swap with pci-e Atheros 5k under keyboard}} || <!--Test Distro--> || <!--Comments-->2007 64bit possible - F12 to choose boot option - 2 ddr2 sodimm max 4G - 4400mah 48Wh battery lasts 2 hours - 6600mah 73Wh lasts 3 hours - two wire cr2032 cmos -
|-
| <!--Name-->Latitude D630
|| <!--Chipset-->GM965 + ICH8
* revA00 [http://amigaworld.net/modules/news/article.php?mode=flat&order=0&item_id=6481 ] GPU heatpad, no copper
* revA01 0DT785 heatsink
| <!--IDE-->{{N/A}} || <!--SATA-->{{partial|IDE mode}}|| <!--Gfx-->{{partial|use VESA as nVidia NVS 135M 3d corrupts 0.7 tunnel 0.25 gearbox G86}} || <!--Audio-->{{partial|HD Audio with STAC 9205 head phones only}} || <!--USB-->{{yes|USB 2.0}}|| <!--Ethernet-->{{no|Broadcom BCM5755M}} || <!--Wireless-->{{no|Intel PRO Wireless 3945ABG swap with Atheros 5k mini pcie}} || <!--Test Distro-->Icaros 1.4.5 || <!--Comments-->2007 64bit
|-
| <!--Name-->Latitude D830
|| <!--Chipset-->965GM with Core2
* revA00
* revA01
| <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{Yes|GM965 crestline 2d and 3d tunnel 115}} || <!--Audio-->{{Yes| }} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No| }} || <!--Wireless-->{{Maybe|replace with Atheros 5k mini pcie}} || <!--Test Distro-->Icaros || <!--Comments-->2007 15 inch 1280 x 900 but updating the LCD to WXGA or WSXGA+ could be better - 2 ddr2 sodimm -
|-
| <!--Name-->Latitude D830 || <!--Chipset-->ICH8, Core2 DUO T7800 @ 2.60GHz || <!--IDE-->{{N/A}} || <!--SATA-->Intel ICH8M Serial ATA || <!--Gfx-->nVidia Quadro NVS 140M G86 || <!--Audio-->{{yes|HD Audio with STAC 92XX codec}} || <!--USB-->{{yes|USB 2.0}} || <!--Ethernet-->Broadcom NetXtreme 57xx Gigabit || <!--Wireless-->Intel Wireless 4965AGN swap with Atheros 5k || <!--Test Distro-->Icaros 2.03 || <!--Comments-->2007 64bit 15." - FN,F2 or FN,F8 or FN,F12
|-
| <!--Name-->XPS M1710 || <!--Chipset-->945PM with T2400 T2600 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->proprietary Dell card socket format GTX 7950 || <!--Audio-->HD Audio with STAC 92XX codec || <!--USB--> || <!--Ethernet-->Intel 1000 or Broadcom BCM5752 || <!--Wireless-->Intel swap with Atheros 5k || <!--Test Distro-->Aros One 64bit || <!--Comments-->2007 64bit 17.3" workstation type WXGA+ screen 1920x1200 - 2 ddr-2 667Mhz sodimm slots,
|-
| <!--Name-->XPS M1730 || <!--Chipset-->965 with T7200 T7600 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->GTX 7950 || <!--Audio-->HD Audio with STAC 92XX codec || <!--USB--> || <!--Ethernet-->Intel 1000 || <!--Wireless-->Intel swap with Atheros 5k || <!--Test Distro--> || <!--Comments-->2008 64bit 17" workstation type WXGA+ screen manufactured by AU Optronics poor viewing angles, unevenly lit, light leakage, 2 ddr-2 800Mhz slots,
|-
| <!--Name-->Latitude E6410 P27LA, E6510 PP30LA, E6310 || <!--Chipset-->Intel Core i5-520M to i7-620M i7 820QM but no sse4.1 or AVX || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|NVidia NVS 3100M GT218 2D but 3D through external monitor}} || <!--Audio-->{{Maybe|HD Audio IDT 92HD81}} || <!--USB-->{{Yes|USB2 }} || <!--Ethernet-->{{No|Intel}} || <!--Wireless-->{{No|Broadcom or Intel 6200AGN or Link 6300}} || <!--Test Distro-->Icaros 1.3 || <!--Comments-->2010 64 bit - 14.1” WXGA+ up to 15.6in 15.6” FHD 1080p - 2 ddr3l 1333Mhz max 8Gb - 90w dell charger - 3pin cmos -
|-
| <!--Name-->Inspiron M5030 || <!--Chipset-->rev A01 AMD V120, V140 rev A0? V160 M880G || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE}} || <!--Gfx-->{{Maybe|VESA RS880M Radeon HD 4225, 4250}} || <!--Audio-->{{Yes|HD audio with ALC269q codec}} || <!--USB--> || <!--Ethernet-->{{No|Atheros AR8152 v2}} || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro--> || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 - DDR3 sodimm -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->E6420 E6520 ATG semi ruggized XFR || <!--Chipset-->sandy bridge i5 2520M 2540M or duo I7 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|set to Bios UEFI mode AHCI}} || <!--Gfx-->{{Maybe|Intel HD 3000 with optional fermi Nvidia NVS 4200M GF119}} || <!--Audio-->{{Maybe|HD Audio with IDT 92HD90 BXX codec but not HDMI codec}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|Intel}} || <!--Wireless-->{{No|Intel 6205}} || <!--Test Distro-->Icaros 2.03 || <!--Comments-->2011 64bit 15.6in - fan exhausts a lot of hot air when cpu taxed - VGA if Bios ATA set and Vesa only with Bios ACHI set -
|-
| <!--Name-->Inspiron M5040 || <!--Chipset-->slow amd E450, later C-50 C50 or C-60 C60 with A50M chipset || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|non efi sata in IDE mode but base plastic difficult to remove for access}} || <!--Gfx-->{{Maybe|use VESA AMD Radeon 6320, 6250 or 6290}} || <!--Audio-->{{Yes|HD Audio IDT}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{Yes|rtl8169 Realtek RTL8105E VB 10/100}} || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro-->2016 icaros 2.1.1 and AROS USB 1.6 || <!--Comments-->2012 64bit 15INCH 1388 X 768 - f2 bios setup, f12 boot order - under removable keyboard via 4 top spring loaded catches is 1 ddr3l sodimm max 8gb and wifi -
|-
| Latitude e6230 E6330 E6430 || i3 3320M 3350M 2.8 GHz i5 3360M i7 3520M || {{N/A}} || {{partial|non RAID mode}} || {{partial|Intel HD 4000 (VESA only)}} || {{no|HD Audio}} || {{partial|Intel USB 3.0 (USB 1.1 2.0 only)}} || {{No|Intel 82579LM Gigabit}} || {{No|Broadcom BCM4313}} || <!--Test Distro-->Nightly Build 2014 09-27 || 2013 64bit Ivy Bridge - 12.5-inch 13.3-inch 14-inch screen - not great support, better under hosted -
|-
| <!--Name-->Dell Latitude 3330 || <!--Chipset-->Core i3 – 2375M to i5 – 3337U, Intel® Core i3 – 3227U, Celeron 1007U on HM77 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{maybe|VESA 2d for intel Hd 2000 3000 vga hdmi}} || <!--Audio-->{{maybe|HDAudio with IDT 92HD93 Controller codec }} || <!--USB-->{{maybe|USB 3.0 (2), USB 2.0 PowerShare capable }} || <!--Ethernet-->{{no|Intel }} || <!--Wireless-->{{no|Intel }} || <!--Test Distro-->Deadwood usb3 test iso || <!--Comments-->2013 64bit, 13.3” HD 1366X768 16:9, 2 ddr3l slots max 8Gb, 720p HD video webcam,
|-
| <!--Name-->Inspiron 15 5565 5567 AMD versions, Inspiron 3595 || <!--Chipset-->AMD A6-9200u A9-9400 9425 A12-9700P Bristol Ridge || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->Radeon R5 R8 GCN 3 || <!--Audio-->{{No| }} || <!--USB-->{{partial| }} || <!--Ethernet-->{{maybe|Realtek 1GbE}} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2017 64bit AVX2 - 15.6in 768p or 900p - there are intel versions avoid -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Latitude 5495, Inspiron 15 3585 || <!--Chipset-->Ryzen 2300U 2500U 2700U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|NVMe or optional 2.5in sata if caddy and ribbon cable}} || <!--Gfx-->Radeon Vega 3 or 7 || <!--Audio-->{{No|HDAudio with Realtek ALC3246 aka ALC295 0x10ec, 0x0295 or ALC3263 aka ALC 0x10ec, 0x0 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|Realtek}} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2018 64bit - 14.0" FHD WVA 1080p (16:9) 220 nits or HD 768p - 2 ddr4 sodimm slots max 32gb - 68whr battery with 2pin cmos bios coin - DC 19.5V 4.62A (90W) or 19.5V 3.34W (65W) 5.0mm x 7.4mm PA12 charging adapter -
|-
| <!--Name-->Inspiron 3505, Vostro 3515 || <!--Chipset-->athlon 300u, Ryzen 3250u (2c4t) 3450u 3500u 3700u (4c8t), Athlon Silver (2c2t) Gold (2c4t) || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|up to 2 nvme with optional 2.5in sata ribbon connector}} || <!--Gfx-->{{Maybe|VESA 2D for Vega 8, 10}} || <!--Audio-->{{No|Realtek ALC3204, Cirrus Logic CS8409 (CS42L42 and SN005825)}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{No|RTL 8106E}} || <!--Wireless-->{{No|Realtek RTL8723DE}} || <!--Test Distro--> || <!--Comments-->2019 64-bit - 15.6inch - 2 ddr4 sodimm max 16G - avoid knocking usb-c charging whilst in use -
|-
| <!--Name-->Inspiron 5485 2-in-1 || <!--Chipset-->athlon 300u, Ryzen 3250u (2c4t) 3450u 3500u 3700u (4c8t), Athlon Silver (2c2t) Gold (2c4t) || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|nvme}} || <!--Gfx-->{{Maybe|VESA 2D for Vega 8, 10}} || <!--Audio-->{{No|Realtek ALC3204}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No|Realtek RTL8723DE}} || <!--Test Distro--> || <!--Comments-->2019 64-bit - 14inch - 2 ddr4 sodimm max 16G - avoid knocking usb-c charging whilst in use -
|-
| <!--Name-->Latitude 3500, 3310, 3410, 3510, || <!--Chipset-->Intel Celeron-4205U, Pentium-5405U, Core i5 (8th Gen) i3-8145U, 8265U, i5-8365U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|nvme}} || <!--Gfx-->{{Maybe|Vesa 2D for Intel UHD Graphics 610 or 620 hdmi}} || <!--Audio-->{{no|HDAudio with Realtek ALC}} || <!--USB-->{{maybe|USB3 usb-c usb-a}} || <!--Ethernet-->{{Maybe|rtl8169 RTL8111H}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2019 64bit - 14in or 15.6in 768p to 1080p 220nits - 65w - 2 ddr4 sodimm slots - rtc cr2032 cmos 2 pin -
|-
| <!--Name-->Inspiron 5405 || <!--Chipset-->AMD Ryzen 5 4500U || <!--IDE-->{{N/A}} || <!--SATA-->One M.2 2230/2280 nvme || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{No|HDAudio with Realtek ALC3204 codec}} || <!--USB-->{{maybe|USB3 }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2020 64bit - 14" 1080p - dell round ac 19.50 VDC 4.50 mm x 2.90 mm 65W(19.5V-3.34A) round 4.5mm tip -
|-
| <!--Name-->Inspiron 5415, Inspiron 5515 || <!--Chipset-->AMD Ryzen 3 5300U, Ryzen 5 5500U, Ryzen 7 5700U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|nvme}} || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{No|HDaudio with realtek ALC3254 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2021 64bit 14" or 15.6in - avoid knocking usb-c charging whilst in use or use dell round ac 65W 4.5MM x 3.0MM - replacing keyboard not easy - 1 ddr4 sodimm -
|-
| <!--Name-->Vostro 3425, Vostro 3525, Vostro 5625 || <!--Chipset-->AMD Ryzen 3 5425U, Ryzen 5 5625U || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{no|HDAudio with codec}} || <!--USB-->{{maybe|USB4}} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2021 64bit - 14in 15.6" to 16" FHD 1080p - dell round ac 65w 4.5MM x 3.0MM or avoid knocking usb-c charging whilst in use -
|-
| <!--Name-->Dell Inspiron 15 Model 3535, Inspiron 14 7435 || <!--Chipset-->AMD Ryzen 5 7520U, AMD Ryzen 5 7530U, 7 7730U || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->{{No| hdmi 1.4 but no gpmi}} || <!--Audio-->{{No|HDaudio with codec }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2024 64bit - 14.0" or 15.6" 1080p - dell round ac 65w 4.5MM x 3.0MM or usb-c charging - full sd card slot -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|}
====Fujitsu-Siemens====
[[#top|...to the top]]
Order of build quality (Lowest to highest)
<pre >
Amilo
Esprimo
Lifebook
</pre >
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="5%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Fujitsu [http://www.labri.fr/perso/fleury/index.php?page=bug_transmeta FMV-Biblo Loox S73A (Japan P1100) LifeBook P1120 Biblo Loox T93C (Japan P2120) P2020] || <!--Chipset-->Transmeta Crusoe CPU TM5600 633MHz with Ali M1535 chipset || <!--IDE-->{{Yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->ATI Rage Mobility M with 4MB SDRAM || <!--Audio-->{{No|AC97 Ali M1535 + STAC9723 Codec}} || <!--USB-->USB 1.1 only || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->1999 32bit 10" 1280 x 600 matte LCD - QuickPoint IV mouse - metal chassis with palm rest plastic - 15GB 2.5 inch drive and SR 8175 8X DVD-ROM drive -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Lifebook S7000 S7010 S7010D S2020 || <!--Chipset-->Pentium M 1.6 or 1.7GHz || <!--IDE-->{{Yes| }} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Maybe|use VESA - Intel 855}} || <!--Audio-->{{maybe|AC97 with STAC 9751T or 9767 codec}} || <!--USB--> || <!--Ethernet-->{{No|Broadcom}} || <!--Wireless-->{{No|Atheros, Broadcom or Intel 2200BG - FN,F10}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2002 32bit 14.1 inch with minimal support
|-
| <!--Name-->Lifebook e8010 || <!--Chipset--> || <!--IDE-->{{Yes| }} || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA Intel 855GM}} || <!--Audio-->AC97 STAC9767 or ALC203 codec || <!--USB--> || <!--Ethernet-->{{No|Broadcom NetXtreme BCM5705M}} || <!--Wireless-->Intel PRO Wireless 2200BG || <!--Test Distro-->Icaros 1.3.1 || <!--Comments-->2002 32bit 15.1 inch
|-
| <!--Name-->Stylistic ST5000 ST5010 ST5011 ST5012 ST5020 ST5021 ST5022 || <!--Chipset-->1.0GHz P-M and later 1.1GHz on Intel 855GME || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->Intel 800 use VESA || <!--Audio-->Intel AC97 || <!--USB--> || <!--Ethernet-->Broadcom BCM5788 tg3 || <!--Wireless-->{{No|Intel 2200BG}} || <!--Test Distro--> || <!--Comments-->2003 32bit charged via a proprietary port power connector 16V 3.75A with wacom serial pen interface - indoor Screen transmissive 10.1 and later 12.1 XGA TFT -
|-
| <!--Name-->Amilo Pro V2010 || <!--Chipset-->VIA CN400 PM880 || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->{{No|S3 unichrome use VESA}} || <!--Audio-->{{No|VIA AC97 VT8237 with codec}} || <!--USB--> || <!--Ethernet-->Rhine 6102 6103 || <!--Wireless-->RaLink RT2500 || <!--Test Distro-->2017 Icaros 2.1.2 || <!--Comments-->2003 32bit boot mount - unknown bootstrap error then crashes
|-
| <!--Name-->Amilo Li 1705 CN896 || <!--Chipset--> with VIA P4M900 || <!--IDE--> || <!--SATA-->{{Maybe|IDE}} || <!--Gfx-->ATi || <!--Audio-->{{No|VIA VT8237 HD Audio with codec}} || <!--USB-->VT82xx 62xx || <!--Ethernet-->{{Yes|VIA Rhine}} || <!--Wireless-->{{No|Atheros G}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2005 32bit random freezes
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> Esprimo Mobile V5535 Skt mPGA 478MN
| <!--Chipset-->
| <!--IDE--> {{yes|IDE and EIDE}}
| <!--SATA--> {{maybe|IDE mode with SIS 5513}}
| <!--Gfx--> {{maybe|SiS 771 / 671 (VESA only)}}
| <!--Audio--> {{yes|HD Audio SIS968 SIS966 SI7012 with ALC268 codec}}
| <!--USB--> {{no|USB 1.1 and 2.0 issues}}
| <!--Ethernet--> {{no|SiS 191 gigabit}}
| <!--Wireless--> {{yes|Atheros AR5001 mini pci express}}
| <!--Test Distro-->aros one 1.5 usb
| <!--Comments-->2005 32bit 20v barrel - f2 setup f12 multi boot - random freezing short time after booting - chipset SIS 671MX -
|-
| <!--Name-->Amilo SI 1520 1521p || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Yes|GMA 2D}} || <!--Audio-->{{No|HD Audio Conexant codec}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{Yes|Intel Pro 100}} || <!--Wireless--> || <!--Test Distro-->Icaros 1.4.2 || <!--Comments-->2005 32bit - Set Bios option ATA Control Mode to Compatible
|-
| <!--Name-->Lifebook S7020 S7020D || <!--Chipset--> Pentium M 740 1.73MHz || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 915 || <!--Audio-->HD Audio ALC260 codec || <!--USB-->{{Yes| }} || <!--Ethernet-->Broadcom BCM5751M Gigabit || <!--Wireless-->Intel PRO Wireless 2200BG or Atheros 5k || <!--Test Distro--> || <!--Comments-->2006 32bit
|-
| <!--Name-->Stylistic ST5030 ST5031 ST5032 || <!--Chipset-->1 to 1.2GHx Pentium M with 915GM || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->Intel 900 || <!--Audio--> || <!--USB-->{{Yes| }} || <!--Ethernet-->Marvell || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2006 32bit charged via a proprietary port power connector 6.0 x 4.4 mm round - 200 pin ddr2 ram
|-
| <!--Name-->Stylistic ST5110 ST5111 ST5112 || <!--Chipset-->945GM with 1.2GHz Core Duo and Core2 Duo || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Intel 900 || <!--Audio-->HD audio with STAC9228 codec || <!--USB-->{{No| }} || <!--Ethernet--> || <!--Wireless-->Intel 3945 ABG or optional atheros || <!--Test Distro--> || <!--Comments-->2006 either 32 or 64 bit - charged via a proprietary port power connector 6.0 x 4.4 mm round - SigmaTel® touchscreen -
|-
| <!--Name-->E8110 S7110 E8210 || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Yes|945GM}} || <!--Audio-->{{Yes|HD Audio with ALC262 codec playback}} || <!--USB-->{{Yes}} || <!--Ethernet-->{{No|Marvell 88E8055 Gigabit}} || <!--Wireless-->{{No|Intel PRO Wireless 3945ABG}} || <!--Test Distro-->Icaros 2.0 || <!--Comments-->2006 32bit Core Duo
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || CHIPSET || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Lifebook PH521 || <!--Chipset-->AMD E-350 E-450 1.65GHz || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->HD 6310M 6320M || <!--Audio-->Realtek ALC269 || <!--USB-->{{No| }} || <!--Ethernet-->Realtek || <!--Wireless-->{{No|Atheros 802.11 bgn}} || <!--Test Distro--> || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 - 11.6 inch 1366x768 pixels - DDR3 1066MHz -
|-
| <!--Name-->LIFEBOOK E752/E782/S752/S782 || <!--Chipset--> with Intel Core i3-2328M to i3-3110M || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{Maybe| }} || <!--Audio-->{{yes| }} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no|Intel 82579V 1000 }} || <!--Wireless-->{{no|Intel Wireless 6205 may be able to swap for Atheros 5k }} || <!--Test Distro-->Aros One 64bit || <!--Comments-->2012 64bit
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====HP Compaq====
[[#top|...to the top]]
Build quality (Lowest to highest)
<pre >
Presario
Pavilion
Omnibook
ProBook
Armada
Elitebook
</pre >
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->1c00 series Compaq Presario [http://users.utu.fi/sjsepp/linuxcompaqarmada100s.html Armada 100S made by Mitac], 1247 || <!--Chipset-->K6-II with PE133 MVP-4 || <!--IDE--> || <!--SATA--> || <!--Gfx-->use VESA - Trident Blade3D AGP sp16953 || <!--Audio-->VIA ac'97 audio [rev20] with AD1881A codec || <!--USB-->{{Maybe|usual VIA issues [rev10]}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->1998 32bit 192MB max - PCcard Texas PC1211 no support - 1200 XL1 1200-XL1xx, XL101, XL103 XL105 XL106 XL109 XL110 XL111 XL116 XL118 XL119 XL125
|-
| <!--Name-->1c01 series Armada 110, Evo N150 || <!--Chipset-->Intel with VIA PLE133 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Use VESA - Trident Cyber Blade i1 chipset || <!--Audio-->VIA 686 rev20 82xxx 686a || <!--USB--> || <!--Ethernet-->Intel 82557 Pro 100 || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->1998 32bit max 192mb sodimm 100Mhz 133Mhz ram memory - 1200-XL405A 12XL405A XL502A 12XL502A 1600XL
|-
| Armada M300 M700 E500 || 440BX || {{Yes| }} || {{N/A}} || {{maybe|ATI Rage LT M1 Mobility (VESA only)}} || {{no|AC97 ESS Maestro 2E M2E ES1987 sound}} || {{yes|USB1.1 only}} || {{No|[http://perho.org/stuff/m300/index_en.html Intel PRO 100+ Mini PCI]}} || {{N/A}} || Aspire OS 2012, Nightly 30-01 2013 and 04-05 2013 || 1999 32bit - F10 bios options and Fn+F11 reset CMOS with 64mb ram already on board
|-
| <!--Name-->HP Omnibook XE3 || <!--Chipset-->Intel BX 600Mhz GC model 256mb or AMD GD 500Mhz || <!--IDE--> || <!--SATA--> || <!--Gfx-->Use VESA - S3 Inc. 86C270 294 Savage IX-MV (rev 11) || <!--Audio-->{{No|ESS ES1988 Allegro 1 (rev 12)}} || <!--USB-->Intel 82371AB PIIX4 USB (rev 01) || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->2002 32bit no cardbus pcmcia support - no audio from Polk Audio Speakers -
|-
| <!--Name-->HP Omnibook XE3 || <!--Chipset-->82830 ICH3 P3-M 750MHz 800Mhz 900MHz || <!--IDE-->{{Yes| }} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Maybe|use VESA - CGC 830MG}} || <!--Audio-->{{No|ESS ES1988 Maestro 3i}} || <!--USB-->{{Yes|only one 1.1 port}} || <!--Ethernet-->{{Yes|e100 82557}} || <!--Wireless-->{{N/A|}} || <!--Test Distro-->Icaros 1.51 || <!--Comments-->2002 32bit Boots USB Stick via Plop boot floppy - Memory for GF 256-512mb, GS up 1GB
|-
| <!--Name-->TC1000 TC-1000 Tablet PC || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->NVIDIA NV11 [GeForce2 Go] (rev b2) || <!--Audio-->VIA AC97 Audio (rev 50) || <!--USB-->OHCI NEC USB 2.0 (rev 02) || <!--Ethernet-->Intel 82551 QM (rev 10) || <!--Wireless-->Atmel at76c506 802.11b || <!--Test Distro--> || <!--Comments-->2002 32bit Transmeta LongRun (rev 03) with VT82C686 - Texas Instruments TI PCI1520 PC card Cardbus
|-
| <!--Name-->HP Compaq R3000 ZV5000 (Compal LA-1851) || <!--Chipset-->Nvidia nForce 3 with AMD CPU || <!--IDE--> || <!--SATA--> || <!--Gfx-->Nvidia NV17 [GeForce4 420 Go 32M] || <!--Audio-->Nvidia || <!--USB--> || <!--Ethernet-->Broadcom or Realtek RTL8139 || <!--Wireless-->{{Maybe|Broadcom BCM4303 BCM4306 or Atheros bios locked}} || <!--Test Distro--> || <!--Comments-->2003 32bit - HPs have a setting to automatically disable wireless if a wired connection is detected
|-
| <!--Name-->Compaq [http://www.walterswebsite.us/drivers.htm Presario 700 series] || <!--Chipset-->VT8363 VT8365 [Apollo Pro KT133 KM133] || <!--IDE-->{{yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{maybe|VT8636A (S3 Savage TwisterK) (VESA only)}} || <!--Audio-->{{Maybe|VIA AC97 [rev50] with AD1886 codec}} || <!--USB-->{{maybe|VIA UHCI USB 1.1 [rev1a]}} || <!--Ethernet-->{{yes|RealTek RTL8139}} || <!--Wireless-->{{no|Broadcom BCM4306}} || <!--Test Distro--> || <!--Comments-->2003 32bit poor consumer grade level construction - jbl audio pro speakers - no support for cardbus pcmcia TI PCI1410 - 700A EA LA UK US Z 701AP EA BR FR 701Z 702US 703US AP JP audio sp18895 Sp19472
|-
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| N400c || P3-M 82845 || {{yes|82801 CAM IDE U100}} || {{N/A}} || {{maybe|Rage Mobility 128 (VESA only)}} || {{No|Maestro 3 allegro 1}} || {{yes|USB1.1}} || {{yes|Intel PRO 100 VM (KM)}} || {{N/A}} || Icaros 1.2.4 || 2003 32bit Has no optical disc drive
|-
| N410c || P3-M 82845 || {{yes|82801 CAM IDE U100}} || {{N/A}} || {{maybe|Radeon Mobility M7 LW 7500 (VESA only)}} || {{yes|Intel AC97 with AD1886 codec}} || {{yes|USB1.1}} || {{yes|Intel PRO 100 VM (KM)}} || {{N/A}} || Icaros 1.2.4 || 2003 32bit Has no optical disc drive
|-
| Evo N600c || Pentium 4 || {{yes|IDE}} || {{N/A}} || {{partial|ATI Radeon Mobility M7 (VESA only)}} || {{No|ESS ES1968 Maestro 2}} || {{yes|USB}} || {{yes|Intel PRO 100}} || {{dunno}} || Icaros 1.3 || 2003 32bit
|-
| Evo N610c || Pentium 4 || {{yes|IDE}} || {{N/A}} || {{partial|ATI Radeon Mobility M7 (VESA only)}} || {{yes|Intel ICH AC97 with AD1886 codec}} || {{yes|USB}} || {{yes|Intel PRO 100}} || {{dunno}} || Icaros 1.2.4 ||
|-
| N800c || P4 || {{Yes|IDE}} || {{N/A}} || {{partial|ATI Radeon Mobility 7500 (VESA only)}} || {{yes|AC97}} || {{yes|USB}} || {{yes|Intel PRO 100}} || {{N/A}} || Icaros 1.2.4 || 2003 32bit P4M CPU can get very warm
|-
| <!--Name-->NX7010 || <!--Chipset-->Intel || <!--IDE-->{{yes|IDE}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{partial|ATI mobility 7500 or 9000 Radeon 9200 64MB (VESA only)}} || <!--Audio-->{{yes|AC97 ADI codec}} || <!--USB-->{{yes|uhci (1.1) and ehci (2.0)}} || <!--Ethernet-->{{yes|Realtek 8139}} || <!--Wireless-->{{No|Intel 2200b bios locked}} || <!--Test Distro--> || <!--Comments-->2003 32bit
|-
| <!--Name-->Compaq Preasrio V5000 (Compal LA-2771) || <!--Chipset-->AMD Sempron 3000+ or Turion ML with SB400 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA - Ati RS480M Xpress 200}} || <!--Audio-->{{No|AC97 ATI with Conexant CX 20468 codec}} || <!--USB--> || <!--Ethernet-->{{Yes|Realtek 8100 8101L 8139}} || <!--Wireless-->{{No|bcm4318 bios locked}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2004 64bit single core machine V5001 V5002 V5002EA V5003
|-
| <!--Name-->TC1100 TC-1100 Tablet PC || <!--Chipset-->855PM || <!--IDE--> || <!--SATA--> || <!--Gfx-->Nvidia Geforce4 Go || <!--Audio-->AC97 || <!--USB--> || <!--Ethernet-->{{Maybe|BCM 4400}} || <!--Wireless-->{{Maybe|Atheros wlan W400 W500 or ? bios locked}} || <!--Test Distro--> || <!--Comments-->2004 32bit
|-
| <!--Name-->NC6000 NC8000 NW8000 || <!--Chipset-->855PM with Pentium M 1.5 1.6 1.8GHz 2.0GHz || <!--IDE-->max 160 GB for NW 8000 || <!--SATA--> || <!--Gfx-->{{Maybe|Ati RV350 mobility 9600 M10 Fire GL T2 ISV use VESA 2D as no laptop display}} || <!--Audio-->{{Yes|Intel AC97 with ADI codec playback only}} || <!--USB-->{{Yes|2 ports}} || <!--Ethernet-->{{No|Broadcom BCM 5705M}} || <!--Wireless-->{{Maybe|mini pci Atheros 5212 BG W400 W500 or Intel - all bios locked}} || <!--Test Distro--> || <!--Comments-->2005 based [http://amigaworld.net/modules/newbb/viewtopic.php?topic_id=41916&forum=47 works] - Firewire TI TSB43AB22/A - 8 pound 2.5 kg travel weight - an SD slot as well as two PC Card slots - 15-inch UXGA screen (1,600 x 1,200) or 15" SXGA+ (1400 x 1050) (4:3 ratio)
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Compaq NC6110 NX6110 NC6120 NC6220 NC4200 NC8200 TC4200 || <!--Chipset-->GMA 915GML || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Yes|2D GMA 900}} || <!--Audio-->{{Yes|AC97 with ADI AD1981B playback}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{Unk|440x or BCM 5705M or 5751M}} || <!--Wireless-->{{No|Intel IPW 2200 bios locked}} || <!--Test Distro-->Icaros 1.5.2 || <!--Comments-->2005 32bit Sonoma based - Wifi with Atheros AR5007eg if apply hacked bios RISKY else use USB one - (INVENTEC ASPEN UMA MV) (INVENTEC ASPEN DIS PV) -
|-
| <!--Name-->Compaq C500 CTO aka HP G7000 || <!--Chipset-->Intel 945GM || <!--IDE--> || <!--SATA--> || <!--Gfx-->GMA 950 || <!--Audio-->HD Audio with realtek ALC262 codec || <!--USB--> || <!--Ethernet-->Realtek 8139 || <!--Wireless-->Broadcom BCM 4311 bios locked || <!--Test Distro--> || <!--Comments-->2005 32bit
|-
| <!--Name-->HP DV6000 || <!--Chipset-->945GMS || <!--IDE--> || <!--SATA--> || <!--Gfx-->GMA 950 || <!--Audio-->HD Audio IDT 92HD 91B || <!--USB--> || <!--Ethernet-->Intel PRO 100 VE || <!--Wireless-->{{No|Intel 3945 bios locked}} || <!--Test Distro--> || <!--Comments-->2006 32 bit only - Mosfet FDS6679 common cause of shorts giving no power to the tip. To reset adapter, unplug from AC (mains) and wait 15-30 sec. Then plug in again -
|-
| Presario F700 series, HP G6000 f730us F750 F750us F755US F756NR F765em || AMD Turion Mono MK-36 2.0Ghz NForce 560m or Twin X2 TK-55 with nForce 610m MCP67 || {{N/A| }} || {{Yes|but needs special sata adapt bit and caddy}} || {{Yes|GF Go 7000m 2D and 3D 640x350 to 1280x800 - ball solder issues due to poor cooling}} || {{Maybe| }} || {{Maybe|uhci and ehci boots}} || {{No|Nvidia }} || {{Yes|Atheros AR5007 bios locked}} || Icaros 1.3.1 and Aros One 1.6 USB || 2006 64bit - f9 boot device f10 bios setup - random freezes after a minutes use means internal ventilation maintenance needed each year essential - No sd card and overall limited phoenix bios options -
|-
| <!--Name-->Presario v6604au v6608au V3500 || <!--Chipset-->NVIDIA MCP67M with AMD Athlon64 X2 TK 55 amd 1.8ghz || <!--IDE--> || <!--SATA-->{{Yes|SATA 150}} || <!--Gfx-->NVIDIA GeForce Go 7150M 630i or C67 630M MCP67 || <!--Audio-->conexant codec || <!--USB--> || <!--Ethernet-->Nvidia or Realtek 10/100 || <!--Wireless-->{{No|Broadcom 4311 bios locked}} || <!--Test Distro--> || <!--Comments-->2006 64bit Altec Lansing Stereo Speakers - ball solder issues -
|-
| <!--Name-->Compaq presario v6610 v6615eo v6620us || <!--Chipset-->Turion 64 X2 mobile TK-55 / 1.8 GHz to athlon 64x2 @ 2.4ghz || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|SATA 150}} || <!--Gfx-->{{Yes|geforce 7150 or 7300m 2d and 3d}} || <!--Audio-->{{Yes|AMD HD Audio with IDT codec stereo playback only}} || <!--USB-->3 OHCI EHCI || <!--Ethernet-->{{Maybe| }} || <!--Wireless-->{{No|Broadcom bios locked}} || <!--Test Distro-->Icaros 1.3 - || <!--Comments-->2007 [http://amigaworld.net/modules/newbb/viewtopic.php?topic_id=40956&forum=48 works well] - 1 x ExpressCard/54 - SD Card slot - AO4407 test voltage of the Drain side (pins 5-8) with AC adapter and no battery, see 0 volts, connect the battery you should have 10-14v -
|-
| <!--Name-->v6630em v6642em || <!--Chipset-->nForce 630M with AMD Turion 64 X2 Mobile TL-58 || <!--IDE--> || <!--SATA--> || <!--Gfx-->NVIDIA GeForce 6150M or 7150M || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless-->{{No|Broadcom bios locked}} || <!--Test Distro--> || <!--Comments-->2007 64bit 15.4 in 1280 x 800 ( WXGA ) -
|-
| <!--Name-->HP Compaq NC6400 || <!--Chipset-->945GM Core Duo || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|GMA 950 2D issues and no 3d}} || <!--Audio-->{{No|HD Audio AD1981HD}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|BCM }} || <!--Wireless-->{{No|Broadcom locked}} || <!--Test Distro-->Icaros || <!--Comments-->2007 - replaced with Atheros AR5007eg if apply hacked bios RISKY else use USB g -
* 32bit Core Duo T2400
* 64bit Core 2 Duo T5600 T7600
|-
| <!--Name-->HP Compaq NV NC6400 || <!--Chipset-->Core Duo + 945PM || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|use VESA Radeon x1300M (2D)}} || <!--Audio-->{{Maybe|HD Audio with ADI1981 low volume}} || <!--USB-->{{yes}} || <!--Ethernet-->{{no|BCM 5753M}} || <!--Wireless-->{{No|Intel 3945 ABG bios locked}} || <!--Test Distro--> Icaros 1.4.2 || <!--Opinion-->2007 Harmon Kardon speakers
|-
| <!--Name-->HP Compaq NC6320 || <!--Chipset-->945GM with
* 32bit Core Duo 1.83GHz T2400
* 64bit Core2 Duo 1.83GHz T5600
|| <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Yes|GMA 950 2D with a little 3D tunnel 213}} || <!--Audio-->{{Maybe|Intel HD Audio with AD1981HD codec}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|BCM 5788}} || <!--Wireless-->{{No|Intel 3945 bios locked}} || <!--Test Distro-->Icaros 2 || <!--Comments-->2007 replaced with Atheros AR5007eg if applying hacked wifi bios RISKY!! else use USB - 14.1" or 15 inch XGA 1024x768 - noisy cpu fan for core2 - trackpad rhs acts as window scroller -
|-
| <!--Name-->HP NC4400 TC4400 Tablet || <!--Chipset-->Core Duo with 82945 chipset || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|bios F.07 limits to 100GB 120GB}} || <!--Gfx-->{{yes|2D and 3D 282 tunnel and gearbox 150}} || <!--Audio-->{{Yes|HD Audio with ADI 1981HD codec via ear phones}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{No|BCM 5753M}} || <!--Wireless-->{{No|Intel 3945 or BCM 4306 - Whitelist BIOS F.0C needed but risky}} || <!--Test Distro-->2017 Icaros 2.1.2 || <!--Comments-->2008 64 bit possible with Core2 - TI SD card reader non bootable - wacom serial digitiser pen not working -
* 32bit 1.86GHz core duo
* 64bit 2Ghz T7200, 2.16Ghz Core 2 Duo T7600 2.33GHz
|-
| <!--Name-->HP Pavilion DV2000 CTO || <!--Chipset-->945GMS || <!--IDE--> || <!--SATA--> || <!--Gfx-->GMA 950, X3100, Nvidia 8400M || <!--Audio-->HD Audio Conexant CX 20549 Venice || <!--USB--> || <!--Ethernet-->Nvidia MCP51 || <!--Wireless-->{{No|Broadcom BCM 4311 or Intel 3945 4965 ABG bios locked}} || <!--Test Distro--> || <!--Comments-->2008 Atheros AR5007eg if apply hacked bios RISKY
|-
| <!--Name-->Compaq Presario C700 || <!--Chipset-->GMA960 || <!--IDE--> || <!--SATA--> || <!--Gfx-->X3100 || <!--Audio-->HD Audio || <!--USB--> || <!--Ethernet-->RTL 8139 || <!--Wireless-->{{Maybe|Atheros AR5007 AR5001 AR242x}} || <!--Test Distro--> || <!--Comments-->2008
|-
| <!--Name-->Compaq 2510p 6510b 6710b 6910b || <!--Chipset-->GMA 965GM GL960 || <!--IDE-->{{yes| }} || <!--SATA--> || <!--Gfx-->{{yes|X3100 some 2d but slow software 3d only}} || <!--Audio-->{{maybe|HD Audio ADI AD1981 HD low volume on head phones}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no|Intel 82566 or Broadcom BCM 5787M}} || <!--Wireless-->{{No|Intel 3945ABG or 4965ABG bios locked}} || <!--Test Distro-->Aspire OS Xenon 2014 || <!--Comments-->2008 no sd card boot support - F9 to choose boot option - [http://forums.mydigitallife.info/threads/7681-This-is-no-request-thread!-HP-COMPAQ-bioses-how-to-modify-the-bios/page111?p=333358#post333358 whitelist removal (risky) bios block for wifi card swap]
|-
| <!--Name-->CQ40 CQ41 || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|VESA Intel}} || <!--Audio-->HD Audio || <!--USB--> || <!--Ethernet-->Realtek RTL8101E || <!--Wireless-->{{No|Broadcom BC4310 bios locked}} || <!--Test Distro--> || <!--Comments-->2008
|-
| <!--Name-->Compaq Presario CQ35 CQ36 || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|VESA }} || <!--Audio--> || <!--USB--> || <!--Ethernet-->Realtek RTL8101E RTL8102E || <!--Wireless-->{{No|Broadcom BCM4312 bios locked}} || <!--Test Distro--> || <!--Comments-->2008 Compal LA-4743P -
|-
| <!--Name-->HP Compaq CQ42 CQ43 CQ45 || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|VESA }} || <!--Audio-->HD Audio with Coxenant codec || <!--USB--> || <!--Ethernet-->Realtek || <!--Wireless-->{{No|Realtek RTL8191SE, Realtek 8188CE}} || <!--Test Distro--> || <!--Comments-->2008 (Quanta AX1)
|-
| <!--Name-->Compaq Presario CQ50 CQ56 || <!--Chipset-->Nvidia MCP78S || <!--IDE--> || <!--SATA--> || <!--Gfx-->Geforce 8200M || <!--Audio-->nVidia HD Audio with codec || <!--USB--> || <!--Ethernet-->nvidia MCP77 || <!--Wireless-->{{unk|Atheros AR928X bios locked}} || <!--Test Distro--> || <!--Comments-->2008 [http://donovan6000.blogspot.co.uk/2013/06/insyde-bios-modding-wifi-and-wwan-whitelists.html bios modding risky] MCP72XE MCP72P MCP78U MCP78S
|-
| <!--Name-->CQ60 || <!--Chipset-->Single core Sempron to dual turion || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|VESA for Nvidia 8200M}} || <!--Audio-->{{yes|HD Audio}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{No| bios locked}} || <!--Test Distro--> || <!--Comments-->2008
|-
| <!--Name-->HP DV6700 || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{no|Vesa for Nvidia 8400M}} || <!--Audio-->{{no| }} || <!--USB-->{{no| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{No|Intel }} || <!--Test Distro--> || <!--Comments-->2008 64bit -
|-
| <!--Name-->CQ60 || <!--Chipset-->Intel C2D || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|VESA for Nvidia 9200M}} || <!--Audio-->{{yes|HD Audio}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{No| bios locked}} || <!--Test Distro--> || <!--Comments-->2009 64bit -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->CQ57z || <!--Chipset-->AMD slow E-300 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{Maybe|VESA ATi HD 6310 wrestler}} || <!--Audio-->{{unk| }} || <!--USB-->{{yes| }} || <!--Ethernet-->{{maybe|Realtek RTL8101 RTL8102}} || <!--Wireless-->{{No|RaLink RT5390}} || <!--Test Distro--> || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->HP CQ58z 103SA E5K15EA || <!--Chipset-->AMD slow Dual-Core E1-1500 APU with A68M FCH || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{Maybe|VESA 2D for Radeon HD 7310}} || <!--Audio-->Realtek idt codec || <!--USB-->{{yes| }} || <!--Ethernet-->{{yes|Realtek 10/100 BASE-T}} || <!--Wireless-->{{No|Broadcom}} || <!--Test Distro--> || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 - 39.6 cm (15.6") HD BrightView LED-backlit (1366 x 768)
|-
| <!--Name-->HP 635 DM1 || <!--Chipset-->AMD slow E-300, E-450 later E2-1800 on SB7x0 SB8x0 SB9x0 || <!--IDE-->{{N/A}} || <!--SATA-->ATI non efi SATA AHCI - IDE mode || <!--Gfx-->{{Maybe|use VESA 2D - AMD HD6310, 6320 to HD7340}} || <!--Audio-->{{Yes|Realtek ALC270A GR but not Wrestler HDMI Audio}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{Yes|rtl8169 driver covers Realtek RTL8101E RTL8102E}} || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - 14" 1366 x 768 - f9 f10 - external battery - 2 stacked ddr3l sodimm slots max 16Gb under one base plate - removable keyboard -
|-
| <!--Name-->HP G6 2000-2b10NR 2000-2d10SX 2000-2d80NR || <!--Chipset-->AMD very slow E1-2000 E2-3000M on A50M (soldered) A4-3305A on A60M (socket) || <!--IDE-->{{N/A}} || <!--SATA-->2.5in || <!--Gfx-->{{Maybe|VESA AMD Radeon 6320, 6620G, 6520G, 6480G, 6380G}} || <!--Audio-->{{No| }} || <!--USB-->{{No| }} || <!--Ethernet-->{{maybe|Realtek 100 1000}} || <!--Wireless-->{{No|Realtek}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - 39.6-cm (15.6-in) HD LED BrightView (1366×768) - 1 or 2 ddr3l max 8G - 19VDC 3.42A Max 65W Tip 7.4mm x 5.0mm -
|-
| <!--Name-->HP ProBook 6465B || <!--Chipset-->AMD massively slow A6-3310MX or A6-3410MX with A60M || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA AMD 6480G or 6520G}} || <!--Audio-->{{No|IDT 92HD81B1X}} || <!--USB-->{{No| }} || <!--Ethernet-->{{maybe|rtl8169 Realtek 8111}} || <!--Wireless-->{{No|Intel AC 6205 or broadcom 4313 bios locked}} || <!--Test Distro--> || <!--Comments-->2013 64bit does not support AVX or SSE 4.1 - 13-inch or 14-inch runs hot -
|-
| <!--Name-->HP Elitebook 8470p 8570p || <!--Chipset-->Intel Quad i7-3840QM, i7-3610QM, i7-3520M, i5-3210M, i3-3130M, i3-2370M on Intel QM77 chipset || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|set the bios boot options to not fastboot and drive mode IDE rather than AHCI }} || <!--Gfx-->{{Maybe|Vesa 2d for HD4000 with some having switchable Radeon M2000 or 7570M}} || <!--Audio-->{{yes|HDAudio for IDT codec}} || <!--USB-->{{yes|USB2}} || <!--Ethernet-->{{No|Intel 82579LM }} || <!--Wireless-->{{No|Intel, Broadcom, Atheros}} || <!--Test Distro-->64 bit boots from CD* if safe mode 2 is used, although it is possible to remove the 'nodma' and 'debug' entries and boot || <!--Comments-->2013 64bit with SSE4.1 and AVX - 14in 1600 x 900 to 1366 x 768 - 2 DDR3L sodimm slots max 16Gb - TPM 1.2 - dual boot 32/64 bit is working fine -
|-
| <!--Name-->HP ProBook 6475b, Probook 4445s 4545s, HP Pavilion 15-b115sa, [https://support.hp.com/gb-en/document/c04015674#AbT6 HP mt41 Mobile Thin Client PC] || <!--Chipset-->AMD very slow A4 4300M, A6 4400M 4455M or A8 4500M with AMD A70M A76M FCH || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA 7420 7520G 7640G 7660G}} || <!--Audio-->{{no|HD Audio with idt or realtek codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{No|Realtek RTL8151FH-CG}} || <!--Wireless-->{{No|Intel 6205 or Broadcom BCM 43228 bios locked}} || <!--Test Distro--> || <!--Comments-->2014 64bit does support AVX or SSE 4.1 - 15.6-inch -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->HP ENVY 15-k112nl K1Y78EA || <!--Chipset-->Intel® Core™ i7 i7-4510U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe| }} || <!--Gfx-->Intel HD4400 and/without NVIDIA® GeForce® GTX 850M || <!--Audio-->{{maybe| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{no| }} || <!--Test Distro-->Deadwood usb3 test iso || <!--Comments-->2014 64bit - 15.6" 768p to 1080p - 19.5V 3.33A/4.62A/6.15A 65W/90W/120W AC -
|-
| <!--Name-->HP Pavilion Gaming Laptop 15-ak002na || <!--Chipset-->Intel 4 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->GTX 950 || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2015 64bit -
|-
| <!--Name-->HP ProBook 255 G1, 455 G1 F2P93UT#ABA, 645 G1, Envy 15-j151ea G7V80EA, Envy m6-1310sa (E4R01EA#ABU) || <!--Chipset-->AMD very slow Dual-Core E1-1500, or AMD Quad A4-4300M A8-4500M A10-4600M A4-5150M A6-5350M 2.9Ghz A10-5750M || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA 2D for 7310, 7420G 7520G 7640G 7660G 8350G 8450G or 8550G, 8650G, 8750G }} || <!--Audio-->{{No|HD Audio IDT 92HD91 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|realtek}} || <!--Wireless-->{{No|Atheros}} || <!--Test Distro--> || <!--Comments-->2015 64bit does support AVX or SSE 4.1 - 14in and 15in 1366 x 768 - external battery - 2 ddr3l sodimm slots - 19.5v / 4.62A psu runs hot -
|-
| <!--Name-->HP ProBook 245 G4, 255 G2, 455 G2, 255 G3, 455 G3, 255 G4 80CB, 255 G5 82F6, 355 G2, HP Pavilion 15-p038na 15-g092sa 15-p091sa 15-G094S 15-p144na 15-p142na, 15-Af156sa || <!--Chipset-->AMD very slow A4-5000 A6-5200, E2-6110, E1-6010 E2-2000, E1-2100 E2-3800, A4-6210 A6-6310 A8-6410, E2-7110, A6-7310 A8-7410 APU on A68M || <!--IDE-->{{N/A}} || <!--SATA-->sata some with cdrw dvdrw || <!--Gfx-->{{Maybe|VESA Radeon R2 R4 R5}} || <!--Audio-->{{no|HD Audio ALC3201-GR}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 RTL8102E or Atheros 1GbE}} || <!--Wireless-->{{unk|Qualcomm Atheros AR9565}} || <!--Test Distro--> || <!--Comments-->2015 64bit most have SSE4 AVX but E2-2000 does not - 15.6-inch (1366 x 768) - 2 ddr3l sodimm slots - small 31Whr or 41Whr external battery covers 240 G4, 245 G4, 250 G4, 255 G4, 256 G4, 14G, 15G - keyboard repair swap requires removal of all components -
|-
| <!--Name-->HP Elitebook 725 G2, 745 G2, 755 G2 || <!--Chipset-->Amd Quad very slow A6-7050B A8-7150B 1.9GHz A10-7350B || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA on AMD R4 R5 Radeon R6 with DP and vga}} || <!--Audio-->{{No|HD audio with IDT 92HD91}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 PCIe GBE}} || <!--Wireless-->{{no|Broadcom or Atheros}} || <!--Test Distro--> || <!--Comments-->2016 64bit - 12.5-inch, 14" or 15.6in (all 1366 x 768) - 19.5V 65w 45W AC adapter - internal pull up tab battery under base which slides off - 2 ddr3l sodimm slots - keyboard swap requires removal of all components -
|-
| <!--Name-->HP ProBook 645 g2, Probook 445 G2, Probook 245 G2 most have cmos rtc battery || <!--Chipset-->AMD very slow A6-8600 A8-8700 a10- || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA 2D for Radeon R5 R6}} || <!--Audio-->{{No|HD Audio }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{No|Intel I219V 100/1000}} || <!--Wireless-->{{No|Intel or Qualcomm Atheros}} || <!--Test Distro--> || <!--Comments-->2016 64bit - 14in and 15.6-inch HD (1366 x 768) or FHD 1080p - 2 ddr3l sodimm slots max 16GB - internal battery - hp ac psu tip -
|-
| <!--Name-->HP Probook 455 G3 should have a cmos battery || <!--Chipset-->AMD slow A10-8700P || <!--IDE-->{{N/A}} || <!--SATA-->1 2.5in sata and most should have 9.5mm dvd-rw || <!--Gfx-->{{Maybe|VESA 2D for Radeon R5}} || <!--Audio-->{{No|HDAudio with Conexant CX7501 codec }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 Realtek RTL8111HSH-CG}} || <!--Wireless-->{{no|RTL8188EE }} || <!--Test Distro--> || <!--Comments-->2016 64bit - 2 ddr3l sodimm slots - keyboard swap problematic -
|-
| <!--Name-->HP Elitebook 725 G3, 745 G3, 755 G3, 725 G4, 745 G4, 755 G4, HP mt43 || <!--Chipset-->Amd slow A8-8600B, A10-8700B, A12-8800B to Quad A8 Pro 9600B to A10 9800 || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA on AMD R5 R6 R7 with DP and vga but screen is low res, dull colours, and blurry}} || <!--Audio-->{{No|HD audio with IDT codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{No|Broadcom 5762 PCIe GBE}} || <!--Wireless-->{{no|Realtek RTL8723BE-VB}} || <!--Test Distro--> || <!--Comments-->2016 64bit - 12.5-inch (1366 x 768) to 14" and 15.6in - 2 sodimm ddr3 - 19.5V 45W AC slim 4.5mm hp adapter - randomly shuts down and the noisy fans constantly on - keyboard swap problematic -
|-
| <!--Name-->HP ProBook 645 G3, 655 G3 should have a cmos rtc battery underside of mb || <!--Chipset-->AMD 8th Gen slow A10-8730B, A8-9600B (4c4t) A6-8530B (2c2t) || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA 2d for AMD R5}} || <!--Audio-->{{No|HD Audio}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 RTL8111HSH}} || <!--Wireless-->{{No|Intel or Realtek}} || <!--Test Distro--> || <!--Comments-->2016 64bit - 15.6in - 2 ddr4 sodimm slots - keyboard repair swap requires removal of all components -
|-
| <!--Name-->HP ProBook 250 G5 easy cmos and external main battery || <!--Chipset-->Intel i7-6500U, i5-6200U, i3-6100U to slow i3-6006U, N3710 all sse4.1 and avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe| }} || <!--Gfx-->{{maybe|VESA 2D for iGPU Intel HD405 to HD520 dGPU or AMD Radeon R5 430M}} || <!--Audio-->{{unk|HDAudio with Realtek ALC3227 (or ALC282) codec 0x0282 }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 rtl8111HSH}} || <!--Wireless-->{{no| }} || <!--Test Distro-->Deadwoods' latest usb3 test iso with noacpi || <!--Comments-->2016 64bit - 15.6 inch 768p - HP ac psu - 2 ddr4 sodimm slots -
|-
| <!--Name-->HP ProBook 250 G6 SL52 LA-E801P - easy cmos battery and external battery || <!--Chipset-->Intel tested '''7200U''' untested 7500U to slow N3060 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|ahci on M.2 sata or 2.5in whichever installed with 1 m.2 permanent and internal dvdrw}} || <!--Gfx-->{{Maybe|VESA 2D for Intel Intel HD Graphics 620 or AMD Radeon 520}} || <!--Audio-->{{yes|HDAudio 0x8086, 0xa170 or 0x8086, 0x9dc8 with ALC3227 aka ALC282 codec 0x10EC, x0282}} || <!--USB-->{{maybe|intel sunrise point-lp USB3.0 xHCI}} || <!--Ethernet-->{{yes|rtl8169 Realtek RTL8111}} || <!--Wireless-->{{No|RTL8821CE or Intel wifi}} || <!--Test Distro-->Deadwoods' latest usb3 test iso with noacpi || <!--Comments-->2017 64bit 768p or 1080p - 19.5V 65W - 2 DDR4 sodimm slots max 16Gb - keyboard swap problematic - synaptics touchpad - poor hinges -
|-
| <!--Name-->HP Pavilion 14-BS, HP 15-BS LA-E802P cmos battery and external battery || <!--Chipset-->Intel i3-7200U to slow Celeron || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata 2.5in (possibly requires the drive cable and M.2 sata3, most have no cdrw dvdrw}} || <!--Gfx-->{{Maybe|VESA 2d for Intel}} || <!--Audio-->{{No|HDAudio 0x8086, 0x9d70 with ALC codec 0x10EC, x0}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|Realtek rtl8169}} || <!--Wireless-->{{No|RTL8188CTV, RTL8821CE or Intel Dual Band Wireless-AC 3168}} || <!--Test Distro-->Deadwoods' latest usb3 test iso || <!--Comments-->2017 64bit 768p all - 19.5V 65W - DDR4 slot max 8Gb - keyboard swap problematic - synaptics touchpad -
|-
| <!--Name-->HP 14-bw022na - cmos coin battery and external battery || <!--Chipset-->AMD very slow A6-9120 APU || <!--IDE-->{{N/A}} || <!--SATA-->m.2 sata || <!--Gfx-->{{Maybe|VESA 2D for R3}} || <!--Audio-->{{no|HDAudio VOID with conexant CX7501 codec}} || <!--USB-->{{maybe|USB3 not working but port on the right works}} || <!--Ethernet-->{{yes|Realtek GbE}} || <!--Wireless-->{{No|Realtek}} || <!--Test Distro-->Deadwoods' latest usb3 test iso with noacpi || <!--Comments-->2017 64bit 768p to 900p - keyboard swap problematic -
|-
| <!--Name-->HP Probook 455 G4, Probook 455 G5, cmos battery on underside of mb take off back cover and below wifi card || <!--Chipset-->AMD very slow A10-9600P APU, A9-9410, A6-9210 APU || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA Radeon R4, R5 or R6}} || <!--Audio-->{{No|HD }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|realtek 1GbE}} || <!--Wireless-->{{no|realtek or intel Wireless-AC 7265}} || <!--Test Distro--> || <!--Comments-->2017 64bit 15.6in 768p - 2 ddr4 sodimm slots - keyboard swap problematic - rr03xl battery -
|-
| <!--Name-->HP ProBook 255 G6 (), easy cmos and external battery || <!--Chipset-->AMD very slow E2-9000e, A9-9420, 9220P, A4-9125 (all 2c) AMD A6-9225 AMD A9-9425 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata 2.5in (possibly requires the drive cable and M.2 sata3 and internal cdrw dvdrw}} || <!--Gfx-->{{Maybe|VESA 2d for R2 R3 R4}} || <!--Audio-->{{No|HDAudio 0x1022, 0x157a or 0x1002, 0x15b3 with ALC codec 0x10EC, x0}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|Realtek rtl8169}} || <!--Wireless-->{{No|RTL8188CTV, RTL8821CE or Intel Dual Band Wireless-AC 3168}} || <!--Test Distro--> || <!--Comments-->2017 64bit 768p all - 19.5V 65W - DDR4 slot max 8Gb - keyboard swap problematic - synaptics touchpad -
|-
| <!--Name-->HP ProBook 255 G7 (la-g078p) - no cmos battery so needs internal battery || <!--Chipset-->AMD very slow E2-9000e, A9-9420, 9220P, A4-9125 (all 2c) AMD A6-9225 AMD A9-9425 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata 2.5in (possibly requires the drive cable and M.2 sata3, most have no internal cdrw dvdrw}} || <!--Gfx-->{{Maybe|VESA 2d for R2 R3 R4}} || <!--Audio-->{{No|HDAudio 0x1022, 0x157a or 0x1002, 0x15b3 with ALC codec 0x10EC, x0}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|Realtek rtl8169}} || <!--Wireless-->{{No|RTL8188CTV, RTL8821CE or Intel Dual Band Wireless-AC 3168}} || <!--Test Distro--> || <!--Comments-->2017 64bit 768p all - 19.5V 65W - DDR4 slot max 8Gb - keyboard swap problematic - synaptics touchpad -
|-
| <!--Name-->ProBook 245 g8 - no cmos rtc coin battery but uses internal battery || <!--Chipset-->AMD very slow A6-9225, A4-9125, A6-8350B, A4-5350B APU || <!--IDE-->{{N/A}} || <!--SATA-->m.2 sata || <!--Gfx-->{{Maybe|VESA R4 R6}} || <!--Audio-->{{no|HDAudio}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|Realtek GbE}} || <!--Wireless-->{{No|Realtek}} || <!--Test Distro-->Deadwoods' latest usb3 test iso || <!--Comments-->2017 64bit 768p - many later variants - keyboard swap problematic -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Probook 255 G7 84AE 7DE72EA 7DE73EA (epv51 la-g076p) - CMOS Error (502) replace main internal battery HT03XL to have bios remember settings || <!--Chipset-->Ryzen 3 2200U 2300U (2c4t), R5 2500U, R7 2700U (4c8t) Raven Ridge || <!--IDE-->{{N/A}} || <!--SATA-->{{no|M.2 (Sata or NVMe) and very optional 2.5in sata, most have mini sata port}} || <!--Gfx-->{{Maybe|VESA 2d 640p to 768p for AMD Vega 3, 6, or 8}} || <!--Audio-->{{unk|HDAudio 0x1022, 0x15e3 with ALC236 0x10ec, 0x0236 codec}} || <!--USB-->{{maybe|USB3 }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no|Realtek RTL8821CE, 8822BE or Intel AC 8265}} || <!--Test Distro-->AROS x64 deadwoods' iso does not boot with cd/dvd and installed to 2.5in ssd, boots to grub choice, select but no further and reboots || <!--Comments-->2017 64bit - 12.5 to 15.6in 768p mostly to 1080p - 1 on smaller laptops or 2 ddr4 2400mhz sodimm slots on larger laptops max 16Gb - hp 4.5mm blue tip charging - keyboard swap problematic - esc boot options f9 boot order f10 bios - synaptics touchpad -
|-
| <!--Name-->HP EliteBook 725 G5, 735 G5, 745 G5, 755 G5, Probook 455 G6, ProBook 645 G6 || <!--Chipset-->Ryzen 3 2200U 2300U (2c4t), R5 2500U, R7 2700U (4c8t) Raven Ridge || <!--IDE-->{{N/A}} || <!--SATA-->{{no|M.2 (Sata or NVMe) and very optional 2.5in sata, some have mini sata port but no cdrw dvdrw}} || <!--Gfx-->{{Maybe|VESA 2d 640p to 768p for AMD Vega 3, 6, or 8}} || <!--Audio-->{{No|HDAudio 0x1022, 0x15e3 with ALC 0x10ec, 0x0 codec}} || <!--USB-->{{maybe|USB3 }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no|Realtek RTL8821CE, 8822BE or Intel AC 8265}} || <!--Test Distro-->Deadwoods' latest usb3 test iso does not boot software error || <!--Comments-->2017 64bit - 12.5 to 15.6in 768p mostly to 1080p - 1 on smaller laptops or 2 ddr4 2400mhz sodimm slots on larger laptops max 16Gb - hp 4.5mm blue tip charging - keyboard swap problematic - esc boot options f9 boot order f10 bios - synaptics touchpad -
|-
| <!--Name-->HP 14-cm, 15-bw0, HP 15-db0043na, HP 15-db0996na, HP 15-db0997na, 17-ca0007na, 17-ca1, ProBook 645 G4 - no cmos battery || <!--Chipset-->Ryzen 2200U (2c 4t) 2500U (4c 8t) with AMD Carrizo FCH 51 || <!--IDE-->{{N/A}} || <!--SATA-->{{no|1 M.2 and 1 2.5in on some larger models and hdd port }} || <!--Gfx-->{{Maybe|VESA Radeon R5 and later Vega 3 or 7}} || <!--Audio-->{{No|HDaudio 0x1002, 0x103c or 0x1022, 0x157a with Realtek ALC3227 0x10ec, 0x0282 but ATI HDMI}} || <!--USB-->{{Maybe|USB3 USB boot drive stuck on kitty's eyes}} || <!--Ethernet-->rtl8169 RTL8111E || <!--Wireless-->{{No|RTL 8723DE 8821 bios locked}} || <!--Test Distro-->2020 Icaros 2.3 USB, Deadwoods' latest usb3 test iso does not boot software error || <!--Comments-->2018 64bit 2kg - screen is dim 14in, 15.6in or 17.3" 768p or 1080p - 65W 19.5V ac adapter - internal 3-cell 41 Wh Li-ion battery does not last long - 2 ddr4 sodimm slots - no DVD-Writer - keyboard swap problematic -
|-
| <!--Name-->HP ProBook 250 G7, 250 G8 - no cmos battery so needs internal battery and needs usb3 boot due to garbage bios boot options || <!--Chipset-->Intel 8235U 8265U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|M.2 nvme not working, optional sata 2.5in requires LS-G072P and ribbon cable, if internal cdrw dvdrw partial boot}} || <!--Gfx-->{{Maybe|VESA 2D for Intel WhiskeyLake-U 620 GT2 UHD}} || <!--Audio-->{{No|HDAudio 0x8086, 0xa170 or 0x8086, 0x9dc8 with ALC236 codec 0x10EC, x0236}} || <!--USB-->{{maybe|Cannon Point-LP USB3.1 xHCI}} || <!--Ethernet-->{{maybe|rtl8169 Realtek RTL8111}} || <!--Wireless-->{{No|RTL8821CE or Intel Dual Band Wireless-AC 3168}} || <!--Test Distro-->Deadwoods' latest usb3 test iso does not boot stuck on kittys eyes || <!--Comments-->2018 64bit 1080p all - 19.5V 65W - DDR4 slot max 16Gb - keyboard swap problematic - synaptics touchpad -
|-
| <!--Name-->HP 255 G7 7DC73EA 2D200EA 87CE (fpp55 la-g07jp), - CMOS Error (502) replace 41.04Wh ht03xl hto3xl dynapack suzhou main battery to have bios remember settings || <!--Chipset-->'''tested''' R5 3500U (4c8t) '''untested''' mostly dual cores - AMD Athlon Gold 3150U (2c2t), Silver 3050U APU (2c2t), Ryzen 3 Pro 3145U APU, 3200U (2c4t) || <!--IDE-->{{N/A}} || <!--SATA-->{{no|1 m.2 NVMe or sata3 up to 2280, optional 2.5in sata, many have mini-sata slimline 6+7 internal port but no physical 9mm drive}} || <!--Gfx-->{{Maybe|VESA 2D from 640p to 1080p for AMD Vega 3, 6 or 8 with up to 2gb ram taken}} || <!--Audio-->{{unk|HDAudio 0x1022, 0x15e3 with realtek ALC236 codec 0x10ec, 0x0236}} || <!--USB-->{{maybe|USB3 but no usb-c}} || <!--Ethernet-->{{maybe|rtl8169 Realtek GbE RTL8111HSH}} || <!--Wireless-->{{No|Realtek 8822BE}} || <!--Test Distro-->2025 Aros One 32bit and 64bit burnt iso does not fully boot (stuck on kitty's eyes) and installed onto 2.5in on another compatible computer, sometimes has dosboot bootstrap error -6 || <!--Comments-->2018 64bit - 14in / 15.6in dim tn panel 768p or 1080p - 2 ddr4 sodimm slots max 16gb - hp 19.5V 45W 65W AC blue tip round 4.5 mm - keyboard swap problematic - synaptics touchpad - caps lock blinking 3 times then 2 quick pulses means ram or bios issue - f9 boot order f10 uefi - laptop needs usb3 to boot and use so avoid until usb3 arrives
|-
| <!--Name-->HP ProBook 450 G5 needs main battery for bios settings saved || <!--Chipset-->Intel i7-8550U, i5-8250U, i3-8130U, i7-7500U, i5-7200U, i3-7100U, i3-7020, i3-6006U all sse4.1 and avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe| }} || <!--Gfx-->{{maybe|VESA 2D for Intel UHD}} || <!--Audio-->{{unk|HDAudio with codec }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 rtl8111HSH}} || <!--Wireless-->{{no| }} || <!--Test Distro-->Deadwoods' latest usb3 test iso with noacpi || <!--Comments-->2018 64bit - 15.6 inch 768p or 1080p - HP ac psu, 1 ddr4 sodimm slot -
|-
| <!--Name-->[https://support.hp.com/gb-en/document/c06955717 ProBook 245 g8], Probook 445R G6, 455R G6, HP14-dk0599sa, pavilion 15-cw1511na 15-cw1507sa, HP 15s-eq1516sa no cmos battery || <!--Chipset-->AMD Athlon Gold 3150U (2c2t), Silver 3050U APU (2c2t), Ryzen 3 Pro 3145U APU, 3200U (2c4t) and 3500U (4c8t) || <!--IDE-->{{N/A}} || <!--SATA-->{{no|1 m.2 (NVMe or sata3 up to 2280), optional 2.5in sata but resets}} || <!--Gfx-->{{Maybe|VESA 2D from 640p to 1080p for AMD Vega 3, 6 or 8 with up to 2gb ram taken}} || <!--Audio-->{{unk|HDAudio 0x1022, 0x15e3 with realtek ALC codec 0x10ec, 0x0}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 Realtek GbE RTL8111HSH}} || <!--Wireless-->{{No|Realtek 8822BE}} || <!--Test Distro-->Aros || <!--Comments-->2018 64bit - 14in / 15.6in dim tn panel 768p or 1080p - 2 ddr4 sodimm slots max 16gb - hp 19.5V 45W 65W AC blue tip round 4.5 mm - keyboard swap problematic - synaptics touchpad - f9 boot order f10 uefi
|-
| <!--Name-->HP ProBook 450 G6 needs main battery for bios settings saved || <!--Chipset-->Intel i7-8565U, i5-8265U, i3-8165U all sse4.1 and avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe| }} || <!--Gfx-->{{maybe|VESA 2D for Intel UHD 620}} || <!--Audio-->{{unk|HDAudio with Realtek ALC3246 aka ALC295 codec }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 rtl8111HSH}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2019 64bit - 15.6 inch 768p or 1080p - 45W 19.5V HP ac psu - 2 ddr4 sodimm slots -
|-
| <!--Name-->Elitebook 735 G6 5VA23AV, Elitebook 745 G6, 255 g8, HP 15s-dy - no cmos battery || <!--Chipset-->AMD® Ryzen™ 5-3500U Ryzen 3-3300U AMD Ryzen 3-3250U AMD Athlon® Gold 3150U AMD Athlon Silver 3050U AMD 3020e || <!--IDE-->{{N/A}} || <!--SATA-->{{no|m.2 2280 nvme in legacy - hp sure start and secure boot disabled but still issues with gpt installs - LS-H323P LS-K201P}} || <!--Gfx-->{{Maybe|VESA for Vega 8, 5 or 3}} || <!--Audio-->{{No|HDAudio 6.34 ahi with realtek ALC codec 0x10EC, 0x0295}} || <!--USB-->{{maybe|USB3 type-A port boots stick partially to kitty eyes}} || <!--Ethernet-->{{Maybe|rtl8169 realtek RTL8111E or 8111H}} || <!--Wireless-->{{No|realtek or intel}} || <!--Test Distro-->2020 Icaros 2.3 onto USB and AROS One 1.8 USB, Deadwoods' latest usb3 test iso with noacpi || <!--Comments-->2019 64bit - 15.6in 1366x768 to 1920x1080 - 2 3200MHz DDR4 sodimms - 19.5V 2.31A or 20V 2.25 45W 4.5X3.0MM hp - esc bios setup, f9 boot device select - low travel keyboard - poor hw03xl or battery life - plastic hooked base with retained screws - touchpad? -
|-
| <!--Name-->HP ProBook 445 G7, 455 G7 || <!--Chipset-->Ryzen 3 4300U 5 4500U 4700U || <!--IDE-->{{N/A}} || <!--SATA-->1 sata and 1 nvme || <!--Gfx-->{{Maybe|VESA Vega 3}} || <!--Audio-->{{unk|HDAudio with realtek alc236 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|realtek rtl8111ep}} || <!--Wireless-->{{No|realtek RTL8822CE or intel AC 9260 or Wi-Fi 6 AX200}} || <!--Test Distro-->Deadwoods' latest usb3 test iso || <!--Comments-->2020 64bit - 14 inch 768p or 1080p - 2 ddr4 sodimm slots - smart 45w 65w hp or usb-c charging - keyboard swap problematic - RE03XL battery -
|-
| <!--Name-->HP ProBook 450 G7 || <!--Chipset-->Intel || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe| }} || <!--Gfx-->{{maybe|VESA 2D for Intel UHD}} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 rtl8111EP}} || <!--Wireless-->{{no| }} || <!--Test Distro-->Deadwoods' latest usb3 test iso with noacpi || <!--Comments-->2020 15.6 inch 768p or 1080p - 1 ddr4 sodimm slot -
|-
| <!--Name-->HP EliteBook 745 G7, 845 G7, HP 15-EH0006NA || <!--Chipset-->AMD Ryzen 3 4300U, 5 4500U, PRO 4650U || <!--IDE-->{{N/A}} || <!--SATA-->SSD M.2 || <!--Gfx-->{{Maybe|VESA AMD Radeon Vega 8}} || <!--Audio-->{{unk|Hdaudio with codec 0x10EC, 0x0257}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2020 64bit - 15.6in 1080p - 1 ddr4 sodimm slot - Bang & Olufsen speakers - keyboard swap problematic -
|-
| <!--Name-->HP ProBook 255 G8, HP 245 G9, ProBook 255 G9 816C2EA#ABE, - no cmos battery only internal battery || <!--Chipset-->AMD RYZEN 3 5300u, 5425U, 5 5500U 5625U, 7 5700u || <!--IDE-->{{N/A}} || <!--SATA-->{{no|NVMe}} || <!--Gfx-->{{Maybe|VESA AMD Vega 6 or 8 hdmi 1.4B}} || <!--Audio-->{{unk|HDAudio}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 Realtek RTL8111HSH-CG GbE}} || <!--Wireless-->{{No|Realtek RTL8822CE or Intel}} || <!--Test Distro--> || <!--Comments-->2021 64bit - 14" to 15.6in 768p to 1080p poor gamut - 45 or 65w hp psu - 2 ddr4 sodimm slots max 16GB - keyboard swap problematic -
|-
| <!--Name-->HP ProBook 450 G9 || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe| }} || <!--Gfx-->{{maybe|VESA 2D for Intel Iris Xe}} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 rtl8111H}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2020 15.6 inch - 1 ddr4 sodimm slot -
|-
| <!--Name-->HP EliteBook 645 g7, 835 G8, 845 g8, HP ENVY x360 13 15, HP 17-cp0021na || <!--Chipset-->AMD Ryzen 5 5650U, 7 5800U, R7 Pro 5850U || <!--IDE-->{{N/A}} || <!--SATA-->NVMe || <!--Gfx-->{{Maybe|VESA 2D for AMD Radeon}} || <!--Audio-->{{unk|HDAudio 0x, 0x with ALC3247 aka ALC236 codec 0x10ec, 0x0236}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{Maybe|Realtek 1Gbe on 645 only}} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2021 64bit - 13.3" or 14" 1080p - poor screens low nits and srgb score - 845 gets hot ue to poor cooling - slim round hp ac - keyboard swap problematic -
|-
| <!--Name-->HP Dev One, HP ProBook 455 G8 || <!--Chipset-->AMD Ryzen 7 5800U, R7 5850U || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|VESA }} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2021 64bit 15.6" 1080p - 2 internal sodimm slots - hp barrel charging -
|-
| <!--Name-->Elitebook 655 g9 669y1ut#aba, || <!--Chipset-->AMD Ryzen 5 PRO 5675U || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|VESA }} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2021 64bit 15.6" 1080p - 1 or 2 internal sodimm slots - usb-c charging -
|-
| <!--Name-->HP probook 635 Aero G8 || <!--Chipset-->AMD Ryzen 5 5600U || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2921 64bit - 14in 1080p - 2 ddr4 slots - ec chip nuvoton NPCX797HA1B - bios winbond 250256JYEN -
|-
| <!--Name-->HP PROBOOK X360 435 G8 cmos battery || <!--Chipset-->RYZEN 5 5600U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe| }} || <!--Gfx-->{{maybe|Vesa 2D }} || <!--Audio-->{{maybe|HDaudio with ALC236 codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|RTL8822CE or Intel AX200}} || <!--Test Distro--> || <!--Comments-->2021 64bit - hp round ac plug -
|-
| <!--Name-->HP Elitebook 845 g9 || <!--Chipset-->AMD 6000 series 6850u || <!--IDE-->{{N/A}} || <!--SATA-->M.2 NVMe || <!--Gfx-->{{Maybe|VESA 2D for Vega 8}} || <!--Audio-->{{unk|HDaudio with codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| }}Qualcomm Atheros || <!--Test Distro--> || <!--Comments-->2022 64bit aluminum case - 14in 1080p to 2140p 16:10 poor screen again - 2 internal ddr5 sodimm slots - usb-c ac charging avoid any knocks - keyboard swap problematic -
|-
| <!--Name-->HP ProBook 445 G10, 455 G10 || <!--Chipset-->AMD Ryzen 5 7530U || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD Vega 7 || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2023 64bit - 15.6in - hp round ac -
|-
| <!--Name-->Hp 455 G11 || <!--Chipset-->AMD Ryzen 3 7335U (4c8t), 5 7535U (6c12t), 7 7735U (8c16t) || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD Vega 7 || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 RTL8111HSH}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2023 64bit - 35.6 cm (14.0 in) 1920x1200 or 2560x1600 - usb-c 45w or 65w ac - 2 ddr5 sodimm slots max 32gb -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|}
====IBM/Lenovo====
[[#top|...to the top]]
Build quality (Lowest to highest)
<pre >
iSeries
Edge
Ideapad
Thinkpad - good cases and construction but electronic internals same as anyone else
</pre >
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Thinkpad 390X 390E (2626) || <!--Chipset-->Neo Magic MM2200 with C400 P2-266 to P3 500MHz || <!--IDE--> || <!--SATA--> || <!--Gfx-->use VESA || <!--Audio-->{{No|256AV or ESS Solo-1}} || <!--USB--> || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->1998 32bit
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Thinkpad 600x || <!--Chipset-->Intel 440BX || <!--IDE-->{{Maybe| }} || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA Neomagic NM2360 MagicMedia 256ZX}} || <!--Audio-->{{No|Crystal CS4297A codec}} || <!--USB--> || <!--Ethernet-->{{N/A| }} || <!--Wireless-->{{N/A| }} || <!--Test Distro-->Icaros 1.3.1 || <!--Comments-->1998 32bit a little support - earlier 600 and 600e were Pentium 2 based
|-
| <!--Name-->Thinkpad X20 (2662-32U) X21 || <!--Chipset-->Intel 440 BX ZX DX || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio-->{{no|AC97 with Cirrus Logic Crystal cs4281}} || <!--USB-->1.1 || <!--Ethernet-->no mini pci intel e100 || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2002 32bit
|-
| Thinkpad T20 (2647) T21 (26) T22 || 440BX || {{Maybe| }} || {{N/A}} || {{partial|Savage IX-MV (VESA only)}} || {{no|Cirrus Logic CS 4614/22/ 24/30}} || {{yes|USB 1.1}} || {{yes|Intel PRO 100}} || {{N/A}} || Icaros 1.2.4 || 2002 32bit
|-
| <!--Name-->A21e (2628, 2655) A22e || <!--Chipset-->440MX || <!--IDE--> || <!--SATA--> || <!--Gfx-->Ati rage mobility || <!--Audio-->{{no|AC97 Cs4299 CS4229}} || <!--USB--> || <!--Ethernet-->intel e100 || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2002
|-
| Thinkpad T23 (2647) || i810 || {{yes|IDE}} || {{N/A}} || {{maybe|S3 Super Savage IX/C SDR (VESA only)}} || {{maybe|AC'97 CS4299}} || {{yes|USB 1.1}} || {{yes|Intel ICH3 PRO 100 VE}} || {{no|Realtek RTL8180L others with bios hacking risky}} || || 2003 32bit with some support
|-
| <!--Name-->Thinkpad X22 X23 X24 || <!--Chipset-->830 || <!--IDE--> || <!--SATA--> || <!--Gfx-->ATi Mobility M6 LY || <!--Audio-->Ac97 CS4299 || <!--USB-->2 x 1.1 || <!--Ethernet-->Intel Pro 100 || <!--Wireless-->Actiontec Harris Semi Intersil Prism 2.5 (X23 and X24 only) || <!--Test Distro--> || <!--Comments-->2003 32bit with slice Ultrabase X2 -
|-
| <!--Name-->A30 A30p || <!--Chipset-->830 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Ati Radeon M6 || <!--Audio-->AC97 CS 4299 || <!--USB--> || <!--Ethernet-->Intel Pro 100 ve || <!--Wireless-->{{No|Intel 2200 bios locked}} || <!--Test Distro--> || <!--Comments-->2003 32bit
|-
| <!--Name-->A31 A31p R31 R32 T30 || <!--Chipset-->830 || <!--IDE-->{{yes| }} || <!--SATA-->{{N/A| }} || <!--Gfx-->Ati Radeon 7500 or FireGL || <!--Audio-->{{yes|AC97 Intel with AD1881A codec}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{yes| Intel Pro 100 ve}} || <!--Wireless-->{{No|Intel bios locked}} || <!--Test Distro-->[https://forums.lenovo.com/t5/Android-Ecosystem-Developers/AROS-An-operation-system-inside-Android/td-p/1441741 Icaros 1.5.2] || <!--Comments-->2003 32bit Also tested with Icaros 2.0.3.
|-
| Thinkpad X30 (2673) X31 (2884-xx2) X31t || i830 || {{yes}} || {{N/A}} || {{maybe|VESA only Radeon M6 Mobility}} || {{yes|AC97 - AD1981B codec}} || {{yes|USB 1.1}} || {{yes|Intel PRO 100}} || {{no|Cisco Aironet or Intel 2915 but atheros with bios hacking}} || Icaros 1.4 || 2004 32bit sound bit distorted
|-
| <!--Name-->R50e R51 || <!--Chipset-->855M || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|Intel 855M use VESA}} || <!--Audio-->intel AC97 with AD1981B codec || <!--USB--> || <!--Ethernet-->{{Yes|Intel 100 VE}} || <!--Wireless-->{{No|Intel PRO Wireless 2200BG bios locked}} || <!--Test Distro--> || <!--Comments-->2004 32bit -
|-
| IBM Thinkpad T40 (2373) T41 T41p (2379) T42 T42p T43 T43p || Intel 8xx || {{partial|PIO}} || {{N/A}} || {{partial|ATI mobility 7500 9000 (VESA only)}} || {{yes|AC97 playback}} || {{yes|uhci 1.1 and ehci 2.0}} || {{no|e1000}} || {{Maybe|Intel 2200bg bios locked but possible AR5BMB-44 AR5212 FRU 39T0081 mini PCI}} || Icaros 1.2.4 || 2004 32bit 16v IBM plug - Centrino Needs ATA=nodma option - issues with the inner chip of the SMT BGA graphics chip
|-
| Thinkpad X32 || i855 || {{yes|40, 60 or 80GB 2.5" PATA HDD}} || {{N/A}} || {{maybe|VESA only ATI Mobility Radeon 7000 with 16MB}} || {{maybe| Intel AC'97 Audio with a AD1981B codec}} || {{yes|USB}} || {{no|Intel 1000}} || {{no|Intel 2200 but atheros with bios hacking}} || 2016 Icaros 2.1 || 2004 32bit - 12.1" TFT display with 1024x768 resolution; 256 or 512MB PC2700 memory standard (2GB max)
|-
| <!--Name-->Thinkpad X40 X40t by Quanta || <!--Chipset--> || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->{{maybe|Intel 800 (VESA only)}} || <!--Audio-->{{yes|AC97 AD1981B}} || <!--USB-->{{yes}} || <!--Ethernet-->{{no|Intel e1000}} || <!--Wireless-->{{Maybe|Intel but most atheros with bios hacking - difficult though}} || <!--Test Distro--> || <!--Comments-->2004 32bit last IBM design
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Thinkpad X41 (IBM) MT 1864 1865 2525 2526 2527 2528 x41t (Lenovo) MT 1866 1867 || <!--Chipset-->Intel with single core 1.5 1.6 and tablet 1.2GHz || <!--IDE-->{{yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Yes|Intel 915GML 2D}} || <!--Audio-->{{yes|AC97 AD1981B}} || <!--USB-->{{yes}} || <!--Ethernet-->{{no|Broadcom BCM5751M tg3}} || <!--Wireless-->{{Maybe|Intel or MiniPCI Wi-Fi Atheros AR5BMB FRU 39T0081 but ordinary atheros 54meg needs risky bios hacking}} || <!--Test Distro--> || <!--Comments-->2005 32bit - amongst first Lenovo design - 3pin cmos -
|-
| <!--Name-->R52 (most 18xx) || <!--Chipset-->Intel 915 || <!--IDE-->{{Yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Yes|Intel 915GML 2D}} || <!--Audio-->{{yes|AC97 AD1981B}} || <!--USB-->{{yes}} || <!--Ethernet-->{{no|Broadcom}} || <!--Wireless-->{{no|Broadcom bios locked}} || <!--Test Distro--> || <!--Comments-->2005 32bit
|-
| <!--Name-->R52 1846, 1847, 1848, 1849, 1850, 1870 || <!--Chipset-->ATi 200m || <!--IDE-->{{Yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{No|ATI}} || <!--Audio-->{{yes|AC97 AD1981B}} || <!--USB-->{{yes}} || <!--Ethernet-->{{no|Broadcom BCM5751M tg3}} || <!--Wireless-->{{no|Broadcom bios locked}} || <!--Test Distro--> || <!--Comments-->2005 32bit
|-
| <!--Name-->Thinkpad T60 T60P
* 64bit - 6 or 8 is 16:10 on T60/p, eg. 8742-CTO 15.4"
* 32bit - 1 and 2 are 14", 15" 4:3, like 2007-YM3 or 1952-CTO
|| <!--Chipset-->*any* T60/p will take a Core 2 Duo CPU with newer BIOS || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->Intel GMA (2D) with "p" graphics card (ATi V5200 or V5250) || <!--Audio-->{{no|HD Audio}} || <!--USB-->{{yes}} || {{no|e1000e 82573L}} || <!--Wireless-->{{No|Intel ipw3945 ABG but atheros with Middleton's or Zender BIOS hacking risky}} || Icaros 1.4 || <!--Comments-->2006 -
|-
| <!--Name-->X60 x60s x60t tablet || <!--Chipset-->945GMS 940GML || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{yes|Intel GMA (2D)}} || <!--Audio-->{{no|AD1981 HD Audio}} || <!--USB-->{{yes}} || <!--Ethernet-->{{no|Intel}} || <!--Wireless-->{{no|Intel 3945 ABG or fru 39T5578 Atheros 5K AR5BXB6 ar5007eg with bios hacking}} || <!--Comments-->Icaros 1.4 || 2006 32bit - perhaps needs a zendered bios update but risky
|-
| <!--Name-->R60 R60e || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->intel 950 with optional radeon x1300 x1400 || <!--Audio-->HD Audio with 1981HD codec || <!--USB--> || <!--Ethernet-->Intel or Broadcom || <!--Wireless-->{{Maybe|Intel 3945 or atheros fru 39T5578 bios locked}} || <!--Test Distro--> || <!--Comments-->2006 32bit
|-
| Thinkpad T61 T61p without Middleton's or Zender BIOS || Core 2 Duo CPU T7300 T8300 || {{N/A}} || <!--SATA-->{{yes| }} || Intel GMA (2D), NVS 140m or Quadro FX 570M () || {{maybe|HD Audio with Analog Devices AD1984 or AD1984A HD Audio Codec routed to the line output}} || <!--USB-->{{yes}} || {{no|intel e1000e 82573L}} || {{No|Intel but atheros with bios hacking risky}} || Icaros 1.6, AROS One || 2007 64bit
|-
| <!--Name-->X61 x61s X61T Tablet || <!--Chipset-->Core Duo T8100 on i965 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{yes|Intel GMA 3100 (2D) slow 3D}} || <!--Audio-->{{no|AD1984 HD Audio}} || <!--USB-->{{yes|USB 2.0}} || <!--Ethernet-->{{no|Intel 82566DM}} || <!--Wireless-->{{maybe|Atheros AR5212 (some revisions use Intel WLAN runs very hot) bios locked}} || <!--Test Distro--> || <!--Opinion-->2007 64bit ultrabook running very hot - ddr2 max 4gb - 3pin cmos -
|-
| <!--Name-->R61 R61i || <!--Chipset-->Intel 965 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->intel 965 || <!--Audio-->HD Audio with conexant codec || <!--USB--> || <!--Ethernet-->Broadcom BCM5787M || <!--Wireless-->{{No|Intel 3945 bios locked}} || <!--Test Distro--> || <!--Comments-->2008 64bit
|-
| Lenovo 3000 N200 || <!--Chipset-->Santa Rosa || {{N/A}} || <!--SATA-->{{maybe| }} || {{yes|Geforce 7300 (2D)}} || {{yes|ALC262 HD Audio}} || <!--USB-->{{yes}} || {{no|Broadcom}} || {{no|Intel 3945 bios locked}} || Icaros 1.4 || 2007 64bit 3D graphics parts are supported but buggy.
|-
| Lenovo 3000 N200 / V200 || GM965 ICH9-M with Intel Mobile Core 2 Duo T5450 || {{N/A}} || <!--SATA-->{{maybe| }} || {{yes|X3100 (2D)}} || {{Maybe|HD Audio ALC269VB or CX20549}} || {{yes| }} || {{no|BCM5906M}} || {{no|Intel 3965 / 4965AGN bios locked}} || Icaros 1.4.1 2.1 || 2007 64bits of laptop works
|-
| <!--Name-->X300 || <!--Chipset-->Core 2 Duo Merom SL7100 1.2GHz || <!--IDE-->{{N/A}} || <!--SATA-->1.8 inch || <!--Gfx-->{{maybe|Intel X3100}} || <!--Audio-->HD Audio AD1984A || <!--USB--> || <!--Ethernet-->Intel || <!--Wireless-->{{No|Intel 4965 bios locked}} || <!--Test Distro--> || <!--Comments-->2007 64bit 13.3" TFT 1440x900 (WXGA+) with LED backlight
|-
| <!--Name-->Thinkpad Edge 11″ AMD K325 || <!--Chipset-->M880G || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{maybe|VESA for ATI HD4200}} || <!--Audio-->{{maybe| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 8111}} || <!--Wireless-->{{no|8192CE (Realtek 8176) bios locked}} || <!--Test Distro--> || <!--Comments-->2007 little support
|-
| <!--Name-->Thinkpad X301 || <!--Chipset-->Core 2 Duo Penryn SU9400 Su9600 with GM45 chipset || <!--IDE-->{{N/A}} || <!--SATA-->1.8 inch micro SATA (uSATA) || <!--Gfx-->{{maybe|Intel X4500}} || <!--Audio-->AD1984A || <!--USB--> || <!--Ethernet-->Intel || <!--Wireless-->{{No|Intel 5xxx WiFi link 5100, 5150, 5300 and 5350 (WiMAX) bios locked}} || <!--Test Distro--> || <!--Comments-->2009 WXGA+ (1440×900) LED backlight display - 2774 or 4057 Alps and 2776 Synaptics touchpad - optical bay interface is Legacy IDE (PATA) - Addonics ADMS18SA, Lycom ST-170m
|-
| <!--Name-->X100e || <!--Chipset-->AMD Athlon Neo Single-Core (MV-40) and dual cores || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|2.5in tray in ide mode in bios}} || <!--Gfx-->{{Maybe|Vesa ATI HD3200}} || <!--Audio-->{{yes|HD Audio with CX20582 codec playback}} || <!--USB-->{{Maybe| }} || <!--Ethernet-->{{Yes|Realtek 8111}} || <!--Wireless-->{{no|Realtek r8192se bios locked}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2009 64bit 11.6in 1366 x 768 - 20v 65W round barrel - enter f1 setup f11 diagnostics f12 boot list - runs very warm -
|-
| <!--Name-->SL400 SL500 || Intel || {{N/A}} || {{Yes|IDE mode}} || {{Maybe|Nvidia 9400M}} || {{Maybe|ALC269}} || {{yes|USB 2.0}} || {{Maybe|RTL8169}} || {{Maybe| bios locked}} || ||
|-
| <!--Name-->SL410 SL510 || 965 || {{N/A}} || {{maybe|IDE mode}} || {{maybe|Intel GMA X4500M (some 2D)}} || {{yes|HD Audio with ALC269 codec - speaker and ear phones}} || {{yes|USB 2.0}} || {{yes|RTL8169}} || {{Maybe| bios locked}} || [http://www.amiga.org/forums/showpost.php?p=645774&postcount=28 Icaros 1.3] || 2009 64bit SL-410
|-
| <!--Name-->T400 ODM Wistron || <!--Chipset-->i || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS}} || <!--Gfx-->{{Maybe|Intel 4500MHD works limited 2d no 3d - optional switchable Nvidia or ATi HD3470 untested}} || <!--Audio-->{{Yes|HD Audio with Codec CX20561 (T400)}} || <!--USB--> || <!--Ethernet-->{{no|Intel e1000e}} || <!--Wireless-->{{No|Intel Wifi Link 5100 (AGN) half height card with FRU 43Y6493 or 5300 bios locked}} || <!--Test Distro--> || <!--Comments-->2009 64bit 20v lenovo plug - non-free firmware required iwlwifi
|-
| <!--Name-->T400s || <!--Chipset-->i || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS}} || <!--Gfx-->{{Maybe|VSEA for Intel 4500MHD works limited 2d no 3d}} || <!--Audio-->{{Maybe|HD Audio with CX20585}} || <!--USB--> || <!--Ethernet-->{{no|Intel e1000e}} || <!--Wireless-->{{No|Intel Wifi Link 5100 (AGN) half height card with FRU 43Y6493 or 5300 bios locked}} || <!--Test Distro--> || <!--Comments-->2009 64bit non-free firmware required iwlwifi
|-
| <!--Name-->Lenovo T500 T510 || <!--Chipset-->i || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS}} || <!--Gfx-->{{maybe|VESA for switchable Intel / AMD HD 3640}} || <!--Audio-->{{maybe|Intel HD Audio with a CX20561 (t500) and CX20585 (T510) codec}} || <!--USB--> || <!--Ethernet-->{{no|Intel }} || <!--Wireless-->{{no|Intel or Lenovo branded unit Atheros AR5007EG AR5BHB63 bios locked}} || <!--Test Distro--> || <!--Comments-->2009 64bit
|-
| <!--Name-->X200 ODM Wistron [http://itgen.blogspot.co.uk/2008/12/installing-arch-linux-on-lenovo.html X200s] and x200t tablet model without [http://fsfe.soup.io/post/590865884/the-unconventionals-blog-English-Flashing-Libreboot-on Risky flash of the Libreboot BIOS] || <!--Chipset-->GM45 GS45 with slow Celeron, SU or faster SL Core 2 Duos CPUs || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS}} || <!--Gfx-->{{maybe||Intel GMA 4500 MHD 2D but slow software 3D tunnel 10 gearbox 8 tests}} || <!--Audio-->{{yes|Intel HD Audio with Conexant CX20561 codec playback}} || <!--USB-->{{{Yes|USB 2.0 USB SD card reads and writes}} || <!--Ethernet-->{{no|Intel 82567LM Gigabit}} || <!--Wireless-->{{no|Intel Pro 5100 5150 5300 5350 AGN due to whitelist prevention bios locked}} || <!--Test Distro-->Icaros 2.0.1 || <!--Comments-->2009 64bit 12.1" CCFL (webcam version) or LED backlit (no webcam). no support for 54mm express cards or Authentec 2810 fingerprint reader - thinkpoint only no trackpad - 3pin cmos -
|-
| <!--Name-->Lenovo T410 T410s T410si || <!--Chipset-->qm57 with i5 m || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS}} || <!--Gfx-->{{maybe|use vesa Intel 5700MHD (Ironlake) core processor igp with optional Nvidia Quadro NVS 3100M}} || <!--Audio-->{{yes|HD Audio Conexant CX20585 codec playback}} || <!--USB-->{{Yes|2.0}} || <!--Ethernet-->{{no|Intel 82577lm gigabit}} || <!--Wireless-->{{unk|Intel n 6200 or Atheros AR9280 AR5BHB92 half size minipcie bios locked}} || <!--Test Distro-->Icaros 2.2 xmas || <!--Comments-->2009 64bit battery life much lower with Nvidia graphics version - no support firewire ricoh r5c832 - ricoh sd card - series 5 3400
|-
| <!--Name-->X201 X201s x201t || <!--Chipset-->QM57 Core i3 370m, i5 M520 2.4GHz or i7 620LM 2.0GHz || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS}} || <!--Gfx-->{{Maybe|vesa 2d on Intel GMA HD}} || <!--Audio-->{{yes|Intel HD with [https://ae.amigalife.org/index.php?topic=94.0 Conexant 20585] codec}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no|Intel}} || <!--Wireless-->{{No|bios locked}} || <!--Test Distro--> || <!--Comments-->2010 X201 arrandale power consumption limits battery life to 3-4 hours for 48Whr though to 6 on 72Whr - 12.5" WXGA - 3pin cmos -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Ideapad B470, B570, V370, V470, V570 || <!--Chipset-->Intel® Core™ i5 i5-2430M, i5-2450M, || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->Vesa 2d for Intel || <!--Audio-->HDaudio 0x8086, 0x1c20 with codec || <!--USB-->USB3 || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no|whitelisted}} || <!--Test Distro--> || <!--Comments-->2011 64bit - 14in or 15.6in 768p -
|-
| <!--Name-->T420 type 4180 4236, t420s , T520 4239 L520 || <!--Chipset-->i5 2540, 2520 or i7 2860QM 2620 has sse4.1 avx || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS but not AHCI}} || <!--Gfx-->{{Maybe|Vesa 136 x 768 - Intel HD 3000 with optional NVS 4200M Nvidia optimus or Radeon HD 565v }} || <!--Audio-->{{Yes|HD Audio playback ear phones only with Conexant CX20672 codec - AHI 6.27}} || <!--USB-->{{Maybe| }} || <!--Ethernet-->{{No|Intel PRO 1000 82579LM}} || <!--Wireless-->{{No|Realtek 1x1, Intel Ultimate-N 6205 6250 2x2 6300 3x3 all bios locked}} || <!--Test Distro-->Icaros 2.2.2 add noacpi to grub boot options || <!--Comments-->2011 64bit - screen 1600x900 or 1366x768 - 2 ddr3l sodimm slots max 16gb -
|-
| <!--Name-->Thinkpad W520 || <!--Chipset--> has sse4.1 avx || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS}} || <!--Gfx-->{{Maybe|VESA Intel HD 3000 with nvidia quadro 1000m 2000m optimus issues with Nvidia Intel hybrids}} || <!--Audio-->{{Maybe|Intel Hd with CX 20585 codec}} || <!--USB--> || <!--Ethernet-->{{No|Intel 82579 Lm}} || <!--Wireless-->{{No|Intel 6000s}} || <!--Test Distro--> || <!--Comments-->2011 64bit - 15.6" TFT display with 1366x768 (HD), 1600x900 (HD+) or 1920x1080 (FHD) resolution with LED backlight
|-
| <!--Name-->X220 x220t || <!--Chipset-->QM67 express, dual i5 2520M or i7 dual 2620M sse4.1 avx support || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS but not AHCI}} || <!--Gfx-->{{Maybe|VESA 2D 1024 x 768 for Intel HD Graphics 3000}} || <!--Audio-->{{Yes|Intel HD playback with Conexant 20672 codec ear phones and speaker - AHI 6.27 6.34}} || <!--USB-->{{Yes|USB 2.0}} || <!--Ethernet-->{{No|Intel 82579LM}} || <!--Wireless-->{{No|Intel Centrino Advanced-N 6205 Wi-Fi bios locked}} || <!--Test Distro-->Icaros 2.3, Aros One USB 1.6 || <!--Comments-->2011 64bit possible - uses slimmer 7 mm storage sata devices - NEC USB 3.0 on i7's - unwanted trackpad gestures when palms rests on it - 2 ddr3 sodimm slots - external battery -
|-
| <!--Name-->Thinkpad X120e, x121e Quanta FL8A DAFL8AMB8D0 Rev D || <!--Chipset-->Hudson M1 with slow AMD E350 has no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA ATI 0x9802}} || <!--Audio-->{{Maybe|ATI SBx00 Azalia HD Audio}} || <!--USB-->USB 2.0 || <!--Ethernet-->RTL8169 RTL8111 || <!--Wireless-->{{no|Broadcom 0x0576 bios locked}} || <!--Test Distro--> || <!--Comments-->2011 64bit 11.6 inch screen - 1 inch think - chiclet keyboard
|-
| <!--Name-->Ideapad S205 G575 G585, Edge 11 E325 || <!--Chipset-->Slow E-350 later E-450 with A75 or AMD Athlon II Neo has no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA HD6310}} || <!--Audio-->{{Yes| }} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|Atheros}} || <!--Wireless-->{{No|Broadcom}} || <!--Test Distro--> || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 - removeable and plug in battery - 2pin CR2032 CMOS battery -
|-
| <!--Name-->Ideapad S206 || <!--Chipset-->AMD E300 1.3GHZ Dual has no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA }} || <!--Audio-->{{Maybe|Intel HD Audio with CX20672 codec}} || <!--USB-->{{Maybe|3.0}} || <!--Ethernet-->Broadcom 10/100 || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - 11.6" and integrated battery - Conexant®
|-
| <!--Name-->Lenovo x130e or x131e edu || <!--Chipset-->Slow AMD E-300 or E-450 has no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA Radeon HD 6310 or 6320 }} || <!--Audio-->{{Maybe|HD Audio Realtek ALC269VC / ALC3202 codec}} || <!--USB-->{{Maybe|USB 30 and USB 20}} || <!--Ethernet-->{{maybe|Realtek RTL8111 RTL8168B}} || <!--Wireless-->{{No|Realtek RTL8188CE or Broadcom BCM43228 bios locked}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - rubber edged bumper for K12 education market - 2pin CR2032 CMOS battery -
|-
| <!--Name-->Thinkpad Edge E135 E335 || <!--Chipset-->amd dual E-300, E2-1800 or E2-2000 slow atom like A68M FCH has no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|SATA 3.0Gb/s 2.5" wide 7mm high}} || <!--Gfx-->{{Maybe|VESA radeon 6310 or 7340 vga or hdmi}} || <!--Audio-->{{Maybe|HDAudio with Realtek ALC3202 codec}} || <!--USB-->{{maybe|2 usb3, 1 powered usb2}} || <!--Ethernet-->{{maybe|rtl8169 8111f}} || <!--Wireless-->{{no|Realtek WLAN whitelist bios locked}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - 11.6 inch to 13.3in 1366x768 - Acrylonitrile-Butadiene-Styrene (ABS) plastic case - external battery - 20v 65w lenovo barrel ac - 2 ddr3 sodimm 8Gb max -
|-
| <!--Name-->ThinkPad Edge E525 E535 LENOVO IDEAPAD Z575 || <!--Chipset-->AMD A6-3420M A8-3500M later A8-4500M has no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA AMD 6620G later 7640G}} || <!--Audio-->{{No|HDAudio with Conexant codec}} || <!--USB-->{{Maybe|USB2 but not usb3}} || <!--Ethernet-->{{maybe|rtl8169 Realtek 8111}} || <!--Wireless-->{{No|Broadcom bios locked}} || <!--Test Distro--> || <!--Comments-->2013 64bit does not support AVX or SSE 4.1 - 15.6in 1368 x 768 matt - 65W 20v lenovo round psu - thick desktop replacement - ThinkPad Edge E520 E520S E525 E530 E545 E535 E530C Laptop Keyboard swap -
|-
| <!--Name-->T430 t430i T530 || <!--Chipset-->ivy bridge i5 3320 3230m on Intel QM77 has sse4.1 and avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA 1366 x 768 for Intel HD 4000 with optional Nvidia 5400M}} || <!--Audio-->{{Maybe|Intel HD with Realtek ALC3202 aka ALC269VC codec playback ear head phones - HDA 6.27}} || <!--USB-->{{Yes|USB 2 ports and usb2.0 devices thru usb 3.0 ports}} || <!--Ethernet-->{{No|Intel e1000}} || <!--Wireless-->{{unk|Intel or Atheros AR9285 bios locked}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2013 64bit fan noise and chiclet keyboard, synaptics trackpad - HD+ 768p -
|-
| <!--Name-->Thinkpad X230 x230t || <!--Chipset-->Intel QM67 express i5 has sse4.1 and avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA }} || <!--Audio-->{{Maybe|Intel HD with ALC269 aka ALC3202}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no|Intel }} || <!--Wireless-->{{No|I}} || <!--Test Distro--> || <!--Comments-->2013 64bit - 12.2 in 1366 x 768 - 2 ddr3 sodimm slots - external battery -
|-
| <!--Name-->Thinkpad T440 t440s t440p T540 L440 L540 || <!--Chipset-->intel haswell 8 series Core i3 to i7 has sse4.1 and avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA - Intel 4600 or Nvidia}} || <!--Audio-->Intel HD with Realtek ALC3232 alc269 codec or ALC292 || <!--USB-->{{maybe| }} || <!--Ethernet-->{{No|Intel}} || <!--Wireless-->{{No|Intel AC 7260 bios locked}} || <!--Test Distro--> || <!--Comments-->2014 64bit - 14 and 15" models with glitchy trackpad and no physical buttons - keyboard repair not easy as well as 4 variants of key caps - 2pin CR2032 CMOS battery -
|-
| <!--Name-->Thinkpad X240 x240t ultrabook TN (20AL0081GE), HD IPS display without touch (20AL007NGE) and touch (20AL0076GE) but all 65% sRGB || <!--Chipset-->haswell i7-4600U i5 4200U 4210U 4300U i3-4100U - two batteries, one internal 3cell 45N1110 (45N1111) or 45N1112 (FRU 45N1113) and external 3 / 6cell 45N1126 (FRU 45N1127) || <!--IDE-->{{N/A}} || <!--SATA-->2.5in 7mm sata (torq t7), m.2 2242 in WWAN slot (m and b key NGFF Sata) || <!--Gfx-->{{Maybe|use VESA for Intel 4400 for vga or mini-dp}} || <!--Audio-->{{No|HDAudio 0x8086, 0x0a0c 0x8086, 0x9c20 with Realtek ALC3232 aka ALC292 0x10ec, 0x0292}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{no|Intel® 82577LM Gigabit (Hanksville) }} || <!--Wireless-->{{no|Realtek or Intel 7260n I218-V or I218-LM bios locked}} || <!--Test Distro-->AROS One USB || <!--Comments-->2014 64bit - 12.2in 1366 x 768 or 1080p - 1 ddr3l sodimm slot - no keyboard spill drainage and at least 2 variants of key caps - lenovo rectangle pwr ac - TPM 1.2 - Bluetooth 4.0 no support - bottom panel with 8 retained screws - 2pin CR2032 CMOS battery -
|-
| <!--Name-->ThinkPad Edge E545
* key cap swap with E440 E531 E540 L440 L450 T431S T440S T440P T540
* Keyboard swap L540 T540p W540 Edge E531 E540 W541 T550 W550S L560 P50S T560
|| <!--Chipset-->AMD Socket FS1r2 A6-5350M (2c2t) or A8-4500M, A8-5550M, A10-5750M (4c4t) with A76M FCH has sse4.1 and avx || <!--IDE-->{{N/A}} || <!--SATA-->2.5in 9.5mm - enter UEFI bios with Enter or ESC, config section, sata into compatibility and security, secure boot disabled - mini sata DVD burner PLSD DS8A9SH || <!--Gfx-->{{Maybe|VESA 2D for AMD 7640G, 8450G, 8550G, 8650G ?? Islands}} || <!--Audio-->{{no|VOID for HDAudio 6.34 0x1022, 0x780d with Conexant CX20590 Analog 0x14f1, 0x506e CX20671 codec 0x14f1, 0x5069 or audio over Trinity HDMI}} || <!--USB-->{{maybe|boots pen drives from yellow usb port but not from blue USB3 ones, issues with AMD usb3 hardware quirks}} || <!--Ethernet-->{{yes|rtl8169 1GbE 8111F}} || <!--Wireless-->{{No|Broadcom BCM43142 bios locked}} || <!--Test Distro-->AROS One 2.3 USB works with noacpi added to end of grub2 boot line but not booting on AROS One 64bit 1.1 via usb2 stick or iso burnt to dvd || <!--Comments-->2015 64bit - 15.6in 1366 x 768 matt - 20v 65w 90w round lenovo plug psu - 2 DDR3 SODIMM slots 16GB Max - external 6 Cell Li-Ion Battery 48Wh l11s6y01 45n1043 - 2pin CR2032 CMOS battery in wifi area jp1202 - amd v(tm) virtualization not working -
|-
|<!--Name-->Y50-70 || <!--Chipset-->Intel 4 || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->GTX 860M or GTX 960M || <!--Audio-->HDAudio || <!--USB-->USB3 || <!--Ethernet-->{{maybe|rtl8169 rtl8111}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2015 64bit -
|-
|<!--Name-->AMD platform codes
*Beema: ABM,
*Carizzo-L: ACL,
*Carizzo: ACZ,
*Godavari: AGR,
*Kaveri: AKV,
*Stoney Ridge: ASR,
*Stoney Ridge: AST (NB),
|| <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
*Summit Ridge: ASU,
*Bristol Ridge-L: ABL,
*Bristol Ridge: ABR,
*Raven Ridge: ARR,
*Picasso: API
|-
|<!--Name-->Lenovo ThinkPad P50 || <!--Chipset-->Intel i7-6820HQ || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->Quadro M2000M || <!--Audio-->HDAudio || <!--USB-->USB3 || <!--Ethernet-->{{no|Intel}} || <!--Wireless-->{{no|Intel }} || <!--Test Distro--> || <!--Comments-->2015 64bit -
|-
| <!--Name-->[https://www.laptop-schematics.com/db/78/V%20series%20laptops%20(Lenovo)/ V110-14AST (14in) V110-15AST, V110-14ISK V110-15ISK 80TL (15")], || <!--Chipset-->AMD E1-9000, A6-9210 to A9-9410 all dual core and intel 6006u, 6100u, 6200u || <!--IDE-->{{N/A}} || <!--SATA-->1 2.5in sata most 7mm some 9.5mm || <!--Gfx-->{{Maybe|VESA 2D for AMD R2, R3, R5 or R6 or Intel Gfx}} || <!--Audio-->{{No|HDAudio with codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2016 64bit - 14in to 15.6in mostly 768p 220 nits - 20v 45W or 65W lenovo slim rectangle end ac - keyboard swap hard - integrated 24WHr battery - 4gb ddr4 ram soldered and 1 2133Mhz ddr4 slot max 12Gb - abs plastic -
|-
|<!--Name-->
*ThinkPad A275 12in (1 ddr4 1866MHz sodimm)
*Thinkpad A475 14in (2 ddr4 1866MHz sodimm) - both internal (main) and external (secondary) battery
|| <!--Chipset-->A10-8730B A10-9700B 2.500Ghz later A12-8830B A12-9800B all 4c4t (AVX2 on 9000s) || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe|7mm 2.5in sata with mbr and not gpt, setup in another machine - secure boot disabled, bios startup boot set to legacy then uefi - WWAN slot cannot use M.2 2242 sata with M and B key}} || <!--Gfx-->{{Maybe|VESA 2D for AMD R5 or R7}} || <!--Audio-->{{No|HDAudio 6.34 ahi 0x1022, 0x157a with ALC3268 aka ALC298 codec 0x10ec, 0x0298 - VOID even with QUERY / QUERYD added}} || <!--USB-->{{no|USB3 error on boot suspect AMD usb3 quirk}} || <!--Ethernet-->{{Yes|rtl8169 RTL8111EPV}} || <!--Wireless-->{{No|Realtek RTL8822BE WLAN whitelist locked cannot swap}} || <!--Test Distro-->{{maybe|AROSOne USB 32bit 1.8 with noacpi noapic noioapic added to grub2 boot line but Aros One 64bit 1.2 USB has krnPanic }} || <!--Comments-->2016 64bit 12 or 14in 768p - 45W or 65w lenovo rectangle ac adapter - F1 enter bios and F12 boot order - 6 retained screws and snap on base - 2100 error message no solution except using only efi/gpt bios option -
|-
|<!--Name-->320S-15AST, 320S-15ABR, ideapad Slim 1-11AST-05 81VR || <!--Chipset-->AMD A6-9220e, AMD A6-9225, A9-9425, A10-9600P 7th Gen || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata 2.5in}} || <!--Gfx-->{{maybe| Vesa 2D for AMD}} || <!--Audio-->{{No| }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No|Qualcomm Atheros QCA9377 or Realtek RTL8821CE}} || <!--Test Distro--> || <!--Comments-->2018 64bit AVX2 - 14in or 15.6" 768p - 1 ddr4 sodimm slot - keyboard swap problematic -
|-
|<!--Name-->Lenovo Ideapad S145-14AST S145-15AST 81N3 || <!--Chipset-->AMD A6-9225, A9-9425, A10-9600P 7th Gen, AMD A12-9720P Mobo 5B20P11110 NMB341 Bristol Ridge || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata 2.5in}} || <!--Gfx-->{{Maybe|VESA Radeon 8670A 8670M 8690M GCN 3}} || <!--Audio-->{{No| }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No|Qualcomm Atheros QCA9377 or Realtek RTL8821CE}} || <!--Test Distro--> || <!--Comments-->2018 64bit AVX2 - 14in or 15.6" 768p or 1080p - 1 ddr4 sodimm slot -
|-
|<!--Name-->Lenovo Ideapad V145-14AST V145-15AST, 81mt, Ideapad 310, Ideapad 320-15ABR, Ideapad 330-14AST 330-15AST 330-17AST || <!--Chipset-->AMD A6-9225, A9-9425 (2c2t), A10-9600P 7th Gen, AMD A12-9720P Mobo 5B20P11110 NMB341 Bristol Ridge || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata 2.5in with optional dvd}} || <!--Gfx-->{{Maybe|VESA Radeon 8670A 8670M 8690M GCN 3}} || <!--Audio-->{{unk|HDaudio with ALC3240-va3-cg aka ALC236? codec 0x10de, 0x0236}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{no|rtl8169 8106E 10/100 only}} || <!--Wireless-->{{No|Qualcomm Atheros QCA9377 or Realtek RTL8821CE}} || <!--Test Distro--> || <!--Comments-->2017 64bit AVX2 - 14in or 15.6" 768p or 1080p - 1 ddr4 sodimm slot - 45w 65w slim ac adapter -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
|<!--Name-->Lenovo V330-14ARR 81B1, V330-15ARR 81, 330-14ARR 81 330-15ARR 81D2 - battery internal about 30whr || <!--Chipset-->AMD Ryzen R3 2200U, 2300U or R5 2500U Raven Ridge || <!--IDE-->{{N/A}} || <!--SATA-->M.2 nvme/sata, optional 2.5in sata but no dvd || <!--Gfx-->{{Maybe|VESA Vega 3, 6 or 8 up to 1Gb of soldered ram memory taken}} || <!--Audio-->{{No|HDAudio 0x1002, 0x15de with Realtek® ALC5682I-VD codec 0x10de, 0x or coxenant CX11802 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|Realtek 1GbE}} || <!--Wireless-->{{no|Realtek}} || <!--Test Distro--> || <!--Comments-->2018 64bit - 14" 768p 20mm thick 1.8kg - 20v 2.25a 45w ac round barrel - chiclet keyboard - 4Gb soldered and 1 ddr4 sodimm - TPM 2.0 in bios - 4GB soldered -
|-
|<!--Name-->Ideapad 330s-14ARR, 330s-15ARR, ideapad 330S-14IKB, 330S-15IKB, - battery internal about 30whr || <!--Chipset-->AMD Ryzen R3 2200U, 2300U or R5 2500U Raven Ridge || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|nvme}} || <!--Gfx-->{{Maybe|VESA 2D for AMD or Intel 610, 620 up to 1Gb of soldered ram memory taken}} || <!--Audio-->{{No|HD Audio with codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|Realtek}} || <!--Test Distro--> || <!--Comments-->2018 64bit - 14" 20mm thick 1.8kg - 20v 2.25a 45w ac round barrel - chiclet keyboard - 4Gb soldered and 1 ddr4 sodimm - TPM 2.0 in bios - 4GB soldered -
|-
|<!--Name-->Thinkpad Edge E485 E585 - internal battery only || <!--Chipset-->AMD Ryzen R3 2300U R5 2500U R7 2700U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|m.2 nvme optional 1 2.5in sata}} || <!--Gfx-->{{Maybe|VESA for Vega 3, 8 or 10}} || <!--Audio-->{{No|HDAudio with CX11852 codec }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 rtl8111GUS}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2018 64bit - 14in or 15.6in 768p or 1080p - USB-C 20V 2.25A 3.25A avoid knocking charging port as damages easily - 2 ddr4 sodimm slot max 2400Mhz 32GB - TPM 2.0 software -
|-
|<!--Name-->Thinkpad A285 - internal and external battery || <!--Chipset-->AMD Ryzen PRO 3 2200U 5 2500U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|m.2 nvme/sata}} || <!--Gfx-->{{Maybe|VESA Vega up to 2Gb of soldered ram memory taken}} || <!--Audio-->{{unk|HD Audio with ALC ALC3287 codec aka ALC257 }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{No|Mini-Ethernet/Docking}} || <!--Wireless-->{{no|Realtek or Qualcomm - WLAN whitelist no more??}} || <!--Test Distro--> || <!--Comments-->2018 64bit - 12.5in 1080p - avoid usb-c port being lifted/moved whilst in use as damages laptop easily - soldered ram 8gb or 16gb - WWAN whitelist - keyboard swap problematic -
|-
|<!--Name-->Thinkpad A485 bios setting [https://github.com/PSPReverse/PSPTool AMD PSP Platform Security Processor Key] - internal and external battery || <!--Chipset-->AMD Ryzen PRO 5 2500U || <!--IDE-->{{N/A}} || <!--SATA-->sata port and m.2 nvme port || <!--Gfx-->{{Maybe|VESA Vega }} || <!--Audio-->{{unk|HD Audio with ALC ALC3287 codec aka ALC 257 }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 RTL8111GUL}} || <!--Wireless-->{{no|Realtek or Qualcomm wifi - WLAN whitelist no more??}} || <!--Test Distro--> || <!--Comments-->2018 64bit - 14in 768p, 1080p or 1440p - avoid usb-c port being lifted/moved whilst in use as damages laptop easily - 2 ddr4 sodimm slots max 32gb - WWAN whitelist - keyboard swap problematic -
|-
|<!--Name-->[https://www.diy-laptoprepair.com/forum/fix-Lenovo-V155-15-repair-guide-schematics.php Lenovo v155-15api 81V5] V155 (15" AMD) budget all plastic build - MS new protocol, HID over I2C so [https://askubuntu.com/questions/1033033/elantech-touchpad-does-not-work-i2c-hid i2c] [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/input/mouse/elantech.c?h=v6.17 i2c] [https://www.kernel.org/doc/html/v4.16/input/devices/elantech.html PS2 hybrid trackpad] [https://cgit.freebsd.org/src/tree/sys/dev/atkbdc/psm.c?h=releng/14.3 elantech] [https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/dev/pckbc/?only_with_tag=OPENBSD_7_8_BASE i2c-hid] 04F3:3140 touchpad not working - internal sunwoda battery L18D3PF1, L18L3PF1, L18C3PF2 35Whr most dead after 5 years || <!--Chipset-->'''tested''' Ryzen 5 3500U and Ryzen 3 3200U - '''untested''' AMD Athlon 300U with bios winbond 25q64fwsiq soic 1.8v bios near nvme || <!--IDE-->{{N/A}} || <!--SATA-->1 M.2 nvme and usually 2.5in 7mm sata - install on mbr not gpt 2.5in in another compatible machine - mini sata dvd/cd da-8aesh11b will boot cd or dvd aros || <!--Gfx-->{{Maybe|VESA 2D to 1080p work for Vega 3 or 8 with up to 2Gb of soldered ram memory taken but hdmi 1.4b no output}} || <!--Audio-->{{Yes|HDAudio add 0x1022, 0x15E3 with ALC3287 aka Realtek ALC257 codec 0x10ec, 0x0257 with 32bit on external speaker and most of the time works on 64bit}} || <!--USB-->{{no|2 USB3.0 usb-a, on left hand side, detected but not working}} || <!--Ethernet-->{{yes|rtl8169 RTL8111GUS works well with 32bit and 64bit}} || <!--Wireless-->{{no|Realtek or Intel wifi}} || <!--Test Distro-->2025 AROS One 2.8 DVD 32bit and AROS One x64 1.1 and 1.2 iso DVD burnt but not USB boot || <!--Comments-->2019 64bit - 15.6in 768p or 1080p 200nits tn panel - 4Gb ddr4 2400MHz soldered with 1 dimm slot max 20Gb - round ac 20V 65W psu 4.0mm x 1.7mm - Fn+F2 to enter bios and F12 boot order - no sd card slot - 2pin cr2032 cmos coin battery -
|-
|<!--Name-->V15-ADA 82C700E4UK- elan touchpad not working - internal battery 34whr L16M2PB2 l16l2pb3 || <!--Chipset-->AMD r5 3500U || <!--IDE-->{{N/A}} || <!--SATA-->1x 2.5" HDD + 1x M.2 SSD NVMe near fan, no cd dvd || <!--Gfx-->{{Maybe|VESA 2D for Vega 3, 8 with up to 1080p with 2Gb of soldered ram memory taken}} || <!--Audio-->{{Yes|HD Audio 6.36 0x1022, 0x15E3 with R155189 ALC236 codec 0x10ec, 0x0236 on 32bit and on 64bit}} || <!--USB-->{{maybe|3 USB3, on left hand side,}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|Realtek or Qualcomm wifi}} || <!--Test Distro-->2025 3500U with Aros One 32bit 2.8 installed to 2.5in drive on another machine and same for 64bit || <!--Comments-->2019 64bit - 14 or 15.6in 768p on low spec machines to 1080p - 4GB soldered with 1 ddr4 sodimm slot - 2pin cr2032 cmos coin battery - sd card slot - noisy fan -
|-
|<!--Name-->V15-ADA 82C7 - elan touchpad not working - internal battery 34whr L16M2PB2 l16l2pb3 || <!--Chipset-->AMD Athlon Silver 3020e, Ryzen 3 3050U, 3150U, 3250U || <!--IDE-->{{N/A}} || <!--SATA-->1x 2.5" HDD + 1x M.2 SSD NVme near fan, no cd dvd || <!--Gfx-->{{Maybe|VESA 2D for Vega 3, 8 with up to 1080p with 2Gb of soldered ram memory taken}} || <!--Audio-->{{No|HD Audio 6.36 0x1022, 0x15E3 with RTS5119 R155119 ALC230 codec}} || <!--USB-->{{maybe|3 USB3.0, on left hand side,}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|Realtek or Qualcomm wifi}} || <!--Test Distro-->2025 Aros One 32bit 2.8 and 64bit || <!--Comments-->2019 64bit - 14 or 15.6in 768p on low spec machines to 1080p - 4GB soldered with 1 ddr4 sodimm slot - 2pin cr2032 cmos coin battery - sd card slot - for this mbd bios ram disable doesn't work - noisy fan -
|-
|<!--Name-->Lenovo V14-ADA 82C6, - elan touchpad not working - if blank black display, bios bug going from uefi->legacy so reset bios rhs push in with pin, then Down, ent, Right x3, ent, up, ent, right, ent x2 - internal battery 34whr L16M2PB2 l16l2pb3 || <!--Chipset-->'''tested''' 3250U - '''untested''' AMD Athlon Silver 3020e, Ryzen 3 3050U, 3150U - for this mbd GV451&GV551 NM-D151 bios ram disable doesn't work || <!--IDE-->{{N/A}} || <!--SATA-->1x 2.5" HDD if cbl + 1x M.2 SSD NVMe near fan, no cd dvd || <!--Gfx-->{{Maybe|VESA 2D for Vega 3 up to 1080p with 2Gb of soldered ram memory taken}} || <!--Audio-->{{no|HD Audio 6.36 0x1022, 0x15E3 with Realtek ALC3223 RTS5119 R185199 aka ALC230 codec 0x10ec, 0x0230 on 32bit and on 64bit}} || <!--USB-->{{maybe|3 USB3, on left hand side,}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|Realtek or Qualcomm wifi}} || <!--Test Distro-->2025 AMD 3250U with Aros One 32bit 2.8 installed to 2.5in drive on another machine and same for 64bit || <!--Comments-->2019 64bit - 14 or 15.6in 768p on low spec machines to 1080p - 4GB soldered with 1 ddr4 sodimm slot - 2pin cr2032 cmos coin battery - sd card slot - F2 bios F12 select -
|-
|<!--Name-->IdeaPad 1 14ADA5 (low spec cpus) ideaPad 3 14ADA05, IdeaPad 3 15ADA05 81W100QVUK, IdeaPad 3 17ADA05 - elan touchpad not working - internal battery 34whr L16M2PB2 l16l2pb3 || <!--Chipset-->AMD Athlon Silver 3020e, Ryzen 3 3050U, 3150U, 3250U, Ryzen 5 3500U on mobo NM-C821 REV 0.2 1.0 || <!--IDE-->{{N/A}} || <!--SATA-->1x 2.5" HDD if cbl + 1x M.2 SSD NVMe near fan, no cd dvd || <!--Gfx-->{{Maybe|VESA 2D for Vega 3, 8 up to 1080p with 2Gb of soldered ram memory taken}} || <!--Audio-->{{no|HD Audio 6.36 0x1022, 0x15E3 with ALC230 codec 0x10ec, 0x0230 on 32bit and on 64bit}} || <!--USB-->{{maybe|3 USB3, on left hand side,}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|Realtek or Qualcomm wifi}} || <!--Test Distro-->2025 Aros One 32bit 2.8 installed to 2.5in drive on another machine and same for 64bit || <!--Comments-->2019 64bit - 14 or 15.6in 768p on low spec machines to 1080p - 4GB soldered with 1 ddr4 sodimm slot - 2pin cr2032 cmos coin battery - sd card slot - F2 bios F12 boot select -
|-
|<!--Name-->Lenovo IdeaPad L340-15API 81LW001CUS L340-17API - elan trackpad not functioning - internal battery L18M3PF2 || <!--Chipset-->AMD Athlon 300U, Ryzen 3 3200U r5 3500U || <!--IDE-->{{N/A}} || <!--SATA-->1 M.2 nvme and usually 2.5in sata if ribbon cable present - mini sata dvd/cd da-8aesh11b || <!--Gfx-->{{Maybe|VESA 2D for Vega 3 or 8 with up to 2Gb of soldered ram memory taken - hdmi 1.4b}} || <!--Audio-->{{unk|HDAudio add 0x1022, 0x15E3 with Realtek ALC236 0x10ec, 0x0236}} || <!--USB-->{{maybe|USB3 not detected}} || <!--Ethernet-->{{maybe|rtl8169 RTL8111GUS}} || <!--Wireless-->{{no|Realtek or Intel wifi}} || <!--Test Distro-->AROS One 2.8 USB - install on mbr not gpt 2.5in in another compatible machine || <!--Comments-->2019 64bit - 15.6in 768p or 1080p 200nits - 4Gb ddr4 2400MHz soldered with 1 dimm slot max 20Gb - round ac 20V 65W psu 4.0mm x 1.7mm - Return or F1 to enter bios and F12 boot order - no sd card slot -
|-
|<!--Name-->[https://www.laptop-schematics.com/db/78/T%20series%20laptops%20(ThinkPad)/ ThinkPad T295 T495] || <!--Chipset-->Ryzen 3 3300U, R5 Pro 3500U or R7 3700U || <!--IDE-->{{N/A}} || <!--SATA-->1 NVMe up to 2280 || <!--Gfx-->{{Maybe|VESA Vega 6, 8 or 10 up to 2Gb of soldered ram memory taken}} || <!--Audio-->{{unk|HD Audio with Realtek® ALC3287 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 Realtek RTL8111EPV}} || <!--Wireless-->{{No|Realtek RTL8822BE or Intel AC 9260}} || <!--Test Distro--> || <!--Comments-->2019 64bit - 14in 768p but mostly FHD 1080p 250 nits - internal battery - ram 8gb or 16gb 2400Mhz soldered with 1 ddr4 slot on T495 only - TPM 2.0 - usb-c charging avoid knock whilst in use - keyboard swap problematic -
|-
|<!--Name-->ThinkPad T495s (14in) X395 (13in) || <!--Chipset-->Ryzen 3 3300U, R5 Pro 3500U or R7 3700U || <!--IDE-->{{N/A}} || <!--SATA-->1 NVMe up to 2280 || <!--Gfx-->{{Maybe|VESA Vega 6, 8 or 10 up to 2Gb of soldered ram memory taken}} || <!--Audio-->{{unk|HD Audio with Realtek® ALC3287 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{unk| needs Lenovo ThinkPad Ethernet Adapter Gen 2 SC10P42352 or SC10P42354}} || <!--Wireless-->{{No|Realtek RTL8822BE or Intel AC 9260 wifi}} || <!--Test Distro--> || <!--Comments-->2019 64bit - 13in or 14in 768p but mostly FHD 1080p 250 nits - internal battery - ram 8gb or 16gb 2400Mhz soldered - TPM 2.0 - usb-c charging avoid knock whilst in use - keyboard swap problematic -
|-
|<!--Name-->ThinkPad E14 Gen2, E15 Gen 2 (AMD) 20T8, - lenovo has a mobile phone PC Diagnostic App for error/beep codes || <!--Chipset-->AMD Ryzen 3 4300U, 5 4500U, 7 4700U || <!--IDE-->{{N/A}} || <!--SATA-->2 m.2 nvme, 1 2242 and 1 2280 || <!--Gfx-->{{Maybe|VESA 2D for AMD Radeon up to 2Gb of soldered ram memory taken}} || <!--Audio-->{{unk|HD Audio with ALC ALC3287 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 RTL8111GUS}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2020 15.6in 1080p 220 nits - TPM 2.0 - usb-c charging of internal 45Whr battery - 4gb ddr4 3200Mhz soldered and 1 ddr4 sodimm slot max 20Gb - keyboard swap problematic - plastic bendy case -
|-
|<!--Name-->Lenovo ThinkPad T14 Gen 1, ThinkPad P14s Gen 1 (AMD) || <!--Chipset-->AMD Ryzen 3 4300u, 5 4500U, Ryzen 5 Pro 4650U, Ryzen 7 Pro 4750U || <!--IDE-->{{N/A}} || <!--SATA-->1 NVMe || <!--Gfx-->{{Maybe|VESA 2D for AMD Vega }} || <!--Audio-->{{unk|HDAudio with Realtek® ALC3287 0x10EC, 0x0257}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 RTL8111EPV (DASH models) or RTL8111HN}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2020 64bit - USB-C charging avoid moving whilst in use - 14" or 15" 1080p - keyboard swap problematic - 8gb or 16gb 3200MHz soldered with 1 ddr4 sodimm slot - sd card slot -
|-
|<!--Name-->Thinkpad L14 Gen 1, L15 Gen 1, || <!--Chipset-->AMD Ryzen 3 4300u, 5 4500U, Ryzen 5 Pro 4650U, Ryzen 7 Pro 4750U || <!--IDE-->{{N/A}} || <!--SATA-->1 NVMe || <!--Gfx-->{{Maybe|VESA 2D for AMD Vega }} || <!--Audio-->{{unk|HDAudio with Realtek® ALC3287 0x10EC, 0x0257}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{no|rtl8169 needs dongle RTL8111EPV (DASH models) or RTL8111HN}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2020 64bit - USB-C charger avoid moving whilst in use - 14" or 15" 1080p - keyboard swap problematic - 8gb or 16gb 3200MHz soldered with 1 ddr4 sodimm slot - sd card slot -
|-
|<!--Name-->Lenovo ThinkPad X13 Gen1 AMD, || <!--Chipset-->AMD RYZEN 3 4450U, 5 4650U or 7 4750U || <!--IDE-->{{N/A}} || <!--SATA-->One drive, up to 512GB M.2 2242 SSD or 1TB M.2 2280 SSD NVMe || <!--Gfx-->{{partial|VESA Radeon up to 2Gb of soldered ram memory taken}} || <!--Audio-->{{unk|HDAudio with Realtek® ALC3287 codec}} || <!--USB-->{{maybe| but USB-C ports can fail}} || <!--Ethernet-->{{no|Realtek RTL8111EPV, mini RJ-45 to RJ-45 via optional ThinkPad Ethernet Extension Adapter Gen 2}} || <!--Wireless-->{{no|Realtek Wi-Fi 6 RTL8852AE}} || <!--Test Distro--> || <!--Comments-->2020 13.3" HD 1366x768 to 1080p - USB-C port care needed as damages easily - Memory soldered to systemboard, no slots, dual-channel DDR4-3200 -
|-
|<!--Name-->Lenovo ThinkBook 14 G2, 15 G2 Are || <!--Chipset-->Ryzen 5 4500u, 7 4700U || <!--IDE-->{{N/A}} || <!--SATA-->14in has 2 m.2 nvme but 15in has 1 nvme and might have 2.5in sata metal caddy if smaller battery version || <!--Gfx-->VESA 2d for AMD Radeon up to 2Gb of soldered ram memory taken || <!--Audio-->{{unk|HDAudio with ALC???? codec 0x10EC, 0x0}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 }} || <!--Wireless-->{{No| wifi}} || <!--Test Distro--> || <!--Comments-->2020 64bit - 14in or 15in 1080p - usb-c charging but high failure rate on the charging port - 4gb or 8gb soldered with 1 ddr4 sodimm slot 3200mhz - hinge(s) issues -
|-
|<!--Name-->IdeaPad 5 14ARE05 (81YM), Ideapad 5 15ARE05 (), IdeaPad 3 17ARE05 (model 81W5) - elan touchpad MSFT0004:00 06CB:CD98 not working || <!--Chipset-->'''tested''' 4500u - '''untested''' AMD 3 4300U (4c4t), 4600U (6c12t), 7 4700u (8c16t) on AMD Promontory Bixby FCH || <!--IDE-->{{N/A}} || <!--SATA-->{{no|1x M.2 2242 slot and 1x M.2 2280 NVMe which will take sata m.2 will boot to grub then laptop reset after choice}} || <!--Gfx-->{{Maybe|VESA 2D for Vega 6 via hdmi output up to 2Gb of soldered ram memory taken}} || <!--Audio-->{{unk|HDAudio 6.36 0x1637 0x15e3 with Realtek ALC3287 aka ALC257 codec 0x10ec 0x0257}} || <!--USB-->{{maybe|USB 3.1 or 3.2 gen 1}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|Intel ax200 wifi 6}} || <!--Test Distro-->4500u with AROS One 64bit 1.2 usb installed to m.2 sata on another machine || <!--Comments-->2020 64bit 14inch 768p or 1080p - round lenovo ac - 4gb, 8gb, or 16gb ddr4 3200Mhz ram soldered with 1 slot - keyboard swap problematic - integrated battery -
|-
|<!--Name-->Ideapad Flex 5 81X2, Lenovo Yoga 6 13ALC6 || <!--Chipset-->AMD R5 4500u, R7 4800U, R3 5300 R5 5500U || <!--IDE-->{{N/A}} || <!--SATA-->M.2 NVMe ssd || <!--Gfx-->{{Maybe|VESA AMD Vega up to 2Gb of soldered ram memory taken}} || <!--Audio-->{{unk|HD Audio with ALC? codec}} || <!--USB-->{{maybe|USB3.1 gen 1}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|realtek ac wifi}} || <!--Test Distro--> || <!--Comments-->2020 64bit abs plastic case 14in convertible 1080p touch low nits - 65w usb-c psu ac - possible wacom esr note taking pen supplied - ram soldered DDR4 - keyboard swap problematic -
|-
|<!--Name-->ThinkPad T14 Gen 2, P14s Gen 2 || <!--Chipset-->AMD 5850U || <!--IDE-->{{N/A}} || <!--SATA-->NVme || <!--Gfx-->VESA 2D || <!--Audio-->{{unk|HDaudio with ALC3287-CG codec 0x10EC, 0x0}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{Maybe| }} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2021 - usb-c power 90% failure rate on the charging port -
|-
|<!--Name-->Lenovo ThinkBook 14 G3, 15 G3 ACL, || <!--Chipset-->Ryzen 5 5500U || <!--IDE-->{{N/A}} || <!--SATA-->m.2 nvme || <!--Gfx-->VESA 2d for AMD Radeon || <!--Audio-->{{unk|HDAudio with ALC codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 }} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2021 64bit - 14in or 15in 1080p - usb-c charging powered -
|-
|<!--Name-->ThinkPad E14 G3, E15 Gen 3 (AMD) || <!--Chipset-->AMD 5300U 5500U 5650U 5700U 5800U || <!--IDE-->{{N/A}} || <!--SATA-->up to 2 m.2 nvme || <!--Gfx-->{{Maybe|VESA }} || <!--Audio-->{{unk|HDaudio with Realtek® ALC3287 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 RTL8111GUS}} || <!--Wireless-->{{no|realtek or intel }} || <!--Test Distro--> || <!--Comments-->2021 64bit - 15.6in 1080p - - usb-c charging issues - keyboard swap problematic - 4gb or 8gb soldered with 1 ddr4 3200Mhz sodimm slot - plastic bendy case -
|-
|<!--Name-->V14 Gen 2 (82KA, 82KC)
*ALO
*ALC 82KD
|| <!--Chipset-->Ryzen 3 5300U, 5 5500U, 7 5700U || <!--IDE-->{{N/A}} || <!--SATA-->1 nvme 2280 and optional 2.5in sata after sourcing ribbon cable and connector, no dvd || <!--Gfx-->VESA 2D for AMD radeon || <!--Audio-->{{unk|HDAudio with Realtek® ALC3287 codec}} || <!--USB-->{{maybe|USB3 }} || <!--Ethernet-->{{maybe|rtl8169 Realtek RTL8111H-CG}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2022 64bit - 15.6" FHD 1080p - 4gb or 8gb soldered with 1 ddr4 sodimm slot - 65w round ac adaptor -
|-
|<!--Name-->V15 G2 Gen2 (82KB, 82KD)
*ALO
*ALC 82KD
|| <!--Chipset-->Ryzen 3 5300U, 5 5500U, 7 5700U || <!--IDE-->{{N/A}} || <!--SATA-->1 nvme 2280 and optional 2.5in sata after sourcing ribbon cable and connector, no dvd || <!--Gfx-->VESA 2D for AMD radeon || <!--Audio-->{{unk|HDAudio with Realtek® ALC3287 codec}} || <!--USB-->{{maybe|USB3 }} || <!--Ethernet-->{{maybe|rtl8169 Realtek RTL8111H-CG}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2022 64bit - 15.6" FHD 1080p - 4gb or 8gb soldered with 1 ddr4 sodimm slot - 65w round ac adaptor -
|-
|<!--Name-->ThinkPad L15 Gen 2 (15″, AMD) || <!--Chipset-->AMD 5000 series AMD Ryzen 3 5400U (4c8t), 5 5600U, 5 5650U (6c12t), 7 PRO 5850U (8c16t) || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{unk|HDAudio with Realtek® ALC3287}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{no|rtl8169 needs dongle RTL8111EPV (DASH models) or RTL8111HN}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2022 64bit - 15.6in 768p or 1080p - usb-c charging - 4gb soldered with 1 ddr4 3200Mhz sodimm slot -
|-
|<!--Name-->ThinkPad E14 Gen 4, E15 Gen 4 (15″, AMD) || <!--Chipset-->AMD 3 5425u, 5 5625U, 7 5825u || <!--IDE-->{{N/A}} || <!--SATA-->1 (14") or 2 (15") nvme || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{unk|HDAudio with ALC3287 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 }} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit - 15.6in 1080p - usb-c charging - 4gb or 8gb soldered with 1 ddr4 3200Mhz sodimm slot - L19M3PDA 45Whr battery - U24 TPS65994 and QB6 QB5 mosfet issues - plastic bendy case -
|-
|<!--Name-->ThinkPad T14 Gen 3 Machine types MT 21AH 21AJ 21CF and 21CG, P14s Gen 3 || <!--Chipset-->AMD 6850U || <!--IDE-->{{n/a}} || <!--SATA-->NVme || <!--Gfx-->VESA 2d || <!--Audio-->{{unk| ALC3287-VA2-CG codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{Maybe|rtl8169 }} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2022 64bit - 14in
|-
|<!--Name-->ThinkPad T14s Gen 3 || <!--Chipset-->AMD 6500U || <!--IDE-->{{n/a}} || <!--SATA-->NVme || <!--Gfx-->VESA 2d || <!--Audio-->{{unk| ALC3287-VA2-CG codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no|Ethernet support via optional Lenovo® USB-C® to Ethernet Adapter}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2022 64bit - 14in
|-
|<!--Name-->V14 G3, V15 G3 Gen3 ALC || <!--Chipset-->Ryzen 5 6500U || <!--IDE-->{{N/A}} || <!--SATA-->nvme and optional 2.5in sata if smaller 38Wh battery and after sourcing ribbon cable and connector, no dvd || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 }} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit - 15"FHD - battery BYD L20B2PFO -
|-
|<!--Name-->ThinkPad L15 Gen 3 (15″, AMD) || <!--Chipset-->AMD 6000 series || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{No| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no|rtl8169 needs dongle}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2023 64bit- 15.6in 1080p -
|-
|<!--Name-->Lenovo Yoga 7 14ARB7 || <!--Chipset-->AMD Ryzen 5, 6600U, 7 6800U || <!--IDE-->{{N/A}} || <!--SATA-->1 nvme || <!--Gfx-->AMD 660M or 680M || <!--Audio-->{{No|HDaudio with ALC3306 aka alc287 codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2022 64bit - 14in 1800p ips 300 nits - usb-c ac charging 71whr integrated battery - sd card slot - digital pen input - 8gb, 6gb or 32gb soldered ddr5 ram -
|-
|<!--Name-->ThinkPad T14 Gen 4, P14s Gen 4 || <!--Chipset-->AMD Ryzen Pro 5 7540U, Ryzen Pro 7 7840U (AI NPU) || <!--IDE-->{{n/a}} || <!--SATA-->NVme || <!--Gfx-->VESA 2D for AMD 740M 780M|| <!--Audio-->{{unk|HDAudio ALC3287 codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 }} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit - 14in 1920x1200 - 8gb, 16gb or 32gb lpddr5 soldered - usb-c charging -
|-
|<!--Name-->ThinkPad E14 g5, E15 Gen 5 (15″, AMD) || <!--Chipset-->AMD 7000 series Ryzen 5-7530U, 7-7730U || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{unk|HDAudio with codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe| }} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit- 15.6in 1080p -
|-
|<!--Name-->Thinkbook 14 G6 ABP IRL, ThinkBook 16 G6ABP (21KK001CUK) || <!--Chipset-->AMD Ryzen 7530U 7730U || <!--IDE-->{{N/A}} || <!--SATA-->m.2 nvme || <!--Gfx-->VESA 2d for AMD Radeon || <!--Audio-->{{unk|HDaudio with codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 untested}} || <!--Wireless-->{{No| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit - 14in 1200p or 1440p - 100W USB-C AC power adapter -
|-
|<!--Name-->IdeaPad Slim 5 Light 14ABR8 Laptop || <!--Chipset-->AMD Ryzen 3 7330U (4c8t) 5 7530U (6c12t) 7 7730U (8c16t) || <!--IDE-->{{N/A}} || <!--SATA-->2 m.2 nvme slot - 1 2242, 1 2280 || <!--Gfx-->VESA 2d for AMD Radeon || <!--Audio-->{{unk|HDaudio with Realtek® ALC3287 codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit - 14in 1080p - 8Gb or 16Gb soldered ram - usb-c charging only -
|-
|<!--Name-->ThinkPad X13 Gen 4 (13" AMD) || <!--Chipset-->AMD 7480U 7040U || <!--IDE-->{{N/A}} || <!--SATA-->NVMe || <!--Gfx-->{{partial|VESA}} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2023 - avoid usb-c port damage -
|-
|<!--Name-->ThinkPad L14 (Gen4), L15 Gen 4 (15" AMD) || <!--Chipset-->MD Ryzen 5 PRO 7530U, 7480U 7040U || <!--IDE-->{{N/A}} || <!--SATA-->NVMe || <!--Gfx-->{{partial|VESA}} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no|rtl8169 needs dongle}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit - elan trackpad -
|-
|<!--Name-->Lenovo Gen 4 V14 (82YT, 82YV, 83A0, 83A1, 83CC, 83FR, 82YX, 83FG), V15 (82YU, 82YW, 83FS, 82YY, 83CR), V17 (83A2), || <!--Chipset-->AMD AMD Athlon™ Gold 7220U (2c4t), AMD Athlon™ Silver 7120U (2c2t), AMD Ryzen™ 3 7320U (4c8t), AMD Ryzen™ 5 7520U (4c8t) || <!--IDE-->{{N/A}} || <!--SATA-->nvme and 2.5in sata if smaller 38Wh battery, no dvd || <!--Gfx-->{{Maybe|VESA 2d for AMD 610M HDMI® and USB-C}} || <!--Audio-->{{unk|HDaudio with ALC3287 codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no|Gigabit Ethernet, 1x RJ-45}} || <!--Wireless-->{{no|wifi 6}} || <!--Test Distro--> || <!--Comments-->2023 64bit - 15.6" FHD 1080p - 8 or 16Gb soldered - 65W round tip (3-pin) AC adapter or USB-C -
|-
|<!--Name-->ThinkPad e14 G6, e15 Gen 6 (15″, AMD) || <!--Chipset-->AMD 7000 series AMD Ryzen™ 7 7735HS || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{unk|HDAudio codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe| }} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit- 15.6in 1080p -
|-
|<!--Name-->ThinkPad L16 (16" AMD), || <!--Chipset-->AMD 8000 || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D || <!--Audio-->{{unk|HDAudio with codec}} || <!--USB-->{{maybe|USB4}} || <!--Ethernet-->{{no|rtl8169 needs dongle}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2025 64bit
|-
|<!--Name-->ThinkPad T14 Gen 5, P14s Gen 5 || <!--Chipset-->AMD Ryzen 7 PRO 8840U, AMD Ryzen™ 5 PRO 8540U || <!--IDE-->{{N/A}} || <!--SATA-->NVME || <!--Gfx-->VESA 2d || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 }} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2025 64bit - 14inch 1920 x 1200 -
|-
|<!--Name--> Lenovo WinBook 300e SKU: 82GKS00000 || <!--Chipset-->AMD 3015E || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2023 64bit 4GB 64GB SSD 11.6 Inch Touchscreen Windows 10 Pro Laptop
|-
|<!--Name-->ThinkPad || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
|<!--Name-->Lenovo Yoga Slim 7a || <!--Chipset-->AMD Ryzen AI 7350 || <!--IDE-->{{N/A}} || <!--SATA-->1 nvme || <!--Gfx-->AMD 860M || <!--Audio-->{{No|HDaudio with ALC3306 aka alc287 codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2025 64bit - 14in 1800p ips 300 nits - usb-c ac charging 71whr integrated battery - sd card slot - digital pen input - 8gb, 6gb or 32gb soldered ddr5 ram -
|-
|<!--Name-->ThinkPad || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Samsung====
[[#top|...to the top]]
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="2%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->NP-Q1 Q1 || <!--Chipset-->Celeron-M 353 ULV 600Mhz || <!--IDE-->{{Yes|1.8" SFF HDD 20 / 60 GB }} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Yes|GMA 915 2D and 3D opengl1 tunnel 95 gearbox 68}} || <!--Audio-->{{Yes|HD Audio with codec - head phones only}} || <!--USB-->{{Yes}} || <!--Ethernet-->{{No|Marvell}} || <!--Wireless-->{{Yes|Atheros 5006EX}} || <!--Test Distro-->2016 Icaros 2.1 || <!--Comments-->2005 32bit old style tablet UltraMobile PC UMPC - Wacom serial resistive pen or finger no support - 1 sodimm ddr2 max 1Gb - LCD 7" WVGA (800 x 480) - CompactFlash port Type II -
|-
| <!--Name-->NP Q1U Ultra Mobile PC UMPC Q1F NP-Q1-F000 || <!--Chipset-->Intel A100 600 / A110 Stealey 800 MHz CPU || <!--IDE-->{{Yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Maybe|GMA 950 2D and 3D opengl1}} || <!--Audio-->{{No|HD Audio 1986}} || <!--USB--> || <!--Ethernet-->Intel || <!--Wireless-->{{Maybe|Atheros 5006EX}} || <!--Test Distro-->2016 Icaros 2.1 || <!--Comments-->2006 32bit 1024×600 - sd card slot -
|-
| <!--Name-->NP P500 family P500Y || <!--Chipset-->AMD with SB600 || <!--IDE-->{{N/A| }} || <!--SATA-->{{Yes| }} || <!--Gfx-->{{Maybe|use VESA Ati x1250}} || <!--Audio-->{{Yes| Audio with codec }} || <!--USB--> || <!--Ethernet-->{{No|Marvell 88E8039 yukon}} || <!--Wireless-->{{yes|Atheros G}} || <!--Test Distro-->2017 Icaros 2.1.2 || <!--Comments-->64bit possible - 15.4 tft display - cheap plastic okay build - 19v propriety end -
|-
| <!--Name-->R505 R510 || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless-->Atheros G || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->R520 R522 R610H R620 || <!--Chipset-->Intel Mobile Core i3 Intel PM45 82801M ICH9-M|| <!--IDE--> || <!--SATA--> || <!--Gfx-->ATI Mobility Radeon HD 4650 (RV730) || <!--Audio-->Intel HD Audio with Realtek ALC272 || <!--USB--> || <!--Ethernet-->Marvell Yukon 88E8057 || <!--Wireless-->Atheros AR5007EG || <!--Test Distro--> || <!--Comments-->2010 64 bit possible
|-
| NP-R530 || || {{N/A}} || {{partial|IDE mode}} || {{yes|Intel GMA (2D)}} || {{partial|HD Audio playback}} || {{yes|USB 2.0}} || {{no|Marvell}} || {{unk|Atheros AR9285}} || Icaros 1.5.2 || <!--Comments-->
|-
| <!--Name-->Samsung R730 17.3 Essential Notebook NP-R730-JA02UK, NP-R730-JA01SE, R730-JT06 || <!--Chipset-->Intel HM55 Dual Core T4300 i3-370M || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA for Intel 4500MHD and GeForce G 310M with 1 VGA, 1 HDMI}} || <!--Audio-->{{Yes|HDAudio ALC??? codec Realtek}} || <!--USB-->{{yes|USB2}} || <!--Ethernet-->{{No|Marvell Yukon 88E8059 PCI-E}} || <!--Wireless-->{{unk|Broadcom, Intel or Atheros 9k AR9285}} || <!--Test Distro-->Deadwoods ISO 2023-11 || <!--Comments-->2010 64bit - 17.3in HD 1280 x 720 pixels low contrast or some 1600x900 - 2 DDR3 sodimm slots - 2.84 kg 6.26 lbs -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->[http://www.notebookcheck.net/Review-Samsung-305U1A-A01DE-Subnotebook.68246.0.html Series 3 Samsung 305u1a] || <!--Chipset-->AMD Zacate E350 or E450 || <!--IDE--> || <!--SATA--> || <!--Gfx-->AMD Radeon 6320 || <!--Audio-->ALC ACL 269 || <!--USB--> || <!--Ethernet-->Realtek 8111 8169 || <!--Wireless-->Broadcom 4313 || <!--Comments-->2011 64bit
|-
| <!--Name-->NP-RV415 NP-RV515 || <!--Chipset-->E350 or E450 plus A50M chipset || <!--IDE--> || <!--SATA--> || <!--Gfx-->AMD Radeon HD 6470 || <!--Audio-->HD Audio Realtek || <!--USB--> || <!--Ethernet-->{{unk|RTL8169 Realtek RTL8111 8168B}} || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro--> || <!--Comments-->2012 64bit slow -
|-
| <!--Name-->Series 5 NP535U3C || <!--Chipset-->A6-4455M || <!--IDE-->{{N/A}} || <!--SATA-->2.5in || <!--Gfx-->radeon || <!--Audio-->HDAudio || <!--USB-->USB2 || <!--Ethernet-->Realtek GbE || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2012 64bit slow - 13.3in 1368 x 768 - plastic build - 65w 19v psu -
|-
| <!--Name-->series 3 NP355V5C || <!--Chipset-->A6-4400M, A8-4500M, A10-4600M || <!--IDE-->{{N/A}} || <!--SATA-->2.5in || <!--Gfx-->7640M || <!--Audio-->HDAudio || <!--USB-->USB2 || <!--Ethernet-->Realtek GbE || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2012 64bit - 15.4in 1368 x 768 - plastic build - 65w 19v psu -
|-
| <!--Name-->Samsung ATIV Book 9 Lite NP905S3G || <!--Chipset-->AMD A6-1450 quad 1GHz Temash atom like || <!--IDE--> || <!--SATA-->128gb || <!--Gfx-->AMD 8250 || <!--Audio-->HD Audio || <!--USB--> || <!--Ethernet-->{{Maybe|Realtek rtl8169 but only with mini LAN AA-AE2N12B Ethernet Adapter RJ45 dongle}} || <!--Wireless-->{{unk|Atheros AR9565}} || <!--Test Distro--> || <!--Comments-->2014 64bit - 13.3 TN glossy 1366 x 768 200nits 60% srgb - plastic case - 26W battery built in with 4hr life - 19V 2.1A 3.0*1.0mm psu - 1 ddr3l slot max 4gb - 720p webcam - mini hdmi out - 1w speakers -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Toshiba====
[[#top|...to the top]]
Order of Build Quality (Lowest to highest)
<pre >
Equium
Satellite (Pro)
Libretto
Portege
Tecra
</pre >
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| Tecra 8100 8200 9000 || 440BX || {{yes|IDE}} || {{N/A}} || {{maybe|S3 Savage MX 3D (VESA only)}} || {{no|Yamaha DS-XG ymf744 ymf-754}} || {{yes|USB1.1 only}} || {{N/A}} || {{N/A}} || Icaros 1.5 || little support
|-
| <!--Name-->Tecra 9100 || <!--Chipset-->810 || <!--IDE-->{{Yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{maybe|S3 Savage IX}} || <!--Audio-->{{no|ymf754}} || <!--USB-->USB 1.1 || <!--Ethernet-->eeee pro100 || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->PSU Adapter For Toshiba Tecra 9000 9100 A1 A10 A11 A3 A3X A4 A5 A7 M1 M2 M3 M4 M5 M7 M9 R10 S1 series 75 Watt 15V 5A
|-
| [http://tuxmobil.org/toshiba_sp4600.html Satellite Pro 4600] || i810 || IDE || {{N/A}} || {{maybe|Trident Cyber Blade XP (VESA only)}} || {{no|YAMAHA DS-XG AC97 ymf754}} || {{yes|USB}} || {{yes|Intel e100}} || {{no|Agere (internal PCMCIA)}} || || little support
|-
| Satellite 2805 S603 || Intel 815 || {{yes|IDE}} || {{N/A}} || {{maybe|nVidia GeForce2 Go}} || {{no|Yamaha Corp YMF 754}} || {{yes|USB}} || {{yes|Intel PRO/100}} || {{dunno}} || || little support
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Satellite A10 S167 S1291 - A15 A20 A25 || <!--Chipset-->P4M || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 852GM or Radeon || <!--Audio--> || <!--USB--> || <!--Ethernet-->RTL 8139 || <!--Wireless-->{{Maybe|Intel 2100, Agere or Atheros PA3399U 1MPC minipci}} || <!--Test Distro--> || <!--Comments-->a few models came with antenna leads
|-
| Satellite [http://eu.computers.toshiba-europe.com/innovation/jsp/SUPPORTSECTION/discontinuedProductPage.do?service=EU&com.broadvision.session.new=Yes&PRODUCT_ID=76230 A30-714] || P4-M / 82845 i845 || {{yes|82801}} || {{N/A}} || {{maybe|VESA}} || {{yes|AC97}} || {{yes}} || {{yes|RTL8139}} || {{N/A}} || Icaros 1.2.4 || nice laptop, drawbacks: heavy, really hot (P4-3.06 GHz!!) - A30 (EU) A33 (Australian) A35 (USA) -
|-
| <!--Name-->Satellite A40 A45 || <!--Chipset-->P4M or Celeron M with Intel 845 865 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 852GME or Radeon 7000 Mobility || <!--Audio-->AC97 Realtek || <!--USB-->USB2.0 || <!--Ethernet--> || <!--Wireless-->Atheros 5002G 5004G - PA3299U mini pci || <!--Test Distro--> || <!--Comments-->2003 32bit - A40 S161 A40-S1611 A40-2701, A45-S120 A45-S1201 S130 S1301 S1501 -
|-
| <!--Name-->Satellite a50 A55 a60-s156 Equium A60 PSA67E A65 || <!--Chipset-->P4M or Celeron M with Intel 845 865 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 852GME or Radeon 7000 Mobility || <!--Audio-->AC97 Realtek || <!--USB-->USB2.0 || <!--Ethernet--> || <!--Wireless-->Atheros 5002G 5004G - PA3299U mini-pci || <!--Test Distro--> || <!--Comments-->2003 32bit -
|-
| <!--Name-->Satellite A70 A75-S206 A80 A85-S107 || <!--Chipset-->P4M or Celeron-M with Intel 845 865 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 852GME or Radeon 7000 Mobility || <!--Audio-->AC97 Realtek || <!--USB-->USB2.0 || <!--Ethernet--> || <!--Wireless-->Atheros 5002G 5004G - PA3299U mini-pci || <!--Test Distro-->Icaros 1.5.1 || <!--Comments-->2003 32bit -
|-
| Toshiba Satellite Pro M30 || intel 855 || {{yes|boots with ATA=nodma option}} || {{N/A}} || {{maybe|VESA}} || {{yes|AC97}} || {{yes|USB2.0}} || {{yes|Intel PRO/100 VE}} || {{dunno}} || Icaros 1.5 || nice laptop with some support
|-
| <!--Name-->Portege M300 - M200 tablet || <!--Chipset-->855GM with 1.2GHz Pentium M 753 || <!--IDE-->{{yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{maybe|VESA 2d only - tablet with nvidia 5200 go}} || <!--Audio-->{{no|AC97 STAC 9750}} || <!--USB-->{{yes}} || <!--Ethernet-->{{yes|Intel PRO 100}} || <!--Wireless-->{{no|Intel PRO Wireless 2200BG}} || <!--Test Distro--> || <!--Comments-->little support
|-
| <!--Name-->Tecra M2 M2-S || <!--Chipset-->Intel 855P Pentium-M || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->nvidia fx go5200 32mb or 64mb agp || <!--Audio-->AC97 1981B || <!--USB--> || <!--Ethernet--> || <!--Wireless-->Intel Pro || <!--Test Distro--> || <!--Comments-->2003 32bit - PSU 15V 5A -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Satellite Pro L20 267 (PSL2YE PSL2XE) PSL25E L30 || <!--Chipset-->Celeron M 370 1.4 1.5GHz, 1.73Ghz with RC410M SB400 || <!--IDE-->{{N/A| }} || <!--SATA-->{{yes|IDE mode}} || <!--Gfx-->{{Maybe|use VESA - Ati x200}} || <!--Audio-->{{No|[https://forums.gentoo.org/viewtopic-t-490297-start-0.html ALC861]}} || <!--USB-->{{Maybe|Boots usb sticks}} || <!--Ethernet-->{{yes|rtl8139 Realtek 8139}} || <!--Wireless-->{{No|Atheros mini-pci should work maybe not working with ATi chipset or need to swap??}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2004 32bit 14" pioneer dvd-rw - 19v
|-
| <!--Name-->Satellite L30 PSL30E L33 PSL33E || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 800 or ATi RC410 x200 || <!--Audio-->AC97 AD1981B or HD Audio ALC861 || <!--USB--> || <!--Ethernet-->realtek 8139 || <!--Wireless-->Atheros or Intel || <!--Test Distro--> || <!--Comments-->L30 PSL30L 101 PSL33E 113 115 134 00M019 -
|-
| Satellite Pro M40 313 psm44e || AMD with Ati || {{yes|boots with ATA=nodma}} || {{N/A}} || {{maybe|VESA}} || {{yes|AC97}} || {{yes|USB2.0}} || {{yes|}} || {{maybe|atheros askey ar5bmb5 mini pci}} || || 2005 32bit - nice laptop with some support
|-
| <!--Name-->Satellite L40 PSL40E PSL40L, PSL43E || <!--Chipset-->945GM with U7700 1.3GHz ULV || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 945 || <!--Audio-->{{No|Intel HD with AD1986A codec}} || <!--USB-->2 USB2.0 || <!--Ethernet-->realtek 8139 || <!--Wireless-->Atheros AR24xx Askey || <!--Test Distro-->Icaros 2.0.3 || <!--Comments-->2006 32bit only - - 12X 13G 139 14B 143 15J 19O -
|-
| <!--Name-->Satellite L45 PSL40U S7409 S2416 || <!--Chipset-->945GM with Celeron M 440 1.86 GHz || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 945 || <!--Audio-->{{No|Intel HD with AD1986A codec}} || <!--USB-->2 USB2.0 || <!--Ethernet-->realtek 8139 || <!--Wireless-->Atheros AR24xx Askey || <!--Test Distro-->Icaros 2.0.3 || <!--Comments-->2006 32bit only -
|-
| <!--Name-->Satellite Pro A100 || <!--Chipset-->940G || <!--IDE--> || <!--SATA--> || <!--Gfx-->Nvidia G72M Quadro NVS 110M GeForce Go 7300 / Ati (PSAA3E)|| <!--Audio-->HD Audio with ALC861 codec || <!--USB--> || <!--Ethernet-->Intel 100 || <!--Wireless-->Intel 3945 swap with atheros || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Satellite A110 159 (PSAB0), Equium A110 (PSAB2E), Satellite A110 233 (PSAB6), || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio-->ALC861 || <!--USB--> || <!--Ethernet-->Realtek 8136 || <!--Wireless-->Atheros || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Satellite Pro A120 PSAC0 PSAC1 PSAC1E || <!--Chipset-->Core Solo GMA 950 to T2300 || <!--IDE--> || <!--SATA--> || <!--Gfx-->GMA 945 || <!--Audio-->ALC262 or AC97 AD1981B || <!--USB-->UHCI EHCI || <!--Ethernet--> || <!--Wireless-->Atheros Ar5001 or Intel or Broadcom || <!--Test Distro--> || <!--Comments-->15V 4A charger -
|-
| <!--Name-->Satellite Pro A120 || <!--Chipset-->Core Duo ATi RS480 + SB450 || <!--IDE--> || <!--SATA--> || <!--Gfx-->use VESA - ATI RC410 Radeon Xpress 200M || <!--Audio-->ALC262 || <!--USB-->OCHI UHCI || <!--Ethernet-->RTL 8139 || <!--Wireless-->Intel 3945 or Atheros Ar5001 || <!--Test Distro--> || <!--Comments-->15v 5a proprietary charger needed
|-
| <!--Name-->Satelite A130 PSAD6U || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet-->Realtek 8101E || <!--Wireless-->Atheros or Intel || <!--Test Distro--> || <!--Comments-->ST1311 s1311 ST1312 S2276 S2386 -
|-
| <!--Name-->Satellite A135 S2686 (Compal LA 3391P) || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet-->Realtek 8101E || <!--Wireless-->Atheros or Intel || <!--Test Distro--> || <!--Comments-->S2246 S2346 S2256 S4477 S4666 S4827 -
|-
| <!--Name-->Satellite A200 PSAE1E (Inventec MW10M) || <!--Chipset-->Pentium M with 945GM Express Celeron M 520 1.6Ghz or Pentium® Core Duo T2130 1.86 GHz || <!--IDE--> {{N/A}}|| <!--SATA--> {{Maybe|SATA}}|| <!--Gfx--> {{Yes|Intel GMA 950 (2D and 3D)}}|| <!--Audio--> {{Yes|HD Audio ALC862}}|| <!--USB--> {{Yes| }}|| <!--Ethernet--> {{yes|RTL8101E rtl8139}}|| <!--Wireless--> {{yes|Atheros 5000 - FN,F5 or FN,F8 or switch}} || <!--Test Distro-->2016 AspireOS 1.8 || <!--Comments-->2006 Excellent 32 bit support! - make sure that your WLAN card is enabled, do this using the hardware switch and FN+F8 key combination
|-
| <!--Name--> A210, Satellite A215 AMD (Inventec 10A) S5808 || <!--Chipset--> Ati with SB690 || <!--IDE--> {{N/A}}|| <!--SATA-->{{Maybe|SATA}}|| <!--Gfx-->{{Maybe|use VESA HD2600 Mobility M76}} || <!--Audio-->HD Audio ALC268 || <!--USB--> {{Yes| }}|| <!--Ethernet-->{{yes|RTL8101E}}|| <!--Wireless--> {{yes|Atheros 5000}}|| <!--Test Distro-->2018 AspireOS 1.8 || <!--Comments-->A215-S7422 A215-S7472 A215-S4697 (USA) -
|-
| <!--Name--> [http://www.amiga.org/forums/showthread.php?t=62036 A215 S4757] || <!--Chipset--> Ati X1200 with SB600 || <!--IDE--> {{N/A}}|| <!--SATA-->{{Maybe|SATA}}|| <!--Gfx-->{{Maybe}} || <!--Audio-->HD Audio || <!--USB--> {{Yes| }}|| <!--Ethernet-->{{yes|RTL8101E}}|| <!--Wireless--> {{yes|Atheros 5000}}|| <!--Test Distro-->2017 AspireOS 1.8 || <!--Comments-->
|-
| <!--Name-->Qosmio G30 (PQG31C-HD202E) || <!--Chipset-->945 with Duo T2500 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{yes|Nouveau Nvidia Go 7600 2d and 3d}} || <!--Audio-->{{yes| }} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2006 32bit - 17" UXGA 1920x1200,
|-
| <!--Name-->Tecra A10 || <!--Chipset--> || <!--IDE--> {{N/A}} || <!--SATA--> {{Maybe|IDE mode}} || <!--Gfx--> {{Maybe|Intel GMA 4500M (2D)}} || <!--Audio--> {{Yes|HD Audio}} || <!--USB--> {{Yes|USB 2.0}} || <!--Ethernet-->{{No|Intel PRO 1000}} || <!--Wireless-->{{No|Intel WiFi Link 5100}} || <!--Test Distro--> || <!--Comments-->64 bit possible
|-
| <!--Name-->L35 - L40 PSL48E - L45 S7423 || <!--Chipset-->GL960 with Intel Celeron || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|X3100 some 2D but software 3d tunnel 9 gearbox 4}} || <!--Audio-->{{Yes|HD Audio with ALC660 codec playback}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{Yes|REALTEK 8139}} || <!--Wireless-->{{No|Realtek 8187b replace with Atheros 5k}} || <!--Test Distro-->2017 Icaros 2.1.2 || <!--Comments-->1,73Ghz M 520 or M 540 or Dual T2310 (1.46 GHz) T2330 (1.6 GHz) - 14H 14N 15B 17H 17K 17R 17S 18Z -
|-
| <!--Name-->Satellite a300 - inventec potomac 10s pt10s A300D 21H || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->ATI Mobility Radeon HD 3650 || <!--Audio-->HD Audio - Realtek || <!--USB--> || <!--Ethernet-->Realtek 8102E || <!--Wireless-->Atheros 5005 || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->satellite L300D-224 PSLC8E PSLC9E, l305 (inventec ps10s) || <!--Chipset-->AMD M780 with Turion RM70 or QL-64 || <!--IDE--> {{yes|IDE}} || <!--SATA--> {{yes|SATA}} || <!--Gfx--> {{Maybe|use VESA for Radeon 3100}} || <!--Audio-->{{maybe|HD Audio with Realtek ALC268}} || <!--USB--> {{yes|USB 2.0}} || <!--Ethernet--> {{no|rtl8169 Realtek RTL8101E RTL8102E}} || <!--Wireless-->{{no|Atheros G XB63L or Intel or Realtek}} || <!--Test Distro--> Icaros Desktop Live 2.3 AROS One 2.3 || <!--Comments--> Wireless-handler crashing when using Atheros-Wireless-Card
|-
| <!--Name-->Satellite P300 (PSPC0C-01D01C) || <!--Chipset-->945GM with Intel Core 2 Duo T5750 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{maybe| }} || <!--Audio-->{{No| codec}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{No| swap with Atheros 5k }} || <!--Test Distro-->AROS One 64bit || <!--Comments-->2007
|-
| <!--Name-->satellite l300-1bw PSLBDE-005005AR, L300-148 PSLB0E, l300-20D PSLB8E-06Q007EN, l300-294 L300-23L PSLB9E || <!--Chipset-->Intel GM45 + PGA478 socket Celeron 900, Pentium T1600, T2390, T3400 (Socket P) to Core2 Duo T6400 T6670 || <!--IDE--> {{unk|IDE}} || <!--SATA--> {{unk|SATA}} || <!--Gfx--> {{Maybe|use VESA for Intel gma 4500M}} || <!--Audio-->{{maybe|HD Audio with Realtek ALC???}} || <!--USB--> {{unk|USB 2.0}} || <!--Ethernet--> {{unk|rtl8169 Realtek 810xE}} || <!--Wireless-->{{no|Intel or Realtek}} || <!--Test Distro--> || <!--Comments-->2009 64-bit - new unfamiliar Bios called insyde H20 -
|-
| <!--Name-->satellite l350d || <!--Chipset-->AMD Athlon (tm) X2 QL-60 + RS780M || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Radeon HD 3100 || <!--Audio-->HD Audio with Realtek || <!--USB--> || <!--Ethernet-->Realtek || <!--Wireless-->Realtek 8187b || <!--Test Distro--> || <!--Comments-->2009 64bit
|-
| <!--Name-->Satellite L450 12 13 14 || <!--Chipset-->AMD Sempron, 2.1GHz with AMD RS780M || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Radeon HD 3200 (based on HD 2400) || <!--Audio--> || <!--USB--> || <!--Ethernet-->Realtek RTL8101E RTL8102E || <!--Wireless-->Realtek 8172 || <!--Test Distro--> || <!--Comments-->2009 64bit - 12X 13P 13X 14V PSLY6E00C006EN
|-
| <!--Name-->Satellite Pro L450 (Compal LA-5821P) 179 || <!--Chipset-->intel celeron 900 2.20 Ghz no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->intel 4500m || <!--Audio-->HD Audio with codec || <!--USB--> || <!--Ethernet-->RTL8101 /2 /6E PCI Express Gigabit || <!--Wireless-->RTL8191 SEvB || <!--Test Distro--> || <!--Comments-->2009 64bit - 39.6cm (15.6”) Toshiba TruBrite® HD TFT 16:9 768p
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Toshiba Satellite P775, P775-S7320 and P775-10K || <!--Chipset-->Intel Core i5 (2nd Gen) 2430M i7-2630QM || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|Vesa 2D for Intel}} || <!--Audio-->{{maybe| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2011 17.3" - 1600 x 900 (HD+) - 2 DDR3 sodimm max 16Gb -
|-
|<!--Name-->Toshiba Satellite C660D-19X || <!--Chipset-->AMD E-300 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{maybe|Vesa 2D for ATi}} || <!--Audio-->{{no|HD Audio with Realtek codec}} || <!--USB-->{{no| }} || <!--Ethernet-->{{Maybe|r8169 rtl8101e}} || <!--Wireless-->{{no|Realtek RTL8188 8192ce rtl8192ce}} || <!--Test Distro--> || <!--Comments-->2011 64bit -
|-
| <!--Name-->L755D (E-350) L750D (E-450) || <!--Chipset-->AMD E350 E450 no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Radeon HD 6310 6320 || <!--Audio-->HDAudio conexant codec || <!--USB--> || <!--Ethernet--> || <!--Wireless-->Realtek || <!--Test Distro--> || <!--Comments-->2012 64bit
|-
| <!--Name-->Satellite Pro SP C640 C660D-15X (PSC1YE) C670D- () || <!--Chipset-->AMD E350 no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->6310G || <!--Audio-->HD Realtek ALC259 || <!--USB-->USB2 || <!--Ethernet-->Realtek || <!--Wireless-->Broadcom || <!--Test Distro--> || <!--Comments-->2012 64bit
|-
| <!--Name-->C70D-A C75D-A || <!--Chipset-->E1-1200 no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{maybe|AMD HD8330}} || <!--Audio-->{{no|HA Audio CX20751 11Z}} || <!--USB-->{{no| }} || <!--Ethernet-->{{no|Atheros AR8162 alx}} || <!--Wireless-->{{no|Realtek 8188e}} || <!--Test Distro--> || <!--Comments-->2013 64bit -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
|}
====Misc====
[[#top|...to the top]]
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Time 500 Packard Bell EasyOne 1450 1550 || <!--Chipset-->K6-3 500Mhz + VIA MVP4 vt82c686a || <!--IDE-->{{N/A|Issues}} || <!--SATA-->{{N/A}} || <!--Gfx-->Use VESA || <!--Audio-->{{No|VIA AC97 3058 with wolfson codec WM9703 WM9704 WM9707 WM9708 or WM9717}} || <!--USB-->via 3038 2 ports USB 1.1 untested || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{N/A}} || <!--Test Distro-->NB May 2013 || <!--Comments-->2001 32bit grub runs but stalls around [PCI] Everything OK
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Sony Vaio PCG FX201/FX202 FX210/FX215 FX401/FX402 FX404/FX405 972M, FX501/FX502 FX504/FX505 || <!--Chipset-->VIA KT133A KM133 Duron 800Mhz Athlon 1.3Ghz || <!--IDE-->{{partial|boot issue with 2013 kernel VIA [rev 06]}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{partial|ATI Rage Mobility Pro (VESA only)}} || <!--Audio-->{{Yes|VIA AC97 686b [rev 50] AD1881A Ear phone and Mic}} || <!--USB-->{{Maybe|issues}} || <!--Ethernet-->{{Yes|RTL 8139}} || <!--Wireless-->{{N/A}} || <!--Comments-->Nightly 1st March 2013 || <!--Comments-->booting usb pendrive from Plop Boot Loader floppy (no bios USB boot). Can freeze coz hardware issue or a ram slot problem - no support for iLink firewire VT8363/8365 pci - vt82c686b
|-
| <!--Name-->Sony Vaio PCG FX601/FX602, FX604/FX605 FXA53(US), FX701/FX702, FX704/FX705, FX801/FX802 FX804/FX805 || <!--Chipset-->VIA KT133A KM133 Duron 800Mhz Athlon 1.3Ghz || <!--IDE-->{{partial|boot issue with 2013 kernel VIA [rev 06]}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{partial|ATI Rage Mobility Pro (VESA only)}} || <!--Audio-->{{Yes|VIA AC97 686b [rev 50] AD1881A Ear phone and Mic}} || <!--USB-->{{Maybe|issues}} || <!--Ethernet-->{{Yes|RTL 8139}} || <!--Wireless-->{{N/A}} || <!--Comments-->Nightly 1st March 2013 || <!--Comments-->booting usb pendrive somes works
|-
| <!--Name-->Sony Vaio PCG FX100 R505LE || <!--Chipset-->Intel i815 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Use VESA Intel 82815 CGC || <!--Audio-->Intel ICH AC97 with ADI AD1881A codec || <!--USB--> || <!--Ethernet-->Intel e100 || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->PCG-FX105 FX105K PCG-FX108 FX108K PCG-FX109 FX109K FX200 FX203/FX203K FX205 FX205K FX209 FX209K FX220 [http://juljas.net/linux/vaiofx240/ FX240] FX250 FX270 FX290 FX301 FX302 FX340 FX370 FX390 FX403 FX503 FX950
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| Sony VAIO VGN X505VP || Pentium M ULV and Intel 855GM || {{yes}} || {{N/A}} || {{maybe|Intel 855 (VESA only)}} || {{yes|AC97}} || {{yes|USB}} || {{yes|Intel PRO 100 VE}} || {{N/A}} || || 2004 32bit - 0.38 inches at its thinnest point - first laptop to feature a "chiclet" keyboard resemble Chiclets gum -
|-
| <!--Name-->Sony Z505LE Z505JE || <!--Chipset-->P3 || <!--IDE--> || <!--SATA-->n/a || <!--Gfx-->Rage Mobility M1 AGP mach64 || <!--Audio-->no Yamaha DS-XG PCI YMF744 || <!--USB--> || <!--Ethernet-->Intel 8255x based PCI e100 || <!--Wireless-->n/a || <!--Test Distro--> || <!--Comments-->2004 32bit -
|-
| <!--Name-->Panasonic Toughbook CF-18 || <!--Chipset-->Core || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{yes|gma for i915}} || <!--Audio-->{{yes|AC97 SigmaTel}} || <!--USB-->{{yes|usb2 }} || <!--Ethernet-->{{yes|RTL 8139C}} || <!--Wireless-->{{no|Intel swap for atheros 5k}} || <!--Test Distro-->Deadwoods' D02 test || <!--Comments-->2003 32bit
|-
| <!--Name-->Panasonic Toughbook CF-29 CF-30 || <!--Chipset-->Core || <!--IDE--> || <!--SATA--> || <!--Gfx-->use VESA || <!--Audio-->AC97 SigmaTel || <!--USB--> || <!--Ethernet-->RTL 8139C || <!--Wireless-->Intel || <!--Test Distro--> || <!--Comments-->2003 32bit
|-
| <!--Name-->MSI Microstar PR210 || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA ATi RS690M}} || <!--Audio-->{{Yes|HD Audio through speaker / head phones but not hdmi}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{yes|Realtek 8111 8169}} || <!--Wireless-->Atheros AR242x AR542x aw-ge780 mini pci-e || <!--Test Distro-->2017 Icaros 2.1.2 || <!--Comments-->2004 32bit - ENE PCI based SD card with no bios boot option
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Advent 7106 EAA-88 || <!--Chipset-->Pentium M 1.7GHz with 915GM || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Yes|2D and 3D tunnel 187 gearbox 67}} || <!--Audio-->{{Yes|AC97 Intel ICH6 with Conexant Cx20468 31 codec playback head phones only}} || <!--USB--> || <!--Ethernet-->{{Yes|Realtek 8169}} || <!--Wireless-->{{No|Intel 2200BG Fn/F2 replaced with atheros mini pci in small base panel - startup errors in wireless manager}} || <!--Test Distro-->2017 Icaros 2.1.1 || <!--Comments-->2005 32bit 14" cheap rubbish sadly - fan noise through audio channel -
|-
| <!--Name-->Motion Computing LE1600 PC Slate || <!--Chipset-->915 || <!--IDE--> || <!--SATA--> || <!--Gfx-->915 || <!--Audio-->Intel AC97 SigmaTel STAC9758 9759 || <!--USB--> || <!--Ethernet-->Realtek 8169 || <!--Wireless-->Intel PRO Wireless 2200BG || <!--Test Distro--> || <!--Comments-->2005 serial Wacom digitiser not usb
|-
| <!--Name-->Panasonic Toughbook CF-51 CF-P1 CF-T5 CF-Y2 || <!--Chipset-->945GMS || <!--IDE--> || <!--SATA--> || <!--Gfx-->GMA 950 || <!--Audio-->HD Audio || <!--USB--> || <!--Ethernet-->Broadcom || <!--Wireless-->Intel || <!--Test Distro--> || <!--Comments-->2006 32bit
|-
| <!--Name-->Sony Vaio VGN-AR11S || <!--Chipset-->ntel Core Duo T2500 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{yes| Nvidia Go 7600}} || <!--Audio-->{{yes| }} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{No| }} || <!--Test Distro-->Aros One 32bit || <!--Comments-->2006 32bit - 17" 1920x1200 - blu-ray -
|-
| Sony Vaio VGN SR29VN || Intel ICH9 || {{N/A}} || {{maybe|IDE legacy}} || {{partial|ATI HD 3400 (VESA only)}} || {{partial|HD Audio (too quiet)}} || {{yes|USB1.1 and USB2.0}} || {{no|Marvell 8040}} || {{no|Intel 5100}} || Icaros 1.5 || 2007 32bit -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Wyse XM Class DELL WYSE Xn0m LAPTOP || <!--Chipset-->AMD T-G56N 1.6 1.65Ghz || <!--IDE-->{{N/A| }} || <!--SATA-->decased 2.5in ssd || <!--Gfx-->{{Maybe|Vesa 2d only AMD 6320}} || <!--Audio-->{{Maybe| }} || <!--USB-->{{Maybe|EHCI 2.0 with NEC uPD720200 USB 3.0}} || <!--Ethernet-->{{Yes|Realtek rtl8169 8111E}} || <!--Wireless-->{{No|Atheros 93xx}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - 1366 x 768 14" - 2 ddr3l slots max 16gb - 19v coax barrel plug psu -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->MSI Ge40 Ge60 || <!--Chipset-->Intel 4 || <!--IDE--> || <!--SATA--> || <!--Gfx-->GTX 860M || <!--Audio--> || <!--USB--> || <!--Ethernet-->{{no|Killer}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2014 64bit -
|-
| <!--Name-->MSI GE62 2QF Apache Pro || <!--Chipset-->Intel 5 || <!--IDE--> || <!--SATA--> || <!--Gfx-->GTX 970M || <!--Audio--> || <!--USB--> || <!--Ethernet-->{{no|Killer }} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2015 64bit -
|-
| <!--Name-->MSI GS65 Stealth || <!--Chipset-->i7-8750H and later i7-9750H || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->GeForce GTX 1060 or 1070 Max Q, GTX 1660 Ti, RTX 2080 Max-Q || <!--Audio-->{{unk|HDAudio }} || <!--USB-->{{unk|US3}} || <!--Ethernet-->{{No| }} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2018 64bit -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Gigabyte P35X || <!--Chipset-->Intel || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->GTX 980M || <!--Audio-->HDaudio || <!--USB-->USB3 || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2014 64bit -
|-
| <!--Name-->Panasonic Toughpad FZ-G1 MK2 || <!--Chipset-->Core i5-3437U, 1.9GHz || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet-->{{N/A}} || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2014 64bit -
|-
| <!--Name-->ToughPad FZ-G1 Mk3 || <!--Chipset-->Intel Core i5-4310U || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->Intel HD 4400 || <!--Audio-->HDaudio Codec ALC255 || <!--USB--> || <!--Ethernet-->{{N/A}} || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2015 64bit -
|-
| <!--Name-->[https://wiki.recessim.com/view/Panasonic_Toughpad_FZ-G1_MK4 Panasonic Toughpad FZ-G1 MK4] || <!--Chipset-->intel 6300U || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->Intel 520 || <!--Audio-->HDaudio with ALC256 codec - o/c or s/c fails early || <!--USB-->{{maybe|USB3 but options on the right hand side of screen case}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|intel ac 8260}} || <!--Test Distro--> || <!--Comments-->2016 64bit - 10.1in 1600x1200 - 4gb ddr3l soldered - waterproof pen left hand side base - optional slot-in 4g lte and sdhc - 16v 4.06A 64.96W panasonic barrel -
|-
| <!--Name-->Panasonic Toughpad FZ-G1 MK5 || <!--Chipset-->intel i5-7300U || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->Intel 620 || <!--Audio-->HDaudio ALC295 codec - o/c or s/c fails early || <!--USB-->{{maybe|USB3 but optional usb2 plugin r.h.s. of screen casing}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|Intel}} || <!--Test Distro--> || <!--Comments-->2018 64bit - 8gb ddr3l soldered - 10.1" WUXGA 1920 x 1200 with LED backlighting screen 2-800 nit - 10-point capacitive multi touch + Waterproof Digitizer pen l.h.s -
|-
| <!--Name-->ToughPad FZ-M1 || <!--Chipset-->Intel® Core TM m5-6Y57 vPro TM || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->Intel HD 4200 || <!--Audio-->HDaudio with ALC codec || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2016 64bit - 7in 800p - 8gb ddr3l soldered -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Any Razor Razer laptops || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->AVOID unable to remove secure boot
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
===Netbook===
[[#top|...to the top]]
* PC to write Aros image onto an USB pendrive with Raspberry PI writer, USB writer or Rufus for boot purposes on a netbook
* SD card sometimes can boot like Dell 2100, EeePC 1001P, ASUS EeePC 900, acer aspire one d150, MSI Wind U100,
====Acer Packard Bell Netbooks====
[[#top|...to the top]]
{| class="wikitable sortable" width=100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| Aspire One AOA110 (A110) (ZG5) || Intel 945GSE || {{N/A}} || {{Maybe|IDE legacy mode}} || {{Yes|Intel GMA (2D and 3D) tunnel 99 and gearbox 84 score}} || {{Yes|HD Audio ALC6628}} || {{Yes|USB1.1 and USB2.0}} || {{Yes|rtl8169 RTL8101E}} || {{Yes|AR5006}} atheros 5k || 2016 AspireOS 1.8, 2025 Aros One 2.6 32bit USB || 2007 32bit 1 core - 19v barrel A13-045N2A 19V2.37A 45W 5.5x1.7mm -
|-
| Aspire One AOA150 (A150) (ZG5) || Intel 945GSE || {{N/A}} || {{Maybe|ide mode}} || {{Yes|Intel GMA 2D and accelerated 3D with tunnel 99 and gearbox 84.1 result}} || {{Yes|HD Audio ALC6628}} || {{Yes|uhci and ehci}} || {{Yes|rtl8169 RTL8101E}} || {{Yes|AR5006}} atheros 5k || 2016 AspireOS 1.8, 2025 aros one 2.6 32bit USB || 2007 32bit 1 core - 19v barrel -
|-
| Aspire One AOD150 D150 (Compal LA-4781P), AOD110 D110 (ssd) || Intel 945GME || {{N/A}} || {{Maybe|ide legacy}} || {{Yes|Intel GMA 950 (2D)}} || {{Yes|HDAudio with alc272}} || {{Yes|USB}} || {{No|Atheros AR8121 AR8113 AR8114 l1e}} || {{Maybe|AR5007EG AR5BXB63 works but Broadcom BCM4312 has no support}} || 2010 Icaros Desktop 1.3, 2024 Aros one 32bit USB || 2008 32bit 1 core - 19v barrel -
|-
| Aspire One (ZG8) || Intel 945G and N270 || {{N/A}} || {{Maybe|ide mode}} || {{Yes|Intel GMA 2D and accelerated 3D}} || {{maybe|HD Audio }} || {{Yes|uhci and ehci}} || {{No|Broadcom }} || {{no|Intel}} || 2014 AspireOS 1.8 || 2009 32bit -
|-
| Aspire One AOD250 D250 emachines em250 || 945GME || {{N/A}} || {{Maybe|ide legacy}} || {{Yes|Intel GMA (2D)}} || {{Yes|alc272 HD Audio}} || {{Yes}} || {{No|AR8132 (L1c)}} || {{No|BCM4312 or Atheros AR5B95}} || 2010 Icaros 1.3 || 2009 32bit 1 core - 19v barrel -
|-
| <!--Name-->Aspire AO532H (Compal LA-5651p) 533H Pineview || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio-->{{Yes|HD Audio playback}} || <!--USB--> || <!--Ethernet-->{{No|AR8132 (L1c)}} || <!--Wireless-->{{No|Atheros 9k}} || [http://www.amigaworld.net/modules/news/article.php?mode=flat&order=0&item_id=5968 Tested AspireOS June 2011] || <!--Comments-->
|-
| <!--Name-->emachines eM350 NAV51 || <!--Chipset--> with N450 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 3150 || <!--Audio-->HD Audio with codec || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro-->Icaros 2.2 || <!--Comments-->Single core 64bit - 160GB HDD 1GB RAM 10.1" LED backlit screen and Webcam - 3 cell li-ion battery for 3 hours usage -
|-
| <!--Name-->emachines eM355 || <!--Chipset--> with N455 || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->64bit support possible -
|-
| <!--Name-->Aspire One 533 || <!--Chipset-->N455 with NM10 || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes}} || <!--Gfx-->{{Yes|2D 0x8086 0xa011}} || <!--Audio-->{{Yes| ALC272 codec ich7}} || <!--USB-->{{Yes}} || <!--Ethernet-->{{No|Atheros AR8152 v1.1 1c}} || <!--Wireless-->{{No|Broadcom 4313}} || <!--Test Distro-->2016 Icaros 2.1 and AROS One 2.3 || <!--Comments-->2011 64bit - f2 setup - 10.1inch 1024 x 768 -
|-
| Aspire One AOD255 AOD255e AOD260 AOHAPPY (Compal LA-6221P) || N570 and Nm10 || {{N/A}} || {{Maybe|SATA}} || {{Maybe|Intel GMA 3150}} || Audio || USB || {{No|Atheros AR8152 V1.1 (1lc)}} || {{No|Broadcom BCM4313}} || || a little support
|-
| Aspire One 522 AO522 (Compal LA-7072p) || 1GHz dual C-50 C50 or C-60 C60 + Hudson M1 || {{N/A}} || SATA || AMD 6250 (ATI 9804) or 6290 || ATI SB CX20584 HD Audio || USB || Atheros 8152 v2.0 l1c || {{No|Broadcom BCM4313 or Atheros ath9k}} || ||
|-
| <!--Name-->AAOD270 Aspire One D270 || <!--Chipset-->N2600 Cedarview || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes| }} || <!--Gfx-->{{Yes|2D on Intel GMA 3650}} || <!--Audio-->{{Yes| }} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{Yes|RTL 8169 RTL8101E}} || <!--Wireless-->{{No|Broadcom BCM4313 but swap for Atheros 5k}} || <!--Test Distro--> || <!--Opinion-->2011 64bit atom - ddr2 so-dimm 2gb max -
|-
| <!--Name-->Aspire One AO532G (Compal LA-6091p) || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Aspire One D257 (Quanta ZE6) || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Acer Aspire One 722 AO722 P1VE6 || <!--Chipset-->AMD C-60 C60 with SB900 || <!--IDE-->{{N/A| }} || <!--SATA--> || <!--Gfx-->{{Maybe| use VESA Ati 6290}} || <!--Audio-->{{Yes|HD Audio with codec but no Wrestler HDMI output}} || <!--USB--> || <!--Ethernet-->{{No|Qualcomm Atheros AR8152 v2.0}} || <!--Wireless-->{{unk|Atheros AR9485}} || <!--Test Distro-->2017 Icaros 2.1.2 || <!--Comments-->
|-
| <!--Name-->Aspire One AO721 (Wistron SJV10-NL) || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->AO751 AO751H (Quanta ZA3) || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Packard Bell Dot .S || <!--Chipset-->N280 + || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|legacy}} || <!--Gfx-->{{yes|Intel GMA950 (2D)}}|| <!--Audio-->HD Audio ALC272X || <!--USB--> USB2.0 || <!--Ethernet--> {{no|Atheros l1e}} || <!--Wireless-->{{no|Atheros 9k}} || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Packard Bell Dot .SE || <!--Chipset-->N450 + || <!--IDE-->{{N/A}} || <!--SATA-->legacy || <!--Gfx-->Intel GMA950 (2D) || <!--Audio-->HD Audio ALC|| <!--USB-->USB2.0 || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Packard Bell Dot .S2 NAV50 || <!--Chipset-->N455 NM10 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Intel X3150 || <!--Audio-->HD Audio ALC269 || <!--USB--> || <!--Ethernet-->Atheros || <!--Wireless-->Atheros || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Packard Bell Dot M/A || <!--Chipset-->1.2GHz Athlon L110 + RS690E || <!--IDE-->{{N/A}} || <!--SATA-->legacy mode? || <!--Gfx-->AMD ATI Radeon Xpress X1270 (VESA only) || <!--Audio-->HD Audio ATI SBx00 || <!--USB--> || <!--Ethernet-->Realtek RTL8101E RTL8102E rtl8169 || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro--> || <!--Opinion-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Asus Netbooks====
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| [http://wiki.debian.org/DebianEeePC/Models eeePC] 700 701 2G 4G 8G Surf || Intel 910GML + ICH7 || {{N/A}} || {{Maybe|IDE legacy mode}} || {{Yes|Intel GMA 900 2D and 3D tunnel 68 gearbox 43 on 701 800x480}} || {{Yes|ALC662 HD Audio}} || {{Yes|UHCI and EHCI}} || {{No|Atheros L2}} || {{Yes|Atheros 5k AR5007EG (AR2425 works}} || 2016 Icaros 2.1.1, 2.1.2, Aros One 2.5 32bit USB, || 2007 32bit - power supplies fail due to bad caps issue 9.5V 2.5A 24W Charger AD59930 4.8*1.7MM -
|-
| [http://wiki.debian.org/DebianEeePC/Models eeePC] 701SD || Intel 910GML + ICH7 || {{N/A}} || {{Maybe|IDE legacy mode}} || {{Maybe|Intel GMA 900 (2D)}} || {{Yes|ALC662 HD Audio}} || {{Yes|UHCI and EHCI}} || {{No|Atheros L2}} || {{No|RTL8187SE swap with Atheros 5k}} || 2014 AspireOS 1.7, || 2007 32bit - boot issues but does boot with ATA=32bit,nopoll or ATA=nodma,nopoll
|-
| [http://wiki.debian.org/DebianEeePC/Models eeePC] 900 || Intel 910GML + ICH7 || {{N/A}} || {{Maybe|IDE legacy mode}} || {{Maybe|Intel GMA 900 (2D, 3D in some models)}} || {{Yes|ALC662 HD Audio}} || {{Yes|UHCI and EHCI}} || {{No|Atheros L2}} || {{Maybe|depends on chipset AR5007EG (AR2425) works but not RaLink}} || 2014 AspireOS 1.7, || 2008 32bit - boot issues but does boot with ATA=32bit,nopoll or ATA=nodma,nopoll. 900's may need BIOS upgrade to boot usb optical drives. 3D available in some model revisions - AD59230 9.5v 2.31a psu -
|-
| eeePC 900A || 945GSE || {{N/A}} || {{Maybe|IDE legacy mode}} || {{Yes|Intel GMA 950 (3D)}} || {{Yes|HD Audio ALC269}} || {{Yes|USB2.0}} || {{No|Atheros L1e [1969 1026]}} || {{Yes|Atheros 5k AR242x}} || Nightly Build 2012, 2023 Aros One 32bit 2.4 || 2009 32bit
|-
| eeePC 901 1000 || 945GM || {{N/A}} || {{Maybe|IDE legacy mode}} || {{yes|Intel GMA 950 (2D)}} || {{Yes|ALC269 HD Audio}} || {{Yes|USB}} || {{No|Atheros L1E (AR8121 AR8113 AR8114)}} || {{No|RaLink Device 2860 swap with Atheros 5k}} || 2011 Icaros 1.4, || 2009 32bit - 12v 3a psu -
|-
| eeePC Seashell 1000HA 1000HE 1008 1005HA || N280 + Intel GMA950 || {{N/A}} || SATA || {{Yes|Intel GMA (2D)}} || {{Yes|HD Audio ALC269}} || {{Yes|USB}} || {{Maybe|Realtek but not Atheros AR8132 (L1c)}} || {{unk|Atheros AR9285}} || 2014 Aspire OS 1.6, || 2010 32bit - 12v 3a psu -
|-
| <!--Name-->eeePC 1001ha || <!--Chipset-->GMA945 || <!--IDE-->{{N/A}} || <!--SATA-->legacy || <!--Gfx-->Intel GMA 950 (2D) || <!--Audio-->ALC269 HD Audio || <!--USB--> || <!--Ethernet-->{{No|Attansic Atheros AR8132 l1c}} || <!--Wireless-->{{No|RaLink RT3090 swap with Atheros 5k}} || <!--Test Distro-->untested || <!--Opinion-->2010 32bit
|-
| eeePC 1001P T101MT 1005PX 1005PE 1015PE Pineview 1001PXD || NM10 and N450 N455 CPU || {{N/A}} || {{Maybe|IDE mode}} || {{Yes|Intel GMA 3150 (2D)}} || {{Yes|HD Audio}} || {{Yes|USB 2.0}} || {{No|Atheros AR8132 (l1c)}} || {{unk|Atheros AR928x 802.11n}} || 2010 Icaros 1.3.3, || 2011 64bit - 19V 2.1A 2.3x0.7 -
|-
| EeePC 1015B 1215B || single C-30 C30 or dual C-50 C50 + Hudson M1 || {{N/A}} || SATA || {{partial|AMD 6250 (VESA only)}} || ATI SBx00 HD Audio || USB || {{No|AR8152 v2.0 atl1c}} || {{No|Broadcom BCM4313 [14e4 4727]}} || untested recently || 2011 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->Flare X101CH Cedarview || <!--Chipset-->N2600 + N10 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Intel GMA 6300 || <!--Audio--> || <!--USB--> || <!--Ethernet-->{{No|Atheros l1c 2.0}} || <!--Wireless-->{{unk|Atheros 9k AR9285}} || <!--Test Distro--> || <!--Comments-->2012 64bit
|-
| <!--Name-->Flare 1025CE 1225CE || <!--Chipset-->N2800 + N10 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{dunno|Intel GMA 3600}} || <!--Audio--> || <!--USB--> || <!--Ethernet-->{{No|Atheros l1c 2.0}} || <!--Wireless-->{{unk|Atheros 9k AR9285}} || <!--Test Distro--> || <!--Comments-->2012 64bit
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Dell Netbooks====
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| Inspiron 910 Mini 9 PP39S Vostro A90 || GMA945 || {{Maybe|STEC 8G 16G 32G IDE PATA Parallel ATA miniPCIE SSD 50MM / 70MM very slow}} || {{N/A| }} || {{yes|Intel GMA 2D and 3D opengl1}} || {{yes|ALC268 HD Audio}} || {{yes|USB2 boots and works}} || {{yes|rtl8169 Realtek RTL8102E}} || {{no|Broadcom BCM4310 and 4312 swap with atheros 5k bx32}} || ICAROS 1.3 but Icaros 2.3 (pci issues), AROS One 2.6 and Tiny AROS (digiclock startup) mouse cursor vanishes || 2008 32bit - 9inch 1024x600 screen - 1 ddr2 sodimm slot max 2gig - 19v 1.58a - 0 boot disk select - cr2032 battery under laptop base cover, while mem 2GB max under base flap -
|-
| <!--Name-->Inspiron Mini 10 1010 PP19S || <!--Chipset-->Atom Z520 Z530 Intel US15W Poulsbo || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{maybe|Intel GMA 500 (VESA only)}} || <!--Audio-->{{Maybe|HD Audio ALC269 codec}} || <!--USB--> || <!--Ethernet-->{{yes|rtl8169 RTL8102E}} || <!--Wireless-->{{no|Intel or BCM4312}} || <!--Test Distro-->untested || <!--Comments-->2008 32bit - 10.10 inch 16:9, 1366 x 768 glossy - 28whr or 56wHr battery options -
|-
| [https://wiki.ubuntu.com/HardwareSupport/Machines/Netbooks#Dell%20Mini%2010v%20(Inspiron%201011) Mini 10v 1011] [http://wiki.debian.org/InstallingDebianOn/Dell/InspironMini10v ] || Intel 950 || {{N/A}} || {{maybe|ide legacy mode}} || {{yes|Intel GMA (2D)}} || {{maybe|HDAudio}} || {{yes|USB}} || {{yes|RTL8102E 8103E}} || {{no|Dell 1397 Wireless}} || untested || 2008 32bit -
|-
| <!--Name-->Inspiron Mini 1018 || <!--Chipset-->Intel Atom N455 || <!--IDE-->{{N/A}} || <!--SATA-->{{partial|IDE mode }} || <!--Gfx-->{{yes|Intel GMA 3150 (2D, no VGA output)}} || <!--Audio-->{{partial|HD Audio head phones only - speaker and micro phone do not work}} || <!--USB-->{{yes|USB 2.0}} || <!--Ethernet-->{{yes|RTL8169}} || <!--Wireless-->{{unk|RTL8188CE or AR928X}} || <!--Test Distro-->2011 Icaros 1.5.1, || <!--Comments-->2009 64bit - 1 DDR3 max 2gb -
|-
| Latitude 2100 || Intel Atom N270 N280 1.60Ghz GMA 945GME || {{N/A}} || {{Yes|set to IDE in bios as ahci not working || {{yes|Intel GMA 950 (2D and 3D with tunnel 98 and gearbox 84)}} || {{yes|HD Audio with ALC272 codec}} || {{yes|USB2.0}} || {{No|Broadcom BCM5764M}} || {{No|Intel 5100 or BCM4322 DW 1510 half height mini pcie use small Atheros 5k}} || <!--Test Distro-->2016 AspireOS 1.8, Icaros 2.1.1 and AROS One USB 2.4 || 2009 32bit ddr2 sodimm max 2G - [https://sites.google.com/site/arosaspireone/about-aspire-one Webcam and card reader not working] lcd cable over hinge an issue - f12 bios and boot -
|-
| <!--Name-->Latitude 2110 2120 || <!--Chipset-->N470 1.83Ghz, N455 1.6Ghz, N550 1.5Ghz || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|ATA mode in bios not ahci}} || <!--Gfx-->{{Yes|Intel 3150 2D only}} || <!--Audio-->{{Maybe|HD Audio with ALC269 codec}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No| }} || <!--Wireless-->{{No| swap for Atheros}} || <!--Test Distro-->2014 Icaros 2.3, || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 - ddr2 sodimm
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====HP Compaq Netbooks====
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| HP Mini 2133 || VIA C7-M P4M900 / 8237 VX700 || {{N/A}} || {{maybe|SATA}} || {{maybe|VIA Chrome 9 HC (VESA only)}} || {{no|VT1708/A HD Audio}} || USB || {{no|Broadcom Corp NetXtreme BCM5788}} || {{no|Broadcom Corp BCM4312}} || untested || 2008 32bit -
|-
| HP mini 1000 Mi 2140 ks145ut || N270 + 945GM || {{N/A}} || SATA || <!--Gfx-->{{Yes|Intel GMA 950 (2D and opengl1 3d)}} || <!--Audio-->{{Yes|HD Audio (playback tested)}} || <!--USB-->{{Yes| }} || {{no|Marvell 88E8040}} || {{no|Broadcom Corp BCM4312 hard blocked}} || untested || 2009 32Bit - unable to change wifi card
|-
| <!--Name-->HP Mini 700 702 || <!--Chipset-->N270 + 945GSE || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{Yes|Intel GMA 950 (2D)}} || <!--Audio-->{{Yes|HD Audio IDT 92HD75B (111d:7608, only playback tested)}} || <!--USB-->{{Yes| }} || <!--Ethernet--> || <!--Wireless-->{{No|Broadcom hard locked}} || <!--Test Distro-->untested || <!--Comments-->2009 32bit -
|-
| Compaq HP Mini 110 110-3112sa || 945GM Express || {{N/A}} || {{maybe|IDE mode}} || {{yes|Intel GMA 950 (2D)}} || {{yes|HD Audio IDT STAC 92xx}} || {{yes|USB 2.0}} || {{no|Atheros}} || {{no|Broadcom hard blocked Fn+F12}} || untested || 2009 32bit - unable to change wifi
|-
| HP Mini 200 210 || 945GM NM10 Express || {{N/A}} || SATA || Intel GMA 950 || {{Maybe|HDAudio with }} || USB || RTL8101E RTL8102E || {{no|Broadcom BCM4312 hard locked}} || untested || 2009 32bit -
|-
| HP Mini 311 DM1 (Quanta FP7) || N280 + ION LE || {{N/A}} || SATA || nVidia Geforce ION || {{maybe|HDAudio with }} || USB || eth || {{No|hard locked}} || untested || 2009 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|}
====Lenovo Netbooks====
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| IdeaPad S9 S9e(3G) S10 S10e(3G) || 945GME || {{N/A}} || {{maybe|SATA}} || {{yes|Intel GMA (2D)}} || {{maybe|ALC269 or SigmaTel HD Audio}} || {{yes|USB}} || {{no|Broadcom NetLink BCM5906M}} || {{no|Broadcom BCM4312 hard blocked}} || untested || 2009 32bit -
|-
| IdeaPad S12 || Intel Atom N270 + Nvidia ION LE MCP79 || {{N/A}} || SATA || nVidia C79 ION [Quadro FX 470M] || {{maybe|ALC269 HD Audio}} || USB || {{no|Broadcom}} || {{no|Intel locked down}} || 2012 Icaros 2.0, || 2009 32bit - does not boot - cause unknown
|-
| S10-2 || 945GME and N280 CPU || {{N/A}} || SATA || {{yes|Intel GMA (2D)}} || {{maybe|ALC269 HD Audio}} || {{yes}} || {{yes|rtl8169}} || {{no|Broadcom BCM4312 hard blocked}} || 2011 Icaros 1.3, || 2009 32bit -
|-
| S10-3 || NM410 and N450 CPU || {{N/A}} || SATA || {{yes|Intel GMA 3150 (2D)}} || {{maybe|HD Audio ALC269}} || {{yes|USB}} || {{yes|rtl8169}} || {{no|Atheros 9285 or Broadcom BCM4312 hard blocked}} || 2011 Icaros 1.3, || 2009 32bit -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Samsung Netbooks====
[[#top|...to the top]]
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| [http://www.amigaworld.net/modules/newbb/viewtopic.php?post_id=616910&topic_id=33755&forum=28#616910 NC10] || 945GME || {{N/A}} || {{maybe|SATA}} || {{yes|Intel GMA 950 (2D)}} || {{partial|SigmaTel HD Audio (playback only)}} || {{yes|USB}} || {{maybe|rtl8169 works but not Marvell 88E8040 sky2}} || {{yes|AR5007EG}} || 2011 Icaros 1.4, || 2009 32bit - Nano silver on keyboard and lcd ribbon cable over hinge issues
|-
| [http://www.sammywiki.com/wiki/Samsung_NC20 NC20] || VIA VX800 || {{N/A}} || SATA || {{maybe|VIA Chrome9 (VESA only)}} || ALC272 GR (VT1708A) HD Audio || {{yes|USB}} || {{no|Marvell 88E8040}} || {{yes|Atheros AR5001}} || untested || 2009 32bit -
|-
| NP-N110 NP-N120 || 945GSE || {{N/A}} || SATA || {{yes|Intel GMA 950 (2D)}} || {{yes|ALC272 HD Audio or ALC6628}} || {{yes|USB}} || {{no|Marvell 88E8040}} || {{no|Realtek rtl8187}} || untested || 2009 32bit - Namuga 1.3M Webcam none
|-
| NP-N130 || 945GSE || {{N/A}} || {{yes|SATA in IDE mode}} || {{yes|Intel GMA 2D and opengl 1.x 99.5 tunnel 99 gearbox}} || {{yes|Intel HD with ALC272 ALC269 codec playback}} || {{yes|USB}} || {{yes|RTL 8169.device - 8101e 8102e}} || {{no|rtl 8192se rtl8187 too small an area to swap for atheros 5k}} || untested || 2009 32bit - 10.x inch 1024 x 600 - Namuga 1.3M Webcam - front slide power on and f2 setup bios - keyboard 17.7mm Pitch is made with Silver Nano (Anti-Bacterial) tech - small touchpad - 1 ddr2 2rx16 sodimm slot 2G max - 44Wh
|-
| <!--Name-->Go NP-N310 || <!--Chipset-->N270 + 945GME || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|IDE legacy mode}} || <!--Gfx-->{{yes|Intel GMA 950 (2D)}} || <!--Audio-->{{yes|HD Audio ALC6628}} || <!--USB-->{{yes}} || <!--Ethernet-->{{yes|rtl8169}} || <!--Wireless-->{{yes|Atheros5k}} || <!--Test Distro-->untested || <!--Opinion-->2010 32bit - N280 version changed specs
|-
| NP-N510 || N270 euro N280 uk + ION MCP79 || {{N/A}} || SATA || nVidia C79 ION [Quadro FX 470M] || HD Audio || USB || Marvell 88E8040 || Realtek 8192E || untested || 2010 32bit - does not boot - cause unknown
|-
| NP-N145 Plus || n450 + NM10 || {{N/A}} || {{maybe|IDE legacy mode}} || {{yes|Intel GMA 3150 (2D, no VGA output)}} || {{yes|Realtek HD Audio}} || {{yes|USB2.0}} || {{no|Marvell 88E8040}} || {{unk|Atheros AR9285}} || untested || 2010 some support but often the trackpad does not work
|-
| <!--Name-->NC110 Axx || <!--Chipset-->NM10 || <!--IDE-->{{N/A}} || <!--SATA-->Sata || <!--Gfx--> || <!--Audio-->HDAudio with ALC269 codec A9M22Q2 || <!--USB--> || <!--Ethernet-->{{Maybe|Rtl8169}} || <!--Wireless-->{{No|Broadcom BCM4313 or Atheros}} || <!--Test Distro-->untested || <!--Comments-->2011 64bit -
|-
| NF210 Pineview || n455 or n550 + N10 || {{N/A}} || {{maybe|SATA}} || {{maybe|Intel GMA 3150 (needs retesting, VESA works)}} || {{yes|HD Audio}} || {{yes|USB}} || {{no|Marvell 88E8040}} || Wireless || untested || 2011 64bit - some support
|-
| <!--Name-->NS310 NP-NS310-A03UK || <!--Chipset-->N570 with NM10 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{Maybe|use Vesa 2d }} || <!--Audio-->{{yes| ich7}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{yes|rtl8169 realtek 810xe }} || <!--Wireless-->{{no|bcm4313 }} || <!--Test Distro-->2022 AROS One 2.3, || <!--Comments-->2011 64bit Atom N570 or 1.5 GHz Intel Atom N550 dual core processor, 1 DDR3 sodimm slot memory, a 250GB hard drive, and a 10.1 inch, 1024 x 600 pixel 10.1" W7St - 2300mAh short life -
|-
| <!--Name-->[https://wiki.archlinux.org/index.php/Samsung_N150 N150] NB30 || <!--Chipset-->MN10 || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Yes|Intel GMA 3150 (2D)}} || <!--Audio-->{{No| }} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|Marvell 88E8040}} || <!--Wireless-->{{unk|Atheros AR9285 or Realtek 8192E}} || <!--Test Distro-->untested || <!--Comments-->2011 a little support
|-
| <!--Name-->[http://www.kruedewagen.de/wiki/index.php/Samsung_N220 N210 N220] N230 || <!--Chipset-->N450 + NM10 || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Yes|Intel GMA 3150 (2D)}} || <!--Audio-->HD Audio ALC269 || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|Marvell}} || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro-->untested || <!--Comments-->2011 64bit no sse4.1 or avx -
|-
| <!--Name-->NC110 Pxx Cedarview || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{dunno|Intel GMA 3600}} || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless-->{{No|Intel 6000g}} || <!--Test Distro-->untested || <!--Comments-->2012 64bit
|-
|}
====Toshiba Netbooks====
[[#top|...to the top]]
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->NB100 || <!--Chipset-->945GM || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|legacy}} || <!--Gfx-->{{yes|Intel GMA (2D)}} || <!--Audio-->{{yes|ALC262 HD Audio}} || <!--USB--> || <!--Ethernet-->{{yes|rtl8169}} || <!--Wireless-->{{yes|AR5001}} || <!--Test Distro-->untested || <!--Comments-->2009 32bit -
|-
| <!--Name-->Mini NB200 series NB205 || <!--Chipset-->N280 + GSE945 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|IDE legacy mode}}|| <!--Gfx-->{{yes|Intel GMA (2D)}} || <!--Audio-->ALC272 HD Audio || <!--USB-->{{yes}} || <!--Ethernet-->{{yes|RTL8169}} || <!--Wireless-->{{maybe|AR9285}} || <!--Test Distro-->untested || <!--Opinion-->2009 32bit -
|-
| <!--Name-->Mini 300 series NB305 || <!--Chipset-->N455 with NM10 || <!--IDE-->{{N/A}} || <!--SATA-->legacy || <!--Gfx-->Intel GMA 3150 (2D) || <!--Audio-->ALC272 HD Audio || <!--USB--> || <!--Ethernet-->{{maybe|RTL8101E RTL8102E}} || <!--Wireless-->{{maybe|AR9285}} || <!--Test Distro-->untested || <!--Opinion-->2010 64bit -
|-
| <!--Name-->Mini 500 series NB505 NB520 NB550-10v || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA-->legacy || <!--Gfx-->Intel GMA 3150 (2D) || <!--Audio-->HD Audio || <!--USB--> || <!--Ethernet-->{{maybe|RTL8101E RTL8102E}} || <!--Wireless-->{{no|Realtek 8176 RTL 8188CE}} || <!--Test Distro-->untested || <!--Opinion-->2011 64bit -
|-
| [http://www.notebookcheck.net/Review-Toshiba-NB550D-AMD-Fusion-Netbook.46551.0.html Mini NB550D 10G] 108 (c30) 109 (c50) || C-50 + M1 || {{N/A}} || SATA || AMD 6250 (VESA only) || HD Audio || USB || {{maybe|rtl8169 Realtek 8111e}} || {{maybe|Atheros 9k}} || untested || 2011 64bit Realtek SD card reader
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Misc Netbooks====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="5%" |Wireless
! width="5%" |Test Distro
! width="30%" |Comments
|-
| Cammy's A1600 || GME945 || {{N/A}} || {{maybe}} || {{yes|Intel GMA950 (2D)}} || {{yes|HD Audio playback}} || {{yes}} || {{no|JMC 250/260}} || Wireless || 2010 Icaros 1.2.4, || 2009 32bit -
|-
| <!--Name-->Fujitsu Siemens Amilo Mini Ui 3520 || <!--Chipset-->Intel 945 || <!--ACPI--> || <!--SATA-->{{yes}} || <!--Gfx-->{{yes|Intel GMA (2D)}} || <!--Audio-->ALC269 HD Audio || <!--USB-->{{yes}} || <!--Ethernet-->{{yes|rtl8169}} || <!--Wireless-->{{yes|AR5001}} || <!--Test Distro-->untested || <!--Comments-->2009 32bit -
|-
| Guillemot Hercules eCafe EC-900 H60G-IA], Mitac MiStation and Pioneer Computers Dreambook Light U11 IL1 || Intel 945GME || {{N/A}} || {{maybe}} || {{yes|Intel GMA950 (2D)}} || {{Yes|HD Audio (playback only)}} || {{yes|uhci and ehci}} || {{yes|rtl8169}} || {{no|RAlink RT2860}} || untested || 2009 32bit -
|-
| <!--Name-->Hannspree Hannsnote SN10E2 24 48 || <!--Chipset-->N450 + NM10 || <!--IDE-->{{N/A}} || <!--SATA-->IDE legacy mode || <!--Gfx-->Pineview Intel (2D) || <!--Audio-->ALC HD Audio || <!--USB-->USB2.0 || <!--Ethernet-->Atheros l1c || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro-->untested || <!--Opinion-->2009 32bit -
|-
| MSI Wind U90/U100 || GME945 || {{N/A}} || {{maybe}} || {{yes|Intel GMA 950 (2D)}} || {{partial|HD Audio ALC888s (playback only?)}} || {{yes|uhci 1.1 and ehci 2.0}} || {{yes|rtl8169}} || {{no|RaLink RT2860 RT2700E or rtl8187se (u100x)}} || 2011 Icaros 1.3, || 2009 32bit -
|-
| Advent 4211 || 945GSE || {{N/A}} || {{maybe|IDE legacy mode}} || Intel GMA950 (2D) || ALC HD Audio || USB || rtl8169 || {{no|Intel 3945 ABG}} || untested || 2009 32bit - MSI U100 clone
|-
| <!--Name-->Hannspree Hannsnote SN10E1 || <!--Chipset-->N270 + GMA945 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|IDE legacy mode}} || <!--Gfx-->{{yes|Intel GMA 950 (2D)}} || <!--Audio-->ALC HD Audio || <!--USB-->USB2.0 || <!--Ethernet-->{{yes|Realtek RTL8101E RTL8102E RTL8169}} || <!--Wireless-->{{no|RaLink RT2860}} || <!--Test Distro-->untested || <!--Comments-->2009 32bit MSI U100 clone
|-
| <!--Name--> Vaio VGN-P11Z
| <!--Chipset-->
| <!--IDE--> {{dunno}}
| <!--SATA--> {{N/A}}
| <!--Gfx--> {{Partial|Intel (VESA only)}}
| <!--Audio--> {{no|HD Audio}}
| <!--USB--> {{yes|USB 2.0}}
| <!--Ethernet--> {{no|Marvell}}
| <!--Wireless--> {{unk|Atheros AR928X}}
| <!--Test Distro-->2012 Icaros 2.0.3
| <!--Comments-->2008 32bit Rarely boots!
|-
| <!--Name-->Sony VPC-W11S1E
| <!--Chipset-->N280 with 945GSE
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Yes| }}
| <!--Gfx-->{{yes|Intel GMA950 - hdmi}}
| <!--Audio-->HD Audio with realtek codec
| <!--USB-->3 USB2
| <!--Ethernet-->{{No|Atheros AR8132}}
| <!--Wireless-->{{unk|Atheros AR9285}}
| <!--Test Distro-->untested
| <!--Comments-->2009 32bit - 10.1" 1366 x 768 glossy - 3hr battery life -
|-
| <!--Name-->Archos 10 Netbook || <!--Chipset-->Atom with ICH7 NM10 945GSE || <!--IDE-->{{No }} || <!--SATA--> || <!--Gfx-->GMA 950 || <!--Audio-->HD Audio with ALC662 codec || <!--USB--> || <!--Ethernet-->Realtek 8139 || <!--Wireless--> || <!--Test Distro-->untested || <!--Comments-->2008 32bit -
|-
| <!--Name-->MSI Wind U135 DX MS-N014 || <!--Chipset-->Intel N455 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{Yes|2D only accelerated}} || <!--Audio-->{{No|ALC662 rev 1}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{Maybe|RTL}} || <!--Wireless-->{{No|Atheros AR 9K}} || <!--Test Distro-->2015 Icaros 2.1, || <!--Comments-->2009 32bit - needs noacpi notls added to grub boot line to start up
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
===Desktop Systems===
[[#top|...to the top]]
{| class="wikitable sortable" width="100%"
| <!--OK-->{{Yes|'''Works well'''}} || <!--May work-->{{Maybe|'''Works a little'''}} || <!--Not working-->{{No|'''Does not work'''}} || <!--Not applicable-->{{N/A|'''N/A not applicable'''}}
|-
|}
====Acer====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->[https://www.acer.com/ac/en/ID/content/support-product/486;-; Veriton X270 VTX270] Intel Core 2 Duo ED7400C or Pentium dual-core UD7600C with 630i
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->{{Maybe|Vesa 2d Nvidia 7100 VGA and HDMI connections}}
| <!--Audio-->{{Maybe| with realtek codec}}
| <!--USB-->{{Maybe|4 rear and 5 front}}
| <!--Ethernet-->{{Maybe| nForce}}
| <!--Test Distro-->Icaros 2.3 dvd
| <!--Comments-->2009 64bit capable but would not fully boot, DHCP address timeout too short and failed often. Put in a third party NIC, worked - 1 PCI Express x16 slot and a free PCI x1 slot - internal thin long psu with 12pin -
|-
| <!--Name--> Imedia S1710 with Intel Dual Core E5200
| <!--IDE--> {{Yes|SATA/AHCI}}
| <!--SATA--> {{Maybe|Native IDE}}
| <!--Gfx--> {{Yes|Nvidia nForce 7100}}
| <!--Audio--> {{Yes|Nvidia MCP73}}
| <!--USB--> {{Yes|USB 2.0}}
| <!--Ethernet--> {{No|NVIDIA MCP73 Ethernet}}
| <!--Test Distro--> Nightly Build 14-09-2023, AROS One 2.3
| <!--Comments--> 2009 64-bit - Boot over USB not working on front - 2 DDR2 dual channel max 8GB - DEL for entering Bios - F12 for boot menu - Bus weird, could be reason for Ethernet issue
|-
| <!--Name-->Acer Revo AR1600, R1600 AR3600, R3600, Packard Bell IMAX Mini N3600, ACER Veriton N260G N270G slim nettop subcompact
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe|Native IDE mode, '''when it works''' boots}}
| <!--Gfx-->{{Maybe|Nvidia ION GeForce 9300M - nouveau 3d - '''when it boots''' 400 fps in shell'ed gearbox, 278 in tunnel, 42 in teapot}}
| <!--Audio-->{{Maybe|HD Audio with alc662 codec but nothing from HDMI audio}}
| <!--USB-->{{Maybe|Nvidia USB boot usb2 stick issues and slower with usb3 drives}}
| <!--Ethernet-->{{No|MCP79 nForce}}
| <!--Test Distro-->ArosOne 32bit very often boot stuck around ehciInit, 64bit ...
| <!--Comments-->2009 64bit does not support AVX or SSE 4.1 Intel Atom 230 N280 - 20cm/8" high 1 ltr noisy fan - DEL setup F12 boot options - 2 ddr2 sodimm slots max 4GB - 19v special barrel size 5.5mm/1.7mm psu - 2 ddr2 sodimm slots max 4GB - atheros 5k AR5BXB63 wifi - 3 wire CMOS coin battery -
|-
| <!--Name-->Revo AR3610 R3610 3610 Atom 330 nettop subcompact dual core
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe|Native IDE mode, '''when it works''' boots}}
| <!--Gfx-->{{Maybe|Nvidia ION GeForce 9400M LE MCP79MX 0x10de 0x087d - nouveau 3d - '''when it boots''' 400 fps in shell'ed gearbox, 278 in tunnel, 42 in teapot}}
| <!--Audio-->{{Yes|HD Audio with Realtek alc662 rev1 alc662-hd later ALC885 codec but nothing from HDMI audio}}
| <!--USB-->{{Maybe|Nvidia USB with 1% chance slow boot with usb2 sticks, more issues with usb3 drives}}
| <!--Ethernet-->{{No|RTL8211CL MCP79 nForce 0x10de 0x0ab0}}
| <!--Test Distro-->AROS One 32bit 1.5, 1.6 and 2.4 usb around ehciInit or Kernel SATA, etc try ATA=off, and 64bit 1.2 USB boot often stuck at device 0x00000000b05228c8 interrrupt by using noacpi noiopica
| <!--Comments-->2010 64bit does not support AVX or SSE 4.1 20cm/8" high 1 ltr noisy fan - non usb hub keyboard - DEL bios setup, F12 BBS POPUP/drive boot - 2 ddr2 sodimm slots max 4GB - 19v barrel psu with smaller inner pin size 5.5mm/1.7mm - replace wifi RT3090 ver c (0x1814 0x3090) with atheros 5k - 3 wire CMOS coin battery -
|-
| <!--Name-->Revo N281G
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe| }}
| <!--Gfx-->{{maybe|GMA 2d for GMA 3100}}
| <!--Audio-->HD audio codec
| <!--USB-->USB2
| <!--Ethernet-->Realtek
| <!--Test Distro-->
| <!--Comments-->2011 64bit does not support AVX and SSE 4.1 Atom D425 - 19v 65w barrel psu thinner inner pin - 2 DDR3L single channel max 4GB - replace wifi RT3090 ver d with atheros 5k mini pci-e - 1lr or 1.5 ltr dvdrw case 209.89 mm, (D) 209.89 mm, (H) 35.35 mm - del enter bios - 3 wire CMOS coin battery -
|-
| <!--Name-->REVO AR3700 R3700 3700 - ACER Veriton N282G
*one long beep with two short - bios damaged
*looping one long two short - video card fault
*two short beeps - CMOS damaged
*got one long and one short beep - board error?
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Yes|IDE ready in Bios
* Known issue, boot into bios, set bios to UEFI and reboot, set bios back to defaults and reboot, blank display, repair with reflash of 8 pin Winbond W25Q socketed bios chip with ch341a using P01.B0L or P01.A4 renamed amiboot.rom}}
| <!--Gfx-->{{Yes|Nvidia ION2 GT218 9400M class 0x10de 0x0a64 with vga fine but hdmi fussy over cable and display port used - 32bit nouveau 2d & 3d gearbox 404 tunnel 292 teapot 48 - 64bit not detected}}
| <!--Audio-->{{Yes|HDA Intel with Realtek ALC662 rev1 codec 0x10ec 0x0662, head phones only but nothing from NVidia HDMI 0x10de 0x000b}}
| <!--USB-->{{Yes|Intel® NM10 Express (NM10 is basically an ICH7 with a die shrink and IDE removed) USB boots usb, installs usb, accesses ok}}
| <!--Ethernet-->{{Yes|rtl8169 Realtek rtl8111g}}
| <!--Test Distro-->AROS one 32bit USB 1.5 and 1.6 and ArosOne 64bit usb 1.2
| <!--Comments-->2011 Atom D525 64bit does not support AVX or SSE 4.1 - 20cm/8" high 1 ltr noisy fan - early 2 ddr2 sodimm slots but later 2 ddr3 sodimm slots 1Rx8 max 4GB - 19v barrel psu thinner pin - replace wifi RT3090 ver d with atheros 5k mini pci-e - cmos 3pin cr2032CL plastic wrapped - del bios f12 boot choice -
|-
| <!--Name-->Revo 70 (RL70) with or without dvdrw
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->6320 or 6310
| <!--Audio-->HD audio ALC662-VCO-GR codec
| <!--USB-->USB2, 1.1 Hudson D1
| <!--Ethernet-->Realtek 8111E
| <!--Test Distro-->
| <!--Comments-->2012 64bit does not support AVX or SSE 4.1 AMD E450 1.65GHz - 19v 65w barrel psu thinner inner pin - 2 DDR3L single channel max 4GB - replace wifi RT3090 ver d with atheros 5k mini pci-e - 1lr or 1.5 ltr dvdrw case 209.89 mm, (D) 209.89 mm, (H) 35.35 mm - del enter bios -
|-
|}
====Asus====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->EEEbox B202
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Intel GMA950
| <!--Audio-->Intel Azalia HDaudio with Realtek ALC662 or ALC888-GR CODEC
| <!--USB-->
| <!--Ethernet-->Realtek 8111 or JM250
| <!--Test Distro-->Icaros
| <!--Comments-->internal 3 types of wifi chipset not supported
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
|}
====Dell====
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name--> Precision 340
| <!--IDE--> {{yes}}
| <!--SATA--> {{n/a}}
| <!--Gfx--> {{n/a}}
| <!--Audio--> {{yes|Intel AC97}}
| <!--USB--> {{yes|USB 1.1 (UHCI)}}
| <!--Ethernet--> {{yes|3Com}}
| <!--Test Distro--> Nightly Build 2014 09-27
| <!--Comments-->
|-
| <!--Name-->Dimension 2400
| <!--IDE-->{{Yes}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{Yes|Intel 82845GL Brookdale G/GE (VESA 640x480 by 16)}}
| <!--Audio-->{{Unk|AC97 with ADI codec}}
| <!--USB-->{{Yes|UHCI EHCI}}
| <!--Ethernet-->{{Maybe|Broadcom 440x 4401}}
| <!--Test Distro-->[http://eab.abime.net/showthread.php?p=832495 Icaros 1.4]
| <!--Comments-->Graphics chipset is capable of higher resolution.
|-
| <!--Name-->Dimension 4600
| <!--IDE-->{{yes}}
| <!--SATA-->{{dunno}}
| <!--Gfx-->{{partial|Intel Extreme (VESA only)}}
| <!--Audio-->{{yes|Intel AC97 (use rear black port)}}
| <!--USB-->{{Yes|UHCI/EHCI}}
| <!--Ethernet-->{{yes|Intel PRO/100}}
| <!--Test Distro-->Icaros 1.5.2
| <!--Comments-->
|-
| <!--Name--> Optiplex 170L
| <!--IDE--> {{yes|IDE}}
| <!--SATA--> {{partial|IDE mode}}
| <!--Gfx--> {{partial|Intel Extreme (VESA only)}}
| <!--Audio--> {{no|Intel AC97}}
| <!--USB--> {{yes|USB 2.0}}
| <!--Ethernet--> {{yes|Intel PRO/100}}
| <!--Test Distro--> {{dunno}}
| <!--Comments-->
|-
| <!--Name--> Optiplex GX260
| <!--IDE--> {{yes|IDE}}
| <!--SATA--> {{N/A}}
| <!--Gfx--> {{partial|Intel Extreme (VESA only)}}
| <!--Audio--> {{yes|Intel AC97}}
| <!--USB--> {{yes|USB 2.0}}
| <!--Ethernet--> {{no|Intel PRO/1000}}
| <!--Test Distro--> Nightly Build 2014 09-27
| <!--Comments-->
|-
| Optiplex GX270
| {{yes|Working}}
| {{partial|IDE mode}}
| {{partial|Intel Extreme (VESA only)}}
| {{yes|Intel AC97}}
| {{yes|USB 2.0}}
| {{no|Intel PRO/1000}}
| Icaros 1.5.2
| <!--Comments-->
|-
| Optiplex GX280
| {{yes|Working}}
| {{partial|IDE mode}}
| {{maybe|Intel GMA (only VESA tested)}}
| {{yes|Intel AC97}}
| {{yes|USB 2.0}}
| {{no|Broadcom}}
| Nightly Build 2014 09-27
| <!--Comments-->
|-
| <!--Name--> Optiplex GX520
| <!--IDE--> {{yes|IDE}}
| <!--SATA--> {{partial|IDE mode}}
| <!--Gfx--> {{yes|Intel GMA}}
| <!--Audio--> {{partial|Intel AC97 (no line-out)}}
| <!--USB--> {{yes|USB 2.0}}
| <!--Ethernet--> {{no|Broadcom}}
| <!--Test Distro--> {{dunno}}
| <!--Comments-->
|-
| <!--Name--> Optiplex 745
| <!--IDE--> {{N/A}}
| <!--SATA--> {{partial|IDE mode}}
| <!--Gfx--> {{partial|Intel GMA (VESA only)}}
| <!--Audio--> {{partial|HD Audio (no volume control)}}
| <!--USB--> {{partial|Only keyboard mouse (legacy mode)}}
| <!--Ethernet--> {{no|Broadcom}}
| <!--Test Distro--> {{dunno}}
| <!--Comments-->
|-
| <!--Name--> Optiplex 755
| <!--IDE--> {{N/A}}
| <!--SATA--> {{partial|IDE mode}}
| <!--Gfx--> {{partial|Intel GMA (VESA only)}}
| <!--Audio--> {{no|HD Audio}}
| <!--USB--> {{yes|USB 2.0}}
| <!--Ethernet--> {{no|Intel Gigabit}}
| <!--Test Distro--> Icaros 1.5.1
| <!--Comments--> Around 25 second delay in booting from USB
|-
| <!--Name--> Optiplex 990
| <!--IDE--> {{N/A}}
| <!--SATA--> {{partial|non-RAID mode}}
| <!--Gfx--> {{partial|Intel HD (VESA only)}}
| <!--Audio-->{{no|HD Audio}}
| <!--USB--> {{yes|USB 2.0}}
| <!--Ethernet--> {{no|Intel Gigabit}}
| <!--Test Distro--> Nightly Build 2014 09-27
| <!--Comments-->
|-
| <!--Name-->Optiplex 360
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{maybe|ordinary boot gives VGA mode only - VESA}}
| <!--Audio-->{{no|HD Audio (Analog Devices ID 194a)}}
| <!--USB-->
| <!--Ethernet-->{{no|Broadcom}}
| <!--Test Distro-->Aspire Xenon
| <!--Comments-->poor support
|-
| <!--Name-->Dell Wyse Vx0 (V90 V30), Vx0L (V10L V90L), Vx0LE (V30LE V90LE) from VIA C7 800GHz to Eden 1.2GHz
| <!--IDE-->{{Maybe| }}
| <!--SATA-->{{N/A| }}
| <!--Gfx-->{{Maybe|Vesa 2d for S3 UniChrome Pro}}
| <!--Audio-->{{No|AC97 VIA VT8233A with ?? codec}}
| <!--USB-->{{yes|2 back and 1 front USB2}}
| <!--Ethernet-->{{Maybe|early models work but later VT6102-3 do not}}
| <!--Test Distro-->AROS One 2.2
| <!--Comments-->2006 to 2009 32bit - 12V 4A Coax 5.5mm/2.1mm - 1 sodimm DDR 333MHz SO-DIMM later DDR2 - early V90s do seem to have a reliability problem -
|-
| <!--Name-->[https://www.poppedinmyhead.com/2021/01/wyse-cx0-thin-client-notes-experiences.html Dell Wyse Cx0] C00LE, C10LE, C30LE, C50LE, C90LE, C90LE7, C90LEW VIA C7 Eden 1GHz
| <!--IDE-->{{Maybe| }}
| <!--SATA-->{{N/A| }}
| <!--Gfx-->{{Maybe|Vesa 2d VX855 VX875 Chrome 9}}
| <!--Audio-->{{Maybe|some VIA VT8237A VT8251 HDA with ?? codec work}}
| <!--USB-->{{yes|4 outside 2 inside USB2}}
| <!--Ethernet-->{{No|VT6120 VT6121 VT6122 Gigabit}}
| <!--Test Distro-->Icaros 2.3
| <!--Comments-->2010 to 2013 32bit - [https://ae.amigalife.org/index.php?topic=815.0 boots and works] - 12V 2.5A Coax 5.5mm/2.1mm - 1 sodimm ddr2 -
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->Dell RxxL Rx0L Wyse thin client
*R00L Cloud PC of Wyse WSM
*R10L Wyse Thin OS
*R50L Suse Linux Enterprise
*R90L Win XP Embedded
*R90LW Win Embedded Standard 2009
*R90L7 Win Embedded Standard 7
| <!--IDE-->128Mb IDE or 1GB
| <!--SATA-->{{Maybe|SATA Hyperdisk}}
| <!--Gfx-->AMD 690E RS690M Radeon Xpress 1200 1250 1270
| <!--Audio-->
| <!--USB-->4 usb2
| <!--Ethernet-->Realtek
| <!--Test Distro-->
| <!--Comments-->2009 64bit AMD Sempron™ 210U SMG210UOAX3DVE 1.5GHz SB600, up to 4GB single slot 240-pin DDR2 DIMM, 19v barrel psu, DEL key bios - Late 2012 2 data sockets added but only CN18 be used with two white sockets (CN13 & CN15) can used to power the SATA device "4-pin Micro JST 1.25mm
|-
| <!--Name-->Optiplex 390 sff small form factor - mt mini tower desktop - dt full desktop
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->{{maybe|1 pci-e}}
| <!--Audio-->{{maybe|HD Audio}}
| <!--USB-->
| <!--Ethernet-->{{maybe|realtek}}
| <!--Test Distro-->aros one 1.6 usb
| <!--Comments-->2011 64bit dual i3 2xxx - kettle iec plug psu cable - add nvidia gf218 gfx - error code 3 mobo or cpu -
|-
| <!--Name-->Optiplex 3010 sff small form factor
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->{{maybe|1 pci-e}}
| <!--Audio-->{{maybe|HD Audio}}
| <!--USB-->{{maybe| }}
| <!--Ethernet-->{{no|Broadcom 57XX}}
| <!--Test Distro-->
| <!--Comments-->2012 64bit dual i3 3xxx - kettle iec plug psu cable -
|-
| <!--Name-->Optiplex 7010 sff small form factor
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->{{maybe|1 pci-e}}
| <!--Audio-->{{maybe|HD Audio}}
| <!--USB-->
| <!--Ethernet-->{{no|Broadcom or Intel 825xx}}
| <!--Test Distro-->
| <!--Comments-->2012 64bit dual i3 3xxx Q77 - kettle iec plug psu cable - add pci-e ethernet and nvidia gf218 gfx -
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->Dell Wyse 5010 thin client ThinOS D class (D10D D00D D00DX, Dx0D), PCoIP (D10DP) or D90D7, 5040
*username: Administrator, admin, [blank]
*password: Fireport, DellCCCvdi, rappot, Wyse#123, Administrator, administrator, r@p8p0r+
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Yes|IDE mode may need 30cm ext cable as small area for half-slim sata ssd - decased new ssd??}}
| <!--Gfx-->{{Maybe|Vesa 2d 1400x1050 HD6250E IGP by using DVI to hdmi cable and 1 display port, no hdmi port}}
| <!--Audio-->{{Maybe|HD 6.34 audio chipset detected but codec alc269 working from one case speaker - none if v6.29 used}}
| <!--USB-->{{Yes|most 5010 have 4 USB 2.0 but D90Q7 has 2 USB3 instead}}
| <!--Ethernet-->{{Yes|rtl8169 Realtek 8168 8169 - rev 1.?? 8111? - rev 1.91 8111E}}
| <!--Test Distro-->Icaros 2.3
| <!--Comments-->2011 64bit no SSE4.1 or AVX slow AMD G-T44R 1.2Ghz later G-T48E 1.4Ghz Dual Bobcat Brazos BGA413 - Del for BIOS - p key to select boot with noacpi - single DDR3 sodimm slot max 4Gb, (8Gb hynix 2rx8 ddr3l)? (remove small board to upgrade) - passive no fan - 15cm/6" small 1ltr case and lack of expansion options - PA16 19v barrel psu Coax 5.5mm/2.5mm
|-
| <!--Name-->Dell Wyse 7010 DTS thin client (Z class Zx0D)
*2011 Zx0 Z90D7 2GF/2GR
*2013 Z10D
*2014 Z50D 2GF/2GR
*2012 Cisco VXC 6000 CVXC-6215-K9 white
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Yes|Bios set Sata mode to IDE mode and grub boot add 'noacpi' for half slim sata2 ssd or/with 50cm sata ext cable}}
| <!--Gfx-->{{Maybe|VESA 2d HD6310 HD6320 Terascale 2 through DVI and sometimes DP 1.1a - no hdmi port}}
| <!--Audio-->{{Maybe|HD Audio 6.34 detected but ALC269VB codec works on the one case speaker only}}
| <!--USB-->{{Yes|2.0 works but NEC 720200 3.0 not working}}
| <!--Ethernet-->{{Yes|rtl8169 Realtek 8169 8111e 8111F}}
| <!--Test Distro-->Icaros 2.3 and Aros One 32bit 1.5, 1.9 and 2.3 usb and 64bit 1.2
| <!--Comments-->2011 64bit does not support AVX or SSE 4.1 slow AMD G-t52R 1.5GHz later G-T56N 1.65 GHz Dual with A50M FCH - 20cm/8" high 1.5ltr larger fanless black plastic case with metal ventilated box inside - 2 desktop DDR3L DIMM slots max 16GB - PA-16 19v external psu Coax 5.5mm/2.5mm - 2 40cm SMA female WiFi Antenna to IPEX IPX u.fl Ufl Cable pigtail needed - does not like uefi boot devices -
|-
| <!--Name-->Wyse 7020 Thin Client
* 2013 Quad-core AMD GX-420CA 2.0 GHz (25W) -
* 2018 Zx0Q Quad-core AMD GX-415GA 1.5 GHz (15W) with Quad display 3dp and 1dvi
| <!--IDE-->{{N/A}}
| <!--SATA-->1 sata port
| <!--Gfx-->{{Maybe|Vesa 2d only for AMD Radeon HD8400E radeonsi (dual display) or AMD Radeon HD 8330E IGP with AMD Radeon E6240 Seymour E6460 (quad display), no hdmi ports}}
| <!--Audio-->
| <!--USB-->4 x USB2.0 works but 2 USB3.0
| <!--Ethernet-->rtl8169 Realtek 8169 8111
| <!--Test Distro-->
| <!--Comments-->2013 64bit does support AVX or SSE 4.1 quad eKabini Jaguar cores - two SODIMM sockets layered in centre of mobo DDR3L RAM - Coax 5.5mm/2.5mm ac psu 9mm plug is too short but 14mm length is fine - 15cm/6" high smaller 1ltr case and lack of expansion options -
|-
| <!--Name-->Dell Wyse Dx0Q (5020) D90Q8 NJXG4 AMD G-Series
| <!--IDE-->{{N/A}}
| <!--SATA-->1 sata port
| <!--Gfx-->HD 8330E
| <!--Audio--> with Realtek codec
| <!--USB-->4 x USB2.0 works but 2 USB3.0
| <!--Ethernet-->rtl8169 Realtek 8169 8111
| <!--Test Distro-->
| <!--Comments-->2014 64bit does support AVX or SSE 4.1 Quad-core AMD GX-415GA 1.5 GHz - 2 layered near edge of mobo 204-pin DDR3L SODIMM (bottom one tricky to insert) - 19v Coax 5.5mm/2.5mm - passive no fan - 15cm/6" high smaller 1ltr case and lack of expansion options
|-
| <!--Name-->Dell Wyse 5060 N07D thin client
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Yes|IDE bios mode for sata2 port}}
| <!--Gfx-->{{maybe|Vesa 2d - AMD R5E GCN2 IGP Sea Islands thru dp1 with an hdmi adapter no output thru dp2 - no hdmi dvi ports}}
| <!--Audio-->{{maybe|HD Audio with Realtek ALC231 codec head phones only}}
| <!--USB-->{{Maybe|4 x USB2.0 works but 2 USB3.0}}
| <!--Ethernet-->{{yes|rtl8169 realtek 8169 8111h}}
| <!--Test Distro-->AROS One 1.6 usb
| <!--Comments-->2017 64bit does support AVX or SSE 4.1 quad GX-424CC 19.5v external psu - CN-0Y62H1 mobo with 2 layered ddr3l 16Gb max sodimm slots at edge of mobo, bottom 0 one blocking - passive no fan so quiet - 15cm/6" high smaller 1ltr case and lack of expansion options -
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
|}
====Fujitsu Siemens====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="15%" |Test Distro
! width="20%" |Comments
|-
| Scenic [http://uk.ts.fujitsu.com/rl/servicesupport/techsupport/ProfessionalPC/Scenic/ScenicE/ScenicE.htm E600] (compact desktop)
|
|
| {{partial|VESA only}}
| {{yes|AC97}}
|
| {{no|Intel PRO/1000}}
| {{dunno}}
| Nice small, silent PC with good AROS support.
|-
| Scenic T i845
| {{dunno}}
| {{n/a}}
| {{n/a}}
| {{dunno|Intel AC97}}
| {{dunno|UHCI}}
| {{dunno|Intel PRO/100}}
| Icaros 1.5.2
| AROS does not boot
|-
| <!--Name-->Futro S200 S210 S220 and later S300
| <!--IDE-->{{yes| compactflash CF card max ??}}
| <!--SATA-->
| <!--Gfx-->{{maybe|VESA Silicon Integrated Systems [SiS] 315PRO PCI/AGP }}
| <!--Audio-->{{unk|AC97 via }}
| <!--USB-->{{unk|via uhci and ehci}}
| <!--Ethernet-->{{unk|via VT6102 [Rhine-II] (rev 74) }}
| <!--Test Distro-->
| <!--Comments-->2008 32bit - TR5670 Rev 1.4 mother with Transmeta TM5800 cpu - pci socket - single SODIMM socket for DDR memory PC2700S max 512MB -
|-
| <!--Name-->Futro S400
| <!--IDE-->{{yes| but swap with compactflash CF card already with AROS installed}}
| <!--SATA-->
| <!--Gfx-->{{maybe|VESA Silicon Integrated Systems [SiS] SiS741CX }}
| <!--Audio-->{{unk|AC97 SiS7018}}
| <!--USB-->{{unk|sis uhci and ehci}}
| <!--Ethernet-->{{unk|rtl8169 }}
| <!--Test Distro-->
| <!--Comments-->2008 32bit - AMD Geode NX1500 1GHz gets hot - SiS 963L / SiS 741CX chipset - 12V 4.2A 4-pin (DP-003-R) psu - single SODIMM socket for DDR PC2700S max 1G - large case 246 x 48 x 177cms torx screws - pci socket -
|-
| <!--Name-->FUJITSU Futro S700 and S900 Thin Client (based on mini-ITX motherboard D3003-A12, D3003-C1 lesser variant of [https://www.parkytowers.me.uk/thin/Futro/s900/TechNotes_V3.1_Mini-ITX_D3003-S.pdf D3003-S])
*G-T56N 1.65GHz
*G-T40N 1.00GHz
*G-T44R 1.20GHz
| <!--IDE-->{{N/A}}
| <!--SATA-->1 sata data socket but mSata 18+8pins 1GB-16GB
| <!--Gfx-->Radeon HD 6320, HD 6250, HD 6290 dvi or displayport (DP runs higher)
| <!--Audio-->HDAudio
| <!--USB-->{{yes|two USB2 front sockets and four on the rear}}
| <!--Ethernet-->{{Maybe|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2011 64bit AMD slow atom-like and fanless - 20V 2A psu 5.5mm/2.1mm coax (S900) - 2 DDR3L SODIMM sockets max 8GB tricky to run 1333 MHz on the Futro S900 - proprietary X2 PCI-e - 1 PCI socket but need a right-angle adaptor -
|-
| <!--Name-->esprimo p420 e85 desktop case
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe|IDE mode}}
| <!--Gfx-->Intel 4600 or old Geforce in pci-e slot
| <!--Audio-->HDAudio realtek alc671 codec
| <!--USB-->USB3
| <!--Ethernet-->rtl8169 8111
| <!--Test Distro-->
| <!--Comments-->2013 64bit - 2 ddr3 dimm slots - 16 pin special psu -
|-
| <!--Name-->esprimo E420 e85+ SFF case
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe|IDE mode}}
| <!--Gfx-->Intel 4600 or low profile pci-e card
| <!--Audio-->HDAudio realtek alc671 codec
| <!--USB-->USB3
| <!--Ethernet-->rtl8169 8111G
| <!--Test Distro-->
| <!--Comments-->2013 64bit - 2 ddr3 dimm slots - 16ish pin special psu - hd under front metal bracket, take front cover off first with 3 tabs - 3 slim pci-e slots -
|-
| <!--Name-->Futro S520 AMD dual 1.0Ghz codenamed "Steppe Eagle"
* GX-210HA @ 1.0GHz
* GX-212ZC @ 1.2GHz
| <!--IDE-->{{N/A}}
| <!--SATA-->no sata - 4Gb or 16Gb flash memory soldered to the board
| <!--Gfx-->AMD Radeon HD 8210E (GX210HA) or AMD Radeon R1E (GX212ZC)
| <!--Audio-->HDAudio
| <!--USB-->
| <!--Ethernet-->rtl8169 rtl8111e
| <!--Test Distro-->
| <!--Comments-->2016 64bit does support AVX or SSE 4.1 - smaller than ITX 160mm x 160mm Fujitsu D3314-A11 - 19V 3.4A PSU standard 5.5mm/2.1mm coax plug - 1 ddr3 sodimm slot -
|-
| <!--Name-->Fujitsu Futro S720 ThinClient D3313-B13 D3313-F
*2014 64bit AMD GX-217GA 1.65GHz VFY:S0720P8009FR VFY:S0720P8008DE VFY:S0720P4009GB
*2015 64bit AMD GX-222GC 2.20GHz VFY:S0720P702BDE VFY:S0720P702BFR
all begin VFY:S0720P and end two digit country code
| <!--IDE--> {{N/A|}}
| <!--SATA--> {{Yes|up to 2 Sata-cable-connector with space in casing so normal SSD/HDD over Sata was running very well on AHCI and IDE-Mode and 2242 mSata}}
| <!--Gfx--> {{Maybe|use VESA 2D for AMD Radeon HD 8280E IGP ( islands) or later R5E IGP ( islands)}}
| <!--Audio--> {{yes|HDAudio ALC671 codec partially working, external audio speaker}}
| <!--USB--> {{yes|4 rear USB 2.0 but not front 2 USB 3.1}}
| <!--Ethernet-->{{yes|rtl8169 Realtek 8169}}
| <!--Test Distro-->AROS One USB 2.0
| <!--Comments-->2014 64bit supports AVX and SSE 4.1 - 1 ddr3 Sodimm slot max 8Gb - 19V-20V 2A 5.5mm/2.5mm coax - D3313-B13 stripped down Mini-ITX mobo D3313-S1/-S2/-S3 (eKabini) D3313-S4/-S5/-S6 - SATA data socket can be located under the fins of the cpu heatsink is fanless - mPCIe socket for wireless card -
|-
| <!--Name-->Fujitsu FUTRO S920 D3313-E D3313-G
*2016 AMD GX-222GC SOC 2.20GHz Dual
*2017 AMD G-Series GX-415GA (1.50 GHz, Quad Core, 2 MB, AMD Radeon™ HD 8330E)
*2017 AMD G-Series GX-424CC 2.40 GHz Quad
| <!--IDE--> {{N/A}}
| <!--SATA--> {{yes|2242 mSata and 1 Sata-cable-connector with space in casing so normal SSD/HDD over Sata possible}}
| <!--Gfx--> {{yes|use VESA 2D for Radeon R5E GCN2/3 IGP}}
| <!--Audio--> {{yes|HDAudio ALC671 codec partially working}}
| <!--USB--> {{yes|4 rear USB 2.0, front 2 USB 3.1 downgradable to 2.0 in BIOS setting}}
| <!--Ethernet--> {{yes|rtl8169 Realtek 8169}}
| <!--Test Distro--> AROS One USB 2.4
| <!--Comments-->2016 64bit does support AVX or SSE 4.1 - 2 so dimm slot with max of 8 GB - 19v barrel psu 5.5mm 2.5mm - SATA data socket can be located under the fins of the heatsink - mPCIe a e keyed socket for wireless card - propetary X2 connector with official raizer to X1 connector - almost silent background noise, not affecting sound quality in any way
|-
| <!--Name-->Fujitsu Thin Client Futro S5011 S7011
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->{{maybe|Vesa 2D for AMD Vega 3 on 2 dp 1.4}}
| <!--Audio-->{{No|HDAudio with ALC623 codec}}
| <!--USB-->{{maybe|USB3 USB 3.2 Gen 2 front and 3 usb2 rear }}
| <!--Ethernet-->rtl8169 Realtek RTL8111H
| <!--Test Distro-->
| <!--Comments-->2019 64bit - AMD Ryzen Dual Core R1305G or R1505G 1ltr case - 2 ddr4 sodimm slots - TPM 2.0 - 19v 3.42amp round coax or usb-c 20c 3.25a external psu -
|-
| <!--Name-->Fujitsu FUTRO S9011 Thin Client VFY:S9011THU1EIN || <!--IDE-->{{N/A}} || <!--SATA-->NVMe || <!--Gfx-->{{maybe|Vesa 2D for AMD Vega 3 on 2 dp 1.4}} || <!--Audio-->{{No|HDAudio with ALC623 codec}} || <!--USB-->{{maybe|USB3 USB 3.2 Gen 2 front and 3 usb2 rear }} || <!--Ethernet-->rtl8169 Realtek RTL8111H || <!--Test Distro--> || <!--Comments-->2020 64bit Ryzen Embedded R1606G - 2 ddr4 sodimm slots - TPM 2.0 -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
|}
====HP Compaq====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Compaq presario 7360
| <!--IDE-->{{yes|Working}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{Maybe|VESA}}
| <!--Audio-->{{Maybe|AC97 via}}
| <!--USB-->{{Maybe|issues}}
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->Compaq EP Series 6400/10
| <!--IDE--> {{yes|IDE}}
| <!--SATA--> {{N/A}}
| <!--Gfx--> {{N/A}}
| <!--Audio--> {{no|ISA}}
| <!--USB--> {{yes|USB 1.1}}
| <!--Ethernet--> {{N/A}}
| <!--Test Distro--> {{dunno}}
| <!--Comments-->
|-
| <!--Name-->Compaq Evo D510
| {{yes|Working}}
| {{N/A}}
| {{partial|Intel Extreme (VESA only)}}
| {{yes|AC97}}
| {{yes|Working}}
| {{yes|Intel PRO/100}}
| Icaros 1.5
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->Compaq DX2000 MT
| <!--IDE-->{{yes}}
| <!--SATA-->{{maybe}}
| <!--Gfx-->{{maybe|Intel Extreme 2 (VESA only)}}
| <!--Audio-->{{no|detects AC97 but no support for ADI AD1888 codec}}
| <!--USB-->{{yes|OHCI/EHCI }}
| <!--Ethernet-->{{no|Intel 82526EZ e1000}}
| <!--Test Distro--> Icaros 1.51
| <!--Comments-->boots ok but no audio
|-
| <!--Name-->Compaq DX 2200
| <!--IDE-->{{yes}}
| <!--SATA-->{{maybe}}
| <!--Gfx-->{{maybe|RC410 [Radeon Xpress 200] (VESA only)}}
| <!--Audio-->{{dunno|HD Audio}}
| <!--USB-->{{maybe|OHCI/EHCI issues }}
| <!--Ethernet-->{{N/A}}
| <!--Test Distro--> {{dunno}}
| <!--Comments-->issues
|-
| <!--Name--> d230
| <!--IDE--> {{yes|UDMA}}
| <!--SATA--> {{N/A}}
| <!--Gfx--> {{partial|Intel Extreme (VESA only)}}
| <!--Audio--> {{partial|Intel AC97 (speaker and headphones only, no line-out)}}
| <!--USB--> {{yes|USB}}
| <!--Ethernet--> {{Maybe|Broadcom BCM4401}}
| <!--Test Distro--> Icaros 1.4.5
| <!--Comments-->
|-
| <!--Name-->HP Pavilion a220n || <!--IDE-->{{Yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Yes|VESA 1024x768 on nVidia GF4 MX with 64MB shared video ram}} || <!--Audio-->{{Yes|Realtek ALC650 AC'97 comp.}} || <!--USB-->{{Yes|USB 2.0}} || <!--Ethernet-->{{Yes|Realtek 8201BL 10/100 LAN}} || <!--Test Distro-->AROS One 2.5|| <!--Comments-->2004 32bit athlon xp 2600+ Socket 462 / Socket A - 2 dimm ddr pc2700 -
|-
| <!--Name-->t500
| <!--IDE-->{{Yes}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{Yes|FX5200 (2D; 3D with older driver)}}
| <!--Audio-->{{Yes|AC97 ICH4 ALC658D}}
| <!--USB-->{{Yes|UHCI/EHCI}}
| <!--Ethernet-->{{Yes|RTL 8101L 8139}}
| <!--Test Distro-->Nightly Build 2012-09-22
| <!--Comments-->2004
|-
| <!--Name-->DC7700
| <!--IDE-->{{Yes}}
| <!--SATA-->{{Yes}}
| <!--Gfx-->{{Yes|GMA 2D}}
| <!--Audio-->{{Yes| ICH8}}
| <!--USB-->{{Yes}}
| <!--Ethernet-->{{No|82566DM e1000e}}
| <!--Test Distro-->Nightly Build 2013-??-??
| <!--Comments-->2006 Some support at low cost
|-
| <!--Name-->HP dc 7600 CMT
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{Yes|Intel Graphics Media Accelerator 950}}
| <!--Audio-->{{Yes|Realtek ACL 260}}
| <!--USB-->{{Yes|USB 2.0}}
| <!--Ethernet-->{{No|Intel PRO/1000 GT}}
| <!--Test Distro-->
| <!--Comments-->2007
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->HP t5000 thin client series t5500 t5510 t5515 PC538A or PC542A t5700 t5710 Transmeta Crusoe Code Morphing TM 5400 5600 800Mhz
| <!--IDE-->128mb to 512MB
| <!--SATA-->{{N/A}}
| <!--Gfx-->Ati Radeon 7000M
| <!--Audio-->VIA with codec
| <!--USB-->{{No|Issues}}
| <!--Ethernet-->VIA Rhine 2
| <!--Test Distro-->
| <!--Comments-->2006 32bit - ddr max 1GB - F10 setup - all t51xx and some t55xx units will not include a SODIMM slot -
|-
| <!--Name-->HP t5000 thin client series CN700
*HSTNC-002L-TC t5135, t5530
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Vesa 2d 128Mb Via S3 32-bit colour
| <!--Audio-->AC97
| <!--USB-->
| <!--Ethernet-->VIA VT6102 VT6103 [Rhine-II] (rev 78)
| <!--Test Distro-->
| <!--Comments-->2007 32bit t5135 appears identical to the t5530 except the CPU VIA Esther 400 MHz - RAM 64Mb (? max) - 8 x USB2.0 - 12V 3.33A Coax 5.5mm/2.1mm
|-
| <!--Name-->HP t5720, t5725 HSTNC-001L-TC
| <!--IDE-->{{unk| }}
| <!--SATA-->{{N/A}}
| <!--Gfx-->VESA 2d SiS741GX 2048 x 1536 32-bit colour
| <!--Audio-->AC97 SiS SiS7012 AC'97
| <!--USB-->6 x USB2.0
| <!--Ethernet-->VIA VT6102 VT6103 [Rhine-II] (rev 8d)
| <!--Test Distro-->
| <!--Comments-->2007 32bit AMD Geode NX1500 1GHz socketed - RAM 512MB or 1GB, 256MB, 512MB or 1GB - 12V psu - sis DDMA support - custom 1.13 BIOS - pci low profile -
|-
| <!--Name-->t5000 series VX800 HSTNC-004-TC t5145, t5540, t5545, t5630
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Vesa 2d VIA Chrome9
| <!--Audio-->HD Audio VIA
| <!--USB-->
| <!--Ethernet-->{{No|VT6120 VT6121 VT6122 Gigabit (rev 82)}}
| <!--Test Distro-->
| <!--Comments-->2010 32bit - RAM 64Mb (? max) - 8 x USB2.0 - 12V 4.16A Coax: 5.5mm/2.1mm -
|-
| <!--Name-->t5730w HSTNC-003-TC t5730
| <!--IDE-->{{n/a|ATA 44pin DOM Flash}}
| <!--SATA-->
| <!--Gfx-->Vesa 2d ATI Radeon X1250 2048 x 1536 no 3D
| <!--Audio-->HD audio with codec
| <!--USB-->{{Yes|6 x USB2.0}}
| <!--Ethernet-->{{No|Broadcom 5707M tg3 10/100/1000}}
| <!--Test Distro-->
| <!--Comments-->2008 64bit AMD Sempron 2100+ 1GHz - 1 slot of ddr2 sodimm (Max 2GB) - 12V 4.16A Coax 5.5mm/2.1mm - F10 enter bios F12 boot devices -
|-
| <!--Name-->HSTNC-005-TC gt7720, gt7725
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Vesa 2d AMD RS780G HD 3200 - 2560 x 1600 DVI-D & DVI-H
| <!--Audio-->
| <!--USB-->8 x USB2.0
| <!--Ethernet-->{{No|Broadcom BCM5787M}}
| <!--Test Distro-->
| <!--Comments-->2009 64bit AMD Turion Dual Core CPU 2.3GHz - 1 DDR2 200-pin SODIMM - 19V 4.16A Coax 7.4mm/5.0mm (gt7725) -
|-
| <!--Name-->HP t5740 Thin Client HSTNC-006-TC t5740, t5745, st5742
| <!--IDE-->1 port
| <!--SATA-->1 port
| <!--Gfx-->{{Maybe|VESA for Intel CL40 VGA and DisplayPort connectors}}
| <!--Audio-->{{Yes|HD audio with IDT codec}}
| <!--USB-->{{Maybe| }}
| <!--Ethernet-->{{No|Broadcom BCM57780 Gigabit}}
| <!--Test Distro-->Nightly build and Icaros
| <!--Comments-->2009 32bit Atom N280 - F10 on power up to get into the BIOS screens. F12 brings up the boot options - hp 19V one with a coax connector, outer diameter 4.8mm with inner to be 1.7mm to 1.4mm - 2 ddr3 sodimm slots max 3gb due to 32bit - 1 pci-e slot completely non standard -
|-
| <!--Name-->t5000 series HSTNC-012-TC VIA Nano u3500 VX900
*t5550 512MB/1GB Windows CE6 R3
*t5565 1GB/1GB HP ThinPro
*t5570 2GB/1GB WES 2009
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Vesa 2d VIA ChromotionHD 2.0 GPU Chrome9
| <!--Audio-->VIA 9170 VT1708S codec
| <!--USB-->
| <!--Ethernet-->{{No|Broadcom BCM57780 Gigabit}}
| <!--Test Distro-->
| <!--Comments-->32bit - 1 sodimm - 19V 3.42A supply connector standard yellow-tip coax plug 4.8mm/1.8mm "Standard HP Compaq DC Power Plug 4.8mm x 1.5mm / 1.7mm Yellow Tip Connector -
|-
| <!--Name-->HP t510 Via Eden X2 U4200 HSTNC-012-TC shares features with t5570e, t5565z
| <!--IDE-->2G ATA Flash DOM
| <!--SATA-->one
| <!--Gfx-->{{Maybe|Vesa 2d for Chrome9 VIA ChromotionHD 2.0 gfx}}
| <!--Audio-->{{Maybe|VIA VT8237A VT8251 HDA with codec}}
| <!--USB-->{{Maybe|6 USB2 }}
| <!--Ethernet-->{{No|Broadcom Corporation NetLink BCM57780 Gigabit Ethernet PCIe}}
| <!--Test Distro-->
| <!--Comments-->2010 32bit - one slot ddr3 sodimm max 4GB - 19V 3.42A Coax 4.8mm/1.8mm -
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->HP T610 Thin Client and thicker PLUS version AMD G-T56N A55E
| <!--IDE-->{{Maybe|}}
| <!--SATA-->2 sata
| <!--Gfx-->Radeon 6320 1 dp port 1 dvi
| <!--Audio-->HDAudio with ALC codec
| <!--USB-->two USB2 on the front, two USB2 and two USB 3 ports on the rear
| <!--Ethernet-->{{No|Broadcom BCM57780}}
| <!--Test Distro-->
| <!--Comments-->2010 64bit does not support AVX SSE 4.1 - 2 204-pin DDR3 1600MHz SODIMMs PC3-12800 under motherboard via removable panel - 19.5V 3A Coax male 7.4mm/5.0mm + centre pin -
|-
| <!--Name-->HP T420 Thin Client
*AMD Embedded G-Series GX-209JA SOC (1 GHz, 2 cores)
| <!--IDE-->{{N/A}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->Radeon 8180 dvi vga
| <!--Audio-->HDAudio with ALC codec
| <!--USB-->2 front 2 rear USB2
| <!--Ethernet-->{{Yes|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2015 64bit supports AVX SSE 4.1 - soldered in place 2GB DDR3 - smaller than usual 19.5V 2.31A Coax male 4.5mm/3.0mm + centre pin - usb stick internal for storage - E15 BBR -
|-
| <!--Name-->HP t520 TPC-W016
*AMD GX-212JC 1.2Ghz (2 core)
| <!--IDE-->{{N/A}}
| <!--SATA-->1 m.2 mounting holes for 2242 and 2260 SSDs SATA (not NVME)
| <!--Gfx-->Radeon R2E GCN2 IGP Sea Islands
| <!--Audio-->HDAudio with ALC codec
| <!--USB-->2 USB3 front, 4 USB2 back
| <!--Ethernet-->{{Yes|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2014 2017 64 bit supports AVX SSE 4.1 - 1 204-pin DDR3 SODIMM - 19.5V 3.33A 7.4mm Coax with central pin
|-
| <!--Name-->HP t620 TPC-I004-TC
*AMD G-Series GX-217GA 2 core APU 1.65GHz (65W)
*AMD GX-415GA 4 core (65W)
and t620 PLUS (PRO wider version) TPC-I020-TC
*AMD GX-420CA SOC 4 core (Plus 85W)
| <!--IDE-->{{N/A}}
| <!--SATA-->{{yes|single M.2 2280 socket sata3, mSATA socket removed end of 2014}}
| <!--Gfx-->{{maybe|Vesa 2d for Radeon HD 8280E graphics 8330E Islands GCN2 IGP - 2 dp ports no dvi}}
| <!--Audio-->{{yes|HDAudio with Realtek ALC221 codec 0x10EC 0x0221}}
| <!--USB-->{{unk|4 front, 2 back, 1 inside limited space}}
| <!--Ethernet-->{{Yes|Realtek 8169}}
| <!--Test Distro-->Aros One 32bit with noacpi added to grub boot line
| <!--Comments-->2014 64bit supports AVX SSE 4.1 - 2 DDR3L SODIMMs side by side - mSATA ssd and M.2 SSD are M1.6 screws, M2.0 screws used on most SSDs - 19.5V 3.33A Coax male 7.4mm 5mm with centre pin - changed the network card to a Atheros 5000 compatible -
|-
| <!--Name-->HP T530
*AMD GX-215JJ (2 core) 1.5GHz
| <!--IDE-->{{N/A}}
| <!--SATA-->1 m.2 sata ssd up to 2280
| <!--Gfx-->Radeon R2E
| <!--Audio-->HDAudio with ALC codec
| <!--USB-->1 USB3.1, 1 usb-c front, 4 USB2 back
| <!--Ethernet-->{{Yes|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2015 64 bit does support AVX SSE 4.1 - 1 204-pin DDR4 SODIMM - 19.5V 2.31A Coax male 4.5mm/3.0mm with centre pin -
|-
| <!--Name-->HP T730 Wider "Thin" Client TPC-I018-TC Pixar RX-427BB (2c4t) - no display and fans blowing full speed caused by '''disabling internal gpu in bios''' flash L43_0116.bin onto smc MX25L6473F (3.3V 8-PIN SOP (200mil) SPI 25xx) ([https://www.badcaps.net/forum/troubleshooting-hardware-devices-and-electronics-theory/troubleshooting-desktop-motherboards-graphics-cards-and-pc-peripherals/bios-schematic-requests/96303-hp-t730-password-locked-bios in the rom rcvry socket under a delicate thin narrow surface flap]) with ch341a alike switchable from 5v, 3.3v to 1.8v
| <!--IDE-->{{N/A}}
| <!--SATA-->{{partial|Storage bios option to IDE and not AHCI to prevent constant install error messages to DH0: - add noacpi to end of grub boot line - 1 M.2 SATA slot (Key B+M) up to 2280 with T8 torx secure stub}}
| <!--Gfx-->{{maybe|use VESA for non-vulkan Radeon R7 GCN 2 UVD4.2 Sea Islands with 4 dp outs '''but too easy bricking''' if swapping with 1 PCIe 3.0 x8 slot 30W slim factor low profile 8400gs gt210 nvs295 nvs310 gt1030}}
| <!--Audio-->{{yes|HDaudio 6.34 realtek alc221 codec thru case speaker only}}
| <!--USB-->{{yes|'''Works''' for 4 USB2 in the back with 2 in the front, 2 USB3.0 ports on front and 1 more internal (not bootable)}}
| <!--Ethernet-->{{yes|rtl8169 Realtek RTL8111HSH-CG set up first in Prefs/Network}}
| <!--Test Distro-->boots with AROS One 32bit and 64bit USB with added noacpi added to grub boot line - press e - Latest distros can select grub boot options with Aros One 64bit USB and Aros One USB 2.8 but system seems to freeze after choice
| <!--Comments-->2016 64bit supports AVX SSE 4.1 - 2 DDR3L sodimm stacked slots max 32GB - '''Larger''' 20cm/8" high 3.5ltr case noisy fan - TPM2 - esc/F9 boot selector F10 enter bios - 2 serial and 1 parallel old ports - Key E Wireless - PCIe slot (x16 physical, x8 electrical) - 19.5V 4.36A 85w TPC-LA561 HP 7.4mm black-ring-tip power plug, red flashing power button, wrong psu or bad MotherBoard MB -
|-
| <!--Name-->HP t630 Thin Client TPC-I020-TC
*AMD Embedded G-Series SoC GX-420GI quad core 2Ghz
| <!--IDE-->{{N/A}}
| <!--SATA-->{{yes|ahci.device mbr msdos partiton table for 2 Sata M.2, sata0 up to 2280 (1tb max), sata1 2242 (64gb max), both T8 torx secure stubs}}
| <!--Gfx-->{{maybe|use VESA for Radeon AMD Wani R7E with 2 displayport 1.2 sockets, use one nearest to power jack - no dvi / hdmi}}
| <!--Audio-->{{Yes|HDAudio 6.36 0x1022, 0x157a and ALC255 aka ALC3234 codec 0x10ec, 0x0255, pins 0x17 as LFE and 0x1b as int speaker but not ahi 6.34}}
| <!--USB-->{{yes|USB2 2 front and 2 rear, 2 front USB3 and 1 inside}}
| <!--Ethernet-->{{Yes|Realtek 8169 8111H}}
| <!--Test Distro-->AROS One USB 2.2, 2.8 and 64bit USB 1.0, 1.2, 1.3 with noacpi added to the end of the grub bootline (press e)
| <!--Comments-->2016 64bit supports AVX SSE 4.1 - 2 DDR4 SODIMMs side by side speed 1866Mhz limit - 19.5V 3.33A 65W TPC-BA54 Coax male 7.4mm with centre pin - can be easily bricked, might reflash bios with M40 SP149736 - 20cm/8" high 1.5ltr larger fanless case - esc f1 f9 f10 -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->HP Compaq Elite 7200 7300 8200 8300 SFF with kettle IEC psu cable
| <!--IDE-->
| <!--SATA-->{{yes|IDE ata legacy only in BIOS}}
| <!--Gfx-->i pci-e
| <!--Audio-->{{Maybe|8200 works}}
| <!--USB-->{{yes| }}
| <!--Ethernet-->{{no|Intel or Broadcom}}
| <!--Test Distro-->icaros 2.3
| <!--Comments-->2013 64bit dual core - add pci-e rtl8169 ethernet card and pci-e gf210 nvidia low height -
|-
| <!--Name-->HP Compaq Pro 6305 Small Form Factor SFF AMD A75 chipset (FCH 6 SATA 6 Gb/s, 4 USB 3.0)
*AMD Quad A10-5800B
*AMD A8-5500B
*AMD Dual A6-5400B
*AMD A4-5300B
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Radeon 7000 Terascale iGPU series Radeon HD 7660D, Radeon HD 7560D, Radeon HD 7540D, Radeon HD 7480D
| <!--Audio-->HD ALC221
| <!--USB-->
| <!--Ethernet-->{{No|Broadcom 5761}}
| <!--Test Distro-->
| <!--Comments-->2012 64bit
|-
| <!--Name-->Elitedesk 705 G1 - SFF
*AMD A10-8850B, Quad-Core A10 PRO-7850B, A10-8750B
*AMD A10-7800B, A10 PRO-6800B, A8-7600B
*AMD A8-8650B, A6-8550B
*AMD A6-8350B, Dual A6 PRO 7400B, A4-7300B
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe| }}
| <!--Gfx-->{{Maybe|VESA 2D with Radeon R7 or 8000}}
| <!--Audio-->{{Maybe|HD audio with Realtek ALC221 codec}}
| <!--USB-->{{Maybe| }}
| <!--Ethernet-->{{No|Broadcom or Intel}}
| <!--Test Distro-->
| <!--Comments-->2014 64bit - T15 security torx psu with 6pin PWR 200W connector -
|-
| <!--Name-->HP EliteDesk 705 G2, 705 G3 Mini PC USFF thin client
| <!--IDE-->{{N/A}}
| <!--SATA-->2.5in and m.2
| <!--Gfx-->Radeon R7
| <!--Audio-->HDAudio
| <!--USB-->USB3
| <!--Ethernet-->{{No|Broadcom BCM5762 GbE}}
| <!--Test Distro-->
| <!--Comments-->2014 64bit AM4 socket with 35W TDP A10-8770E (4c), AMD PRO A6-8570E (2c), AMD Pro A6-9500E, or AMD PRO A10-9700E on AMD B300 FCH - ddr4 sodimm slots - 77 x 175 x 34mm (6.97 x 6.89 x 1.34in) 1L and about 3lbs -
|-
| <!--Name-->HP EliteDesk 705 G4 Mini 1ltr USFF AMD Ryzen 3 2200G (4c t) or 5 2400G (4c t)
| <!--IDE-->{{N/A|}}
| <!--SATA-->{{Maybe|Nvme 2280 and 2.5in sata}}
| <!--Gfx-->Vega 8 thru DP1.2 port
| <!--Audio-->{{No|HD Audio Conexant codec}}
| <!--USB-->USB2 usb3
| <!--Ethernet-->rtl8169 realtek
| <!--Test Distro-->
| <!--Comments-->2016 64bit Am4 socket - 2 sodimm 16GB max - 19.5v hp socket ext psu -
|-
| <!--Name-->Elitedesk 705 G4 35w, HP Prodesk 405 G4 35W USFF - baseboard 83e9 35W - AMD Athlon PRO 200GE (2c 4t), 2200GE (4c t) or 2400GE (4c t) on AMD B350 FCH
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe|Nvme 2280 and older models 2.5in sata}}
| <!--Gfx-->Vega 3, 8 or 11 with 2 dp1.2 ports
| <!--Audio-->{{no|HDAudio with Conexant CX20632 codec}}
| <!--USB-->USB3
| <!--Ethernet-->rtl8169 Realtek 8169 8111EPH 1Gbe or Realtek RTL8111F
| <!--Test Distro-->
| <!--Comments-->2017 64bit - realtek wifi 8821 or 8822 - up to 1 ddr4 dimm slots - hp barrel external ac -
|-
| <!--Name-->Elitedesk 705 G5, HP Elitedesk 806 G6, Prodesk 405 G6 || <!--IDE-->{{N/A}} || <!--SATA-->2x NVMe or 1x SATA + 1x NVMe, but not all three drives at the same time without serious modding of hd caddie || <!--Gfx-->Vega with DP1.4 port || <!--Audio-->{{no|HDAudio with Realtek ALC3205 codec}} || <!--USB-->USB3 || <!--Ethernet-->{{maybe|Realtek}} || <!--Test Distro--> || <!--Comments-->2018 64bit - 2 ddr4 sodimm slots - 3400GE Ryzen 5 PRO 3350GE (4c 8t), Ryzen 3 PRO 3200GE 3150GE (4c 4t), AMD Athlon Silver PRO 3125GE (2c 4t) on AMD PRO 565
|-
| <!--Name-->HP t540 1ddr4 slot, t640 2 DDR4 SDRAM sodimm SO-DIMM 260-pin non-ECC max 32gb thin client USFF
| <!--IDE-->{{N/A}}
| <!--SATA-->1 NVM Express (NVMe) 2230 or 2280
| <!--Gfx-->Vega 3 VGA, DisplayPort
| <!--Audio-->HD Audio with codec
| <!--USB-->2 USB3 gen1
| <!--Ethernet-->rtl8169 Realtek Realtek RTL8111HSH or RTL8111E PH-CG
| <!--Test Distro-->
| <!--Comments-->2019 64bit ryzen r1000 series Ryzen Embedded R1305G 1.5 GHz, R1505G dual (2c 4t) 2.0Ghz or R1606G ?.?Ghz (2c4t) - Realtek RTL8852AE wifi - 45W psu Coax male 4.5mm/3.0mm + centre pin -
|-
| <!--Name-->HP t740 SFF Thin Client
| <!--IDE-->{{N/A}}
| <!--SATA-->2 M.2, one is sata and other nvme
| <!--Gfx-->Vega 8 DisplayPort or + optional pci-e 30W Radeon E9173
| <!--Audio-->HD Audio with codec
| <!--USB-->USB3
| <!--Ethernet-->Realtek RTL8111E PH-CG 1Gbe
| <!--Test Distro-->
| <!--Comments-->2019 64bit - Ryzen Embedded V1756B 3.25Ghz quad - 90W 19.5V 4.62A psu Coax male 4.5mm/3.0mm + centre pin - sodimm DDR4 max 64Gb - slightly noisy fan -
|-
| <!--Name-->HP EliteDesk 805 G6 Mini 4750GE (8t 16t), Prodesk 405 G6 Ryzen 5 PRO 4650GE (6c 12t) or Ryzen 3 PRO 4350GE (4c 8t) on AMD PRO 565
| <!--IDE-->{{N/A}}
| <!--SATA-->2.5in carrier and 2 slots m.2 nvme
| <!--Gfx-->Vega 8 with DP1.4 and HDMI flex io2 output options
| <!--Audio-->HDAudio with Realtek ALC3205 codec
| <!--USB-->4 usb a - gen 2 10gig and gen 1 5gig ports
| <!--Ethernet-->{{N/A}}
| <!--Test Distro-->
| <!--Comments-->2021 64bit AMD Ryzen 4000 SBC unlocked - 2 sodimm ddr4 slots - wifi6 - 90W ac -
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Lenovo====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Lenovo Nettop IdeaCentre Q150 (40812HU)
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->ION2
| <!--Audio--> realtek codec
| <!--USB-->USB2
| <!--Ethernet-->intel 10/100
| <!--Test Distro-->
| <!--Comments-->2011 64bit D510
|-
| <!--Name-->M625q Tiny (1L)
| <!--IDE-->{{N/A}}
| <!--SATA-->M.2 Sata
| <!--Gfx-->Stoney Radeon R2, R3 or R4 and later R5 with 2 dp ports
| <!--Audio-->HD audio with ALC233-VB2-CG codec 0x10EC 0x0233
| <!--USB-->{{No|3 usb3.1 Gen 1 and 3 usb2}}
| <!--Ethernet-->rtl8169 RTL8111
| <!--Test Distro-->
| <!--Comments-->2016 64bit all dual cores - e2-9000e or a4-9120e later A9-9420e - heatsink covers 70% area covers wifi - 65w or 135w lenovo rectangle ac - 1 ddr4 2666MHz slot max 8gb - tpm 2.0 -
|-
| <!--Name-->M715q Gen 1 AMD A6 A8 A10-9700E 9770E (2c2t)
| <!--IDE-->{{N/A}}
| <!--SATA-->m.2
| <!--Gfx-->R4
| <!--Audio-->HDAudio
| <!--USB-->USB3
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->2016 64bit -
|-
| <!--Name-->M715q Gen 2 Ryzen 5 PRO 2400GE 4C 8T
| <!--IDE-->{{N/A}}
| <!--SATA-->m.2
| <!--Gfx-->Vega 11
| <!--Audio-->HD Audio with codec
| <!--USB-->USB3
| <!--Ethernet-->1GbE
| <!--Test Distro-->
| <!--Comments-->2018 64bit - f1 enter setup, esc device boot - fixed 1.8v ch341a needed to reflash 1.8v bios if no boot SOP8 DIP8 Winbond W25Q64, MXIC MX25U1635, MX25U6435 -
|-
| <!--Name-->ThinkCenter M75n nano Ryzen3 3300U
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->ThinkCentre M75q M75q-1 Tiny 1ltr TMM
*AMD Ryzen 5 PRO Quad 3500 Pro 3400GE (4c 8t) 11a5 soe400
*AMD 3200GE (2c 4t) zen1+ 11a4
| <!--IDE-->{{N/A|}}
| <!--SATA-->{{Maybe|NVMe 2280 1Tb max - untested 2.5inch}}
| <!--Gfx-->Vega 11
| <!--Audio-->HD Audio Realtek ALC222-CG codec ALC3287
| <!--USB-->3 USB3 Gen 1
| <!--Ethernet-->rtl8169 Realtek 8169 8111
| <!--Test Distro-->
| <!--Comments-->2019 64bit - 65w 20v 3.25A to 135W rectangle psu - 2 sodimm ddr4 sodimm max 32GB locked 2666MHz -
|-
| <!--Name-->ThinkCentre Ryzen 7 PRO Tiny 1ltr Gen 2 AMD 4000 series
*AMD 4650GE (6c12t) 4750GE (8c16t) 4350G (4c8t) Zen2 -
| <!--IDE-->{{N/A|}}
| <!--SATA-->{{Maybe|NVme}}
| <!--Gfx-->Vega 8
| <!--Audio-->HD Audio codec
| <!--USB-->
| <!--Ethernet-->Realtek 8169 8111
| <!--Test Distro-->
| <!--Comments-->2021 64bit vendor locked - 20v psu - 2 sodimm -
|-
| <!--Name-->Thinkcenter M75q-2 Gen2 refresh
| <!--IDE-->{{N/A}}
| <!--SATA-->m.2 nvme
| <!--Gfx-->Radeon Vega
| <!--Audio-->HDAudio
| <!--USB-->USB3
| <!--Ethernet-->1GigE
| <!--Test Distro-->
| <!--Comments-->2022 64bit 5650GE (6c12t) 5750GE (8c16t) - vendor/PSB can lock your AMD CPU - f12 boot devices
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->Thinkcentre M75q Tiny Gen5
| <!--IDE-->{{N/A| }}
| <!--SATA-->2 NVMe
| <!--Gfx-->Radeon 780M dp1.4a or hdmi
| <!--Audio-->HDAudio with codec
| <!--USB-->USB3 usb-c
| <!--Ethernet-->1GBe port
| <!--Test Distro-->
| <!--Comments-->2024 Ryzen PRO 7 8700GE - 90W yellow rectangle connector psu - 2 DDR5 sodimm slots max 128Gb -
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|}
====Misc====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Impart impact Media Group IQ Box mini Digital Signage with MB896 mini itx
| <!--IDE-->{{Yes| }}
| <!--SATA-->{{N/A}}
| <!--Gfx-->GMA 915 gme
| <!--Audio--> via audio
| <!--USB-->{{yes| }}
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->2007 32bit - 1 ddr2 slot - pentium m 1.73GHz -
|-
| <!--Name-->[https://everymac.com/systems/apple/mac_mini/specs/mac_mini_cd_1.83-specs.html Apple A1176 Intel MacMini1,1]
| <!--IDE-->{{N/A}}
| <!--SATA-->{{unk|gpt/efi }}
| <!--Gfx-->{{Yes|gma950 2d and 3d}}
| <!--Audio-->{{No|HDAudio with ICH7 [https://answers.launchpad.net/ubuntu/+source/alsa-driver/+question/186749 Sigmatel Stac 9221] [https://android.googlesource.com/kernel/msm/+/android-wear-5.1.1_r0.6/sound/pci/hda/patch_sigmatel.c codec][https://alsa-devel.alsa-project.narkive.com/Yt20W6cE/sigmatel-stac9221-mux-amp-out-0x02-microphone-not-working mic]}}
| <!--USB-->{{Yes|USB2}}
| <!--Ethernet-->{{No|Marvell}}
| <!--Test Distro-->
| <!--Comments-->2006 32bit possible 1.83 GHz Intel “Core Duo” (T2400) - swap pci-e wifi for atheros 5k AR5007EG - maybe hack with a 2,1 firmware - max 4GB Ram ddr2 sodimms - external apple psu - dvd boot only with c key -
|-
| <!--Name-->[https://everymac.com/systems/apple/mac_mini/specs/mac-mini-core-2-duo-1.83-specs.html Apple A1176 Intel Mac Mini2,1]
| <!--IDE-->{{N/A}}
| <!--SATA-->{{unk|gpt/efi }}
| <!--Gfx-->{{Yes|gma950 2d and 3d}}
| <!--Audio-->{{No|HDAudio with ICH7 Sigmatel Stac 9221 codec}}
| <!--USB-->{{Yes|USB2}}
| <!--Ethernet-->{{No|Marvell}}
| <!--Test Distro-->Aros One 2.0/ Icaros
| <!--Comments-->2007 64bit - swap pci-e wifi for atheros 5k AR5007EG - hacked with a 2,1 firmware and replaced the cpu for T7600 2.33 Ghz C2D and max 4GB Ram ddr2 sodimms - external apple psu - dvd boot only via c key
|-
| <!--Name-->Apple iMac 5,1 "Core 2 Duo" 1.83GHz 17" T5600 MA710LL || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->GMA 950 with 64Mb || <!--Audio-->HDAudio idt codec || <!--USB-->3 USB2 || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->2006 64bit - 2 ddr2 667MHz sodimm slots - 17.0" TFT widescreen 1440x900 - polycarbonate
|-
| <!--Name-->Apple iMac 6,1 "Core 2 Duo" 2.16 2.33 24" only T7400 T7600 aka MA456LL/A A1200 (EMC 2111) || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Nvidia 7300GT with 128 MB of GDDR3 SDRAM PCI Express or GeForce 7600GT with 256Mb mini dvi, vga || <!--Audio-->HDAudio || <!--USB-->3 USB2 || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->2006 64bit - 2 ddr2 667MHz sodimm slots - 24.0" TFT widescreen 1920 x 1200 - polycarbonate plastic case iMacs of this generation are the most difficult iMacs to service due to their front bezel design
|-
| <!--Name-->Neoware CA2
| <!--IDE-->flash DOM
| <!--SATA-->{{N/A}}
| <!--Gfx-->S3 Inc ProSavage PM133 (rev 02) vga
| <!--Audio-->VIA VT82C686 AC97 Audio
| <!--USB-->USB
| <!--Ethernet-->rtl8139
| <!--Test Distro-->
| <!--Comments-->2003 32bit - VIA Ezra 800MHz - 2 PC100 sodimm slots - riser board carries an ISA slot and a PCI slot - external 12V power supply.with 4 pins -
|-
| <!--Name-->Neoware CA5 Capio One
| <!--IDE-->44pin Disk On Module DOM
| <!--SATA-->{{N/A}}
| <!--Gfx-->SiS550 vga
| <!--Audio-->AC97 with SiS7019 codec
| <!--USB-->USB1.1
| <!--Ethernet-->rtl8139
| <!--Test Distro-->
| <!--Comments-->2004 32bit - internal power supply with mains lead has a "clover leaf" style - 2 144-pin PC100 or PC133 SODIMM might have 24MB of RAM soldered -
|-
| <!--Name-->Neoware CA10
*E140 model BL-XX-XX (800MHz CPU) later
*E100 model BK-XX-XX (1GHz CPU)
| <!--IDE-->
| <!--SATA-->{{N/A}}
| <!--Gfx-->VIA VT8623 (Apollo CLE266) vga
| <!--Audio-->AC97 with
| <!--USB-->4 USB2
| <!--Ethernet-->VIA VT6102/VT6103 [Rhine-II] (rev 74)
| <!--Test Distro-->
| <!--Comments-->2004/5 32bit - 12v 5.5mm/2.1mm - 2 184-pin DDR DIMM -
|-
| <!--Name-->VXL Itona thin client
*TC3200,
*TC3x41 (P3VB-VXL) TC3541 TC3641 TC3841,
*TC3xx1 (6VLE-VXL0) TC3931,
*TC43xx (Gigabyte C7V7VX) TC4321
| <!--IDE-->
| <!--SATA-->{{N/A}}
| <!--Gfx-->VIA vga
| <!--Audio-->AC'97 Audio with VIA VT
| <!--USB-->VIA USB
| <!--Ethernet-->Realtek 8100B
| <!--Test Distro-->
| <!--Comments-->2005 2006 32bit VIA Samuel 2, VIA C3 Nehamiah CPU, 1 DIMM slot, internal psu,
|-
| <!--Name-->Neoware Capio C50, model CA15 Thin Clients]
*Login Administrator Password Administrator
*Login User Password User
| <!--IDE-->1 flash Disk On Module
| <!--SATA-->{{N/A}}
| <!--Gfx-->VIA VT8623 (Apollo CLE266) vga
| <!--Audio-->AC97 with via codec
| <!--USB-->USB
| <!--Ethernet-->VIA
| <!--Test Distro-->
| <!--Comments-->2006 32bit VIA Eden (Samuel II core) CPU - 1 ddr sodimm slot max 512mb - slot - internal psu clover leaf -
|-
| <!--Name-->[http://etoy.spritesmind.net/neowareca21.html Neoware CA21 Thin Clients] Igel 3210 (and maybe the Clientron G270)
*Login Administrator Password Administrator
*Login User Password User
| <!--IDE-->1 flash Disk On Module DOM
| <!--SATA-->{{N/A}}
| <!--Gfx-->VIA CN700 vga
| <!--Audio-->AC97 with via codec
| <!--USB-->USB2
| <!--Ethernet-->VIA
| <!--Test Distro-->
| <!--Comments-->2007 32bit VIA C3 Nehemiah instead of Ezra-T - made 2 version of the CA 21, one with an Award bios and one with a Phoenix bios - 1 ddr2 sodimm slot max 1gb - VT6656 wireless - slot - internal psu iec -
|-
| <!--Name-->Neoware CA22 (e140), part number DD-L2-GE with BCOM WinNET P680 (V4) as the Igel 4210LX (Igel 5/4)
| <!--IDE-->1 VIA VT82C586A/B VT82C686/A/B VT823x/A/C PIPC Bus Master IDE (rev 06)
| <!--SATA-->{{N/A}}
| <!--Gfx-->VIA CN700 P4M800 Pro CE VN800 Graphics [S3 UniChrome Pro] (rev 01) vga
| <!--Audio-->AC97 with codec
| <!--USB-->USB2 VIA VT8237R Plus
| <!--Ethernet-->VIA VT6102/VT6103 [Rhine-II] (rev 78)
| <!--Test Distro-->
| <!--Comments-->2007 32bit - VIA Esther to later C7 1GHz - 1 ddr2 sodimm slots max 512mb - +12V DC/4.16A/50W 5.5mm/2.1mm coaxial -
|-
| <!--Name-->10Zig RBT402, Clientron U700,
| <!--IDE-->{{Yes|44 pin header very little room}}
| <!--SATA-->{{N/A|}}
| <!--Gfx-->{{Partial|VESA dvi}}
| <!--Audio-->{{unk|AC97 with codec}}
| <!--USB-->{{unk|VIA }}
| <!--Ethernet-->{{unk|}}
| <!--Test Distro-->
| <!--Comments-->2008 32bit - very small cases with very limited expansion - 1 sodimm 2GB max - 12v 3a psu - Password Fireport
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->Dell Optiplex FX170 D05U thin client, 10Zig 56xx range 5602, 5616v, 5617v, 5672v, Clientron U800, Devon IT TC5,
| <!--IDE-->{{Yes|44 pin header very little room}}
| <!--SATA-->{{N/A|}}
| <!--Gfx-->{{partial|GMA 950 dvi}}
| <!--Audio-->{{Yes|HD Audio with codec}}
| <!--USB-->{{Yes| }}
| <!--Ethernet-->{{No|Broadcom}}
| <!--Test Distro-->Icaros 2.3
| <!--Comments-->2009 32bit - very small cases with very limited expansion - 1 ddr2 sodimm 2GB max - 12v 3a psu - Password Fireport - ps2 keyboard socket -
|-
| <!--Name-->10Zig RBT-616V or Chip PC Technologies EX-PC (model number XPD4741)
| <!--IDE-->{{unk|44 pin header very little room}}
| <!--SATA-->{{N/A|}}
| <!--Gfx-->{{Yes|GMA 950}}
| <!--Audio-->{{unk|HD Audio with codec}}
| <!--USB-->{{unk| }}
| <!--Ethernet-->{{unk|rtl8169}}
| <!--Test Distro-->
| <!--Comments-->2010 32bit N270 on NM10 with ICH7 - very small cases with very limited expansion - 1 sodimm 2GB max - 12v 4a psu - Password Fireport
|-
| <!--Name-->Gigabyte Brix GS-A21S-RH (rev. 1.0) SFF
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{maybe|X3100}}
| <!--Audio-->{{No|HD Audio with ALC883-GR codec}}
| <!--USB-->Intel USB
| <!--Ethernet-->{{no|Intel 82566DC}}
| <!--Test Distro-->ICAROS 2.3
| <!--Comments-->2009 64bit Intel GME965 chipset with Intel ICH8M - 2 DDR2 Dimm slots - GA-6KIEH2-RH Rev.1.x mini ITX Case 213mm(D) x 64mm(W) x 234mm(H) - custom psu -
|-
| <!--Name-->VXL Itona MD+24 MD27 MD54 MD64 MD76 thin client
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->VIA Chrome 9
| <!--Audio-->HD Audio with VIA VT
| <!--USB-->VIA
| <!--Ethernet-->VIA
| <!--Test Distro-->
| <!--Comments-->2009 32bit VIA X2 U4200 - 12v-19v barrel psu -
|-
| <!--Name-->Acer Revo 100 RL100 AMD Athlon II X2 K325 || <!--IDE--> || <!--SATA--> || <!--Gfx-->NVIDIA® ION™ 9300m || <!--Audio-->HDAudio with ALC662 codec || <!--USB-->USB2 1 front 2 back || <!--Ethernet-->NVIDIA nForce 10/100/1000 || <!--Test Distro--> || <!--Comments-->2010 64bit but no AVX - 4Gb DDR3 sodimm - 500 GB - 19v 3.42a 65W - dvd but later BD drive -
|-
| <!--Name-->Asrock ION 330 330Pro HT-BD, Foxconn NT-330i, Zotac ION F (IONITX mini itx),
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->{{Maybe|ION geforce 9400}}
| <!--Audio-->{{Maybe| }}
| <!--USB-->{{Maybe|Nvidia USB}}
| <!--Ethernet-->{{No|Nvidia }}
| <!--Test Distro-->
| <!--Comments-->2010 32bit slow atom cpu - 2.5L 8" by 8" plastic case - 2 ddr2 sodimm max 4G - external 19v 65W 3.42A Plug 5.5mm X 2.5mm - little whiny fan -
|-
| <!--Name-->Zotac ZBOXHD-ND01
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->ION1
| <!--Audio-->HDaudio
| <!--USB-->USB2
| <!--Ethernet-->NVidia
| <!--Test Distro-->
| <!--Comments-->2009 32bit
|-
| <!--Name-->Zotac ZBOX HD-ID11
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->ION2
| <!--Audio-->HDaudio with ALC888 codec
| <!--USB-->USB2
| <!--Ethernet-->rtl8169 rtl8111D
| <!--Test Distro-->
| <!--Comments-->2010
|-
| <!--Name-->ZOTAC ZBOX Blu-ray 3D ID36 Plus
| <!--IDE-->{{N/A}}
| <!--SATA-->sata
| <!--Gfx-->ION2
| <!--Audio-->HDaudio
| <!--USB-->2 USB3
| <!--Ethernet-->GbE
| <!--Opinion-->2011 64bit -
|-
| <!--Name-->Shuttle XS35GT || <!--IDE--> || <!--SATA--> || <!--Gfx-->ION || <!--Audio-->HD audio IDT92HD81 || <!--USB--> || <!--Ethernet-->{{No|JMC261}} || <!--Test Distro--> || <!--Comments-->2011 64bit - Atom™ D510 NM10 - DDR2
|-
| <!--Name-->Shuttle XS35GT V2 || <!--IDE--> || <!--SATA--> || <!--Gfx-->ION2 || <!--Audio-->HD audio IDT92HD81 || <!--USB-->Intel || <!--Ethernet-->{{No|JMC251}} || <!--Test Distro--> || <!--Comments-->2011 64bit Atom™ D525 NM10 chipset - DDR3
|-
| <!--Name-->Sapphire Edge-HD || <!--IDE--> || <!--SATA--> || <!--Gfx-->ION2 GT218 with vga and hdmi || <!--Audio-->HDAudio realtek codec || <!--USB--> || <!--Ethernet-->{{Unk|Realtek}} || <!--Test Distro--> || <!--Comments-->2011 64bit - Atom™ D510 NM10 - DDR2 65 W AC, DC 19V~3.42A, 19.3L x 14.8w x 2.2H cm (1l), weight 530g,
|-
| <!--Name-->Sapphire Edge-HD2 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes|IDE mode}} || <!--Gfx-->{{Yes|nouveau ION2 GT218 with vga and hdmi 2d and 3d}} || <!--Audio-->{{Yes|HDAudio}} || <!--USB-->{{Yes|Intel USB2}} || <!--Ethernet-->{{Yes|}} || <!--Test Distro--> || <!--Comments-->2011 64bit Atom™ D525 NM10 chipset - DDR3
|-
| <!--Name-->AOPEN Digital Engine DE67-HA(I)
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe| }}
| <!--Gfx-->{{Maybe| Vesa 2d for Intel HD}}
| <!--Audio-->{{maybe|HDAudio for ALC662 codec}}
| <!--USB-->{{maybe|usb3}}
| <!--Ethernet-->{{no|Intel WG82579LM}}
| <!--Test Distro-->
| <!--Comments-->2011
|-
| <!--Name-->[https://www.jetwaycomputer.com/JBC600C99352W.html Jetway JBC600C99352W]
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->ION2
| <!--Audio-->{{No|C-Media CM108AH}}
| <!--USB-->USB2
| <!--Ethernet-->Realtek 8111DL
| <!--Test Distro-->
| <!--Comments-->2011 64bit D525 - DDR3 - 12v psu
|-
| <!--Name-->Foxconn nT-A3550 A3500 AMD A45 Chipset DDR3 Nettop Barebones - White
| <!--IDE-->{{N/A}}
| <!--SATA-->1 slot
| <!--Gfx-->AMD Radeon HD6310
| <!--Audio-->
| <!--USB-->4 USB2 back and 2 USB3 front
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->2012 64bit does not support AVX or SSE 4.1 AMD Dual-core E350 1.6GHz CPU - 1 ddr3 sodimm -
|-
| <!--Name-->Asus EeeBox PC EB1021 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Radeon HD6320M || <!--Audio-->HDAudio with ALC codec || <!--USB-->USB2 || <!--Ethernet-->Realtek GbE1 || <!--Test Distro--> || <!--Comments-->2012 64bit - AMD® Brazos E-350 SFF or E-450 with A50M - 2 ddr3l so-dimm - 40W ac -
|-
| <!--Name-->Xi3 Piston PC Athlon64 X2 3400e (X5A), AMD R-464L quad (X7A) Z3RO NUC
| <!--IDE-->{{N/A}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->AMD mobility HD3650 to radeon HD 7660G
| <!--Audio--> codec
| <!--USB-->4 USB2 3 USB3
| <!--Ethernet-->{{no|Atheros AR8161}}
| <!--Test Distro-->
| <!--Comments-->2012 - 2 sodimm 8GB max - 19v 3.3a round - Titan105 bios update -
|-
| <!--Name-->Sapphire Edge-HD3 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Radeon HD6320M with vga and hdmi || <!--Audio-->HDAudio with Realtek ALC662 codec || <!--USB-->USB2 || <!--Ethernet-->Realtek GbE1 || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 AMD® Brazos E-450 with A45M - ddr3l so-dimm - 65W ac - Wireless is Realtek 8191SU WiFi (802.11n) or AzureWave (802.11bgn) -
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->Samsung Syncmaster Thin Client Display TC-W Series 24" LF24 TOWHBFM/EN TC220W LED LF22TOW HBDN/EN || <!--IDE-->{{N/A}} || <!--SATA-->8gb SSD || <!--Gfx-->{{Maybe| VESA mode only Radeon HD 6290}} || <!--Audio--> || <!--USB-->2 USB 2.0 || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 thin Client C-50 C50 AMD® 1000 MHz and no wireless
|-
| <!--Name-->Advantech TPC-2140 thin client
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->{{Maybe|VESA }}
| <!--Audio-->
| <!--USB-->USB2
| <!--Ethernet-->{{Yes|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2012 64bit does not support AVX or SSE 4.1 atom-like G-T56E 1.65Ghz up to SSE3, BGA413 soldered -
|-
| <!--Name-->CompuLab FIT-PC3 fitPC3 USFF PC AMD G-T56N || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->RADEON HD 6320 || <!--Audio-->{{yes|HDAudio ALC888 codec}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{yes|rtl8169 8111}} || <!--Test Distro--> || <!--Comments-->2012 64 bit does not support AVX or SSE 4.1 - 12v 3a - 2x sodimm DDR3 max 4GB - wifi rtl8188ce
|-
| <!--Name-->10Zig 6872 thin client
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{Maybe|VESA }}
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->{{Yes|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2012 64bit does not support AVX or SSE 4.1 atom-like G-T56N up to SSE3 BGA413 (FT1) soldered - DDR3l single channel -
|-
| <!--Name-->10ZiG Technology 9972 1.6 GHz Linux 1.47 kg Black RX-216GD thin client
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->AMD Radeon 5E 3840 x 2160 @ 30Hz to 2560 x 1600 @ 60Hz 2 x Display Port
| <!--Audio-->
| <!--USB-->6 x USB2.0 2 x USB3.0
| <!--Ethernet-->{{Maybe|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2016 64bit does support AVX or SSE 4.1 AMD RX-216TD - 1 ddr3 sodimm - 12V 4A Coax 5.5mm/2.1mm
|-
| <!--Name-->10ZiG 7800q thin client
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->AMD Radeon 5E 3840 x 2160 @ 30Hz to 2560 x 1600 @ 60Hz 2 x Display Port
| <!--Audio-->
| <!--USB-->6 x USB2.0 2 x USB3.0
| <!--Ethernet-->{{Maybe|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2016 64bit does support AVX or SSE 4.1 AMD GX-424CC (Quad Core) 2.4GHz BGA769 (FT3b) - 1 ddr3 sodimm - 12V 4A Coax 5.5mm/2.1mm
|-
| <!--Name-->
*Itona VXL MZE12 AMD a4-5000 thin client
*VXL Itona LQ27 LQ+27 LQ44 LQ+44 LQ49 LQ+49 LQ50 LQ+50 LQ64 LQ+64 thin client
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->Ati 8330 vga hdmi dp
| <!--Audio-->
| <!--USB-->4 usb2 2 usb3
| <!--Ethernet-->Realtek
| <!--Test Distro-->
| <!--Comments-->2014 64bit quad BGA769 (FT3) soldered - 2 stacked sodimm ddr3 middle of mobo - 2 m.2 sata slots - 1 sata short cable half size space - limited 1ltr 8in case no fan - 19v hp style psu connector -
|-
| <!--Name-->Dell Wyse 5212 21.5" AIO Thin Client W11B
| <!--IDE-->{{N/A}}
| <!--SATA-->Sata
| <!--Gfx-->R3 out from DP or vga
| <!--Audio-->HDAudio
| <!--USB-->USB2
| <!--Ethernet-->Realtek
| <!--Test Distro-->
| <!--Comments-->2015 64bit slow atom like dual core AMD G-T48E 1.4 GHz - dell type round ac needed 90W 19.5V 4.62A - 21 inch 1080p screen -
|-
| <!--Name-->LG 24CK560N-3A 24' All-in-One Thin Client Monitor, 27CN650N-6N 27CN650W-AC 27', 34CN650W-AC 34',
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->2018 64bit AMD Prairie Falcon GX-212JJ
|-
| <!--Name-->CompuLab fit-PC4 fitPC4 4x 2Ghz AMD || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet-->{{no|Intel}} || <!--Test Distro--> || <!--Comments-->2018 64 - 2x DDR4 sodimm -
|-
| <!--Name-->IGEL Hedgehog M340C UD3 thin client
*2016 V1.0 AMD GX-412HC 1.2GHz-1.6GHz Radeon R3E, normal bios DEL for Bios or F12 boot selector
*2018 AMD GX-424CC 2.4GHz, Radeon R5E, UEFI hit DEL and choose boot or SCU icon
| <!--IDE-->{{N/A|}}
| <!--SATA-->SATA half slim version '''limited space''' with msata 8+18pins slot on earlier 2016 models
| <!--Gfx-->{{Maybe|VESA for Radeon R3E later R5E sea islands vulkan 1.2 with dvi dp output}}
| <!--Audio-->{{Yes|HD Audio with codec ?? (412) and Realtek ALC662-VD0-GR (424), both case speaker}}
| <!--USB-->amd usb3 boot usb2 with bios "disable usb" entry
| <!--Ethernet-->{{Yes|Realtek 8169 8111 (412) and (424)}}
| <!--Test Distro-->Aros One x86 USB 1.5, 1.8 and 2.2 but ArosOne 64bit 1.2 boot loop in usb2 port
| <!--Comments-->2016 64bit - 20cm/8" high case - 1 DDR3L sodimm slot max 8Gb 1600MHz - external '''12V 3A''' supply with 5.5mm/2.1mm coaxial - IDE like interface under base stand is for legacy addon ports RS232 parallel etc - capacitive touch power on - case opening 3 stages, remove stand and narrow black plastic strip from the back, top cover slides off to the back and lifts off -
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->10ZiG 6148v 6048qv (6100 series)
| <!--IDE-->{{N/A}}
| <!--SATA-->{{maybe| }}
| <!--Gfx-->
| <!--Audio-->{{maybe| }}
| <!--USB-->{{No| }}
| <!--Ethernet-->{{maybe| }}
| <!--Test Distro-->
| <!--Comments-->2018 64bit AMD Ryzen V1202B
|-
| <!--Name-->10ZiG 7111q
| <!--IDE-->{{N/A}}
| <!--SATA-->{{maybe| }}
| <!--Gfx-->
| <!--Audio-->{{maybe| }}
| <!--USB-->{{maybe| }}
| <!--Ethernet-->{{maybe| }}
| <!--Test Distro-->
| <!--Comments-->2019 64bit AMD Ryzen R2514 2.1 GHz -
|-
| <!--Name-->Shuttle DA320
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->R3 R5
| <!--Audio-->HD Audio with ALC662 codec
| <!--USB-->{{maybe| }}
| <!--Ethernet-->dual realtek 1GbE 8111H
| <!--Test Distro-->
| <!--Opinion-->2017 64bit AMD 2200G 2400G - Robust metal 1.3-liter case - A320 chipset DDR4 - 19V 6.32A DC PSU -
|-
| <!--Name-->IGEL UD7 H850C around december 2019 '''AMD Secure Processor''' is a built-in dedicated security system that checks if the BIOS has a valid signature and thus secures the next step in the boot process. This ensures that only devices with a signed BIOS will boot
| <!--IDE-->{{N/A}}
| <!--SATA-->None but 8gb emmc
| <!--Gfx-->Vega 3
| <!--Audio-->HD Audio with Realtek ALC897 or ALC888S codec
| <!--USB-->USB 3.2 and 2.0
| <!--Ethernet-->1GbE
| <!--Test Distro-->
| <!--Comments-->2018 64bit - AMD Ryzen™ Dual-Core 10W TDP - 2 DDR4 sodimms slots max 16Gb - 12V 4A psu - 2x DisplayPort 1.2 no dvi or hdmi - Intel® 9260 or SparkLAN WNFT-238AX wifi - 1x rear serial Prolific PL2303 chipset - locked down components and very limited expansion options
|-
| <!--Name-->IGEL UD7 H860C - '''AMD Secure Processor''' is a built-in dedicated security system that checks if the BIOS has a valid signature and thus secures the next step in the boot process. This ensures that only devices with a signed BIOS will boot
| <!--IDE-->{{N/A}}
| <!--SATA-->None but 8gb emmc
| <!--Gfx-->Vega 3
| <!--Audio-->HD Audio with Realtek ALC897 or ALC888S codec
| <!--USB-->USB 3.2 and 2.0
| <!--Ethernet-->1GbE
| <!--Test Distro-->
| <!--Comments-->2018 64bit - AMD Ryzen™ Dual-Core 10W TDP - 2 DDR4 sodimms slots max 16Gb - 12V 4A psu - 2x DisplayPort 1.2 no dvi or hdmi - Intel® 9260 or SparkLAN WNFT-238AX wifi - 1x rear serial Prolific PL2303 chipset - locked down components and very limited expansion options
|-
| <!--Name-->IGEL UD3 M350C (UEFI issues)
| <!--IDE-->{{N/A}}
| <!--SATA-->None but 8gb emmc
| <!--Gfx-->Vega 3
| <!--Audio-->HD Audio with Realtek ALC897 or ALC888S codec
| <!--USB-->USB 3.2 and 2.0
| <!--Ethernet-->1GbE
| <!--Test Distro-->
| <!--Comments-->2018 64bit - AMD Ryzen™ R R1505G Dual-Core 10W TDP - 2 DDR4 sodimms slots max 16Gb - 12V 4A psu - 2x DisplayPort 1.2 no dvi or hdmi - Intel® 9260 or SparkLAN WNFT-238AX wifi - 1x rear serial Prolific PL2303 chipset - locked down components and very limited expansion options
|-
| <!--Name-->IGEL UD7 H860C AMD Ryzen V1605B Thin Client - '''AMD Secure Processor''' is a built-in dedicated security system that checks if the BIOS has a valid signature and thus secures the next step in the boot process. This ensures that only devices with a signed BIOS will boot
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HDAudio
| <!--USB-->{{maybe| }}
| <!--Ethernet-->1GbE
| <!--Test Distro-->
| <!--Comments-->2020 AMD Ryzen™ Embedded V1605B 2 – 3.6 GHz (Quad-Core) - 12v 5A psu - up to 16GB RAM DDR4 - locked down components and very limited expansion options
|-
| <!--Name-->Gigabyte Brix Barebone Mini PC BSRE-1605
| <!--IDE-->{{N/A}}
| <!--SATA-->2 M.2
| <!--Gfx-->Vega 8
| <!--Audio-->HD Audio ALC269 codec
| <!--USB-->USB3
| <!--Ethernet-->2 GbE
| <!--Test Distro-->
| <!--Comments-->2020 64bit AMD Ryzen V1605B - 2 DDR4 sodimm slots
|-
| <!--Name-->MINISFORUM Deskmini UM250 Mini PC
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->{{maybe| }}
| <!--Ethernet-->{{maybe| }}
| <!--Test Distro-->
| <!--Comments-->2020 64bit AMD Ryzen V1605B -
|-
| <!--Name-->T-Bao MN25 Mini PC 2500U
| <!--IDE-->{{N/A| }}
| <!--SATA-->{{Unk|Intel NVMe}}
| <!--Gfx-->{{No|VESA Radeon Vega 8}}
| <!--Audio-->{{Unk| }}
| <!--USB-->{{maybe|USB 3}}
| <!--Ethernet-->{{Yes|Realtek PCIe 1GbE}}
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->Atari VCS || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{maybe|Vesa 2D for AMD Vega 3}} || <!--Audio-->{{unk|HDAudio with ALC codec}} || <!--USB-->{{maybe|USB3 USB 3.2 Gen 2 front and 3 usb2 rear }} || <!--Ethernet-->rtl8169 Realtek RTL8111H || <!--Test Distro--> || <!--Comments-->2021 64bit Ryzen Embedded R1606G - 2 ddr4 sodimm slots - TPM 2.0 -
|-
| <!--Name-->Minis Forum M200 Silver Athlon M300 3300U
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->Vega 8
| <!--Audio-->
| <!--USB-->{{maybe|USB 3.1 gen 1 and 2}}
| <!--Ethernet-->{{No|Realtek PCIe 2.5G}}
| <!--Test Distro-->
| <!--Comments-->2021 64bit
|-
| <!--Name-->Minis Forum DeskMini UM300 3300U, UM350 DMAF5 3550H, UM370 and UM700 with 3750H
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->Vega 8
| <!--Audio-->
| <!--USB-->{{maybe|USB 3.1 gen 1 and 2}}
| <!--Ethernet-->{{No|Realtek PCIe 2.5G}}
| <!--Test Distro-->
| <!--Comments-->2021 64bit
|-
| <!--Name-->MinisForum X300 with AMD 3400G
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->Vega 8
| <!--Audio-->
| <!--USB-->{{maybe|USB 3.1 gen 1 and 2}}
| <!--Ethernet-->{{No|Realtek PCIe 2.5G}}
| <!--Test Distro-->
| <!--Comments-->2021 64bit
|-
| <!--Name-->Beelink SER3 GTR4
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->AMD Vega 3 or 10
| <!--Audio-->HD Audio with codec
| <!--USB-->{{maybe|USB3}}
| <!--Ethernet-->Realtek RJ45 1GbE
| <!--Test Distro-->
| <!--Comments-->2020 64bit 3200u or 3750h
|-
| <!--Name-->AsRock DeskMini X300
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->2020 Ryzen 7 Pro 4750G 5600G
|-
| <!--Name-->MinisForum Besstar Tech X400 with AMD 4650G
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->AMD
| <!--Audio-->
| <!--USB-->{{maybe|USB 3.1 gen 1 and 2}}
| <!--Ethernet-->{{No|Realtek PCIe 2.5G}}
| <!--Test Distro-->
| <!--Comments-->2021 64bit - MP1584 - kill NB679 NB679GD-Z=ALTM=AL** QFN-12 IC-REG-DL buck/linear synchronous chip IC with bad usb cables -
|-
| <!--Name-->Beelink SER4 GTR5
| <!--IDE-->{{N/A}}
| <!--SATA-->cant boot from installed SSDs unless its an M.2
| <!--Gfx-->AMD Vega
| <!--Audio-->
| <!--USB-->{{maybe|USB3}}
| <!--Ethernet-->1 or 2 Realtek
| <!--Test Distro-->
| <!--Comments-->2021 64bit 4700U or 5900HX
|-
| <!--Name-->MSI PRO DP20Z 5M Mini PC - AMD Ryzen 5 5300G
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->{{No|Realtek 2.5G LAN RTL8125}}
| <!--Test Distro-->
| <!--Comments-->2018-2021 R3 3200G Vega 8 - R5 3400G Vega 11 - Ryzen 5 5600G Vega 7 - Athlon 3000G
|-
| <!--Name-->Minisforum UM450
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->Vega
| <!--Audio-->HDaudio
| <!--USB-->USB3
| <!--Ethernet-->{{No|Realtek 2.5G LAN RTL8125}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit - Ryzen 4500U -
|-
| <!--Name-->Gigabyte Brix
GB-BRR7-4800 (rev. 1.0)
GB-BRR7-4700 (rev. 1.0)
GB-BRR5-4500 (rev. 1.0)
GB-BRR3-4300 (rev. 1.0)
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->{{maybe|}}
| <!--Ethernet-->Realtek 2.5G LAN RTL8125
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->ASUS PN50 mini PC AMD Ryzen 7 4700U
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Vega
| <!--Audio-->HD audio with codec
| <!--USB-->{{maybe|3.1 gen1}}
| <!--Ethernet-->{{No|realtek 2.5GbE}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit -
|-
| <!--Name-->ASUS PN51-S1 mini PC AMD Ryzen 7 5700U
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->Vega thru dp or hdmi
| <!--Audio-->HD audio with codec
| <!--USB-->{{maybe|3.1 gen1}}
| <!--Ethernet-->{{No|realtek 2.5GbE}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit - 19v or 19.5v 90w psu round barrel - 32gb ddr4 sodimm -
|-
| <!--Name-->Minis Forum Bessstar Tech EliteMini B550
| <!--IDE-->{{N/A}}
| <!--SATA-->1 x 2.5in and 2 nvme
| <!--Gfx-->Vega 8
| <!--Audio-->
| <!--USB-->{{maybe|4 usb3.1}}
| <!--Ethernet-->{{No|realtek 8125 2.5GbE}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit AMD 4700G 5700G desktop cpu - 19v 120w round barrel -
|-
| <!--Name-->ASRock A300 and later X300 Mini itx with Desktop AM4 socket
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->Vega
| <!--Audio-->HDAudio
| <!--USB-->USB3
| <!--Ethernet-->1GbE
| <!--Test Distro-->
| <!--Comments-->2022 64bit - choose your own AMD APU GE 35w based - DDR4 -
|-
| <!--Name-->ASRock 4x4 BOX-5800U Zen 3-based AMD Ryzen 7 5800U 15W -
| <!--IDE-->{{N/A}}
| <!--SATA-->m.2 slot gen 3 and sata
| <!--Gfx-->vega
| <!--Audio-->HD audio with codec
| <!--USB-->{{maybe|}}
| <!--Ethernet-->{{Maybe|1 GbE and 1 2.5GbE}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit - WiFi 6E -
|-
| <!--Name-->Topton S500+ Gaming Mini PC - Morefine S500+ 5900HX Mini PC - Minisforum UM590 Ryzen AMD Zen3 Ryzen 9 5900HX 7 5800H 45W -
| <!--IDE-->{{N/A}}
| <!--SATA-->2 nvme 1 sata
| <!--Gfx-->Vega 8 thru HDMI 2.0, DP 1.4, and USB type-C
| <!--Audio-->
| <!--USB-->{{maybe|usb3.1}}
| <!--Ethernet-->{{Maybe|1 realtek rtl 8111h and 1 8125 2.5GbE bg-cg}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit - 2 sodimm ddr4 3200MHz -
|-
| <!--Name-->Chuwi RzBox later Ubox
| <!--IDE-->{{N/A}}
| <!--SATA-->2 nvme
| <!--Gfx-->Vega 8 later to 660m vga, dp, hdmi
| <!--Audio-->HDaudio
| <!--USB-->{{maybe|usb-c usb2}}
| <!--Ethernet-->dual gigabit
| <!--Test Distro-->
| <!--Comments-->2022 2025 64bit amd 5800h 4800h 6600H - 90w psu -
|-
| <!--Name-->Beelink Mini PC SER5, Trigkey AZW S5, Asus PN52, ZHI BEN MX-JB560,
| <!--IDE-->{{N/A}}
| <!--SATA-->PCIe3 M.2 2280 nvme
| <!--Gfx-->AMD Vega 6 with 1 or 2 hdmi
| <!--Audio-->HDAudio
| <!--USB-->{{maybe|USB3.0}}
| <!--Ethernet-->{{Maybe|Realtek 1GbE}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit 5500U 5560u 5600U to PRO 5600H 5800H - 19v 3.42W 65W psu -
|-
| <!--Name-->NIPOGI Kamrui ACEMAGICIAN AM06PRO Dual LAN Mini PC AMD Ryzen 7 5800U, 5 5500U or 5600U/5625U
| <!--IDE-->{{N/A}}
| <!--SATA-->M.2 and 2.5in sata
| <!--Gfx-->Vega 7
| <!--Audio-->HDAudio
| <!--USB-->USB3
| <!--Ethernet-->2 GbE ports
| <!--Test Distro-->
| <!--Comments-->2022 64bit - plastic build - 90w usb-c power - loud at 25W setting -
|-
| <!--Name-->Topton FU02 Fanless Mini PC AMD Ryzen 7 4700U 5600U 5800U 8 Core 16 Threads
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe and 2.5in sata
| <!--Gfx-->Vega
| <!--Audio-->HDAudio
| <!--USB-->4 3.0 with 2 2.0
| <!--Ethernet-->2 x 1G
| <!--Test Distro-->
| <!--Comments-->2022 64 - 2 ddr4 sodimm slots - fanless with copper cube from cpu to metal sheet which gets warm
|-
| <!--Name-->Xuu XR1 Lite (5300u 4c 8t) PRO 5400U MAX 5600U
| <!--IDE-->{{N/A}}
| <!--SATA-->1 NVMe 2242 slot
| <!--Gfx-->Vega 6
| <!--Audio-->HDAudio
| <!--USB-->2 3.0
| <!--Ethernet-->1G
| <!--Test Distro-->
| <!--Comments-->2022 64 quiet fan - very small case no expansions -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->MINISFORUM UM690 Venus Series
| <!--IDE-->{{N/A}}
| <!--SATA-->pcie4 nvme 2280 and 1 sata3 2.5in
| <!--Gfx-->680m RNDA2 12CU with 2 hdmi
| <!--Audio-->HD Audio with codec
| <!--USB-->{{maybe|1 USB4 and 2 USB3.2}}
| <!--Ethernet-->{{No|2.5G LAN}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit 6900hx 8C16T - 2 ddr5 sodimmm - 19v ???W -
|-
| <!--Name-->Beelink Mini PC GTR6
| <!--IDE-->{{N/A}}
| <!--SATA-->PCIe4
| <!--Gfx-->AMD 680M RDNA2
| <!--Audio-->
| <!--USB-->USB3.2
| <!--Ethernet-->{{No|Realtek 2.5GbE or intel i225}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit Ryzen 9 6900HX Zen3+ and a 2gb Radeon 680m 12CU ddr5 sodimm - 19v 120w psu -
|-
| <!--Name-->Asus PN53, Geekom AS 6,
| <!--IDE-->{{N/A}}
| <!--SATA-->pcie gen4 nvme and ata 2.5in
| <!--Gfx-->680m RNDA2 12CU with 2 hdmi and 1 dp
| <!--Audio-->HD Audio with codec
| <!--USB-->{{maybe|2 usb-c, 2 USB2.1 and 3 USB3.2}}
| <!--Ethernet-->{{No|1G LAN}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit 6900hx 8C 16T - 2 slots ddr5 sodimmm (64Gb max) - 19v 120W - 4 retained base screws beware ribbon cable -
|-
| <!--Name-->Micro Computer (HK) Tech Ltd MinisForum UM773 Lite later UM750L slim, GMKtec K2 Mini PC
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe PCIe4.0
| <!--Gfx-->RDNA
| <!--Audio-->HD Audio
| <!--USB-->USB4
| <!--Ethernet-->2.5GbE
| <!--Test Distro-->
| <!--Comments-->2023 2025 64bit - AMD Zen 3+ (8c 16t) Ryzen 7 7735HS, 7840HS and AMD Ryzen 9 7845HX AMD Ryzen™5 7545U (6c12t) - 19v up to 120w ac adapter - ddr5 sodimm 4800Mhz -
|-
| <!--Name-->[https://www.asrockind.com/en-gb/4x4 ASrock 4x4 SBC]
| <!--IDE-->{{N/A}}
| <!--SATA-->sata or nvme
| <!--Gfx-->Vega or 680M
| <!--Audio-->HDAudio
| <!--USB-->USB3 or USB4
| <!--Ethernet-->Realtek 1GbE or intel 2.5GbE
| <!--Test Distro-->
| <!--Comments-->2022 64bit -
|-
| <!--Name-->Beelink Mini PC GTR7 SER7
| <!--IDE-->{{N/A}}
| <!--SATA-->PCIe4 nvme 2280 up to 2Tb
| <!--Gfx-->AMD 780M RDNA3 GPU output on hdmi and dp
| <!--Audio-->HDAudio
| <!--USB-->USB3.2
| <!--Ethernet-->{{No|1 or 2 2.5GbE}}
| <!--Test Distro-->
| <!--Comments-->2023 64bit AMD Phoenix APUs Zen 4 CPU Ryzen 7 7840HS or 9 7940HS (8c 16t) - 19v 5.26A 120w psu - del dios setup f7 choose boot - 2 usb-c on back - up to 64gb via 2 ddr5 sodimm slots -
|-
| <!--Name-->MINISFORUM BD770i Ryzen 7 7745HX (8c16t) or BD795i SE 790i 9 7945HX (16c32t) or F1FXM_MB_V1.1 795M LGA1700 mATX
| <!--IDE-->{{N/A}}
| <!--SATA-->2 NVMe
| <!--Gfx-->Radeon 610m over usb-c, dp or hdmi
| <!--Audio-->HDAudio with codec
| <!--USB-->USB3 with 2 rear USB2
| <!--Ethernet-->Realtek 2.5G
| <!--Test Distro-->
| <!--Opinion-->2024 mini-ITX M/B is the first MoDT (Mobile on Desktop) with soldered AMD CPU - 2 dual PCIe4.0 M.2 slots - 2 ddr5 sodimm slots max 5200Mhz - 8pin cpu power - battery not easily replaceable underneath -
|-
| <!--Name-->Minisforum ms-a1 MS-a2
* 5700G to 8700G apu
* 9955HX
| <!--IDE-->{{N/A}}
| <!--SATA-->2 nvme
| <!--Gfx-->AMD 610M
| <!--Audio-->HDAudio
| <!--USB-->USB3
| <!--Ethernet-->dual 2.5GbE
| <!--Test Distro-->
| <!--Comments-->2024 64bit - 19v ?A round barrel jack - 2 ddr5 so-dimm slots -
|-
| <!--Name-->AOOSTAR GT68
| <!--IDE-->{{N/A}}
| <!--SATA-->Nvme
| <!--Gfx-->680m
| <!--Audio-->HDaudio
| <!--USB-->USB3
| <!--Ethernet-->2 2.5Gb
| <!--Test Distro-->
| <!--Comments-->2025 Ryzen7 Pro 6850H,
|-
| <!--Name-->NextSBC 7840HS
| <!--IDE-->{{N/A}}
| <!--SATA-->Nvme
| <!--Gfx-->AMD 780M 12CU
| <!--Audio-->HDAudio with codec
| <!--USB-->USB4 and USB 3.2
| <!--Ethernet-->2 GbE
| <!--Test Distro-->
| <!--Comments-->2025 64bit - 32Gb soldered -
|-
| <!--Name-->Firebat A6 R7 6800H
| <!--IDE-->{{N/A}}
| <!--SATA-->nvme
| <!--Gfx-->AMD 680M
| <!--Audio-->HDaudio
| <!--USB-->USB3
| <!--Ethernet-->rtl8169
| <!--Test Distro-->
| <!--Comments-->2025 64bit -
|-
| <!--Name-->Minisforum UM760 7640HS
| <!--IDE-->{{N/A}}
| <!--SATA-->nvme
| <!--Gfx-->AMD 760
| <!--Audio-->HDaudio
| <!--USB-->USB4
| <!--Ethernet-->rtl8169 and 2.5Gb
| <!--Test Distro-->
| <!--Comments-->2025 64bit -
|-
| <!--Name-->Peladn WO4 Mini PC
| <!--IDE-->{{N/A}}
| <!--SATA-->nvme
| <!--Gfx-->AMD 760
| <!--Audio-->HDaudio
| <!--USB-->USB3
| <!--Ethernet-->rtl8169
| <!--Test Distro-->
| <!--Comments-->2025 64bit 7640HS - 19v 5.26A 120W -
|-
| <!--Name-->BossGame M4 Neo 7840HS
| <!--IDE-->{{N/A}}
| <!--SATA-->nvme
| <!--Gfx-->AMD 780
| <!--Audio-->HDaudio
| <!--USB-->USB3
| <!--Ethernet-->rtl8169
| <!--Test Distro-->
| <!--Comments-->2025 64bit -
|-
| <!--Name-->Minisforum UM870 || <!--IDE-->{{N/A}} || <!--SATA-->NVme || <!--Gfx-->AMD 780M || <!--Audio-->HDaudio || <!--USB-->USB3 || <!--Ethernet-->2.5GbE || <!--Test Distro--> || <!--Comments-->2025 64bit -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->GEEKOM A8 Max AI Mini PC AMD Ryzen™ 9 8945HS, Ryzen™ 7 8845HS or 8745HS
| <!--IDE-->{{N/A}}
| <!--SATA-->NVme
| <!--Gfx-->AMD 780M
| <!--Audio-->HDAudio with codec
| <!--USB-->{{maybe| USB4}}
| <!--Ethernet-->{{No|Dual 2.5 G Ethernet ports}}
| <!--Test Distro-->
| <!--Comments-->2025 64bit -
|-
| <!--Name-->Beelink SER 9
| <!--IDE-->{{N/A}}
| <!--SATA-->NVme
| <!--Gfx-->Radeon 890M
| <!--Audio-->HDaudio
| <!--USB-->USB4
| <!--Ethernet-->{{No| }}
| <!--Test Distro-->
| <!--Comments-->2025 64bit - Ryzen AI HX 370 strix point -
|-
| <!--Name-->GMKtec EVO-X2 mini pc
| <!--IDE-->{{n/a}}
| <!--SATA-->nvme
| <!--Gfx-->AMD 8060S iGPU RDNA3.5 RADV GFX1151
| <!--Audio-->HDaudio
| <!--USB-->USB4
| <!--Ethernet-->{{No| }}
| <!--Test Distro-->
| <!--Comments-->2025 64bit - amd ryzen AI Max+ 395 (16c32t) strix halo -
|-
| <!--Name-->BosGame M5
| <!--IDE-->{{n/a}}
| <!--SATA-->nvme
| <!--Gfx-->AMD 8060S iGPU RDNA3.5 RADV GFX1151
| <!--Audio-->HDaudio
| <!--USB-->USB4
| <!--Ethernet-->{{No| }}
| <!--Test Distro-->
| <!--Comments-->2025 64bit - amd ryzen AI Max+ 395 (16c32t) -
|-
| <!--Name-->Steam Machine GabeCube
| <!--IDE-->{{N/A}}
| <!--SATA-->nvme
| <!--Gfx-->semi-custom 1080p amd 7600m like with 28cu 8gb ddr6 gddr 10GFlops
| <!--Audio-->hdaudio with codec
| <!--USB-->usb3
| <!--Ethernet-->{{maybe|rtl8169}}
| <!--Test Distro-->
| <!--Comments-->2026 64bit amd 1772 hawk point2 6c12t zen4 avx512 FP7 socket with FCH51 - 16gb ddr5 -
|-
| <!--Name-->AMD Ryzen AI Halo Developer Platform Workstation
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->2026 64bit - amd ryzen AI Max+ 395 (16c32t) -
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|}
===Server Systems===
[[#top|...to the top]]
====IBM====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="15%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->xSeries 206m
| <!--IDE-->{{yes}}
| <!--SATA-->{{yes}}
| <!--Gfx-->{{Maybe|ATI RN50b (VESA only)}}
| <!--Audio-->{{n/a}}
| <!--USB-->{{yes|USB 2.0 (UHCI/EHCI)}}
| <!--Ethernet-->{{no|Broadcom}}
| <!--Test Distro-->Nightly Build 2014-09-27
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
|}
===Motherboard===
[[#top|...to the top]]
* Late 2002, USB2.0 added and slightly better AROS sound support (AC97) appeared
* 2002-2005 and still, to a limited extent, ongoing [http://en.wikipedia.org/wiki/Capacitor_plague bad capacitors]
* Late 2003, ATX PSUs moved from 5V to 12v rails (extra 4pin on motherboard for CPU)
* Late 2005, PCI Express replaced AGP and HDAudio replaced AC97
* Late 2007, ATX PSUs added extra 12V PCI-E connectors and 4+4pin for CPUs
* Late 2010, USB3.0 appears on motherboards or needing a PCI-E motherboard slot
* Late 2014 Hardware USB2 removed from USB3 chipsets
====AMD Sockets====
[[#top|...to the top]]
=====Socket 7 (1997/1999)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->1997 VT82C586B (QFP-208) is the first from VIA with DDMA
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2000 VT82C686 has close to excellent DDMA support
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->SiS 5581/5582
SiS 5591/5595
SiS 530 /5595
SiS 600/5595
SiS 620/5595
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|}
=====Socket A 462 (2001/4)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->[http://www.sharkyextreme.com/hardware/motherboards/article.php/2217921/ABIT-NF7-S-nForce2-Motherboard-Review.htm Abit NF7-S]
| <!--Chipset-->nForce 2
| <!--ACPI-->
| <!--IDE-->2 ports
| <!--SATA-->SIL 3112A
| <!--Gfx-->
| <!--Audio-->{{yes|ALC650 AC97 (Nvidia APU)}}
| <!--USB-->{{yes}}
| <!--Ethernet-->Realtek RTL 8201LB
| <!--Opinion-->Firewire Realtek RTL8801B
|-
| <!--Name-->ASRock K7NF2
| <!--Chipset-->nforce2 ultra 400
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{yes|AGP 8x}}
| <!--Audio-->CMedia CMI 9761A AC'97
| <!--USB-->{{yes}}
| <!--Ethernet-->Realtek 8201
| <!--Opinion-->
|-
| <!--Name-->ASRock K7S8X
| <!--Chipset-->SIS 746FX
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->
| <!--Gfx-->{{yes|AGP 8x}}
| <!--Audio-->{{yes|AC'97 cmedia}}
| <!--USB-->{{maybe|USB2.0 works but does not boot}}
| <!--Ethernet-->{{yes|SiS900}}
| <!--Opinion-->
|-
| <!--Name-->ASRock K7S41GX
| <!--Chipset-->SIS 741GX + DDR 333
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->
| <!--Gfx-->{{maybe|onboard sis does not work with vga or vesa but AGP 8x works}}
| <!--Audio-->{{yes|AC97 SIS 7012}}
| <!--USB-->{{maybe|USB2.0 works but does not boot}}
| <!--Ethernet-->{{yes|SiS 900}}
| <!--Opinion-->works ok
|-
| <!--Name-->[http://www.asus.com ASUS A7N8X]
| <!--Chipset-->nForce2
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->Silicon Image Sil 3112A
| <!--Gfx-->1 AGP slot
| <!--Audio-->{{yes|ac97 ALC650}}
| <!--USB-->{{yes|ehci USB2.0}}
| <!--Ethernet-->{{yes|rtl8201BL - nforce}}
| <!--Opinion-->first total support for AROS in 2004/5 - damocles and M Schulz
|-
| <!--Name-->Biostar M7NCD
| <!--Chipset-->nForce2 Ultra 400
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->{{yes|ALC650 AC97}}
| <!--USB-->
| <!--Ethernet-->{{yes|RTL8201BL}}
| <!--Opinion-->
|-
| <!--Name-->Chaintech 7NJS Ultra Zenith
| <!--Chipset-->nForce2 Ultra 400
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->Promise PDC 20376
| <!--Gfx-->
| <!--Audio-->{{yes|CMI8738}}
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->DFI Lanparty NF2 Ultra
| <!--Chipset-->nForce2 Ultra 400
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->{{no|via ac97 VT1616}}
| <!--USB-->
| <!--Ethernet-->RTL8139C
| <!--Opinion-->
|-
| <!--Name-->ECS N2U400-A
| <!--Chipset-->nForce2 Ultra 400
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->{{no|Cmedia 9379A AC97}}
| <!--USB-->{{yes|usb2.0}}
| <!--Ethernet-->{{no|VIA VT6103L}}
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA7N400L
| <!--Chipset-->nForce2 Ultra 400
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->1 AGP 8x slot
| <!--Audio-->{{yes|AC97 ALC650}}
| <!--USB-->2 USB2.0
| <!--Ethernet-->RTL8100C
| <!--Opinion-->
|-
| <!--Name-->[http://www.gigabyte.lv/products/page/mb/ga-8siml Gigabyte 8SIML]
| <!--Chipset-->SIS 650
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->
| <!--Gfx-->{{maybe|VESA}}
| <!--Audio-->{{yes|AC'97}}
| <!--USB-->{{maybe|working}}
| <!--Ethernet-->{{no|Realtek RTL8100L LAN}}
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Matsonic [http://www.elhvb.com/mobokive/archive/matsonic/manual/index.html Manuals] MS83708E
| <!--Chipset-->SIS730
| <!--ACPI-->
| <!--IDE-->{{yes|SiS 5513}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{maybe|sis 305 no support use VESA}}
| <!--Audio-->{{no|sis7018}}
| <!--USB-->{{no|SiS 7001 USB 1.1 only}}
| <!--Ethernet-->{{yes|SIS900}}
| <!--Opinion-->little support
|-
| <!--Name-->[http://h10025.www1.hp.com/ewfrf/wc/document?docname=bph07585&lc=en&dlc=en&cc=us&dest_page=softwareCategory&os=228&tool=softwareCategory&query=Pavilion%20742n&product=89232 MSI MS-6367 HP 722n 742n (Mambo) (2001/2)]
| <!--Chipset-->Nvidia nforce 220D (2001/2)
| <!--ACPI-->
| <!--IDE-->{{Yes}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->GeForce2 AGP works 2D nouveau only
| <!--Audio-->{{Maybe|AC97 ADI 1885 no volume control on Units 0-3}}
| <!--USB-->{{Yes|4 USB1.1 ports AMD based - front 2 ports iffy}}
| <!--Ethernet-->{{No|nForce}}
| <!--Opinion-->Tested 20th Aug 2012 NB
|-
| <!--Name-->MSI K7N2 [http://us.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=546/ Delta ILSR] Delta-L
| <!--Chipset-->nForce2 (2002/3)
| <!--ACPI-->
| <!--IDE-->{{yes|Primary & Secondary ports}} IDE Tertiary port (RAID)
| <!--SATA-->2 ports (RAID)
| <!--Gfx-->{{yes|when fitted with an agp video card}}
| <!--Audio-->{{yes|ac97 ALC650}}
| <!--USB-->{{yes}}
| <!--Ethernet-->{{yes|rtl8201BL - nforce}}
| <!--Opinion-->runs AROS well. Tested with Icaros 1.2.3
|-
| <!--Name-->MSI K7N2 Delta2-LSR Platinum
| <!--Chipset-->nForce2 (2002/3)
| <!--ACPI-->
| <!--IDE-->{{yes|Primary & Secondary ports}} IDE Tertiary port (RAID)
| <!--SATA-->2 ports (RAID)
| <!--Gfx-->{{yes|when fitted with an agp video card}}
| <!--Audio-->{{No|ac97 ALC655}}
| <!--USB-->{{yes}}
| <!--Ethernet-->{{yes|rtl8201BL - nforce}}
| <!--Opinion-->runs AROS well. Tested with Icaros 1.2.3
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->[http://www.sharkyextreme.com/hardware/motherboards/article.php/2204281/Soltek-SL-75MRN-L-nForce2-Motherboard-Review.htm Soltek 75FRN-L]
| <!--Chipset-->nForce2
| <!--ACPI-->
| <!--IDE-->{{yes|2 ports}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->AGP slot
| <!--Audio-->{{yes|ALC650}}
| <!--USB-->{{yes|2 usb2.0}}
| <!--Ethernet-->{{yes|Realtek RTL8201BL}}
| <!--Opinion-->good support
|-
| <!--Name-->[http://www.3dvelocity.com/reviews/mach4nf2ultra/mach4.htm XFX Pine Mach4 nForce2 Ultra 400]
| <!--Chipset-->nForce2
| <!--ACPI-->
| <!--IDE-->{{yes|3 ports}}
| <!--SATA-->{{maybe|2 ports VIA VT6240}}
| <!--Gfx-->1 AGP 8x slot
| <!--Audio-->{{yes|ALC650}}
| <!--USB-->{{yes|2 USB2.0}}
| <!--Ethernet-->{{yes|RTL8201BL}}
| <!--Opinion-->some support
|-
| <!--Name-->ASUS A7V266
| <!--Chipset-->via KT266A + 8233
| <!--ACPI-->
| <!--IDE-->{{no|issues}}
| <!--SATA-->
| <!--Gfx-->1 AGP slot
| <!--Audio-->AC97 with AD1980 codec
| <!--USB-->via 8233
| <!--Ethernet-->VIA VT6103
| <!--Opinion-->2002 issues with booting
|-
| <!--Name-->Asus A7V8X-X
| <!--Chipset-->VIA KT400
| <!--ACPI-->
| <!--IDE-->{{unk| }}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{yes|agp}}
| <!--Audio-->{{unk|AC97 with ADI AD1980 codec}}
| <!--USB-->{{unk|VIA 8235}}
| <!--Ethernet-->{{unk|Realtek 10/100}}
| <!--Opinion-->2003 not booting for Socket A for AMD Barton/Thoroughbred/Athlon XP/Athlon/Duron 2.25+ GHz CPU - 3 x DDR DIMM Sockets Max. 3 GB -
|-
|}
=====Socket 754 (2004/5)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Abit NF8-V2
| <!--Chipset-->nForce3 250GB (2004/5)
| <!--ACPI-->
| <!--IDE-->{{yes|2 ports}}
| <!--SATA-->{{maybe|2 ports}}
| <!--Gfx-->1 AGP slot x8
| <!--Audio-->ALC658 ac97
| <!--USB-->{{yes|2 USB2.0}}
| <!--Ethernet-->{{no|RTL8201C}}
| <!--Opinion-->a little support but no Firewire VIA VT6306
|-
| <!--Name-->Biostar CK8 K8HNA Pro
| <!--Chipset-->nforce3 150
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->VT6420 thru ide legacy only
| <!--Gfx-->
| <!--Audio-->{{no|AC97 ALC655}}
| <!--USB-->
| <!--Ethernet-->Realtek RTL8110S
| <!--Opinion-->Firewire VT6307 no
|-
| <!--Name-->[http://www.extremeoverclocking.com/reviews/motherboards/Chaintech_ZNF3-150_3.html Chaintech ZNF3-150 Zenith]
| <!--Chipset-->nforce3 150
| <!--ACPI-->
| <!--IDE-->2 ports
| <!--SATA-->{{maybe|Sli3114 SATA via IDE emul}}
| <!--Gfx-->1 AGP slot
| <!--Audio-->{{no|VIA Envy24PT (VT1720) + VT1616}}
| <!--USB-->{{Maybe|2 USB2.0}}
| <!--Ethernet-->{{no|Broadcom GbE 5788}}
| <!--Opinion-->very little support needs PCI cards but no Firewire VIA VT6306
|-
| <!--Name-->DFI Lanparty UT nF3 250GB
| <!--Chipset-->nForce3 250gb
| <!--ACPI-->
| <!--IDE-->2 ports
| <!--SATA-->{{maybe|2 ports nForce3 and 2 Marvell SATA PHY}}
| <!--Gfx-->
| <!--Audio-->{{yes|AC97 ALC850}}
| <!--USB-->{{Maybe|2 USB2.0}}
| <!--Ethernet-->CK8S - Winfast NF3 250K8AA works and Marvell 88E1111 does not work
| <!--Opinion-->2005 some support but no Firewire VIA VT6307
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Gigabyte GA-K8N
| <!--Chipset-->NVIDIA nForce3 150
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->Realtek ALC658 AC97
| <!--USB-->
| <!--Ethernet-->Realtek RTL8100C
| <!--Opinion-->Firewire TI43AB23 no
|-
| <!--Name-->Gigabyte K8NNXP
| <!--Chipset-->nForce3 150
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->Sata sil3512
| <!--Gfx-->
| <!--Audio-->ALC658 AC97
| <!--USB-->
| <!--Ethernet-->RTl8110S
| <!--Opinion-->Firewire TI STB82AA2 no
|-
| <!--Name-->Gigabyte GA-K8NSNXP
| <!--Chipset-->nForce3 250GB
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->SiI 3512 CT128 Sata Sil3515
| <!--Gfx-->
| <!--Audio-->ALC850 AC97
| <!--USB-->
| <!--Ethernet-->{{No|Marvel 88E8001}}
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->MSI K8N Neo-FIS2R
| <!--Chipset-->nVIDIA NF3-250Gb
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->Realtek 7.1 AC'97 ALC850
| <!--USB-->
| <!--Ethernet-->{{No|Marvell 88E1111}}
| <!--Opinion-->
|-
| <!--Name-->[http://techreport.com/articles.x/5748/1 Shuttle AN50R]
| <!--Chipset-->nF3-150
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->Sil 3112
| <!--Gfx-->
| <!--Audio-->ALC650 AC97
| <!--USB-->
| <!--Ethernet-->Nvidia nF3 (10/100) Intel 82540EM Gigabit
| <!--Opinion-->Firewire VT6307 no
|-
| <!--Name--> Foxconn WinFast K8S755A
| <!--Chipset-->SiS755 + SiS964 (DDR333)
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio--> {{yes|AC97}}
| <!--USB-->
| <!--Ethernet--> {{yes|RTL8169}}
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket 939 (2005)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Asus A8N-LA GeForce 6150 LE
| <!--Chipset-->Geforce 6150 (MCP51) + nForce 430 (PC-3200)
| <!--ACPI-->
| <!--IDE-->{{yes|two ATA 133}}
| <!--SATA-->{{maybe|four 3.0GB/s SATAII ports}}
| <!--Gfx-->built in or PCI-E x16
| <!--Audio-->Realtek ALC883 HD Audio
| <!--USB-->6 USB2.0
| <!--Ethernet-->Realtek RTL 8201CL
| <!--Opinion-->
|-
| <!--Name-->Asus A8N-SLI Premium
| <!--Chipset-->NVidia
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{Yes|PCIe slot}}
| <!--Audio-->{{Yes|AC97}}
| <!--USB-->{{Maybe}}
| <!--Ethernet-->{{Yes|nForce LAN but not Marvell}}
| <!--Opinion-->Works well
|-
| <!--Name-->DFI nF4 Ultra-D LanParty - Diamond Flower International sold to BenQ group 2010
| <!--Chipset-->nF4
| <!--ACPI-->
| <!--IDE-->2 ports
| <!--SATA-->4 ports SATA 2
| <!--Gfx-->2 PCIe x16 slots
| <!--Audio-->AC97 with ALC850 codec
| <!--USB-->
| <!--Ethernet-->Dual Gigabit Ethernet, PCIe by Vitesse VSC8201 PHY nee Cicada 8201, PCI by Marvel 88E8001
| <!--Opinion-->2006 64bit - Four 184-pin DDR Dual-Channel Slots - 1 pci on Ultra, 2 pci on sli,
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus A8V E SE
| <!--Chipset-->VIA K8T890 +VT8237R CHIPSET ATX AMD Motherboard with Athlon 64 X2 / Athlon 64 FX / Athlon 64
| <!--ACPI-->{{N/A}}
| <!--IDE-->{{Yes}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{N/A}}
| <!--Audio-->{{Maybe}} AC97 driver using Realtek ALC850 codec
| <!--USB-->{{Yes}} USB 2.0 only
| <!--Ethernet-->{{No}} Marvell 88E8053
| <!--Opinion-->Good base but needs additional PCI cards added for better support
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->ASUS A8V Deluxe (2004)
| <!--Chipset-->VIA K8T800 Pro (DDR400)
| <!--ACPI-->
| <!--IDE-->Promise 20378 2 ports
| <!--SATA-->2 SATA2
| <!--Gfx-->
| <!--Audio-->{{no|VIA VT8233A 8235 8237 AC97}}
| <!--USB-->
| <!--Ethernet-->{{no|Marvell 88E8001 Gigabit}}
| <!--Opinion-->needs extra PCI cards
|-
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->AsRock 939Dual-SATA2
| <!--Chipset-->Ali Uli M1695 PCIe with M1567 AGP
| <!--ACPI-->
| <!--IDE-->2 ports
| <!--SATA-->1 Sata with JMicron JMB360 chip
| <!--Gfx-->1 pci-e and 1 agp
| <!--Audio-->AC97 with ALC850 codec
| <!--USB-->
| <!--Ethernet-->Realtek RTL8201CL PHY ULi 10/100
| <!--Opinion-->64bit pci-e and agp combo on board - 4 ddr slots -
|}
=====Socket AM2 (2006/8) and AM2+ (2007-2010) =====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-M61PME-S2 (rev. 2.x)
| <!--Chipset-->NVIDIA® GeForce 6100 / nForce 430 chipset
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{maybe|VESA 2d for vga}}
| <!--Audio-->{{yes|HDAudio Realtek ALC662 Audio Codec}}
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus M2N61-AR mini itx
| <!--Chipset-->NVIDIA nForce 430
| <!--ACPI-->
| <!--IDE-->1
| <!--SATA-->2
| <!--Gfx-->GeForce 6150SE via vga or 1 pci-e slot
| <!--Audio-->HD Audio with codec
| <!--USB-->Nvidia
| <!--Ethernet-->Nvidia
| <!--Opinion-->2006 32bit - 1 pci - 2 ddr2 dimm slots non-eec -
|-
| <!--Name-->asus m2n68-am se2
| <!--Chipset-->nvidia 630a 630/a MCP68SE
| <!--ACPI-->
| <!--IDE-->1 ports
| <!--SATA-->2 ports MCP61 chipset is SATA over IDE, not SATA over AHCI and reports subsystem as 0x1 IDE, not 0x6 SATA
| <!--Gfx-->{{Yes|nvidia 7025 2d and 3d thru vga}}
| <!--Audio-->{{Yes|hd audio with realtek alc662 codec}}
| <!--USB-->{{Yes| }}
| <!--Ethernet-->{{Yes|nForce chipset RTL 8201CP}}
| <!--Opinion-->2007 64bit Phenom IIX2, Athlon 64 LE X2, Sempron, and Phenom FX processors - ddr2 667Mhz ram max 4Gb -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-MA770-UD3 (rev. 1.0)
| <!--Chipset-->AMD 770 with SB700
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes| }}
| <!--Gfx-->pci-e
| <!--Audio-->{{yes|ALC888 codec }}
| <!--USB-->{{yes|USB2}}
| <!--Ethernet-->{{yes|rtl8169 8111C later 8111D}}
| <!--Opinion-->Good support for AM2+ / AM2 with 4 ddr2 ram - 4 x PCI Express x1, 2 x PCI slots - firewire T.I. TSB43AB23 chip no support -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus M3A32-MVP Deluxe
| <!--Chipset-->AMD 790FX RD790 + SB600
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->{{No|Marvell 88SE6121 SATA II}}
| <!--Gfx-->pci-e 1.1 support
| <!--Audio-->{{No|HD Audio ADI® AD1988}}
| <!--USB-->
| <!--Ethernet-->{{No|Marvell 88E8056}}
| <!--Opinion-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->ASROCK N68-S N68C-S
| <!--Chipset-->AMD based nForce 630a
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->{{yes|slimline DVD drive works}}
| <!--Gfx-->{{maybe|GF 7025 use vesa}}
| <!--Audio-->{{yes|HDAudio for VIA 1708S VT1705}}
| <!--USB-->{{Maybe|echi usb 2.0}}
| <!--Ethernet-->{{no|RTL8201EL / 8201CL - nforce}}
| <!--Opinion-->2008 unbuffered 1066Mhz ddr2 ram - N68C-S may need noacpi added to grub boot line to disable pci temporarily to run as it cannot get to [PCI] Everything OK -
|-
| <!--Name-->Asus M2N68-AM Plus
| <!--Chipset-->Athlon 64, Sempron, Athlon 64 X2, Athlon 64 FX with nvidia 630a
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->no vga, pci-e slot only
| <!--Audio-->{{yes|HD Audio with ALC662 codec}}
| <!--USB-->
| <!--Ethernet-->{{no|RTL8211CL Gigabit LAN}}
| <!--Opinion-->adding "noacpi noapic noioapic" to the GRUB options - Dual channel DDR2 1066, 800, 667 MHz -
|-
| <!--Name-->Gigabyte GA-M68M-S2 (1.0) S2P (2.3) S2L GA-M68SM-S2 (1.x)
| <!--Chipset-->nForce 630a chipset
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->NVIDIA® GeForce 7025, vga (s2 and s2p), dvi (s2l)
| <!--Audio-->ALC883 (S2), ALC888B (S2P), ALC662 (S2L),
| <!--USB-->
| <!--Ethernet-->RTL 8201CL (S2), 8211CL (S2P), 8211BL (S2L),
| <!--Opinion-->2008 64bit possible with AMD AM2+ CPU on AM2 motherboard, the system bus speed will downgrade from HT3.0(5200MHz) to HT1.0(2000 MT/s) spec
|-
| <!--Name-->ASUS M2N68-VM
| <!--Chipset-->nForce 630a (MCP68PVNT)
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Nvidia GeForce ® 7050PV hdmi, dvi and vga
| <!--Audio-->HD audio VIA 1708B codec
| <!--USB-->
| <!--Ethernet-->RTL 8211C
| <!--Opinion-->2008 64bit - ddr2 800Mhz
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket AM3 White socket (2010/11)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Gigabyte GA-MA74GM-S2 GA-MA74GM-S2H
| <!--Chipset-->740g with sb710
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes|bios IDE}}
| <!--Gfx-->Radeon 2100 and pci-e slot
| <!--Audio-->ALC888 (r1.x),ALC888b (r2.0), ALC888B (rev4.x)
| <!--USB-->USB2
| <!--Ethernet-->rtl8169 Realtek 8111C later 8111D
| <!--Opinion-->2010 64bit - 2 x 1.8V DDR2 DIMM sockets max 8 GB - Micro ATX Form Factor 24.4cm x 23.4cm -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->[http://www.vesalia.de/e_aresone2011.htm Aresone 2011]
| <!--Chipset-->760g
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Yes}}
| <!--Gfx-->{{Maybe|no Radeon HD3000 driver yet<br>vesa driver works<br>and add PCIe card}}
| <!--Audio-->{{Yes|HD Audio}}
| <!--USB-->{{Yes|USB2.0}}
| <!--Ethernet-->{{yes}}
| <!--Opinion-->Good support - 4 DDR3 memory sockets -
|-
| <!--Name-->Foxconn A76ML-K 3.0
| <!--Chipset-->AMD 760g rev3.0
| <!--ACPI-->
| <!--IDE-->{{Yes|1 }}
| <!--SATA-->{{Yes|4 in IDE mode }}
| <!--Gfx-->HD3000 with pci-e slot
| <!--Audio-->HDAudio with ALC662-GR codec
| <!--USB-->USB2
| <!--Ethernet-->rtl8169 rtl8111E
| <!--Opinion-->2011 64bit - 2 ddr3 slots - 2 pci slots -
|-
| <!--Name-->GA-MA770T-UD3P (rev. 1.0 to 1.4)
| <!--Chipset-->amd 770 with sb710
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{yes|4 sata}}
| <!--Gfx-->pci-e
| <!--Audio-->{{yes|HDAudio with Realtek ALC888 codec}}
| <!--USB-->{{yes| }}
| <!--Ethernet-->{{yes|rtl8168 rtl8111c/d}}
| <!--Opinion-->2011 64 - 4 ddr3 dimm slots -
|-
| <!--Name-->Gigabyte GA-MA770-UD3 (rev. 2.0 2.1)
| <!--Chipset-->AMD 770 with SB700
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes| }}
| <!--Gfx-->pci-e
| <!--Audio-->{{yes|ALC888 codec }}
| <!--USB-->{{yes|USB2}}
| <!--Ethernet-->{{yes|rtl8169 8111C later 8111D}}
| <!--Opinion-->Good support for AM3 with 4 ddr2 ram - 4 x PCI Express x1, 2 x PCI slots - firewire T.I. TSB43AB23 chip no support -
|-
| <!--Name-->Asus M4A785TD-M PRO
| <!--Chipset-->785G and SB710
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe|ide legacy}}
| <!--Gfx-->{{Maybe|ATI Radeon HD 4200 - use vesa}} or pci-e 2.0 slot
| <!--Audio-->{{Yes|HD Audio}}
| <!--USB-->{{Yes| }}
| <!--Ethernet-->{{Yes| }}
| <!--Opinion-->Good support with 1366 ddr3 ram -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->ASUS M4A88T-I Deluxe ITX
| <!--Chipset-->AMD 880G with AMD SB710
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->Three SATA 3Gbps
| <!--Gfx-->Radeon HD 4350 GPU with HDMI and DVI or One 16x PCI-Express 2.0
| <!--Audio-->HDAudio with Realtek ALC889
| <!--USB-->6 x USB 2, 2 x USB 3
| <!--Ethernet-->{{No|Realtek RTL8112L}}
| <!--Opinion-->2014 64bit - 2 SODIMM DDR3 slots max 8GB
|-
| <!--Name-->Asus M4A88T-M Version E5907 E5826
| <!--Chipset-->AMD 880G SB710
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Radeon 4250
| <!--Audio-->HD Audio with VIA VT 1708S codec
| <!--USB-->
| <!--Ethernet-->Realtek rtl8169 8111E
| <!--Opinion-->2010 64bit -
|-
| <!--Name-->GigaByte 890GPA-UD3H
| <!--Chipset-->AMD 890GX together with SB850
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->Yes
| <!--Gfx-->use pci-e nvidia
| <!--Audio-->Maybe - ALC892 rev. 1.0, ALC892 rev 2.1, ALC889 rev. 3.1
| <!--USB-->Yes
| <!--Ethernet-->Yes
| <!--Opinion-->works well overall
|-
| <!--Name-->Gigabyte GA-890FXA-UD7
| <!--Chipset-->AMD 890FX with SB850
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes|IDE }}
| <!--Gfx-->
| <!--Audio-->ALC889 (rev 2.x)
| <!--USB-->{{Yes|AMD USB2 but limited with NEC D720200F1 USB3}}
| <!--Ethernet-->2 x Realtek 8111D
| <!--Opinion-->2012 64bit - XL-ATX Form Factor 32.5cm x 24.4cm - 4 ddr3 slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI 890GXM-G65
| <!--Chipset-->890GX + SB750
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->{{Maybe|legacy}}
| <!--Gfx-->{{Maybe|ATI 4290 built-in (vesa)}}
| <!--Audio-->{{Maybe|ALC889 DD GR}} HD Audio crackles
| <!--USB-->{{Yes}}
| <!--Ethernet-->{{Yes|RTL 8169}}
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->ASRock N68-VS3 FX
| <!--Chipset-->NVIDIA® GeForce 7025 / nForce 630a
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 Sata2
| <!--Gfx-->Integrated NVIDIA® GeForce 7025
| <!--Audio-->HD Audio with VIA® VT1705 Codec
| <!--USB-->USB2
| <!--Ethernet-->Realtek PHY RTL8201EL
| <!--Opinion-->2010 64bit - 2 x DDR3 DIMM slots -
|-
| <!--Name-->MSI GF615M-P35 MS-7597
| <!--Chipset-->NVIDIA® nForce 430
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->GeForce 6150SE
| <!--Audio-->{{Maybe|HD Audio with Realtek® ALC888S}}
| <!--USB-->{{No|freezes}}
| <!--Ethernet-->{{No|Realtek 8211CL}}
| <!--Opinion-->2010 64bit
|-
| <!--Name-->Gigabyte GA-M68MT-S2
| <!--Chipset--> nForce 630a
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->NVIDIA® GeForce 7025 vga
| <!--Audio-->ALC888B (1.3), ACL887 (3.1),
| <!--USB-->
| <!--Ethernet-->RTL8211CL (all)
| <!--Opinion-->2010 64bit possible, AMD AM3 CPU on this motherboard, the system bus speed will downgrade from HT3.0 (5200MT/s) to HT1.0 (2000 MT/s) spec
|-
| <!--Name-->Gigabyte GA-M68MT-S2P
| <!--Chipset--> nForce 630a
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->NVIDIA® GeForce 7025 vga
| <!--Audio-->ALC888B (1.x 2.x), ALC889 (3.0), ALC888B/889 (3.1),
| <!--USB-->
| <!--Ethernet-->RTL8211CL (all)
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus M4N78 PRO
| <!--Chipset-->NVIDIA GeForce 8300
| <!--ACPI-->
| <!--IDE-->1 xUltraDMA 133/100
| <!--SATA-->6 xSATA 3 Gbit/s ports
| <!--Gfx-->Integrated NVIDIA® GeForce® 8 series GPU with 1 PCIe 2.0 slot
| <!--Audio-->HD Audio with VIA1708S 8 -Channel codec
| <!--USB-->12 USB 2.0 ports (8 ports at mid-board, 4 ports at back panel)
| <!--Ethernet-->NVIDIA Gigabit
| <!--Opinion-->4 x DIMM, Max. 16 GB, DDR2 1200(O.C.)/1066*/800/667 ECC,Non-ECC,Un-buffered Memory - ATX Form Factor 12 inch x 9.6 inch ( 30.5 cm x 24.4 cm ) -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|}
=====Socket AM3+ Black socket (2012/15)=====
*095W FX-6300 FD6300WMHKBOX (bulldozer SSE4.1 AVX) 970 mobos with FX-8320E 8core Black Editions FD832EWMHKBOX FX-8370E (Vishera/Piledriver)
*125W FX-6310 (bulldozer) 970 mobos with FX-8320 FX-8350 FX-8370 (Vishera/Piledriver)
*220W 990FX mobos with FX-9000 FX-9370 FX-9590
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->ASUS M5A78L-M LX3
| <!--Chipset-->AMD 760G with SB710
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{Yes|bios IDE mode}}
| <!--Gfx-->HD3000 with pci-e slot
| <!--Audio-->HDAudio with ALC887, V? ALC892 codecs
| <!--USB-->USB2
| <!--Ethernet-->{{No|Qualcomm Atheros 8161/8171 add realtek 8111? pci-e card}}
| <!--Opinion-->2012 64bit - uATX Form Factor 9.6 inch x 7.4 inch ( 24.4 cm x 18.8 cm ) - 2 x DIMM, Max. 16GB, DDR3 -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-78LMT-S2P
| <!--Chipset-->AMD 760G and SB710
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{yes|6 SATA2 ports}}
| <!--Gfx-->GT240 and a nv7900gs, both pci-e
| <!--Audio-->{{Maybe|ALC889 (r3.1), ALC??? (rev. 4.0), ALC887 (r5.x)}}
| <!--USB-->4 USB2
| <!--Ethernet-->{{Maybe|Realtek 8111E (r3.1), Atheros (rev4.0), Atheros (r5.x) }}
| <!--Opinion-->2012 offers very poor control over its EFI vs. BIOS booting partition features
|-
| <!--Name-->Gigabyte GA-78LMT-USB3 (r3.0), (r4.1 Blue board), (r5.0 dark board), (rev6 dark mobo)
| <!--Chipset-->AMD 760G and SB710
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes|Bios IDE mode for SATA2 on early ones}}
| <!--Gfx-->AMD HD3000, pci-e GT240 and a nv7900gs
| <!--Audio-->{{Maybe|ALC??? (r3.0), ALC887 (r4.1), VIA VT2021 (r5.0), Realtek® ALC892 codec (rev6) }}
| <!--USB-->{{yes|AMD USB2 but not VIA® VL805 USB3}}
| <!--Ethernet-->Realtek GbE
| <!--Opinion-->2013 64bit - Micro ATX Form Factor 24.4cm x 24.4cm - 4 x DDR3 DIMM sockets -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI 760GM
| <!--Chipset-->ATI 760G plus SB710
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{yes| }}
| <!--Gfx-->HD3000 Use Vesa
| <!--Audio-->{{Maybe|P33 VT1705; P34, P21 and P23 (FX) MS7641 v3.0 ALC887, E51 ALC892}}
| <!--USB-->{{yes| }}
| <!--Ethernet-->{{Yes|Realtek}}
| <!--Opinion-->P23 issues with audio ALC887 crackles thru earphones -
|-
| <!--Name-->Gigayte GA-MA770T-UD3P (rev. 3.1)
| <!--Chipset-->amd 770 with sb710
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata
| <!--Gfx-->pci-e slot
| <!--Audio-->HDaudio with Realtek ALC888/892 codec
| <!--USB-->
| <!--Ethernet-->rtl8169 rtl8111d/e
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->ASRock 890FX Deluxe5 Extreme3
| <!--Chipset-->AMD 890FX + AMD SB850 or SB950 (Extreme3)
| <!--ACPI-->
| <!--IDE-->{{Yes}}
| <!--SATA-->{{Yes}}
| <!--Gfx-->{{N/A}}
| <!--Audio-->{{Maybe|ALC892}}
| <!--USB-->{{Yes}}
| <!--Ethernet-->{{Yes|RTL8111E rtl8169}}
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus M5A97 R2.0 EVO
| <!--Chipset-->AMD 970 and SB950
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->Asmedia SATA Controller
| <!--Gfx-->n/a
| <!--Audio-->HDAudio with Realtek ALC887 (LE), ALC887 (Regular), ALC892 (EVO) codec
| <!--USB-->4 USB 2.0 and 2 Asmedia USB3.0 Controller
| <!--Ethernet-->Realtek 8111F
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-970A-D3
| <!--Chipset-->AMD 970 with SB950
| <!--ACPI-->
| <!--IDE-->{{Yes| }}
| <!--SATA-->{{Yes|IDE mode}}
| <!--Gfx-->pci-e
| <!--Audio--> ALC??? (rev. 1.0/1.1), ALC887 (rev1.2), VIA VT2021 codec (rev 1.3 1.4 and rev3.0)
| <!--USB-->{{yes|AMD USB2 but not Etron EJ168 chip (USB3)}}
| <!--Ethernet-->Realtek GbE 8111E (all revisions),
| <!--Opinion-->2015 64bit - ATX Form Factor 30.5cm x 22.4cm - 4 x 1.5V DDR3 DIMM sockets -
|-
| <!--Name-->MSI 970 Gaming
| <!--Chipset-->970FX SB950
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->Realtek® ALC1150 Codec
| <!--USB-->6 usb2 with 2 USB3 VIA VL806 Chipset
| <!--Ethernet-->Killer E2205 Gigabit LAN
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus M5A99X EVO
| <!--Chipset-->990X - RD980 with SB920
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->2 pci-e gen ?
| <!--Audio-->HDAudio with ALC892 codec
| <!--USB-->
| <!--Ethernet-->rtl8169 realtek 8111e
| <!--Opinion-->2012 64bit -
|-
| <!--Name-->Gigabyte GA-990XA-UD3
| <!--Chipset-->AMD 990 with SB950
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes| }}
| <!--Gfx-->
| <!--Audio-->ALC889 (rev 1.x, 3.0, 3.1),
| <!--USB-->{{yes|AMD USB2 not 2 x Etron EJ168 chips for USB3}}
| <!--Ethernet-->realtek rtl8169 8111e
| <!--Opinion-->2012 64bit - ATX Form Factor; 30.5cm x 24.4cm - 4 ddr3 slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====AMD Fusion (2011/14)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| 1.2GHz single Bobcat Fusion C30 + Hudson M1
| ACPI
| IDE
| SATA
| AMD 6250
| Audio
| USB
| Ethernet
| <!--Opinion-->2011 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2011 64bit does not support AVX or SSE 4.1 -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| Asus E35M1-M PRO uATX
| 1.6GHz 18W AMD Fusion E-350 dual core + Hudson M1
| ACPI
| {{N/A}}
| SATA
| AMD 6310 - no HD driver yet
| ALC887 VD2
| USB
| RTL8111E
| 2011 64bit does not support AVX or SSE 4.1 - EFI bios - pci slot -
|-
| Asus E35M1-I Deluxe miniITX
| 1.6GHz dual AMD Fusion E350 + Hudson M1 + DDR3
| ACPI
| {{N/A}}
| SATA
| AMD 6310 - no HD driver yet
| ALC892
| USB
| Realtek 8111E
| 2011 64bit does not support AVX or SSE 4.1 - no support for Atheros AR5008 on a Mini PCI-E - 1 pci slot -
|-
| ASRock E350M1 / USB3 (also version with USB3.0 added)
| 1.6GHz dual AMD Fusion E350 + Hudson M1
| ACPI
| {{N/A}}
| SATA - 4 SATA3
| {{Maybe|AMD 6310 - use vesa with hdmi and dvi}}
| {{Yes|Audio ALC892 playback but no HDMI output}}
| USB - 4 USB2.0 and 2 USB3.0
| {{Yes|rtl8169 for Realtek rtl8111E}}
| 2011 64bit does not support AVX or SSE 4.1 - 1 pci-e 2.0 x4 slot - f2 or del bios, f11 boot select -
|-
| <!--Name-->Gigabyte GA-E350N-USB3 mini-ITX
| <!--Chipset--> Hudson M1 FCH
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 SATA3
| <!--Gfx--> plus HDMI, DVI
| <!--Audio-->ALC892
| <!--USB-->2 NEC USB3.0 with 4 USB2.0
| <!--Ethernet-->rtl8169 for Realtek rtl8111E
| <!--Opinion-->2011 64bit does not support AVX or SSE 4.1 - 1 pci slot -
|-
| <!--Name-->Gigabyte GA-E350N Win8 V1.0
| <!--Chipset-->Hudson M1 FCH A45
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 SATA3
| <!--Gfx-->{{maybe|Use VESA - AMD 6310 plus HDMI, DVI}}
| <!--Audio-->{{yes|ALC887 playback through headphones but not thru hdmi}}
| <!--USB-->{{maybe|4 USB2.0 needs more testing}}
| <!--Ethernet-->{{yes|rtl8169 for Realtek 8111e}}
| <!--Opinion-->2011 64bit does not support AVX or SSE 4.1 - works well but need to test with sata hard disk
|-
| <!--Name-->MSI E350IA-E45
| <!--Chipset-->e-350 + Hudson M1 + DDR3
| <!--ACPI-->no support
| <!--IDE-->{{N/A}}
| <!--SATA-->4 Sata3 ports
| <!--Gfx-->AMD 6310 gpu
| <!--Audio-->ALC HDA
| <!--USB-->6 USB2.0 and 2 USB3.0 through NEC 720200 chipset
| <!--Ethernet-->Realtek RTL8111E
| <!--Opinion-->2011 64bit does not support AVX or SSE 4.1 -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->ASUS E45M1-M PRO
| <!--Chipset-->E450 APU with Hudson M1
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->ALC887
| <!--USB-->
| <!--Ethernet-->Realtek
| <!--Opinion-->2011 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->ASUS E45M1-I Deluxe
| <!--Chipset-->E-450 together
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->ALC892
| <!--USB-->
| <!--Ethernet-->Realtek 8111E
| <!--Opinion-->2011 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket FM1 (2011/13)=====
On board Graphic on CPU - HD6410D, HD6530D, HD6550D,
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->ASUS F1A55-M LE
| <!--Chipset--> with AMD A55 FCH (Hudson D2)
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->6 x SATA 3Gbit/s port(s), blue Support Raid 0, 1, 10, JBOD
| <!--Gfx-->PCI-e 2.0 slot or Integrated AMD Radeon™ HD 6000 in Llano APU
| <!--Audio-->Realtek® ALC887 Audio CODEC
| <!--USB-->6 USB2.0 ports
| <!--Ethernet-->Realtek 8111E rtl8169
| <!--Opinion-->2012 2011 64bit does not support AVX or SSE 4.1 - A-Series/E2- Series APUs up to 4 cores - 2 x DIMM, Max. 32GB, DDR3 2250(O.C.)/1866/1600/1333/1066 MHz Non-ECC, Un-buffered Memory Dual Channel Memory Architecture -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket FM2 White Socket (2012/13)=====
Onboard Gfx on CPU - HD6570, HD7480D, HD7540D,
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->A75 A85X
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2012 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket FM2 Plus Black socket (2013/15)=====
Onboard Gfx on CPU - HD6570, HD7480D, HD7540D,
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->A88X
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket AM1 FS1b socket (2014/1x)=====
5350 4 core Jaguar cores 2GHz with Integrated AMD Radeon R Series Graphics in the APU Kabini [Radeon HD 8400]
Later Beema APU with 2/4 core Puma (slightly updated Jaguar) cores, GCN graphics and a compute capable Radeon core, along with a brand new AMD security processor and FT3 BGA packaging (probably best avoided for long term survival).
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->ASUS AM1I-A
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HD Audio Realtek® ALC887-VD
| <!--USB-->
| <!--Ethernet-->Realtek 8111GR 8168
| <!--Opinion-->2011 64bit may support AVX or SSE 4.1 -
|-
| <!--Name-->MSI AM1I
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HD Audio ALC887
| <!--USB-->
| <!--Ethernet-->Realtek 8111G
| <!--Opinion-->
|-
| <!--Name-->MSI AM1M
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HD Audio ALC887
| <!--USB-->
| <!--Ethernet-->Realtek 8111G
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->BGA FT3 AM1x
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket AM4 FM3 Summit Ridge Zen Zen+ (2016/22)=====
Jim Keller’s group designed x86 Zen CPU - new and covering the same AM4 platform/socket for desktop
Zen will also shift from Bulldozer’s Clustered Multithreading (CMT) to Simultaneous Multithreading (SMT, aka Intel’s Hyperthreading). CMT is the basis for Bulldozer’s unusual combination of multiple integer cores sharing a single FPU within a module, so the move to SMT is a more “traditional” design for improving resource usage
Trusted Platform Module, or fTPM, that Windows 11 requires. Ryzen processors using a firmware TPM are causing stutters, even when doing mundane tasks. To enable TPM 2.0 on your AMD system please follow the steps below.
<pre>
Power on system and press DEL or F2 to get into the BIOS.
Navigate to Advanced\CPU Configuration.
Enable AMD fTPM switch.
Press F10 to save changes.
</pre>
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Asus ROG Crosshair VI Hero
| <!--Chipset-->X370
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e 3.0 (1x16 or 2x8)
| <!--Audio-->SupremeFX audio features an S1220 codec
| <!--USB-->
| <!--Ethernet-->Intel I211
| <!--Opinion-->Ryzen 7 1800X 1700X
|-
| <!--Name-->Biostar X370gtn Itx Am4
| <!--Chipset-->AMD X370
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->HDAudio with ALC892
| <!--USB-->
| <!--Ethernet-->Realtek Dragon LAN RTL8118AS
| <!--Opinion--> 2 ddr4 slots
|-
| <!--Name-->Gigabyte GA-AX370 K7
| <!--Chipset--> X370
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->HDAudio with 2 x Realtek® ALC1220 codec 0x10EC, 0x0295
| <!--USB-->
| <!--Ethernet-->1 intel and 1 E2500
| <!--Opinion--> 4 ddr4 slots
|-
| <!--Name-->MSI Xpower Gaming Titanium
| <!--Chipset--> X370
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->8-channel Realtek 1220 Codec 0x10EC, 0x0295
| <!--USB-->ASMedia® ASM2142 and amd cpu
| <!--Ethernet-->1 x Intel® I211AT Gigabit LAN
| <!--Opinion--> 2 ddr4 slots
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus Prime B350 Plus ATX
| <!--Chipset-->B350
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx--> x PCIe 3.0/2.0 x16 (x16 mode)
| <!--Audio-->Realtek® ALC887 8-Channel
| <!--USB-->
| <!--Ethernet-->Realtek® RTL8111H
| <!--Opinion-->Ryzen 5 1600x 1600 1500X 1400 - 4 x DIMM Max 64GB, DDR4 up to 2666MHz ECC and non-ECC Memory - ATX 12 inch x 9.35 inch ( 30.5 cm x 23.7 cm ) - 2 pci
|-
| <!--Name-->Asus PRIME B350M-A/CSM Micro ATX
| <!--Chipset-->AMD B350
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->HDaudio with
| <!--USB-->
| <!--Ethernet-->Realtek LAN
| <!--Opinion-->Ryzen 3 1300x 1200 1100
|-
| <!--Name-->AsRock Pro4 AB350
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->2 PCIe 3.0 x16, 4 PCIe 2.0 x1
| <!--Audio-->Realtek ALC892
| <!--USB-->
| <!--Ethernet-->Realtek
| <!--Opinion-->2017 64bit -
|-
| <!--Name-->ASRock AB350 Gaming-ITX/ac
| <!--Chipset--> B350
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->Intel LAN
| <!--Opinion-->
|-
| <!--Name-->MSI B350 Tomahawk Arctic Mortar
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->1 x PCIe 3.0 x16 (x16 mode)
| <!--Audio-->Realtek ALC892
| <!--USB-->
| <!--Ethernet-->Realtek RTL8111H
| <!--Opinion-->white and grey colours - 2 pci-e and 2 pci slots - m.2 in middle - atx 12 in by 9.6 in and matx versions -
|-
| <!--Name-->Jginyue M-ATX B350M-TI
| <!--Chipset-->B350
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Jginyue B350I-Plus ITX
| <!--Chipset-->B350
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->ASRock A320M-ITX MINI ITX Rev1.0 Rev2 Rev2.1
| <!--Chipset-->A320
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2018
|-
| <!--Name-->Asus PRIME A320M-C R2.0 rev1.1 A320M-K
| <!--Chipset-->A320 A/B300 SFF
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->PCIe 3.0
| <!--Audio-->HD audio with Realtek ALC887 alc897 CODEC
| <!--USB-->2 usb 3.1 gen 1
| <!--Ethernet-->Realtek 8111E
| <!--Opinion-->2019 64bit - 3rd/2nd/1st Gen AMD Ryzen™ / 2nd and 1st Gen AMD Ryzen™ with Radeon™ Vega
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI A320M-A PRO MicroATX
| <!--Chipset-->AMD A320
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->pci-e 3.0
| <!--Audio-->HDAudio Realtek® ALC892
| <!--USB-->USB3
| <!--Ethernet-->Realtek® 8111H
| <!--Opinion-->2019 64bit -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus ROG X399 Zenith Extreme
| <!--Chipset-->AMD X399
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio--> supremefx s1220
| <!--USB-->
| <!--Ethernet-->intel
| <!--Opinion-->Threadripper 1950X 1920X 1900X TR4 skt
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->AsRock Fatality X470 Gaming K4 mATX
| <!--Chipset-->X470
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->nvme
| <!--Gfx-->pci-e rebar possible
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->intel
| <!--Opinion-->
|-
| <!--Name-->Asrock Fatal1ty X470 Gaming-ITXac AMD AM4
| <!--Chipset-->AMD X470
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->intel
| <!--Comments-->
|-
| <!--Name-->ASUS ROG STRIX X470-I GAMING AM4 ITX Motherboard
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus B450-I Gaming
| <!--Chipset-->AMD B450
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->high VRM temps - raven ridge 14nm+ like 2200G 2400G
|-
| <!--Name-->AsRock B450 Gaming K4
| <!--Chipset-->B450
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio--> alc892
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion--> 4 ddr4 slots - low VRM thermals 3900x 3950x
|-
| <!--Name-->Gigabyte B450 I Aorus Pro Wifi
| <!--Chipset-->AMD B450
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->1 nvme pcie3 with 4 sata
| <!--Gfx-->pcie
| <!--Audio-->HDAudio with Realtek® ALC1220-VB codec
| <!--USB-->
| <!--Ethernet-->Intel LAN
| <!--Opinion-->very high vrm temps
|-
| <!--Name-->Jginyue B450i Gaming ITX
| <!--Chipset-->B450
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata3 - none nvme
| <!--Gfx-->pcie3
| <!--Audio-->HDAudio
| <!--USB-->
| <!--Ethernet-->1G
| <!--Opinion-->2021 64 2nd 3rd AMD - 2 ddr4 dimm slots
|-
| <!--Name-->MSI b450 tomahawk max
| <!--Chipset--> b450
| <!--ACPI-->
| <!--IDE-->{{n/A}}
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->HD audio with Realtek® ALC892 Codec
| <!--USB-->
| <!--Ethernet-->Realtek 8111H
| <!--Opinion-->
|-
| <!--Name-->MSI B450 Pro Carbon
| <!--Chipset-->B450
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio--> ALC codec
| <!--USB-->
| <!--Ethernet-->Intel LAN
| <!--Opinion-->
|-
| <!--Name-->MSI B450-A PRO
| <!--Chipset-->B450
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->ALC892
| <!--USB-->
| <!--Ethernet-->rtl8169 8111h
| <!--Opinion-->
|-
| <!--Name-->MSI B450I GAMING Plus AC ITX
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2019 - 2nd and 3rd gen AMD - 2 ddr4 slots -
|-
| <!--Name-->MSI B450 GAMING PLUS MAX
| <!--Chipset-->B450
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HDAudio with Realtek® ALC892/ALC897 Codec
| <!--USB-->USB3
| <!--Ethernet-->rtl8169 8111H
| <!--Opinion-->
|-
| <!--Name-->MAXSUN AMD Challenger B450M M-ATX (aka Soyo)
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->ASRock X570 PHANTOM GAMING-ITX/TB3 Mini ITX AM4
| <!--Chipset-->X570
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->nvme
| <!--Gfx-->PCIe 4.0
| <!--Audio--> ALC1200
| <!--USB-->
| <!--Ethernet-->Intel LAN
| <!--Comments-->
|-
| <!--Name-->Asus ROG Crosshair VIII Dark Hero
| <!--Chipset-->AMD X570
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio--> SupremeFX7.1 codec
| <!--USB-->
| <!--Ethernet-->Intel® I211-AT and Realtek® RTL8125-CG 2.5G LAN
| <!--Opinion-->
|-
| <!--Name-->Asus ROG Strix X570-I Gaming Mini ITX AM4 Motherboard
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI MPG X570 Gaming Plus
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio--> alc1220 codec
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus ROG Strix B550-i AM4 ITX Motherboard
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2022 -
|-
| <!--Name-->Jginyue Jingyue B550i Gaming itx
| <!--Chipset-->B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->3 with 1 nvme
| <!--Gfx-->1 pci-e 4
| <!--Audio-->HDAudio alc
| <!--USB-->
| <!--Ethernet-->1G
| <!--Comments-->2022 64bit max of Ryzen 5500 (c t), 5600, 5600g (6c12t) - 2 ddr4
|-
| <!--Name-->Asrock B550 PHANTOM GAMING ITX/AX
| <!--Chipset-->AMD B550
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx--> pci-e
| <!--Audio-->HDAudio with alc1220 codec
| <!--USB-->USB3
| <!--Ethernet-->{{no|intel 2.5G}}
| <!--Comments-->
|-
| <!--Name-->AsRock B550M-ITX/ac
| <!--Chipset-->B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HDAudio with Realtek ALC887 ALC897 Audio Codec
| <!--USB-->
| <!--Ethernet-->Realtek Gigabit LAN
| <!--Opinion-->2022 - 2 ddr4 slots
|-
| <!--Name-->AsRock ASRock B550M-HDV
| <!--Chipset-->B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->nvme and sata3
| <!--Gfx-->pci-e 4.0
| <!--Audio-->HDAudio with Realtek ALC887 or ALC897 Audio Codec unknown
| <!--USB-->usb3
| <!--Ethernet-->{{yes|rtl8169 Realtek rtl8111h Gigabit LAN}}
| <!--Opinion-->2022 - 2 ddr4 slots - 1 pcie x1 slot -
|-
| <!--Name-->Asus ROG STRIX B550-A GAMING
| <!--Chipset-->B550
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->PCIe Gen4 x4 & SATA3
| <!--Gfx-->pci-e 4
| <!--Audio--> supremefx S1220A
| <!--USB-->
| <!--Ethernet-->{{No|Intel® I225-V 2.5Gb}}
| <!--Opinion-->
|-
| <!--Name-->Gigabyte AMD B550I AORUS PRO AX Mini-ITX rev 1.0
| <!--Chipset-->AMD B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2 nvme pci-e3 with 4 sata3
| <!--Gfx-->pci-e
| <!--Audio-->Realtek® ALC1220-VB codec
| <!--USB-->
| <!--Ethernet-->{{no|Realtek® 2.5GbE LAN}}
| <!--Opinion-->2021 2 x DDR4 DIMM sockets 1Rx8/2Rx8/1Rx16 -
|-
| <!--Name-->Gigabyte B550 AORUS ELITE AX V2 ATX
| <!--Chipset-->B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->PCI-e 4.0 DP and hdmi
| <!--Audio-->HDAudio ALC1200
| <!--USB-->USB3 USB 3.2 Gen1 Type-C
| <!--Ethernet-->{{No|2.5GbE LAN}}
| <!--Opinion-->2022 64bit- finer tuning than A520's - AMD Ryzen 5000 Series/ 3rd Gen Ryzen and 3rd Gen Ryzen with Radeon Graphics CPU - Dual Channel ECC/ Non-ECC Unbuffered DDR4, 4 DIMMs -
|-
| <!--Name-->Gigabyte B550M DS3H mATX
| <!--Chipset--> B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2 NVMe
| <!--Gfx-->PCI-e 4.0
| <!--Audio-->HDaudio ALC887
| <!--USB-->USB3
| <!--Ethernet-->realtek rtl8118
| <!--Opinion-->2021 64bit - 4 ddr4 dimms -
|-
| <!--Name-->MSI MPG B550 GAMING PLUS ATX
| <!--Chipset--> B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->PCI-e 4.0
| <!--Audio-->HDAudio ALC892
| <!--USB-->USB 3
| <!--Ethernet-->rtl8169 Realtek 8111H
| <!--Opinion-->2022 64bit - 3rd Gen AMD Ryzen Processors - 4 dimm ddr4 -
|-
| <!--Name-->MSI MAG B550 TOMAHAWK ATX
| <!--Chipset--> B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe 1 x M.2, Socket 3, M Key (up to Type 22110) and 1 x M.2, Socket 3, M Key (Type 2242/2260/2280)
| <!--Gfx-->PCI-e 4.0 with dp and hdmi
| <!--Audio-->HDaudio ALC1200
| <!--USB-->USB3 1 x USB 3.1 Type-C and 1 x USB 3.1 Type-A
| <!--Ethernet-->Realtek RTL8125B and Realtek RTL8111H
| <!--Opinion-->2022 64bit - 4 Dimm slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Jginyue A520M-H mATX
| <!--Chipset-->A520
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion--> old bios with random issues with APU ryzens -
|-
| <!--Name-->Gigabyte A520M S2H mATX
| <!--Chipset-->AMD A520
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HDAudio
| <!--USB-->
| <!--Ethernet-->Realtek 1GbE
| <!--Opinion-->2022 64bit Zen3 65W and up - 2 ddr4 -
|-
| <!--Name-->Gigabyte A520I AC mITX mini-itx
| <!--Chipset-->AMD A520
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HDAudio
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2022 64bit Zen3 65W and up 5600G (6c12t) or 5700G (8c16t) - 2 ddr4 dimm slots -
|-
| <!--Name-->MSI A520M-A PRO mATX
| <!--Chipset-->A520
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe 1 x M.2, Socket 3, M Key (Type 2242/2260/2280)
| <!--Gfx-->PCI-e 3.0
| <!--Audio-->HDAudio ALC892
| <!--USB-->USB3
| <!--Ethernet-->rtl8169 rtl8111H
| <!--Opinion-->2022 64bit - 2 ddr4 dimm slots - 3rd Gen AMD Ryzen Desktop and AMD Ryzen 4000 G-Series CPU
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|}
===== (Socket AM5 LGA1718 Zen4 Zen5 Zen6 2022/27)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Asrock Steel Legend
| <!--Chipset-->x670e
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->PCI-e rnda2
| <!--Audio-->HD audio
| <!--USB-->USB3
| <!--Ethernet-->
| <!--Opinion-->2022 64bit - ddr5 ecc (10 chip) and non-ecc (8 chips) 64Gb @ 6000Mhz or 128GB @ 4800Mhz -
|-
| <!--Name-->Asrock TaiChi
| <!--Chipset-->x670e
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->PCI-e rnda2
| <!--Audio-->HD Audio
| <!--USB-->USB4 with Thunderbolt 4 equivalent
| <!--Ethernet-->{{No|Realtek killer E3000 2.5GbE}}
| <!--Opinion-->2022 64bit - ddr5 ecc (10 chip) and non-ecc (8 chips)
|-
| <!--Name-->Asus ROG Crosshair Hero
| <!--Chipset-->x670e
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe rnda2
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2022 64bit
|-
| <!--Name-->
| <!--Chipset-->x670e
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->rnda3
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2022 64bit 7950x3d 120W, 7900 7800 7600 90W
|-
| <!--Name-->
| <!--Chipset-->x670e
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->rnda3
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2022 64bit
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus B650E-I
| <!--Chipset-->B650
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->pci-e 5
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2023 - better sound with an actual AMP, PCIe 5, USB-C display outs -
|-
| <!--Name-->
| <!--Chipset-->x650 B650
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->x650 B650
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->x650 B650
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MAXSUN AMD Challenger B650M WIFI M-ATX (aka Soyo)
| <!--Chipset-->B650
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI b650i mini itx
| <!--Chipset-->B650
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->pci-e 4
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->Realtek
| <!--Opinion-->2023 - front panel connectors at the back of the board - dead rear nvme slot and a drained CMOS battery as the CMOS button being pressed during shipping -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->A620M Zen4
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->A620M
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->A620M
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->A620M
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset--> Zen5
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset--> Zen6
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name--> || <!--Chipset--> || <!--ACPI--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Opinion-->2026 FP8 Zen 6 Medusa Point 4bigC, 4 econC, 2lpC, 8coreGPU -
|-
| <!--Name--> || <!--Chipset--> || <!--ACPI--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Opinion-->2026 FP10 Zen 6 Medusa Point 4bigC, 4 econC, 2lpC, 8coreGPU -
|-
|}
===== (Zen7 AM6 2027/3x)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
===== (Zen AM 203x/3x)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
====Intel Sockets====
[[#top|...to the top]]
=====Socket 370 (2000/2)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Intel D815EEA
| <!--Chipset-->866Mhz P3 and i815 chipset
| <!--ACPI-->
| <!--IDE-->{{Yes}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{Yes|Nvidia AGPx8 6200LE added}}
| <!--Audio-->{{N/A}}
| <!--USB-->{{Yes|2 USB1.1}}
| <!--Ethernet-->{{N/A}}
| <!--Opinion-->Tested AspireOS 1.7, simple basic board with useful 5 PCI slots
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|}
=====Socket 478 (2002/4)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->[http://translate.google.co.uk/translate?hl=en&sl=zh-CN&u=http://detail.zol.com.cn/motherboard/index46381.shtml&prev=/search%3Fq%3Dc.865pe.l%2Bmotherboard%26client%3Dfirefox-a%26hs%3DsZB%26rls%3Dorg.mozilla:en-US:official Colorful Technology C.865PE-L Silver Fighter Warrior V2.3]
| <!--Chipset-->865PE
| <!--ACPI-->{{dunno| }}
| <!--IDE-->{{Yes|tested with CDROM}}
| <!--SATA-->{{dunno| }}
| <!--Gfx-->{{Maybe|AGP slot}}
| <!--Audio-->{{Yes|ALC650 AC97}}
| <!--USB-->{{Yes|USB 1.1 and 2.0}}
| <!--Ethernet-->{{Yes|RTL 8100 8139}}
| <!--Opinion-->Still testing with NB (Nightly Build) May 2013
|-
| <!--Name-->Intel 845
| <!--Chipset-->865P
| <!--ACPI-->
| <!--IDE-->{{Yes}}
| <!--SATA-->
| <!--Gfx-->{{No|intel 800}}
| <!--Audio-->{{No|AC97 AD1985}}
| <!--USB-->{{Yes|USB1.1 and USB2.0}}
| <!--Ethernet-->{{No|e1000}}
| <!--Opinion-->Tested ICAROS 1.3
|-
| <!--Name-->Intel 845
| <!--Chipset-->865GC
| <!--ACPI-->
| <!--IDE-->{{Yes}}
| <!--SATA-->
| <!--Gfx-->{{No|intel 865 Extreme Graphics 2}}
| <!--Audio-->{{No|AC97 AD1985}}
| <!--USB-->{{Yes|USB1.1 and USB2.0}}
| <!--Ethernet-->{{No|e1000}}
| <!--Opinion-->Tested ICAROS 1.3
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket LGA775 s775 (2005/8)=====
an industry standard DDR2 module could in theory contain fallback JEDEC, intel XMP and AMD EPP configuration data
Intel PC CL5 ram modules but an "AMD" CL5 ram module the BIOS cannot read the AMD EPP info on the SPD (Serial Presence Detect) but can recognize the CL5 timing info in the JEDEC data table. PC BIOS auto configures for the AMD ram module and boots normally.
an AMD PC CL6 ram modules but an "INTEL" CL6 ram module the BIOS cannot read the INTEL XMP info on the SPD but can recognize the CL6 timing info in JEDEC data table. PC BIOS auto configures for the AMD ram module and boots normally.
an INTEL PC needs CL6 ram modules but have an "AMD" CL4 ram module. INTEL BIOS cannot read the AMD EPP info on the SPD but can recognize the CL4 timing info in JEDEC data table. PC BIOS recognizes module timings as incompatible an refuses to boot.
entirely separate issue if the RAM module timing specs are incompatible.(i.e. CL4 RAM in a "CL6 only" PC)
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Abit AG8
| <!--Chipset-->P915 + ICH6R
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 ports SATA1
| <!--Gfx-->1 PCIe x16 Slot
| <!--Audio-->Realtek ALC658 AC97
| <!--USB-->4 USB2.0
| <!--Ethernet-->Realtek 8110S-32
| <!--Opinion-->2004 32bit - Firewire TI 4200R7T no
|-
| <!--Name-->MSI 915 Neo2
| <!--Chipset-->P915 + ICH6R
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 ports SATA1
| <!--Gfx-->1 PCIe x16 Slot
| <!--Audio-->CMI 9880L HD Audio
| <!--USB-->4 USB2.0
| <!--Ethernet-->{{no|Broadcomm BCM5751 PCIe}}
| <!--Opinion-->Firewire VIA VT6306 no
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus P5GC P5GC-MX
| <!--Chipset-->P945GC Lakeport-GC + ICH7R northbridge
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 SATA1 3.0 Gbit/s ports
| <!--Gfx-->1 PCIe 1.1 slot
| <!--Audio-->HD Audio with ALC662 codec
| <!--USB-->{{yes|2 usb2.0}}
| <!--Ethernet-->{{no|atheros L2}}
| <!--Opinion-->2005 32bit - 3 pci slots - 4 x 240-pin DIMM Sockets max. 4GB DDR2 667/533 non-ECC -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Foxconn PC45CM-SA 45CM-S
| <!--Chipset-->945GC with ICH7
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 sata2 ports
| <!--Gfx-->{{Yes|pcie 1.0 slot with gma950 integrated}}
| <!--Audio-->{{Yes|HD audio with aLC883 codec playback}}
| <!--USB-->{{Yes|}}
| <!--Ethernet-->{{Yes|realtek 8139 8100sc}}
| <!--Opinion-->2 dimm slots 667mhz max 4gb - can be found in Advent desktops - 2 pci-e and 2 pci - core 2 duo only e6xxx - Micro ATX (9.6” x 8.8”) -
|-
| <!--Name-->Gigabyte GA-81945GM MFY-RH
| <!--Chipset-->Intel® 945GM Express with ICH7M-DH
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->{{Yes|GMA950 VGA15 and PCI-e 1.0 slot}}
| <!--Audio-->{{Yes|HD Audio with ALC880 codec playback only rear port}}
| <!--USB-->{{Yes|4 usb 2.0}}
| <!--Ethernet-->{{No|Intel PRO1000PL 82573L Gigabit Ethernet}}
| <!--Opinion-->2006 MoDT term “Mobile on DeskTop.”, low TDP CPUs to work on desktop form-factor motherboards. mATX Micro ATX 24.4cm x 24.4cm - 2 DDR2 dimm 1.8v slots with 4Gb max - will not boot if PCI2 slot occupied -
|-
| <!--Name-->Gigabyte GA-945 GCM S2C
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->{{yes|ALC662 (1.x)}}
| <!--USB-->
| <!--Ethernet-->{{yes|8101E Rtl 8169 (1.x)}}
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA945-GCM S2L
| <!--Chipset-->945GC with ICH7
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 SATA1 ports
| <!--Gfx-->PCi-E slot
| <!--Audio-->{{Maybe|Intel HD Audio with ALC662 codec 2/4/5.1-channel (1.x)}}
| <!--USB-->{{Yes|4 USB2.0}}
| <!--Ethernet-->{{Yes|Realtek 8111c 8169 (1.x)}}
| <!--Opinion-->2 x 1.8V DDR2 DIMM 4GB DDR2 memory max - 2 PCI-e and 2 PCI - Micro ATX form factor; 24.4cm x 19.3cm -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI 945P Neo-F rev 1.0
| <!--Chipset-->P945 + ICH7
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 SATA1 ports
| <!--Gfx-->PCie 1.0 slot
| <!--Audio-->ALC662 HDA
| <!--USB-->4 USB2.0
| <!--Ethernet-->8110SC (rtl8169)
| <!--Opinion-->
|-
| <!--Name-->MSI 945P Neo2-F rev 1.2
| <!--Chipset-->P945 + ICH7
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 SATA1 ports
| <!--Gfx-->PCie 1.0 slot
| <!--Audio-->ALC850 AC97
| <!--USB-->4 USB2.0
| <!--Ethernet-->8110SC (rtl8169)
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-P31-DS3L
| <!--Chipset-->P31 with ICH7
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCI Express x16
| <!--Audio-->HD Audio with ALC888 codec
| <!--USB-->4 USB 2.0
| <!--Ethernet-->Realtek 8111B
| <!--Opinion-->DDR2 800Mhz up to 4Gb 4 x 240 pin - 3 PCI - ATX 12.0" x 8.3" -
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus P5KPL-AM /PS
| <!--Chipset-->G31 with ICH7
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->4 xSATA 3 Gbit/s ports
| <!--Gfx-->PCIe 1.1 with integrated Intel® GMA 3100
| <!--Audio-->HD Audio with VIA VT1708B with ALC662 codec
| <!--USB-->
| <!--Ethernet-->Realtek RTL8102EL 100/10 LAN with Realtek RTL8111C Gigabit LAN
| <!--Opinion-->2 x 2 GB DDR2 Non-ECC,Un-buffered DIMMs with 2 PCI - Intel Graphics Media Accelerator -
|-
| <!--Name-->Asus P5KPL/EPU
| <!--Chipset-->G31 with ICH7
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Pci-e 1.0 slot
| <!--Audio-->{{Yes|HD audio with ALC887 codec}}
| <!--USB-->
| <!--Ethernet-->{{Yes|RTL8169 Realtek 8111C}}
| <!--Opinion-->Tested - 4 240-pin DIMM, Max. 4 GB - 4 pci-e and 3 pci - ATX Form Factor 12 inch x 8.2 inch ( 30.5 cm x 20.8 cm ) -
|-
| <!--Name-->Gigabyte GA-G31M ES2L
| <!--Chipset-->G31 plus ICH7
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{Yes|Intel GMA 3100 2d}}
| <!--Audio-->{{Maybe|ALC883 (1.x), ALC883/888B (2.x)}}
| <!--USB-->
| <!--Ethernet-->{{Maybe|RTL8111C (1.x), Atheros 8131 (2.x)}}
| <!--Opinion-->reduces DRAM capacity to 4GB
|-
| <!--Name-->ASRock G31M-S r1.0 G31M-GS
| <!--Chipset-->G31 + ICH7
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->{{maybe|4 sata2}}
| <!--Gfx-->{{maybe|GMA 3100 2d not 3d}}
| <!--Audio-->{{yes|ALC662}}
| <!--USB-->{{yes|4 USB2.0}}
| <!--Ethernet-->{{partial|rtl8169 RTL8111DL 8169 (for -GS) RTL8102EL (for -S)}}
| <!--Opinion-->2007 64bit Core2 - 2 DDR2 800 max 8Gig AMI bios MicroATX -
|-
| <!--Name-->ASRock G31M-S r2.0
| <!--Chipset-->G31 + ICH7
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->{{maybe|4 sata2}}
| <!--Gfx-->{{maybe|GMA 3100 2d not 3d}}
| <!--Audio-->{{yes|ALC662}}
| <!--USB-->{{yes|4 USB2.0}}
| <!--Ethernet-->{{yes|RTL 8111DL 8169}}
| <!--Opinion-->2008 64bit core2 - 2 DDR2 800 max 8Gig MicroATX
|-
| <!--Name-->[http://www.intel.com/cd/channel/reseller/apac/eng/products/desktop/bdb/dg31pr/feature/index.htm Intel DG31PR]
| <!--Chipset-->iG31
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{maybe|3100 but can use PCIe 1.1 slot}}
| <!--Audio-->{{yes|ALC888 playback}}
| <!--USB-->
| <!--Ethernet-->{{yes|RTL8111B Rtl 8169}}
| <!--Opinion-->good support
|-
| <!--Name-->
| <!--Chipset-->Intel G33 Express Chipset with ich9 southbridge
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Intel 3100 powervr tile based
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2008 64bit - embedded on Core 2 Quad, Core 2 Duo, Pentium Dual-Core CPUS with Integrated GPU Intel GMA 3100 -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->ASUS P5G41T-M LX
| <!--Chipset-->G41 + ICH8 + DDR3
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->{{maybe}}
| <!--Gfx-->{{yes|X4500 some 2d only)}}
| <!--Audio-->ALC887
| <!--USB-->3 USB2.0
| <!--Ethernet-->{{no|Atheros L1c AR8131}}
| <!--Opinion-->reduces maximum supported memory ddr3 from 16 to 8GB 2 dimm slots non-EEC - demotes the PCIe controller mode from revision 2.0 (5.0GT/s) to revision 1.1 (2.5GT/s
|-
| <!--Name-->Gigabyte GA-G41MT S2
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->VT1708S (1.3), ALC887-VD2 (1.4), ALC887 (2.1),
| <!--USB-->
| <!--Ethernet-->Atheros AR8151 l1c (1.x 2.x),
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-G41MT S2PT
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->ALC887 (1.0), VIA (2.0), ALC887 (2.1)
| <!--USB-->
| <!--Ethernet-->RTL8111E (1.x), Atheros AR8151 l1c (2.1),
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-G41MT D3
| <!--Chipset-->G41 + ICH7
| <!--ACPI-->
| <!--IDE-->1 Port
| <!--SATA-->4 Ports
| <!--Gfx-->{{yes|GMA X4500 2d only and pci-e 1.1 slot}}
| <!--Audio-->{{yes|ALC888B}}
| <!--USB-->4 ports + headers
| <!--Ethernet-->{{yes|RTL8111 D/E}}
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-P41T D3P
| <!--Chipset-->G41 + ICH7 with Intel Core 2 Duo (E6xxx) CPU
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4ports
| <!--Gfx-->GMA X4500 2d
| <!--Audio-->ALC888 889/892
| <!--USB-->4 ports
| <!--Ethernet-->RTL 8111C or D/E
| <!--Opinion-->
|-
| <!--Name-->Intel DG41AN Classic
| <!--Chipset-->iG41 +
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 ports
| <!--Gfx-->X4500 2d
| <!--Audio-->ALC888S ALC888VC
| <!--USB-->4 ports
| <!--Ethernet-->8111E
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->AsRock P5B-DE
| <!--Chipset-->P965 + ICH8
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->{{Maybe|works ide legacy}}
|<!--Gfx-->{{Yes|with PCI-E 1.1 slot}}
| <!--Audio-->{{Yes|HD Audio via VT1708S}}
| <!--USB-->{{Yes}}
| <!--Ethernet-->{{Yes|RTL8169}}
| <!--Opinion-->2006 works well
|-
| <!--Name-->Asus P5B SE
| <!--Chipset-->965 intel
| <!--ACPI-->
| <!--IDE-->{{Yes| }}
| <!--SATA-->{{Yes| }}
| <!--Gfx-->{{N/A}}
| <!--Audio-->{{Yes|HD Audio ALC662 codec}}
| <!--USB-->{{Yes}}
| <!--Ethernet-->{{No| }}
| <!--Opinion-->works well except ethernet
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus P5W DH Deluxe P5WDG2 WS PRO
| <!--Chipset-->975X
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->2 ports
| <!--Gfx-->2 PCIe x16 slots
| <!--Audio-->ALC882 AND LATER ADI 1988B
| <!--USB-->2 USB2.0
| <!--Ethernet-->{{No|Marvell 88E8052 88E8053}}
| <!--Opinion-->Firewire TI TSB43AB22A no
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Abit IP35
| <!--Chipset-->P35 Express + ICH9R
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->6 ports
| <!--Gfx-->
| <!--Audio-->ALC888 HDA
| <!--USB-->4 USB2.0
| <!--Ethernet-->two RTL8110SC
| <!--Opinion-->Firewire Texas TSB43 AB22A no
|-
| <!--Name-->MSI P35 Neo F FL MS-7630 rev 1
| <!--Chipset-->Intel P35
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->pci-e 1.1 support
| <!--Audio-->HD Audio ALC888
| <!--USB-->
| <!--Ethernet-->Realtek
| <!--Opinion-->Base model of this range of P35 mobos
|-
| <!--Name-->GA-P35-DS3
| <!--Chipset-->P35 and ICH9
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 ports
| <!--Gfx-->
| <!--Audio-->HDAudio with Realtek ALC889A codec
| <!--USB-->
| <!--Ethernet-->rtl8169 Realtek 8111B
| <!--Opinion-->2008 - 4 x 1.8V DDR2 DIMM sockets max 8 GB -
|-
| <!--Name-->GA-EP35-DS3 (rev. 2.1)
| <!--Chipset-->Intel® P35 + ICH9 Chipset
| <!--ACPI-->
| <!--IDE-->{{unk|}}
| <!--SATA-->{{unk|4 }}
| <!--Gfx-->pci-e
| <!--Audio-->{{unk|Realtek ALC889A codec }}
| <!--USB-->{{yes | }}
| <!--Ethernet-->{{yes|rtl8169 Realtek 8111B}}
| <!--Opinion-->good
|-
| <!--Name-->Abit IX38 Quad GT
| <!--Chipset-->X38 / ICH9R Chipset
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->6 ports
| <!--Gfx-->PCI-E 2.0 slot
| <!--Audio--> HD Audio ALC888
| <!--USB-->4 USB2.0
| <!--Ethernet-->Realtek RTL 8110SC 8169SC
| <!--Opinion-->Firewire Texas TSB 43AB22A no
|-
| <!--Name-->Gigabyte X38-DQ6
| <!--Chipset-->X38 / ICH9R Chipset
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->6 ports
| <!--Gfx-->PCI-E 2.0 slot
| <!--Audio-->ALC889A HDA
| <!--USB-->4 USB2.0
| <!--Ethernet-->twin 8111B 8169
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Gigabyte GA-EP45 DS3 (2008)
| <!--Chipset-->P45 + ICH9 or ICH10
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->6 x SATA 3Gbit/s (SATAII0, SATAII1, SATAII2, SATAII3, SATAII4, SATAII5)
| <!--Gfx-->two PCI-E v2.0 x16 slots support splitting its 16 PCIe 2.0 lanes across two cards at x8 transfers
| <!--Audio-->HD Audio with ALC888 or ALC889A codec
| <!--USB-->6 USB2.0
| <!--Ethernet-->2 x Realtek 8111C chips (10/100 /1000 Mbit)
| <!--Opinion-->4 x 1.8V DDR2 DIMM sockets non-EEC
|-
| <!--Name-->MSI P45 Platinum (2008)
| <!--Chipset-->P45 + ICH9
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->6 sata2 ports
| <!--Gfx-->two PCI-E x16 v2.0 slots
| <!--Audio-->ALC888 HD Audio
| <!--USB-->6 USB2.0
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->G45 +
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->adds Intel’s GMA X4500HD graphics engine to P45 Express features
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->G43 +
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->GMA X4500 2d
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->removes HD video acceleration from the G45’s features
|-
| <!--Name-->Asus P5E Deluxe
| <!--Chipset--> X48 with ICH9
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HD Audio with ADI 1988B codec
| <!--USB-->
| <!--Ethernet-->Marvell 88E8001
| <!--Opinion-->
|-
| <!--Name-->GigaByte GA-X48 DQ6
| <!--Chipset-->X48 plus ICH9R
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->8 ports
| <!--Gfx-->two PCI-E x16 v2.0 slots
| <!--Audio-->ALC889A
| <!--USB-->8 USB2.0
| <!--Ethernet-->RTL 8111B 8169
| <!--Opinion-->Firewire TSB43AB23 no - ICH9 pairs with Intel’s 3-series (X38, P35, etc.) chipsets, in addition to the X48 Express, but excluding the G35 Express
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Gigabyte EP43-DS3L and Gigabyte GA-EP43-UD3L
| <!--Chipset-->P43 with ICH10
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->6 x SATA 3Gbit/s connectors
| <!--Gfx-->1 x PCI Express x16 slot PCI Express 2.0 standard
| <!--Audio-->HD Audio with ALC888 codec
| <!--USB-->
| <!--Ethernet-->realtek 8111C
| <!--Opinion-->4 x 1.8V DDR2 DIMM sockets - 4 pcie x1 - 2 pci - ATX Form Factor; 30.5cm x 21.0cm
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Gigabyte 73-pvm-s2h rev.1.0
| <!--Chipset-->NVIDIA GeForce 7100 nForce 630i
| <!--ACPI-->
| <!--IDE-->{{Yes|1 port}}
| <!--SATA-->{{yes|3 ports SATA2}}
| <!--Gfx-->{{Maybe|Vesa 2d GeForce 7100 (vga /hdmi/dvi), 1 PCIe x16 Slot }}
| <!--Audio-->{{Yes|Realtek ALC889A MCP73}}
| <!--USB-->{{Yes|7 USB2.0}}
| <!--Ethernet-->{{no|RTL 8211B MCP73}}
| <!--Opinion-->Firewire Not, tested with Icaros Desktop 2.0.3 MCP73 is a single chip solution in three different versions
|-
| <!--Name-->Nvidia 7150 630i
| <!--Chipset-->intel based nForce 630i (MCP73)
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->{{maybe|ide legacy}}
| <!--GFX-->GF 7150
| <!--Audio-->{{yes|HD AUDIO ALC883}}
| <!--USB-->{{yes|ohci echi}}
| <!--Ethernet-->{{no|RTL8201C}}
| <!--Opinion-->being tested
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->pci-e 2.0 x16
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion--> the MCP73PV or the GeForce 7050/nForce 630i
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->the MCP73S or the GeForce7025/nForce 630i
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->the MCP73V or the GeForce 7025/nForce 610i
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Atom SOC (2008/2x)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->D945CLF
| <!--Chipset-->N230 single core
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->
| <!--Gfx-->{{yes|GMA945}}
| <!--Audio-->{{yes|ALC662}} Skt 441
| <!--USB-->{{yes|uhci and ehci}}
| <!--Ethernet-->{{yes|rtl8169}}
| <!--Opinion-->works very well
|-
| <!--Name-->[http://www.clusteruk.com iMica D945GCKF2 mobo]
| <!--Chipset-->Intel Atom N330 Dual Core
| <!--ACPI-->wip
| <!--IDE-->{{yes|IDE}}
| <!--SATA-->{{maybe}}
| <!--Gfx-->{{yes|gma}}
| <!--Audio-->{{yes|HD AUDIO}}
| <!--USB-->{{yes|uhci ehci}}
| <!--Ethernet-->{{yes|rtl8169}}
| <!--Opinion-->
|-
| <!--Name-->D945GSEJT + Morex T1610
| <!--Chipset-->Atom 230 with 945GSE
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->{{maybe}}
| <!--Gfx-->{{yes|GMA900 vga but issues with DVI output}}
| <!--Audio-->{{yes|HDAudio with ALC662 codec}}
| <!--USB-->{{yes| }}
| <!--Ethernet-->{{yes|RTL8169 8111DL}}
| <!--Opinion-->small size, runs off 12V
|-
| <!--Name-->ASUS AT3N7A-I
| <!--Chipset-->Atom N330 Nvidia ION
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{maybe|3 ports legacy IDE}}
| <!--Gfx-->{{yes|nouveau cube cube 2 45 quake 3 }}
| <!--Audio-->{{yes|HD Audio with VIA 1708S codec playback}}
| <!--USB-->{{yes}}
| <!--Ethernet-->{{yes|RTL8169 device}}
| <!--Opinion--><ref>http://www.youtube.com/watch?v=EAiJpvu73iw</ref> good but can freeze randomly at times
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->D410PT 45nm pinetrail
| <!--Chipset-->D410 and NM10
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{maybe|ide legacy}}
| <!--Gfx-->{{maybe|GMA3150}}
| <!--Audio-->{{yes|ALC262 or ALC66x odd clicks}}
| <!--USB-->{{yes}}
| <!--Ethernet-->{{yes|RTL8111DL}}
| <!--Opinion-->some support
|-
| <!--Name-->45nm pinetrail
| <!--Chipset-->D510 and NM10 + GMA3150
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->GMA3150
| <!--Audio-->ALC888B or ALC66x
| <!--USB-->{{yes}}
| <!--Ethernet-->RTL8111DL
| <!--Opinion-->some support
|-
| <!--Name-->Gigabyte GA-D525TUD (rev. 1.0 1.2 1.5)
| <!--Chipset-->D525 NM10
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->gma 3150
| <!--Audio-->HDAudio ALC887
| <!--USB-->
| <!--Ethernet-->rtl8169 rtl8111f
| <!--Opinion-->2012 64 - 2 ddr3 dimm slots max 8g - Mini-ITX Form Factor; 17.0cm x 17.0cm -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
|}
=====Socket 1366 (2009/10)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Asus P6T DELUXE
| <!--Chipset-->x58 + ICH10 and Intel 1st gen. (Nehalem/Lynnfield) Core i7 (8xx) CPU
| <!--ACPI-->
| <!--IDE-->{{yes|1 port}}
| <!--SATA-->4 ports
| <!--Gfx-->2 PCIe x16 (r2.0) slots
| <!--Audio-->ADI AD2000B HD Audio
| <!--USB-->{{yes|4 USB2.0}}
| <!--Ethernet-->{{no|Marvell 88E8056 Gigabit}}
| <!--Opinion-->Firewire VIA VT6308 no
|-
| <!--Name-->gigabyte ex58 ds
| <!--Chipset--> x58 + ICH10
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->Realtek 8111D rtl8169
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket 1156 (2010)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Acer Aspire M3910
| <!--Chipset-->i3
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->{{unk| }}
| <!--Gfx-->{{maybe|VESA intel HD}}
| <!--Audio-->{{unk|HDAudio with Realtek ALC}}
| <!--USB-->{{yes| }}
| <!--Ethernet-->{{unk| Realtek}}
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-H55M-S2H
| <!--Chipset-->H55
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe slot
| <!--Audio-->{{Yes|ALCxxx playback}} ALC888B (Rev1.x)
| <!--USB-->{{Yes| }}
| <!--Ethernet-->{{Yes|RTL8111D}} (Rev 1.x)
| <!--Opinion-->Tested but no support for WLAN Realtek 8188su
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI H55M-E33 v1.0
| <!--Chipset-->E7636 M7636 H55 chipset so older i3/i5/i7 system
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->{{yes|HD Audio ALC889}}
| <!--USB-->
| <!--Ethernet-->{{Yes|PCI-E Realtek 8111DL}}
| <!--Opinion-->Works well
|-
| <!--Name-->Asus P7P55D
| <!--Chipset-->P55
| <!--ACPI-->
| <!--IDE-->{{unk| }}
| <!--SATA-->{{unk| }}
| <!--Gfx-->pci-e
| <!--Audio-->{{maybe | via codec}}
| <!--USB-->{{unk| }}
| <!--Ethernet-->{{maybe |rtl8169 Realtek RTL8111B/C RTL8112L }}
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket LGA 1155 H2 (2010/13)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->ASUS P8H61-I LX R2.0
| <!--Chipset-->H61
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata
| <!--Gfx-->1 pci-e slot
| <!--Audio-->{{unk|HDAudio via7018s codec}}
| <!--USB-->USB3
| <!--Ethernet-->{{yes|rtl8169 8111f}}
| <!--Opinion-->2013 64bit up to intel ivybridge cpus - 2 ddr3 dimm slots -
|-
| <!--Name-->Asus P8H61-I/RM/SI mini-itx
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2 sata
| <!--Gfx-->pci-e 2
| <!--Audio-->{{unk|HDAudio via7018s codec}}
| <!--USB-->
| <!--Ethernet-->{{yes|rtl8169 8111f}}
| <!--Opinion-->2013 64bit up to i3-2010 - OEM board from an RM machine but not ivybridge as the Asus BIOS isn't compatible with these, 0909 hacked one might work -
|-
| <!--Name-->asus p8h61-i lx r2.0/rm/si mini itx
| <!--Chipset-->h61
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e 2.0
| <!--Audio-->HDaudio with VIA codec
| <!--USB-->
| <!--Ethernet-->rtl8169 rtl8111e
| <!--Opinion-->2012 sandy and ivy - oem from rm machine 2 x 240-Pin DDR3 DIMM sockets max DDR3 1333MHz -
|-
| <!--Name-->Bewinner 63q9c7omvs V301 ITX
| <!--Chipset-->H61
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata with nvme
| <!--Gfx-->pci-e 4
| <!--Audio-->HDAudio
| <!--USB-->
| <!--Ethernet-->Realtek 8106E 100M Network Card
| <!--Opinion-->2022 64
|-
| <!--Name-->Biostar H61 H61MHV2 H61MHV3 Ver. 7.0
| <!--Chipset-->H61 with Intel Pentium G 2xxx series CPU
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e
| <!--Audio-->Realtek ALC662 later ALC897
| <!--USB-->4 usb2
| <!--Ethernet-->rtl8169 Realtek RTL8111H
| <!--Opinion-->2014 - 2 ddr3 dimm slots -
|-
| <!--Name-->Gigabyte GA-H61M-D2-B3
| <!--Chipset-->H61 + Sandybridge
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 ports sata2
| <!--Gfx-->
| <!--Audio-->ALC889
| <!--USB-->2 ports
| <!--Ethernet-->Realtek RTL8111E
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-H61MA-D3V
| <!--Chipset-->H61 +
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 ports sata2
| <!--Gfx-->
| <!--Audio-->Maybe HDAudio with Realtek ALC887 (Rev 2.0) ALC887 (Rev2.1)
| <!--USB-->2 USB 2.0/1.1 ports
| <!--Ethernet-->Realtek RTL8111E
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-H61N-D2V
| <!--Chipset-->H61 +
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata2 and maybe 4 sata3
| <!--Gfx-->pci-e 2.0 slot wit 1 x DVI-I port
| <!--Audio-->{{unk|HDAudio with Realtek ALC887 (Rev 1.0)}}
| <!--USB-->2 USB 2.0/1.1 ports
| <!--Ethernet-->Realtek RTL8111E
| <!--Opinion-->2013 64bit- 2 x 1.5V DDR3 DIMM sockets up to 16 GB -
|-
| <!--Name-->GA-H61M-S2PV
| <!--Chipset-->H61 with 2400k 2500k 2600k 2700k
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->pci-e 2.0 slot
| <!--Audio-->ALC887 (rev 1.0 2.0 2.1 2.2 2.3)
| <!--USB-->4 USB 2.0
| <!--Ethernet-->Rtl811E (1.0) 8151 (2.0) Rtl8111F (2.1 2.2 2.3)
| <!--Opinion-->Micro ATX Form Factor; 24.4cm x 20cm with 2 pci-e and 2 pci -
|-
| <!--Name-->Intel Classic Series DH61CR Desktop
| <!--Chipset-->H61 +
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 ports
| <!--Gfx-->
| <!--Audio-->Intel HD with ALC892
| <!--USB-->4 ports
| <!--Ethernet-->{{no|Intel 82579V}}
| <!--Opinion-->
|-
| <!--Name-->MSI H61M-P20 (G3) MS-7788
*retail MSI board
*OEM Advent, etc
| <!--Chipset-->H61
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{yes|four SATAII ports}}
| <!--Gfx-->1 PCI Express gen3 (retail) gen2 (oem) x16 slot
| <!--Audio-->{{yes|HDAudio ALC887 codec}}
| <!--USB-->{{yes|}}
| <!--Ethernet-->{{yes|Realtek 8105E 100M Network Card}}
| <!--Opinion-->2012 64bit - 2 ddr3 slots - 22.6cm(L) x 17.3cm(W) M-ATX Form Factor - BIOS - [https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1149&rowstart=140&pid=6009#post_6007 works well],
|-
| <!--Name-->MSI H61I-E35 (B3) MS-7677 Ver.1.2
| <!--Chipset-->H61
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata2 3gbps
| <!--Gfx-->{{maybe|VESA 2d for hdmi and 1 pcie 2.0 x1 slot}}
| <!--Audio-->{{yes|https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1149&rowstart=140&pid=5861#post_5861 works}}
| <!--USB-->USB3 and USB2
| <!--Ethernet-->{{yes|rtl8169 rtl8111e}}
| <!--Opinion-->2012 64bit - 2 ddr3 slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus P8H67-M
| <!--Chipset-->H67 +
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2 sata3 - 4 sata2
| <!--Gfx-->
| <!--Audio-->Intel HD with ALC887
| <!--USB-->6 USB2.0
| <!--Ethernet-->Realtek® 8111E
| <!--Opinion-->
|-
| <!--Name-->Asus P8P67
| <!--Chipset-->P67 with sandybridge and ivybridge cpus
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->{{unk|HDAudio with ALC codec}}
| <!--USB-->
| <!--Ethernet-->{{unk|rtl8169 realtek rtl8111}}
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus P8Z68-V LX
| <!--Chipset-->Z68 + Intel 2nd generation (Sandy Bridge) CPU and possibly ivybridge
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{yes|2 sata3 - 4 sata2}}
| <!--Gfx-->pci-e slot
| <!--Audio-->{{yes|HDAudio Intel HD with ALC887 codec}}
| <!--USB-->{{yes|2 USB3.0 - 4 USB2.0}}
| <!--Ethernet-->{{yes|rtl8169 Realtek® 8111E}}
| <!--Opinion-->2011 64bit SSE 4.1 and AVX - EFI bios - 4 ddr3 dimm slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte Z68AP-D3 (B3)
| <!--Chipset-->Z68 + Ivybridge
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2 sata3 - 4 sata2
| <!--Gfx-->
| <!--Audio-->Intel HD with ALC889
| <!--USB-->2 USB3.0 - 4 USB2.0
| <!--Ethernet-->Realtek® 8111E
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus B75M-A
| <!--Chipset-->B75
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes| }}
| <!--Gfx-->pci-e
| <!--Audio-->{{maybe|HDAudio with Realtek ® ALC887-VD codec}}
| <!--USB-->{{maybe| }}
| <!--Ethernet-->{{yes|rtl8169 Realtek ® 8111F-VB-CG }}
| <!--Opinion-->2013 64bit - 2 ddr3 slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->H77
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-H77-D3H 1.0 1.1
| <!--Chipset-->H77
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata 3.0
| <!--Gfx-->pci-e
| <!--Audio-->{{No|HDAudio VIA VT2021 codec}}
| <!--USB-->
| <!--Ethernet-->{{No|Atheros GbE LAN chip}}
| <!--Opinion-->2013 64bit i5 3550 7 3770 - 4 DDR3 slots - 2 full pci-e 2 pci slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Gigabyte GA Z77 D3H with i3 3225 dual
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e
| <!--Audio-->{{No|HDAudio VIA VT2021 codec}}
| <!--USB-->
| <!--Ethernet-->{{No|Atheros GbE LAN chip}}
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket LGA 1150 H3 (2013/2016)=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->[https://theretroweb.com/motherboards/s/asus-b85m-e-rev-1-02 Asus B85M-E]
| <!--Chipset-->B85
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes| }}
| <!--Gfx-->pci-e
| <!--Audio-->{{maybe|HDAudio with Realtek ® ALC887-VD2 codec}}
| <!--USB-->{{no| }}
| <!--Ethernet-->{{yes|rtl8169 Realtek 8111F}}
| <!--Opinion-->2014 64bit - 4 ddr3 slots -
|-
| <!--Name-->Gigabyte GA-H87N-WIFI mITX
| <!--Chipset-->H87 and Intel 4th generation (Haswell) Core i5 (4xxx) CPU
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->Intel HD with ALC892
| <!--USB-->
| <!--Ethernet-->Intel Atheros
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->ASUS H81I-PLUS Mini ITX
| <!--Chipset-->H81 with intel 4590t 4690t
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata3 6gbps
| <!--Gfx-->pci-e 3.0 x4 slot
| <!--Audio-->{{yes|HDAudio 6.34 with ALC8878 codec playback only}}
| <!--USB-->{{yes|USB3 USB2}}
| <!--Ethernet-->{{yes|rtl8169 rtl8111g}}
| <!--Opinion-->2014 64bit - 2 ddr3 dimm slots max 16gb - f2 or DEL bios and f8 boot select -
|-
| <!--Name-->Asus H81M-C H81M-P-SI
| <!--Chipset-->H81 with 4th generation (Haswell) Core i7 (4xxx) CPU
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2x3g 2x6g
| <!--Gfx-->pci-e slot
| <!--Audio-->hdaudio alc887 vd
| <!--USB-->
| <!--Ethernet-->realtek 8111gr
| <!--Opinion-->2013 skt 1150 - 2 ddr3 max 16g - mini atx -
|-
| <!--Name-->Asus H81T
| <!--Chipset-->H81
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2 sata
| <!--Gfx-->HD4000 igpu only
| <!--Audio-->HDAudio ALC887-VD
| <!--USB-->Intel USB3
| <!--Ethernet-->rtl8169 realtek 8111G
| <!--Opinion-->2013 64bit intel 4th gen mini itx - external dc brick with 19v rare barrel pin 7.4MM x 5.0MM - 2 ddr3 laptop sodimm slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-H81M-S2V
| <!--Chipset-->H81
| <!--ACPI-->
| <!--IDE-->{{N/A|}}
| <!--SATA-->
| <!--Gfx-->pci-e
| <!--Audio-->HDAudio ALC887
| <!--USB-->USB3
| <!--Ethernet-->Realtek® GbE LAN chip
| <!--Opinion-->2014 64bit up to i7 4790K - 2 DDR3 slots -
|-
| <!--Name-->Gigabyte GA-H81M-D3V (rev. 1.0)
| <!--Chipset-->H81
| <!--ACPI-->
| <!--IDE-->{{N/A| }}
| <!--SATA-->{{yes|2 sata2 2 sata3 }}
| <!--Gfx-->pci-e
| <!--Audio-->{{unk| HDAudio Realtek® ALC887 codec}}
| <!--USB-->{{unk|intel and VIA® VL805}}
| <!--Ethernet-->{{unk|rtl8169 Realtek }}
| <!--Opinion-->
|-
| <!--Name-->MSI H81M-E34 (MS-7817)
| <!--Chipset-->H81
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->{{yes| }}
| <!--Gfx-->PCIe 2.0 x16
| <!--Audio-->HDAudio with ALC887 codec
| <!--USB-->USB3
| <!--Ethernet-->{{yes|rtl8169 RTL8111G}}
| <!--Opinion-->2013 64bit -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus Z87-K
| <!--Chipset-->Z87 with 4th generation (Haswell) Core i7 4c8t i5 4c4t CPU
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e
| <!--Audio-->Intel HD with ALC
| <!--USB-->
| <!--Ethernet-->Realtek lan
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-Z87X-UD3H
| <!--Chipset-->Z87 Express
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e
| <!--Audio-->Intel HD with Realtek® ALC898 codec
| <!--USB-->
| <!--Ethernet-->intel
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA H97M D3H r1.0 r1.1 with i3 4360 or 4370 dual
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e
| <!--Audio-->Intel HD with ALC892
| <!--USB-->
| <!--Ethernet-->Realtek lan
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus Z97 A with i7 4790K
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->750, 960, 970 and 980 nvidia GTX cards
| <!--Audio-->Intel HD with ALC
| <!--USB-->
| <!--Ethernet-->intel lan ethernet
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA Z97X UD3H rev1.0 1.1 1.2
| <!--Chipset-->Z97 with i5 4690K
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HDaudio with ALC1150
| <!--USB-->
| <!--Ethernet-->intel lan
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI GAMING 5 Z97
| <!--Chipset-->Z97 with 4th generation (Haswell) Core i7 4c8t CPU
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->ASUS Q87M-E
| <!--Chipset-->Q87
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2014 64bit - 4 DDR3 slots -
|-
| <!--Name-->
| <!--Chipset-->H99
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket LGA2011V2 s2011-2 (2012/15)=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->x79
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2013 Xeon e5-???? W TDP, e5-2667V2 W TDP, e5-????V2 W TDP, Sandybridge and Ivybridge V2
|-
| <!--Name-->Asus
| <!--Chipset-->X79
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket LGA2011V3 s2011-3 (2015/18)=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->x99
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2016 Xeon e5-1620v3 130W TDP, e5-1650V3 (i7-5930K) 140W TDP, e5-2640V3 90W TDP, Haswell-EP
|-
| <!--Name-->Asus
| <!--Chipset-->X99
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->most cheap Ryzens are better nowadays
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Huananzhi X99-CD4
| <!--Chipset-->Intel C612 and X99
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata 3 connectors and 1 m.2 nvme slot
| <!--Gfx-->pcie slot
| <!--Audio-->HDaudio with ALC897 codec
| <!--USB-->{{No|USB3}}
| <!--Ethernet-->{{maybe|rtl8169}}
| <!--Opinion-->2024 quality might not be great outside of a simple setup - 2 ddr4 dimms -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Keyiyou X99 XD4
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Machinist MR9A Pro
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2023
|-
| <!--Name-->Machinist MR9A Pro
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2023
|-
| <!--Name-->Mogul
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Qiyida X99 H9S
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2023
|-
| <!--Name-->Soyo
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket LGA 1151 Socket H4 (2015/2018)=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->Skylake CPUs have TPM 2.0 embedded
|-
| <!--Name-->Asus H110 Plus H110M-A/DP
| <!--Chipset--> with 6th Gen Core and 7th with bios update
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->Sunrise Point-H SATA [AHCI mode] [8086 a102]
| <!--Gfx-->{{No|Skylake Integrated HD Graphics use PIC-E slot}}
| <!--Audio-->Intel HD Audio with Realtek ALC887 Audio CODEC
| <!--USB-->Sunrise Point-H USB 3.0 xHCI [8086: a12f] no usb2.0 fallback
| <!--Ethernet-->{{Yes|Realtek 8111GR or 8111H RTL8111 8168 8411}}
| <!--Opinion-->ATX with 3 pci-e and 2 DDR4 slots - uatx version smaller - turn off TLSF as it was causing AHI driver to corrupt. Turned off ACPI for errors but works fine once booted -
|-
| <!--Name-->ASUS H110M-R M-ATX
| <!--Chipset-->H110 6th Gen Skylake Core™ i7 Core™ 6950X i7-6970HQ i7-6700K 4c8t hyperthreading, i5/Core™ i5-6600K 4c4t i3/Pentium® / Celeron®
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 x SATA 6Gb/s
| <!--Gfx-->pci-e
| <!--Audio-->HDAudio with Realtek® ALC887 codec
| <!--USB-->Intel USB3
| <!--Ethernet-->Realtek® RTL8111H
| <!--Opinion-->2016 64bit - 2 DDR4 DIMMS Max 32GB 2133MHz - 1 full pci-e and 2 pci-e 1 -
|-
| <!--Name-->Asus H110T
| <!--Chipset-->H110
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2 sata
| <!--Gfx-->intel igpu only
| <!--Audio-->HDaudio
| <!--USB-->
| <!--Ethernet-->Dual Intel/Realtek GbE languard
| <!--Opinion-->2016 - mini itx 12v / 19v laptop type rare barrel pin 7.4MM x 5.0MM - 2 sodimm ddr4 slots - no pci-e slot -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-H110M-S2H MATX Rev1.0
| <!--Chipset-->H110
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata
| <!--Gfx-->pci-e 3.0
| <!--Audio-->Realtek® ALC887 codec
| <!--USB-->2 (USB 3.1 Gen 1) ports with 4 us2
| <!--Ethernet-->Realtek® GbE LAN
| <!--Opinion--> 2 ddr4 slots
|-
| <!--Name-->Gigabyte ga-h110n
| <!--Chipset-->H110
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Yes| sata}}
| <!--Gfx-->{{maybe|Vesa 2d for Intel or PCI-e slot}}
| <!--Audio-->{{Maybe|HDaudio for ALC887 codec}}
| <!--USB-->{{Maybe| }}
| <!--Ethernet-->{{maybe|RTL8169}}
| <!--Opinion-->2016 mini-itx 6th gen
|-
| <!--Name-->Msi H110M-PRO-VH
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 x SATA 6Gb/s
| <!--Gfx-->pci-e 3.0
| <!--Audio--> Realtek® ALC887 Codec
| <!--USB-->
| <!--Ethernet-->rtl8169 rtl8111h
| <!--Opinion--> 6th gen intel - 2 ddr4 slots
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus H170 Pro Gaming
| <!--Chipset-->H170
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata
| <!--Gfx-->pci-e
| <!--Audio-->HDAudio
| <!--USB-->Asmedia USB3.1/3.0
| <!--Ethernet-->intel lan
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI Z170A TOMAHAWK
| <!--Chipset-->Z170
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sara, 1 x 2280 Key M(PCIe Gen3 x4/SATA), 1 x 2230 Key E(Wi-Fi)
| <!--Gfx-->pci-e
| <!--Audio-->HDAudio
| <!--USB-->
| <!--Ethernet-->intel lan
| <!--Opinion-->2016 64bit up to i7 7700k - 2 DDR4 -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->GIGABYTE GA-B250M-DS3H HD3P D3H D2V
| <!--Chipset-->B250
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2018 coffee lake intel 8th gen
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus
| <!--Chipset--> with Kaby Lake X Intel 7th Gen
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion--> up to 16 pcie lanes
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus
| <!--Chipset--> Z390 with Kaby Lake X
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion--> up to 16 pcie lanes
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset--> Q370M
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset--> H370M
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset--> B360M
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus Rampage
| <!--Chipset-->x299 with i9
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion--> - up to 24 to 44 pcie lanes
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte
| <!--Chipset--X299 >
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|}
=====Socket LGA 1200 (2020/2022)=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->MSI H510M-A PRO (MS-7D22)
| <!--Chipset--> with 10th gen Comet Lake X
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2021 64bit - up to 16 pcie lanes rebar possible
|-
| <!--Name-->Asus PRIME H410M-E
Asrock H470M-HDV/M.2
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus
| <!--Chipset--> with 11th gen Rocket Lake X
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion--> up to 16 pcie lanes
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|}
=====Socket LGA 1700 (2023/ )=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->Alder Lake / 14th gen Raptor Lake
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2021 2022 64bit - QoS work to 2 level cpus, P down to E cores -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->Meteor Lake ultra 5 7 1xxH series 1
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2023 2024 64bit 10nm - 3 level cpus, Low Power Island (SOC tile) to E onto P cores -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset--> 15th gen Arrow Lake
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->Lunar lake ultra 5 7 2xxV series 2
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2025 64bit 7nm -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->Nova Lake
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2026 64bit -
|-
| <!--Name-->
| <!--Chipset-->Panther Lake
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2026 64bit - either 44, 484, or 448 tiled cores 18A process - core ultra x9 288h, x7 358H, -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket LGA 1954 (2027/ )=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->Nova Lake-S
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->Serpent Lake, Titan Lake, and Razer Lake
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2027
|-
|}
=====Socket LGA (203x/203x)=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->MSI
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|}
===Chromebooks===
For most (EOL) cromebooks, the recommended UEFI path forward is to:
*put the device into Developer Mode
*disable firmware write protection
*flash MrChromebox's UEFI Full ROM firmware
*install ChromeOS Flex, Linux, etc
See [https://mrchromebox.tech/#home MrChrome], [https://mrchromebox.tech MrChrome] and the [https://www.reddit.com/r/chrultrabook/ chrultrabook subreddit] for more info
ChromeOS has several different boot modes, which are important to understand in the context of modifying your device to run an alternate OS:
*Normal/Verified Boot Mode
Can only boot Google-signed ChromeOS images
Full verification of firmware and OS kernel
No root access to the system, no ability to run Linux or boot other OSes
Automatically enters Recovery Mode if any step of Verified Boot fails
Default / out-of-the-box setting for all ChromeOS devices
*Recovery Mode
User presented with Recovery Mode boot screen (white screen with 'ChromeOS is missing or damaged')
Boots only USB/SD with signed Google recovery image
Automatically entered when Verified Boot Mode fails
Can be manually invoked:
On Chromebooks, via keystroke: [ESC+Refresh+Power]
On Chromeboxes, by pressing a physical recovery button at power-on
On Convertibles/Tablets, by holding the Power, Vol+, and Vol- buttons for 10s and then release
Allows for transition from Verified Boot Mode to Developer Mode
On Chromebooks/Chromeboxes, via keystroke: [CTRL+D]
On Convertibles/Tablets, via button press: Vol+/Vol- simultaneously
Booting recovery media on USB/SD will repartition/reformat internal storage and reload ChromeOS
Note: The ChromeOS recovery process does not reset the firmware boot flags (GBB Flags), so if those are changed from the default, they will still need to be reset for factory default post-recovery.
*Developer Mode
"Jailbreak" mode built-in to every ChromeOS device
Loosened security restrictions, allows root/shell access, ability to run Linux via crouton
Verified Boot (signature checking) disabled by default, but can be re-enabled
Enabled via [CTRL+D] on the Recovery Mode boot screen
Boots to the developer mode boot screen (white screen with 'OS verification is off' text),
The user can select via keystroke
<pre>
ChromeOS (in developer mode) on internal storage ( [CTRL+D] )
ChromeOS/ChromiumOS on USB ( [CTRL+U] )
Legacy Boot Mode ( [CTRL+L] )
</pre>
Boot screen displays the ChromeOS device/board name in the hardware ID string (eg, PANTHER F5U-C92, which is useful to know in the context of device recovery, firmware support, or in determining what steps are required to install a given alternate OS on the device.
*Legacy Boot Mode
Unsupported method for booting alternate OSes (Linux, Windows) via the SeaBIOS RW_LEGACY firmware
Accessed via [CTRL+L] on the developer mode boot screen
Requires explicit enabling in Developer Mode via command line: sudo crossystem dev_boot_legacy=1
Most ChromeOS devices require a RW_LEGACY firmware update first
Boots to the (black) SeaBIOS splash screen; if multiple boot devices are available, prompt shows the boot menu
Note: If you hear two beeps after pressing [CTRL+L], then either your device doesn't have a valid Legacy Boot Mode / RW_LEGACY firmware installed, or legacy boot capability has not been been enabled via crossystem.
https://www.howtogeek.com/278953/how-to-install-windows-on-a-chromebook/
Chromebooks don’t officially support other OSs. You normally can’t even install as Chromebooks ship with a special type of BIOS designed for Chrome OS. But there are ways to install, if you’re willing to get your hands dirty and potentially ruin everything
[https://mrchromebox.tech/#devices Firmware Compatibility]
[https://wiki.galliumos.org/Hardware_Compatibility Here is the list of hardware that the GalliumOS supports and information on getting Gallium OS on to those devices]
Development on GalliumOS has been discontinued, and for most users, GalliumOS is not the best option for running Linux due to lack of hardware support or a kernel that's out of date and lacking important security fixes.
Meet Eupnea and Depthboot, the successors to Galliumos and Breath [https://eupnea-linux.github.io This is the bleeding edge]
Most older Chromebooks need the write-protect screw removed in order to install MrChromebox's firmware that allows you to install other operating systems. Most newer Chromebooks don't work in the same way as there is no write-protect screw on them.
Very rough guide to '''total''' (i.e. all cores / threads) processor performance (AROS usually uses only the [https://gmplib.org/gmpbench one core])
[[#top|...to the top]]
<pre>
060000 AMD Ryzen 9 7900X (AM5 170W),
056000 AMD Ryzen 9 5950X,
055000 AMD Ryzen 9 5900X3D,
053000 AMD Ryzen 9 5900X (AM4 105W), AMD Ryzen 9 3950X (105W),
044000 AMD Ryzen 7 5800X3D,
042000 AMD Ryzen 9 6900HX, AMD Ryzen 5 5600X3D (AM4 95W), AMD Ryzen 7 PRO 5750GE (AM4 35W),
039000 AMD Ryzen 9 5900HS, Intel Core i7-12700T, AMD Ryzen 7 7735HS (8c16t 45W), AMD 8840U,
038000 AMD Ryzen 7 5800H (FP6 45W), AMD Ryzen 7 6800U, Intel Core i5-12490F, Intel Core i5-12500E,
037000 AMD Ryzen 7 5800HS (FP6 35W), AMD Ryzen 5 8500G 8600GE (AM5 6c12t 35W), AMD Ryzen Z2 (8c16t),
036500 AMD Ryzen 7 5700G (AM4 8c16t 65W), AMD Ryzen 9 6900HS, Intel Core i7-12800H,
036200 AMD Ryzen 7 5700GE (AM4 8c16t 35W), AMD Ryzen Z1 Extreme (top TDP), AMD Ryzen 5 8600G (AM5 65W),
036000 AMD Ryzen 5 3600X (Am4 95W), AMD Ryzen 5 5500 (AM4 65W), AMD Ryzen 5 5600 (65W),
035000 AMD Ryzen 5 6600H, Intel Core i5-12400F,
031000 AMD Ryzen™ 9 8945HS, Ryzen™ 7 8845HS, AMD Ryzen 7 7840U,
030000 AMD Ryzen 7 4800U, AMD Ryzen 4800H, Intel Core i5-11400F, Intel Zeon E5-2697A V4,
029500 AMD Ryzen 5 4500 (AM4 65W), AMD Ryzen 5 3600 (65W), Apple M3 Pro 12c, AMD Ryzen 5 5600G,
028500 AMD Ryzen 5 PRO 5675U, AMD Ryzen 7 1700 (AM4 65W), AMD Ryzen 7 2700 (65W), Ryzen 3 7540U,
028000 AMD Ryzen 5 PRO 5650U, 5 5560U (FP6 25W 6c12t Zen3), Intel Core i5-13500H, AMD Ryzen 7 4800HS,
027700 AMD Ryzen 9 PRO 7940HS (FP8 65W), AMD 8745HS, AMD Ryzen H255 AI, AMD Ryzen 3 7545U,
027500 AMD Ryzen 3 7736U, AMD Ryzen 5 7640U,
027400 AMD Ryzen 5 8540U, AMD Ryzen 5 PRO 5650GE (AM4 6c12t 35W), AMD Ryzen 5 PRO 4650G (AM4 45W),
027300 AMD Ryzen 7 PRO 4750GE, AMD Ryzen 5 5600H, AMD Ryzen 7 5825U (FP6 8c16t 15W),
027200 AMD Ryzen 5 6600U, AMD Ryzen 7 2700X, AMD Ryzen 5 5600GE (AM4 35W), AMD Ryzen Z1,
027100 AMD Ryzen 7 7730U (FP6 15W 8c16t), AMD Ryzen 7 5800U (FP6 25W 8c16t), Ryzen 9 4900H,
027000 AMD Ryzen 7 PRO 4750U (8c16t), Ryzen 5 7430U (FP6 6c12t), Ryzen 5 PRO 6650U, Intel 10500H,
026500 AMD Ryzen 7 PRO 7840HS (FP7 65W), AMD Ryzen 7 8840HS, AMD Ryzen Z2 Extreme,
025000 AMD Ryzen 5 4600HS (FP6 35W 6c12t), Apple M1 Pro, AMD Ryzen 5 5625U (FP6 15W 6c12t),
024500 AMD Ryzen 5 5600U (FP6 25W hot 6c12t Zen3), AMD Ryzen 5 2600 (65W), Ryzen 5 7530U,
024000 AMD Ryzen 5 4600G (AM4 65W), AMD Ryzen 5 PRO 4650GE (AM4 35W), AMD Ryzen 7 PRO 1700X (AM4 95W),
023700 AMD Ryzen 3 PRO 5350GE (AM4 35W), AMD Ryzen 5 3500X (AM4 95W), Intel Core i7-9700,
023500 AMD Ryzen 5 1600X (95W), AMD Ryzen 3 5300GE (AM4 4c8t 35W), AMD Ryzen 7 5700U (FP6 25W 8c16t Zen2),
023200 AMD Ryzen 3 7330U (FP6 15W 4c8t), AMD Ryzen 7 4700U (FP6 25W 8c8t), AMD Ryzen 5 4400G,
023000 Intel Core i7-1255U, Intel Core i7 13700H, Ryzen 7640HS,
022000 AMD Ryzen Z2 Go (4c8t), AMD Ryzen 5 5500U (FP6 25W 6c12t Zen2), Snapdragon 8 Elite,
020500 AMD Ryzen 3 4300G (AM4 65W), AMD Ryzen 3 5450U 5425U, AMD Ryzen 5 PRO 4650U (6c12t),
019500 Intel Core i5-1135G7, AMD Ryzen 5 5500H, AMD Ryzen 5 4600U (FP6 25W 6c), AMD Ryzen 5 2600 (65W),
019250 Intel Core i5-1145G7,
019000 AMD Ryzen 5 3400G (AM4 65W), AMD Ryzen 5 2500X, AMD Ryzen 5 7520U, AMD Ryzen V3C18I (? 15W),
017750 AMD Ryzen 5 3400GE (AM4 35W), Intel Core i5-8400, AMD Ryzen 5 1500X (AM4 65W), Xbox One Series X,
017500 Intel Core i7-6700K, Intel i5-10400, AMD Ryzen 5 4500U (FP6 25W 6c6t), AMD Ryzen 3 5400U,
017000 AMD Ryzen 3 PRO 4350GE (AM4 35W), AMD Ryzen 3 5300U (FP6 25W 4c8t), Intel Core i5-11300H,
016500 AMD Ryzen 7 3750H, AMD Ryzen Embedded V1756B (FP5 45W), AMD Ryzen 3 PRO 4200GE, SD G3 Gen3,
016250 Intel Core i5-1035G7, intel core i5 7600 (4c4t 65W),
016000 AMD Ryzen 5 2400G (AM4 65W), AMD Ryzen 5 3550H, Ryzen 5 PRO 3350GE (4c 8t), Intel Core i5-8500T,
015500 AMD Ryzen Embedded R2544, Apple A18,
015000 AMD Ryzen 3 7320U, Ryzen 7 3700U, Ryzen 3200G (AM4 65W), Intel Core i7-8550U, Intel Core i5-1035G1,
014000 AMD Ryzen 5 2400GE (AM4 35W), Intel Core i7-6700T, AMD Ryzen 5 3550U,
013500 AMD Ryzen 5 3500U (FP5 15W 4c8t), AMD Ryzen 3 4300U, AMD Athlon Gold 4150GE, AMD Ryzen 5 3450U,
013250 AMD Ryzen 3 3200GE (AM4 45W), AMD Ryzen 3 1300X (65W), AMD Ryzen 3 2200G, Xbox One Series S,
013000 AMD Ryzen Embedded V1605B (FP5 25W), AMD Ryzen 2700U, AMD Ryzen R2514,
012500 AMD Ryzen 5 2500U (FP5 25W 4c8t), Intel Core i3-8300T, Intel Xeon X5680, Intel i3-1115G4 (2c4t),
012300 Intel Core i7-8565U, Intel Core i5-8350U, Intel Core i7-8700, Allwinner A733 (2 A76, 6 A55),
012200 ARM Cortex-X3 Prime Snapdragon SD8G2 Gen2 4nm 64-bit Kryo CPU, i5-8250U (4c8t),
012000 AMD Ryzen 3 2200GE, AMD Ryzen 3 1200 (65W), AMD Ryzen 5 3500C,
011500 AMD Ryzen 3 3300U, Intel Core i3-8100T, Intel Core i5-8265U, Intel i5-10210U, CORE i5-10310U,
010500 AMD Ryzen 3 2300U (FP5 25W 4c4t), Allwinner A527 (8 A55), Intel i5 4690K,
010300 Intel Core i7-3630QM, Intel Core i5-6600T, Intel Core i5-4670K,
010200 Intel Core i5-6440HQ, Intel Core i7-3610QM, Snapdragon SD865,
010000 AMD FX-8320E (AM3+ 125W 8c8t), Intel Core i5-7500T, Intel Core i5-4690, Intel i5 4690T,
009000 Spectrum Unisoc Tiger T7280 (T620), Cortex-X2, MediaTek Dimensity 1300 (4 A78, 4 A55),
008700 AMD FX-6130 (AM3+ 90W 6c6t), Intel Core i5-7400T, Intel Core i5-4590T,
008500 Intel Core i5-6500T, AMD Athlon 300GE (AM4, 35W), AMD Athlon Gold 7220U,
008000 AMD Ryzen R1606G (FP5 15W), AMD FX-6300 (AM3 65W 6c6t), Intel Core i5-2500K,
007500 AMD Ryzen 3 3200U, AMD Ryzen 3 3250U, Intel Alderlake ULX N100 / N95,
007200 AMD Ryzen 3 2200U (FP5 25W 2c4t), Intel Core i3-7100T, Intel Twinlakes N150 N200, Xbox(TM) One S,
007100 AMD Ryzen R1505G (FP5, 15W), RK3576 4 A72, 4 A53, Snapdragon XR2 Gen 1, Intel i7-6600U and 7600U,
006600 Qualcomm Snapdragon 888 5G, AMD Athlon 300U (FP5 2c4t 15W), Intel Core i7-7500U, AMD V1202B,
006500 Intel Core i7-6500U, AMD Athlon Gold 3150U, Intel Celeron N5105 (FCBGA1338 15W), SD 685,
006300 Intel Core i3-8130U (15W), Intel Celeron N5095 (FCBGA1338 15W), Intel Core i3-6100T,
006100 Intel Core i5-6300U, Intel Core i5-7200U (2c4t), Intel i7-5500U, Intel Core i7-6600U (2c4t),
006000 Intel Core i5-6200U (2c4t), Intel Core i3-7130U, Intel i7-4500U, Qualcomm Snapdragon 888 4G,
005950 Intel Core i5-4570T, Intel Core i5-5257U, Rockchip RK3588 (4 A76, 4 A55), Snapdragon 7325,
005900 Intel Xeon X5550, Intel Core i5-4300M, MediaTek Dimensity 1200 (4 A78, 4 A55), Unisoc 7255 (T616),
005800 Intel Celeron J4125 J4105 (FCBGA1090 15W), Intel Core i5-3470T, AMD A8-6600K APU, AMD 3015E (2c4t),
005600 Intel Core i5-3360M, Intel Core i7-3520M, Intel Core i5-4210M, Intel Pentium G4600T,
005400 MediaTek Dimensity 900 (2 A78, 6 A55), AMD Athlon Silver 7120U, Snapdragon 860,
005300 AMD PRO A12-9800B 7th Gen APU (FP4 15W), AMD FX-4300 4c4t, AMD Ryzen R1305G,
005250 Intel Core i5-3230M, AMD FX-7600P, Intel Pentium G4400, Unisoc T7200 (Unisoc T606 2 A76, 6 A55),
005200 AMD PRO A10-8770E, AMD A10-9700E, AMD PRO A10-9700B (FP4 15W), Intel Core i3-4130T,
005100 AMD RX-427BB (FP3 15W), AMD A10-9620P, AMD A12-9720P, Intel Core i3-8145U, AMD A12-9830B,
005050 AMD A8-5500 (FM2 65W), AMD A10 PRO-7800B APU, Intel Pentium Silver N5000, Intel Core i7-5500U,
005000 Intel Core i5-5300U, Intel Core i5-3320M (2c4t), Intel Core i5-5350U, Unisoc T618 (2 A73 6 A53),
004900 Intel Core i5-4300U, Intel Core i5-5200U, Intel Core i3-4100M, Snapdragon 662 (SM6115),
004860 Intel Core i7-2620M, Intel Core i7-2640M, AMD Athlon Silver 3050U 3050e, Intel i3-7020U,
004650 Intel Core i5-2520M (2c4t), Intel Core i5-3210M, AMD A10-9600P (FP4 4c 15W), Pentium 4415U,
004625 Intel Core i3-7100U (FCBGA1356 15W), ARM A76 RK3588S, AMD A10-6800B APU,
004600 AMD PRO A8-9600B, AMD PRO A12-8830B, AMD PRO A10-8730B, AMD A12-9700P, Intel Core i3-6100U,
004200 AMD A10-8700P A8-8600P, Intel Core i5-4200U, Intel Core i5-2540M, Intel i3-6006U, Intel i3-4150T,
004000 Intel Core i5-2430M, AMD PRO A8-8600B, AMD 3020e, Mediatek MT6797 Helio X20,
003850 Intel Core i5-2410M (2c4t), Intel Core i3-2120 (LGA1155 65W), Mediatek MT8786,
003800 AMD A10-4600M APU, AMD A10 PRO-7350B APU, AMD A10-5750M APU, Rockchip RK3399,
003600 AMD A8-6500T APU, AMD A8-7410 APU, AMD PRO A6-8550B, AMD A8-5550M (4c4t),
003500 AMD GX-424CC SOC (FT3b 25W 4c4t), ARM A75 Unisoc Tiger T610 (Spreadtrum) (8c 5W), intel i5-5250u,
003400 AMD A10-7300 APU, AMD A6-7310 APU, AMD A8-6410, AMD A10-5745M APU, Intel Core i3-4000M,
003350 Intel Pentium G2020, Intel Core i3-3120M (G2 2c4t), AMD R-464L APU, Intel® Core m5-6Y57 (2c4t),
003300 AMD GX-420CA SOC (FT3 BGA769 25W), AMD A6-9500E, Intel Celeron N4200, AMD A6-5200 ( 25W 2c2t),
003200 AMD A6-6310 APU, AMD A6-6400B APU, AMD A6-8570E, AMD A8-4500M APU, AMD A6-7400K APU,
003000 AMD A8-7150B, AMD A9-9410, A9-9420, A9-9425, AMD A6-8500B (FP4 15W), AMD A8-7100, Intel 5010u,
002900 AMD PRO A6-8530B, AMD A6-8500P, AMD A8-3500M APU, Intel Core i3-2120T, Intel i5-4250u,
002700 AMD Embedded GX-420GI (FP4 15W), AMD PRO A6-9500B, AMD GX-415GA, AMD A4-6210 APU, Intel i3-5005U,
002600 AMD A6-9225, AMD A8-4555M APU, AMD A4-5000 APU (FT3 15W), AMD A6-9220, AMD A6-3420M APU,
002450 Intel Celeron 2950M, Intel Pentium N3700, Intel Core i3-2350M, Allwinner A523 (8 A55),
002400 Intel Celeron N3150, Intel Core i3-2330M, Intel Xeon W3505, AMD A6-9210, Allwinner H618 (4 A53),
002300 Intel Celeron N3350, AMD A4-9120, AMD A4-9125, Intel Core i3-2310M, Intel Celeron 3865U,
002200 AMD A9-9420e, AMD A6-5350M APU, AMD E2-6110 APU, AMD E2-9000e, Celeron N4500, Intel N3710,
002000 AMD GX-412HC, AMD A4-4300M APU, AMD A6 PRO-7050B APU, AMD A6-4400M APU, AMD A6-7000,
001925 Intel Core2 Duo E6700, Intel Pentium Extreme Edition 965, Intel Core i3-370M, Celeron N4020,
001750 Intel Core i3-2365M 2375M, AMD A4-9120C, Intel Core2 Duo T8300, Qualcomm MSM8939,
001600 AMD GX-222GC (BGA769 FT3b 15W), AMD A4-9120e, AMD Embedded GX-215JJ, AMD A4-4355M APU,
001550 Intel Core2 Duo SL9400 T7600 T6600, AMD E2-3200, AMD A6-9220e, Mediatek MT8783, AMD E2-3800,
001520 Intel Celeron N4000,
001500 AMD GX-218GL SOC, AMD A6-4455M, AMD A4-5150M APU, ARM A55 RK3566 (4c 3W), Intel Core2 Duo T8100,
001400 AMD GX-217GA SOC, ARM Cortex-A53 4c4t H700, AMD A4-3300M APU, Allwinner A133P A64 (4 A53),
001300 AMD Turion 64 X2 Mobile TL-64 TL-62, Intel Core2 Duo T7300, Intel Core2 Duo T5600, AMD RX-216TD,
001250 AMD GX-412TC SOC, AMD A4-3320M APU, AMD Athlon 64 X2 QL-66, Intel Core2 Duo T7200
001200 AMD Athlon 64 X2 2c TK-57, AMD Turion 64 X2 Mobile TL-60 RM-74, AMD E1-2500, AMD E2-7015,
001150 Intel Core2 Duo T5550, Intel Core2 Duo L7500, AMD E2-3000M APU, ARM A35 RK3266, AMD E2-7110,
001100 Intel Core2 Duo T5300, AMD Athlon 64 X2 3800, Intel Core2 Duo E4300, Mediatek MT8127,
001050 AMD E1-6010 APU, Intel Pentium T4300, Intel Celeron N2840,
001050 AMD Athlon 64 FX-57, AMD Athlon 64 X2 Dual-Core TK-55, AMD Turion 64 X2 Mobile TL-52
001000 Intel Core2 Duo T5500, Intel Core2 Duo L7300, Intel Core2 Duo SU9400,
000950 AMD G-T56N, AMD Athlon 64 3100+, AMD E2-2000 APU,
000950 AMD Turion 64 X2 Mobile TL-50, AMD E1-2200 APU, Intel Celeron U3400,
000925 AMD TurionX2 Dual Core Mobile RM-72, AMD Sempron 140
000920 Intel Celeron SU2300, Intel Core2 Duo T5200, AMD Turion 64 X2 Mobile TL-56
000890 AMD E2-1800 APU, AMD Turion 64 X2 Mobile TL-58
000880 AMD G-T56E, AMD G-T48E,
000860 AMD E-450 APU, AMD E-350 APU, AMD Athlon LE-1620
000820 AMD A4-1250 APU, AMD Athlon LE-1600,
000810 AMD E1-2100 APU, Intel Core Duo T2500,
000810 Intel Atom D510, Intel Core2 Duo U7500,
000800 AMD Geode NX 2400+, AMD Turion 64 Mobile ML-42, AMD Athlon II Neo K325,
000760 AMD V140, AMD E1-1200 APU, AMD Athlon 64 3300+,
000730 Intel Core Duo T2400, AMD Turion 64 Mobile MK-38, AMD Sempron 3600+,
000700 Intel Core2 Duo U7600 U7700, AMD Sempron LE-1200, AMD V120
000680 AMD GX-212JC SOC, AMD E-300 APU, AMD A4-1200 APU,
000670 AMD Turion 64 Mobile MK-36 ML-37 ML-40, Mobile AMD Sempron 3800+
000640 Intel Atom N2600, Intel Atom N570, Mobile AMD Athlon 64 3200+
000640 Intel Core Duo T2300, Intel Core Duo T2050,
000630 VIA Eden X2 U4200, AMD Sempron LE-1100, AMD Sempron 3100+ 3600+,
000620 AMD C-70 C70 APU, Intel Atom 330, AMD G-T40N, AMD Athlon Neo MV-40,
000610 Intel Core2 Duo U7300, AMD Athlon II Neo K125 K145,
000600 Intel Atom N550, Intel Pentium 4, AMD Athlon 64 2800+,
000580 AMD C-60 C60, AMD G-T40E, AMD Sempron LE-1250
000530 AMD C-50 C50, Intel Celeron M 723, AMD Sempron 210U,
000490 AMD GX-210JA SOC, PowerPC 970 G5 IBM's 970 server CPU (2c),
000470 Mobile AMD Sempron 3500+, Mobile AMD Athlon XP-M 2200+,
000460 AMD Athlon XP 2500+, AMD Sempron 3500+, Mobile Intel Pentium 4,
000440 Intel Atom D425, Intel Atom N470, POWER 4 PPC,
000410 Intel Pentium M, Intel Celeron M, AMD Sempron 2300+
000400 Intel Atom N450, AMD Sempron 2400+,
000340 Intel Atom D410, AMD G-T52R, AMD C-30, AMD Sempron 2200+
000330 Intel Atom N455, Intel Atom N280, Intel Atom N270 (1c1t 2W), Intel P3,
000320 Freescale NXP QorIQ P1022
000310 PowerPC G4 7447 1Ghz (1c1t 15W), PPC440 core,
000230 PowerPC PPC G3/PPC 750,
000160 Pentium II, Motorola 68060
000080 Intel 80486, Motorola 68030,
000040 Intel 80386,
000030 Motorola 68020
000008 Motorola 68000
</pre>
=== Recommended hardware (32-bit) ===
[[#top|...to the top]]
Recommended hardware is hardware that has been tested with latest release of AROS and is relatively easy to purchase second hand (ie. ebay). This hardware also comes with commitment that compatibility will be maintained with each future release.
If in future decision will be made to drop any of the recommended hardware from the list (for example due to it no longer being available for purchase), such hardware will move to list of legacy supported systems and will have an indicated end of life date so that users have time to switch to other hardware.
{| class="wikitable sortable" width="100%"
| <!--OK-->{{Yes|'''Works well'''}} || <!--Not working-->{{No|'''Does not work'''}} || <!--Not applicable-->{{N/A|'''N/A not applicable'''}}
|-
|}
==== Virtual Hardware ====
{| class="wikitable" width="100%"
! width="20%" |Name
! width="5%" |Storage
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |Ethernet
! width="5%" |Wireless
! width="10%" |Additional hardware
! width="45%" |Comments
|-
| VirtualBox 7.x (Other/Unknown template) || {{Yes|IDE<br/>SATA(AHCI)}} || {{Yes|VMWARESVGA}} || {{Yes|HDAudio}} || {{Yes|PCNET32<br/>E1000}} || NOT APPLICABLE || NOT APPLICABLE || <!--Comments-->
|-
| VMware 16+ (Other32 template) || {{Yes|IDE<br/>SATA(AHCI)}} || {{Yes|VMWARESVGA}} || {{Yes|SB128}} || {{Yes|PCNET32}} || NOT APPLICABLE || NOT APPLICABLE || <!--Comments-->
|-
| QEMU 8.x ("pc" and "q35" machines) || {{Yes|IDE<br/>SATA(AHCI)}} || {{Yes|VESA}} || {{Yes|SB128}} || {{Yes|PCNET32}} || NOT APPLICABLE || NOT APPLICABLE || <!--Comments-->
|-
|}
==== Laptops ====
{| class="wikitable" width="100%"
! width="20%" |Name
! width="5%" |Storage
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |Ethernet
! width="5%" |Wireless
! width="10%" |Additional hardware
! width="45%" |Comments
|-
| ACER Aspire One ZG5 || {{Yes|IDE<br/>SATA(IDE)}} || {{Yes|GMA}} || {{Yes|HDAudio}} || {{Yes|RTL8169}} || {{Yes|ATHEROS}} || NOT APPLICABLE || <!--Comments-->
|-
| Dell Latitude D520 || {{Yes|IDE}} || {{Yes|GMA}} || {{Yes|HDAudio}} || {{Yes|BCM4400}} || {{No|}} || {{Yes|Atheros AR5BXB63}} || * select Intel Core 2 64-bit version, not Celeron 32-bit version <br/> * replace WiFi card to get wireless working
|-
|}
==== Desktop Systems ====
{| class="wikitable" width="100%"
! width="20%" |Name
! width="5%" |Storage
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |Ethernet
! width="5%" |Wireless
! width="10%" |Additional hardware
! width="45%" |Comments
|-
| Fujitsu Futro S720 || {{Yes|SATA(AHCI)}} || {{Yes|VESA}} || {{Yes|HDAudio}} || {{Yes|RTL8169}} || NOT APPLICABLE || NOT APPLICABLE || * no 2D/3D acceleration<br/> * use USB ports at back
|-
|}
==== Motherboards ====
{| class="wikitable" width="100%"
! width="20%" |Name
! width="5%" |Storage
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |Ethernet
! width="5%" |Wireless
! width="10%" |Additional hardware
! width="45%" |Comments
|-
| ASUS P8Z68V LX || {{Yes|SATA(AHCI)}} || {{Yes|VESA}} || {{Yes|HDAudio}}|| {{Yes|RTL8169}} || NOT APPLICABLE || {{Yes|GeForce 8xxx/9xxx}} || * add external PCIe video card for better performance
|-
| Gigabyte GA-MA770T UD3/UD3P || {{Yes|IDE<br/>SATA(AHCI)}} || NOT APPLICABLE || {{Yes|HDAudio}}|| {{Yes|RTL8169}} || NOT APPLICABLE || {{Yes|GeForce 8xxx/9xxx}} || * requires external PCIe video card
|-
| ASUS M2N68-AM SE2 || {{Yes|IDE}} || {{Yes|NVIDIA}} || {{Yes|HDAudio}}|| {{Yes|NVNET}} || NOT APPLICABLE || {{Yes|GeForce 8xxx/9xxx}} || * connecting a disk via SATA connector is not supported at this time <br/> * add external PCIe video card for better performance
|-
| Gigabyte GA-H55M-S2H || {{Yes|IDE<br/>SATA(AHCI)}} || {{Yes|VESA}} || {{Yes|HDAudio}}|| {{Yes|RTL8169}} || NOT APPLICABLE || {{Yes|GeForce 8xxx/9xxx}} || * add external PCIe video card for better performance
|-
|}
==== Legacy supported hardware ====
{| class="wikitable" width="100%"
! width="20%" |Name
! width="5%" |Storage
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |Ethernet
! width="5%" |Wireless
! width="10%" |Additional hardware
! width="10%" |EOL
! width="35%" |Comments
|-
| iMica || {{Yes|IDE}} || {{Yes|GMA}} || {{Yes|HDAudio}}|| {{Yes|RTL8169}} || NOT APPLICABLE || NOT APPLICABLE || 2026-12-31 ||
|-
| Gigabyte GA-MA770 UD3 || {{Yes|IDE<br/>SATA(IDE)}} || NOT APPLICABLE || {{Yes|HDAudio}}|| {{Yes|RTL8169}} || NOT APPLICABLE || {{Yes|GeForce 8xxx/9xxx}} || 2026-12-31 || * requires external PCIe video card
|-
|}
=== Recommended hardware (64-bit) ===
[[#top|...to the top]]
Recommended hardware is hardware that has been tested with latest release of AROS and is relatively easy to purchase second hand (ie. ebay). This hardware also comes with commitment that compatibility will be maintained with each future release.
==== Virtual Hardware ====
{| class="wikitable" width="100%"
! width="20%" |Name
! width="5%" |Storage
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |Ethernet
! width="5%" |Wireless
! width="10%" |Additional hardware
! width="45%" |Comments
|-
| VirtualBox 7.x (Other/Unknown (64-bit) template) || {{Yes|IDE<br/>SATA(AHCI)}} || {{Yes|VMWARESVGA}} || {{Yes|HDAudio}} || {{Yes|PCNET32<br/>E1000}} || NOT APPLICABLE || NOT APPLICABLE || * No accelerated 3D support
|-
| VMware 16+ (Other64 template) || {{Yes|IDE<br/>SATA(AHCI)}} || {{Yes|VMWARESVGA}} || {{Yes|SB128}} || {{Yes|E1000}} || NOT APPLICABLE || NOT APPLICABLE || * No accelerated 3D support
|-
| QEMU 8.x ("pc" and "q35" machines) || {{Yes|IDE<br/>SATA(AHCI)}} || {{Yes|VMWARESVGA}} || {{Yes|SB128}} || {{Yes|PCNET32}} || NOT APPLICABLE || NOT APPLICABLE || * No accelerated 3D support
|-
|}
==== Motherboards ====
{| class="wikitable" width="100%"
! width="20%" |Name
! width="5%" |Storage
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |Ethernet
! width="5%" |Wireless
! width="10%" |Additional hardware
! width="45%" |Comments
|-
| ASUS P8Z68V LX || {{Yes|SATA(AHCI)}} || {{Yes|VESA}} || {{Yes|HDAudio}}|| {{Yes|RTL8169}} || NOT APPLICABLE || {{Yes|GeForce GTX 7xx/9xx}} || * add external PCIe video card for better performance
|-
|}
==References==
[[#top|...to the top]]
{{reflist}}
{{BookCat}}
09tdz5ns9cddl5wqx9pbjmplpkt5a32
4656263
4656262
2026-08-04T13:44:22Z
Jeff1138
301139
4656263
wikitext
text/x-wiki
{{ArosNav}}
==Introduction==
This a list of computer hardware tested with mostly native AROS installs and, in the recommended sections, of virtual machines
With 64bit support it is recommended 8Gb ram is needed and that SSE 4.1 and AVX are supported in the CPU i.e. from year 2012 for Intel CPUs and 2013 for AMD CPUs. They are x86-64 instruction sets designed to perform the same operations on multiple data items simultaneously, a technique known as Single Instruction, Multiple Data (SIMD). This allows for increased performance in tasks involving parallel computation. SSE 4.1 is a 128-bit SIMD instruction set, while AVX introduced 256-bit SIMD, further enhancing performance. Some apps require these features to run well, like 3D, multimedia decoding or JIT (javascript) in Odyssey web browser. If not the apps may work slower or might fail.
If you have encountered differently (i.e. problems, incompatibilities, faults, annoyances, environment, errors, review of setup etc) please update this information.
Please bear in mind that AROS has only a few hardware driver developers, whilst Linux counts in the tens and Windows in the hundreds.
[[#Laptops]]
[[#Netbook]]
[[#Desktop Systems]]
[[#AMD Sockets]]
[[#Intel Sockets]]
[[#Recommended hardware (32-bit)]]
[[#Recommended hardware (64-bit)]]
=== Laptops ===
[[#top|...to the top]]
* 2006/2007 Dell Latitude D-series laptops - business class machines, good support in Aros, easy to replace wifi card
* 2006 some [https://www.techradar.com/reviews/pc-mac/laptops-portable-pcs/laptops-and-netbooks/toshiba-satellite-pro-a200-28550/review Satellite Pro A200]
* 2008 For the tiny carry anywhere, the early run of Acer Aspire netbooks
Rough estimate from taking a random laptop notebook what you can expect from a Native install of AROS
{| class="wikitable sortable" width="100%"
! width="10%" |Date
! width="5%" |Overall
! width="5%" |Gfx VESA
! width="5%" |Gfx 2D Acceleration
! width="10%" |Gfx 3D Acceleration
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="10%" |Wireless
! width="20%" |Comments
|-
| Before 2002 || Poor to OK || VESA 90% || 2D 10% || {{N/A}} || Audio 10% || 40% || Wired 70% || 2% || Max RAM 512MB
|-
| 2002-2005 || OK || VESA 95% || 2D 10% || 3D 0% || Audio 30% || 70% || Wired 50% || 10% || Max RAM 2GB (for 32bit)
|-
| 2005-2012 || Good || VESA 98% || 2D 60% || 3D 30% || Audio 40% || 80% || Wired 30% || 10% || Max RAM 3Gb (32bit) to 8GB (64bit)
|-
| 2013-2017 || OK || VESA 98% || 2D 30% || 3D 0% || Audio 30% || 60% once usb3 completed || Wired 20% || 0% || Max RAM 8GB / 16GB better to go Intel / AMD Ryzen over AMD A series
|-
| 2018-2024 || OK || VESA 98% || 2D 20% || 3D 0% || Audio 40% || 40% once usb3 completed || Wired 30% || 0% || Max RAM 32GB better 64bit options if has an internal dvd drive and working ethernet
|-
| 2025-202x || Poor || VESA 95% || 2D 0% || 3D 0% || Audio 0% || 0% || Wired 10% || 0% || Max RAM 64GB AI disruption of previous hardware
|-
|}
3D tests now conducted with apps found in Demos/AROS/Mesa and run at default size (may need to View As -> Show All to see them.
Any laptop with Windows 7(TM) 64bit or higher install, the bios and hard drive set in uefi/gpt mode (install of AROS incompatible)
Most vendor suppliers get OEM (original equipment manufacturers) to make their laptops. These brand name companies purchase their laptops from
*80% ODM (Original Design Manufacturer) such as Quanta, Compal, Wistron, Inventec, Foxconn (Hon Hai), Flextronics and Asus (now Pegatron)
*20% MiTAC, FIC, Arima, Uniwill, ECS, Tonfang Origin and Clevo
{| class="wikitable sortable" width="100%"
| <!--OK-->{{Yes|'''Works well'''}} || <!--May work-->{{Maybe|'''Works a little'''}} || <!--Not working-->{{No|'''Does not work'''}} || <!--Not applicable-->{{N/A|'''N/A not applicable'''}}
|-
|}
====Acer/Gateway/Emachines====
Company founded under the name of Multitech in Taiwan in 1976, renamed to Acer or Acer Group in 1987
Order of build quality (Lowest to highest)
<pre >
Packard Bell
Aspire
Extensa
TimeLine
Travelmate
</pre >
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="2%" |Ethernet
! width="5%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Travelmate 505 506 507 508 Series || <!--Chipset-->P2 Celeron 466Mhz || <!--IDE-->{{Yes|boots}} || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA Neo Magic Magic Graph 128XD (NM2160)}} || <!--Audio-->{{No|AC97 Crystal CS}} || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->1998 minimal support but no audio etc - 506T, 506DX, 507T, 507DX, 508T
|-
| <!--Name-->TravelMate 340 342 343 345 347 || <!--Chipset-->ALi M1621 with piii || <!--IDE--> || <!--SATA--> || <!--Gfx-->Trident Cyber 9525 || <!--Audio-->{{No|ESS ES1969 Solo-1}} || <!--USB-->2 ALi OHCI USB 1.1 || <!--Ethernet-->a few have Intel e100 || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->2000 32bit - 340T, 341T, 342T, 342TV, 343TV, 345T, 347TV
|-
| <!--Name-->TravelMate 350 351 352 353 || <!--Chipset-->Ali with piii || <!--IDE-->{{Yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->Trident Cyber Blade DSTN/Ai1 || <!--Audio-->{{No|ali5451}} || <!--USB-->2 USB 1.1 Ali M5237 OHCI || <!--Ethernet-->e100 || <!--Wireless-->Acer InviLink IEEE 802.11b || <!--Test Distro--> || <!--Comments-->2001 32bit very limited support but no support for PCMCIA O2 Micro OZ6933 - 350T, 351TEV, 352TEV, 353TEV
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->TravelMate 610 series 611 612 613 614 || <!--Chipset-->815 P3 || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->Intel 82815 cgc || <!--Audio-->AC97 || <!--USB-->USB 1.1 || <!--Ethernet-->Intel e100 pro || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->2001 32bit - 610TXVi 610T 611TXV 612TX 613TXC
|-
| Aspire 3003LM || SIS AMD 3000 1.8GHz || {{yes}} || {{N/A}} || {{maybe|SIS AGP M760GX (VESA only)}} || {{yes|AC97 SIS codec}} || 3 USB 2.0 || {{yes|SIS900}} || {{no|Broadcom BCM4318 AirForce One 54g}} || Icaros 1.2.4 || 2003 sempron
|-
| Travelmate 2310 Series ZL6 || Intel Celeron M 360 1.4GHz with SiS 661MX || {{yes}} || {{N/A}} || {{maybe|SiS Mirage M661MX (VESA only)}} || {{yes|SIS SI7012 AC97 with realtek ALC203 codec speakers only}} || || {{yes|SIS900}} || {{N/A|LM version has pci card slot but no antenna}} || 2017 Icaros 2.1.1 || 2004 32bit - No USB boot option but boot from DVD - reports of wifi losing connection (isolate/remove the metallic grounding foil ends of the antennas) - 2312LM_L -
|-
| <!--Name-->Aspire 3000 3002LMi 3500 5000 || <!--Chipset-->AMD CPU W-with SIS M760 || <!--IDE--> || <!--SATA--> || <!--Gfx-->SIS 760 || <!--Audio-->SIS || <!--USB--> || <!--Ethernet-->SIS 900 || <!--Wireless-->{{No|Broadcom BCM4318 swap for Atheros}} || <!--Test Distro--> || <!--Comments-->2005 32bit
|-
| <!--Name-->Aspire 3050 5020 5050 || <!--Chipset-->AMD Single and Turion MK-36 Dual and RS480 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Use VESA - RS482M Xpress 1100 or RS485M Xpress 1150 || <!--Audio-->HD Audio Realtek ALC883 || <!--USB--> || <!--Ethernet-->8139 || <!--Wireless-->Atheros 5006G or Broadcom BCM 4318 || <!--Test Distro--> || <!--Comments-->2005 32bit MK36 gets very hot
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->TravelMate 2410 2420 2430 series || <!--Chipset-->915GM || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel Mobile 915GMS 910GML || <!--Audio-->Intel AC97 ICH6 with ALC203 codec || <!--USB-->4 USB2.0 || <!--Ethernet-->Realtek RTL-8139 || <!--Wireless-->Atheros 5005GS || <!--Test Distro--> || <!--Comments-->2005 32bit 2428AWXMi -
|-
| <!--Name-->Acer Aspire 3610 - WISTRON MORAR 3614WLMI || <!--Chipset-->Intel 915 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Yes|Intel GMA 2D and 3D}} || <!--Audio-->{{yes|[http://www.amiga.org/forums/showpost.php?p=644066&postcount=13 AC97]}} || <!--USB--> || <!--Ethernet-->{{yes|RTL 8139 8139C+}} || <!--Wireless-->{{Maybe|Atheros AR5001X+, AR5BMB5 or Broadcom 4318}} || <!--Test Distro--> Icaros 1.2.4 || <!--Comments-->2005 32bit with good support [http://ubuntuforums.org/showthread.php?p=6205188#post6205188 wifi issues]
|-
| <!--Name-->TravelMate 2480 series 2483 WXMi (HannStar J MV4 94V) 2483NWXCi Aspire 3680, 3690 || <!--Chipset-->940GML i943 with Celeron 430 1.77GHz - 14.1" || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes| }} || <!--Gfx-->{{Yes|2D and 3D openGL 1.x - Tunnel 181 gearbox 104 scores}} || <!--Audio-->{{Yes|HD Audio with ALC883 codec playback}} || <!--USB-->{{Yes|3 USB 2.0}} || <!--Ethernet-->{{No|Marvell 88E8038 yukon sky2}} || <!--Wireless-->{{No|Atheros 5k AR5005G AR5BMB5 mini pci}} suspect laptop hardware issues || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2006 Works well shame about the internet options - noisy fan - poor battery life - no boot option for TI based mass storage sd card - Max 2GB memory - LCD Inverter Board IV12090/T-LF -
|-
| <!--Name-->TravelMate 2490 series 2492WXMi || <!--Chipset-->940GML || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Yes|Intel 945 2D and 3D tunnel 164 gearbox 105}} || <!--Audio-->{{Yes|HD Audio}} || <!--USB--> || <!--Ethernet-->{{Maybe|Broadcom BCM4401}} || <!--Wireless-->{{No|Atheros AR5005GS suspect hardware issue}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2006 32bit - 15inch screen - strange curved up at ends keyboard style - overall plastic construction - Atheros AR5005G(s) -
|-
| <!--Name-->Gateway ML6227B MA7 || <!--Chipset-->Celeron M 520 1.6Ghz with 945GM || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{Yes|945GM 2D and 3D tunnel 169 gearbox 132}} || <!--Audio-->{{No|HDA Intel with STAC9250 codec}} || <!--USB--> || <!--Ethernet-->{{No|Marvell 88E8038}} || <!--Wireless-->{{No|8187L but swap ath5k mini pcie}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2006 15.4 ultrabrite widescreen - Wifi Switch on side Fn/F2 -
|-
| <!--Name-->Acer Aspire 5630-6796 6288 BL50 || <!--Chipset-->T5200 T5500 Intel® Core™2 Duo T7200 T7400 T7600 || <!--IDE-->{{Yes| }} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Yes|Intel® GMA 950 with S-Video out with 2D and 3D}} || <!--Audio-->{{Yes|HDAudio with ALC883? codec}} || <!--USB-->{{Yes|4 USB}} || <!--Ethernet-->{{yes|Broadcom BCM4401}} || <!--Wireless-->{{No|Intel 3945abg swap for Atheros 5K}} || <!--Test Distro-->Tiny AROS || <!--Comments-->2006 - 64bit 39.1 cm (15.4" 1280 x 800) - 2 DDR2-SDRAM slots max 4GB - green mobo?? -
|-
| <!--Name-->Acer Aspire 5633WMLI BL51 || <!--Chipset-->T5500 with Intel® 945PM/GM Express || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE mode}} || <!--Gfx-->{{Yes|Nvidia Go 7300 with 2D and 3D}} || <!--Audio-->{{Yes|HD Audio with Realtek codec}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{yes|Broadcom 440x}} || <!--Wireless-->{{No|Intel 3945 swap for Atheros 5k}} || <!--Test Distro-->Tiny Aros || <!--Comments-->2007 64 bit dual core2 - 15.4 WXGA screen - ddr2 max 4gb - OrbiCam no support - ENE chipset SD card - blue mobo?? -
|-
| <!--Name-->Acer Aspire 9410 9420 || <!--Chipset-->Intel Core Duo with 945PM Express || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes| }} || <!--Gfx-->{{Yes|2D NVIDIA GeForce Go 7300 - 128 MB VRAM G72M}} || <!--Audio-->{{Yes|Intel HD audio with codec}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{Yes|rtl8169 8111 }} || <!--Wireless-->{{No|Intel 3945ABG but could swap with atheros 5k}} || <!--Test Distro-->Icaros 2.3 || <!--Comments-->2007 32bit - 17in TFT 1,440 x 900 WXGA+ - 2 ddr2 sodimm slots max 4gb -
|-
| <!--Name-->eMachines E510 series KAL10 || <!--Chipset-->Intel Celeron M 560 2.13Ghz with PM965 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel x3100 || <!--Audio-->{{Yes|Intel with codec}} || <!--USB-->Intel || <!--Ethernet-->{{No|Broadcom BCM5906M}} || <!--Wireless-->{{No|Atheros G AR5BXB63 bios issue??}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2007 32bit very budget machine with InsydeH20 bios and F10 boot menu
|-
| <!--Name-->ACER Aspire 5920 [http://tim.id.au/laptops/acer/aspire%205920g.pdf 5920G] || <!--Chipset-->Santa Rosa Core 2 Duo T7300 T7500 later T9300 with GM965 and PM965(G) Express || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|use VESA for X3100M or 8600M GS (rev a1) 9500M GT 256MB vram (G) but some AMD/ATI RV635 M86 HD 3650}} || <!--Audio-->{{No|HD Audio with realtek alc268, [https://forums.opensuse.org/t/no-sound-on-acer-aspire-5920g/32392 ALC883] or Realtek ALC1200 / alc888s codec ICH8}} || <!--USB-->{{Yes|USB2 }} || <!--Ethernet-->{{No|Broadcom BCM5787M}} || <!--Wireless-->{{unk|Intel 3945ABG 4965 or Atheros 9k AR9285}} || <!--Test Distro-->Deadwood test iso 2023-01 2023-11 || <!--Comments-->2008 64bit boot with 'noacpi' or 'noioapic' - 15.4in 1280 x 800 pixels 16:10 - BMW Designworks ‘Gemstone’ design - over 3.0kg with options for 8-cell or 6-cell batteries - 2 SODIMM DDR2 667MT/s max 4GB - synaptics touchpad -
|-
| <!--Name-->Acer A0521 Ao721 || Athlon II Neo K125 + AMD M880G || {{N/A}} || {{maybe| }} || {{maybe|ATI Radeon HD 4225 (VESA only)}} || {{No|Conexant}} || {{Maybe| }} || {{no|AR8152 l1c}} || {{unk|AR9285 ath9k}} || AspireOS 1.7 || 2006 64bit possible
|-
| <!--Name--> Extensa 5630Z || <!--Chipset-->T6600 with Intel GL40 Express || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe|IDE mode}} || <!--Gfx--> {{Yes|Intel GMA 4500M HD (2D)}} || <!--Audio--> {{Yes|HD Audio}} || <!--USB--> {{Yes|USB 2.0}} || <!--Ethernet--> {{No|Broadcom BCM 5764M}} || <!--Wireless--> {{No|RaLink RT2860}} || <!--Test Distro--> || <!--Comments-->2008 64bit
|-
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Aspire 5250 series 5253 BZ400 BZ602 || <!--Chipset-->E350 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{no|VESA 2D for AMD HD6310}} || <!--Audio-->{{yes|HDaudio for codec Conexant CX20584}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no|Atheros AR8151}} || <!--Wireless-->{{no|Atheros 9k AR5B97}} || <!--Test Distro--> || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->Aspire V5 V5-121 V5121 AO725 One 725 || <!--Chipset-->AMD C-70 C70 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{no|VESA for AMD 6290G}} || <!--Audio-->{{no|Realtek ALC269 codec}} || <!--USB-->{{yes|2 x USB2}} || <!--Ethernet-->{{no|Broadcom}} || <!--Wireless-->{{no|Broadcom}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->Aspire V5-122P MS2377 || <!--Chipset-->C-70 C70 with M55, AMD A4-1250 or A6 1450 up to 1.4Ghz || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->AMD 8210 || <!--Audio-->{{unk|HDaudio with codec}} || <!--USB-->{{maybe|FCH USB EHCI OHCI}} || <!--Ethernet-->{{Maybe|rtl8169 but LAN/VGA Combo Port Cable (AK.LAVGCA 001) or MiniCP port to Acer Converter Cable (Mini CP to VGA/LAN/USB) (NP.OTH11 00C) needed}} || <!--Wireless-->{{unk|Atheros 9k AR9565}} || <!--Test Distro-->Aros One || <!--Comments-->2012 64bit but no sse4 or avx - 26w battery internal, extension possible - 11.6in 1366 x 768 ips touchscreen - 7mm hd ssd - 2gb ddr3l soldered with 1 slot free max 4GB - bios hacking needed for virtualisation -
|-
| <!--Name-->Packard Bell EasyNote TE69 TE69KB 522 || <!--Chipset-->slow E1-2500, E2-3800 2c2t Dual or A4-5000 4c4t Quad both soldered BGA769 (FT3) on Hudson-2 FCH || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe|Use IDE mode}} setting AHCI to IDE mode - boots if UEFI set to Legacy || <!--Gfx-->{{Maybe|VESA 2D for ATI Radeon 8120 8240, 8320, 8330 or 8280 islands}} || <!--Audio-->{{Yes|HDAudio with ALC282 0x10ec, 0x0282 codec but not HDMI}} || <!--USB-->{{Yes|Bios, Boot, set Boot mode to Legacy, nothing from USB3}} || <!--Ethernet-->{{No|Atheros AR8171 AR8175 or Broadcom BCM57780}} || <!--Wireless-->{{unk|Atheros AR9565 0x1969 0x10a1}} || <!--Test Distro-->Aspire OS Xenon and AROS One 1.6 usb || <!--Comments-->2013 64bit with sse4.1 and AVX - 15.6in washed out screen big netbook - Boots with noacpi after using F2 to enter EFI firmware and f12 boot device - 2 ddr3 sodimm slots max 16Gb -
|-
| <!--Name-->ASPIRE Acer Aspire ES1-520 521 522 Series N15C4 ES1-523 || <!--Chipset-->AMD AMD E1-7010, A8-7410 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{partial|VESA for RADEON R5}} || <!--Audio-->{{no|Realtek ALC 233 or CX20752 HD AUDIO CODEC}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{no|Atheros AR8151 Gigabit or Broadcom 590x}} || <!--Wireless-->{{no|Realtek RTL8187 or 8812BU}} || <!--Test Distro-->Aros One || <!--Comments-->2015 64bit with sse4.1 and AVX - 2 ddr3l slots - keyboard connected to top case -
|-
| <!--Name-->Acer Aspire V15 NITRO Black edition || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->GTX 860M || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2015 64bit
|-
| <!--Name-->Predator 15 (G9-591-) (G9-593-72VT) || <!--Chipset-->Intel i7-6700HQ || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->GTX 960M to 980M, GTX 1060 || <!--Audio-->{{unk|HDAudio with Realtek ALC255 @ Intel Sunrise Point PCH High Definition Audio Controller}} || <!--USB-->USB3 || <!--Ethernet-->{{no| }} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2015 64bit -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Nitro 5 an515-42 || <!--Chipset-->Ryzen 2500u || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->AMD rx560x || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2018 64bit -
|-
| <!--Name-->aspire 3 A315-41 || <!--Chipset-->Ryzen 2500u || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->AMD Vega || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2018 64bit -
|-
| <!--Name-->swift 3 sf315-41 || <!--Chipset-->Ryzen 2500u || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->AMD Vega || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2018 64bit -
|-
| <!--Name-->Acer Aspire 3 A315-23 || <!--Chipset-->AMD Ryzen 3020e, r3 3200u || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD || <!--Audio-->{{unk|HDAudio with codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe| }} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2019 64bit -
|-
| <!--Name-->Aspire 3, 5 A515-44-R0ZN || <!--Chipset-->AMD Ryzen 5 4500u || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{unk|HDAudio with ALC codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2020 64bit - 14in or 15.6" 1080p - 19v round charging - [https://www.youtube.com/watch?v=vr0tC3QJWxk repair], 4gb soldered with 1 ddr4 sodimm slot -
|-
| <!--Name-->Swift 3 SF314-42 series N19C4 , Swift SF315-4 || <!--Chipset-->Ryzen 5 4500U, 7 4700U|| <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD || <!--Audio-->{{unk|HDAudio with codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2020 64bit 1080p - small round ac 19v 3.42A or usb-c - mobo FH4FR LA-J731P -
|-
| <!--Name-->Acer Swift 3 SF314-43, Swift SF315-41 || <!--Chipset-->Ryzen 7 5700U || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD || <!--Audio-->{{unk|HDAudio with codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2021 64bit 1080p - small round ac or usb-c -
|-
| <!--Name-->Aspire 5 A515-45 || <!--Chipset-->r7 5700U || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->AMD || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2021 64bit - 15.6in 1080p - asus round ac -
|-
| <!--Name-->Aspire 5 A515-47 || <!--Chipset-->ryzen 5 5625U, || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->AMD || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2021 64bit - 15.6in 1080p - asus round ac -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Asus====
[[#top|...to the top]]
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Asus L8400-K Medion MD9467 || <!--Chipset-->Intel desktop 850MHz || <!--IDE--> || <!--SATA--> || <!--Gfx-->S3 Savage MX || <!--Audio-->{{No|ESS allegro 1988}} || <!--USB--> || <!--Ethernet-->Realtek 8139 || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2001 32bit
|-
| <!--Name-->Asus L2000 L2400 L2D Series Medion 9675 || <!--Chipset-->Athlon 4 mobile || <!--IDE--> || <!--SATA--> || <!--Gfx-->use vesa sis630 || <!--Audio-->{{No|sis7018}} || <!--USB--> || <!--Ethernet-->sis900 || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2002 32bit
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->x51R X51RL || <!--Chipset-->Duo T2250 T2330 with RS480 || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->{{Maybe|use VESA RC410 [Radeon Xpress 200M]}} || <!--Audio-->{{Yes|HD with codec}} || <!--USB-->{{Maybe|boots and detects}} || <!--Ethernet-->{{Yes|RTL-8139}} || <!--Wireless-->{{No|Atheros AR5006EG AR5111 ath5k AzureWave AW-GE780 - could be ATI Chipset}} || <!--Test Distro-->Icaros 2.2, deadwood 2021, || <!--Comments-->2003 32bit 15.4 WXGA - 19v barrel - ESC boot select - F2 bios -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Asus R2H Ultra Mobile PC UMPC || <!--Chipset-->Celeron 900Mhz 910GML || <!--IDE--> || <!--SATA--> || <!--Gfx-->GMA900 || <!--Audio-->Ac97 ALC880 || <!--USB--> || <!--Ethernet-->realtek 8169 8101e || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2004 32bit [https://www.youtube.com/watch?v=Jm4fOrqyj3g boots]
|-
| <!--Name-->Asus A3 series A3F Ergo Ensis 211 RM || <!--Chipset-->P-M 1.6GHz to Core Duo with 950 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 945 || <!--Audio-->Ac97 ALC655 || <!--USB--> || <!--Ethernet-->Realtek 8100CL 10/100 || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2004 32bit only
|-
| <!--Name-->Z33 || <!--Chipset-->915 || <!--IDE--> || <!--SATA--> || <!--Gfx-->915GM || <!--Audio-->HD Audio ALC880 || <!--USB--> || <!--Ethernet-->Realtek 8139 || <!--Wireless-->Intel 2915ABG || <!--Test Distro--> || <!--Comments-->2005 32bit Z33A Z33AE N5M N5A
|-
| Z70A Z70V Z70Va M6A z7000 z7000a || i915 + ICH6 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{yes|mobile 915GML}} || <!--Audio-->{{no|ICH6 HD Audio}} || <!--USB-->{{yes|USB2.0}} || <!--Ethernet-->{{no|Marvell 88E8001}} || {{no|Intel PRO 2200BG Fn / F2}} || Icaros 1.3 || 2005 32bit
|-
| [http://www.progweb.com/en/2010/09/linux-sur-un-portable-asus-a6jm/ A6jm] A6JC || 945GM || IDE || SATA || {{yes|nVidia GeForce Go 7600 G70}} || {{no|HD Audio}} || {{yes|USB}} || {{yes|RTL8111 8168B}} || {{no|Intel 3945 ABG}} || Icaros 1.2.4 || 2006 32bit only
|-
| <!--Name-->F3Jc || <!--Chipset-->945PM || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->G72M Quadro NVS 110M, GeForce Go 7300 || <!--Audio-->D audio || <!--USB--> || <!--Ethernet-->realtek 8169 8111 || <!--Wireless-->Intel 3945 || <!--Test Distro--> || <!--Comments-->2007 32bit -
|-
| <!--Name-->X50GL F5GL || <!--Chipset-->T5800 with 965 || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe}} || <!--Gfx-->{{Maybe|use VESA 2d - Nvidia 8200M G84 runs hot}} || <!--Audio-->{{No|HD Audio MCP79 with codec}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|MCP79}} || <!--Wireless-->{{No|Atheros AR5B91 AW-NE77}} || <!--Test Distro-->Icaros 2.2 || <!--Comments-->2008 64bit not much support no display with nouveau - 19v barrel - ddr2 max 4gb -
|-
| <!--Name-->ASUS G50 & G51 series G50V G50Vt G51V G51VX G51J G51Jx G50VT X1 X5 ROG || <!--Chipset-->AMD64 with MCP71 || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes}} || <!--Gfx-->nVidia GeForce 9800M GS (G94M) up to GT200 [GeForce GTX 260M] (G92M) || <!--Audio-->Nvidia HD Audio with codec || <!--USB--> || <!--Ethernet-->{{No|Atheros L1C atl1c}} || <!--Wireless-->Atheros G or Intel || <!--Test Distro-->Icaros 2.3 || <!--Comments-->2009 64bit not all GPUs are failing but a much higher % failing early, 8x00 and 9x00 G84, G86, G92, G94, and G96 series chips dying - ddr2 max 4gb -
|-
| <!--Name-->M50V M50 series || <!--Chipset-->Intel Core 2 Duo P8400 or T9400 with Intel PM45 ICH9 || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|BIOS set to compatibility IDE mode}} || <!--Gfx-->NVIDIA GeForce 9600M GS or 9650M GT || <!--Audio-->HDAudio with Realtek ALC663 || <!--USB-->USB2 || <!--Ethernet-->{{Yes|rtl8169 realtek 8169 8111C}} || <!--Wireless-->{{unk|Intel 5100 or Atheros AR928X}}|| <!--Test Distro-->AROS One 2.0 USB || <!--Comments-->2009 64bit - 15.40 inch 16:10, 1680 x 1050 glossy - the "Infusion" design - heavy 3kg - ddr2 ram max 4gb -
|-
| <!--Name-->Series F9 F9E F9dc F9f F9j F9s || <!--Chipset-->965GM || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{maybe|Vesa}} || <!--Audio-->{{yes|HD Audio ALC660 playback}} || <!--USB-->{{yes|works}} || <!--Ethernet-->{{yes|RTL8169 }} || <!--Wireless-->{{no|intel 3495 not working}} || <!--Test Distro-->Icaros 1.41 || <!--Comments-->2009 64bit - ddr2 max 4gb -
|-
| P52F SO006X || i3-370M || IDE || SATA || {{yes|nVidia G92 [GeForce 9800 GT] (2D)}} || {{no|Intel HD Audio}} || {{yes|2 USB2.0}} || {{no|Atheros AR8121 AR8113 AR8114 (l1e)}} || {{dunno}} || Icaros 1.3 || 2010 64bit - ddr3 slot -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Asus
* X53U MB Ver K53U or K52U Asus K53U MB Ver K53U
* A53U XT2 X53B MB ver: K53BY (compal)
|| <!--Chipset-->Slow atom like speed E-350 (2011), E-450 (2011) on AMD M780G, much slower C-50 C50 (2012), C-60 C60 on the AMD A50M dark brown plastic build || <!--IDE-->{{N/A|}} || <!--SATA-->{{yes|Set IN Bios IDE MODE}} || <!--Gfx-->{{Maybe|use VESA ATi 6310M, 6320M later 6250M or 6290M}} || <!--Audio-->{{Yes|HD audio with alc269 codec Altec Lansing® Speakers}} || <!--USB-->{{Yes|3 x USB2}} || <!--Ethernet-->{{Unk|rtl8169 with RTL8111 phy}} || <!--Wireless-->{{unk|Atheros half height ar9285}} || <!--Test Distro-->2016 Icaros 2.1.2 and 2018 AROS One 1.6 USB || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 - 15.6in 1368 x 768 dull 50% srgb screen - f2 bios setup, esc boot drive - 5200 or 7800 mAh battery covers ASUS K53S K53E X54C X53S K84L X53SV X54HR K53F X53U laptops - 2 DDR3L slots max 8Gb - 19v barrel 5.5 / 2.5 mm -
|-
| <!--Name-->Asus K53T, Asus A53Z X53Z
|| <!--Chipset-->AMD A4-3305M on AMD M780G, A6-3420M dark brown plastic build || <!--IDE-->{{N/A|}} || <!--SATA-->{{yes|Set IN Bios IDE MODE}} || <!--Gfx-->{{Maybe|VESA 2D for AMD 6520G, 7670M}} || <!--Audio-->{{Yes|HD audio with codec}} || <!--USB-->{{Yes|3 x USB2}} || <!--Ethernet-->{{Yes|rtl8169 with RTL8111 phy}} || <!--Wireless-->{{No|Atheros half height}} || <!--Test Distro-->AROS One USB || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - 15.6in 1368 x 768 dull 50% srgb screen - f2 bios setup, esc boot drive - 2 DDR3L slots max 8Gb - 19v barrel 5.5 / 2.5 mm - Altec Lansing® Speakers -
|-
| <!--Name-->X55U X401U X501U 1225B || <!--Chipset-->slow C-60 C60, C-70 C70 or E1 1200 E2 1800 || <!--IDE--> || <!--SATA--> || <!--Gfx-->6290G || <!--Audio-->{{No| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->Realtek 8111 8169 || <!--Wireless-->{{unk| Atheros AR9485}} || <!--Test Distro--> || <!--Comments-->2013 64bit does not support AVX or SSE 4.1 - 11.6" display - ram soldered -
|-
| <!--Name-->Asus A43TA A53TA K53TA XE2 A73T || <!--Chipset-->AMD A4-3300M, A6 3400M (laptop chip) || <!--IDE-->{{N/A|}} || <!--SATA-->{{yes|Set IN Bios IDE MODE}} || <!--Gfx-->{{Maybe|use VESA AMD Radeon HD 6520G Integrated + HD 6470M (1GB GDDR3)}} || <!--Audio-->{{yes| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{Unk|}} || <!--Wireless-->{{No|Atheros}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - f2 bios setup, esc boot drive -
|-
| <!--Name-->X102BA || <!--Chipset-->Llano E1 1200 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes|ide bios setting}} || <!--Gfx-->Radeon HD 8180 || <!--Audio-->{{No| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->RTL8101E RTL8102E || <!--Wireless-->{{unk| Qualcomm Atheros AR9485}} || <!--Test Distro--> || <!--Comments-->2013 64bit does not support AVX or SSE 4.1 - 10.1” Touchscreen - special asus 45w ac adapter -
|-
| <!--Name-->K55N, K75DE || <!--Chipset-->AMD a6 4400M A8 4500M || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->AMD 7640G || <!--Audio-->HD Audio with ALC codec none through ATi Trinity HDMI || <!--USB-->{{maybe| }} || <!--Ethernet-->rtl8169 || <!--Wireless-->{{unk| Atheros AR9485}} || <!--Test Distro--> || <!--Comments-->2013 64bit does support AVX or SSE 4.1 - 17.3-inch -
|-
| <!--Name-->X452EA X552EA F552E || <!--Chipset-->AMD E1 2100 or A4 5000M A8 4500M A10 4600M with A || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA for AMD ATI Sun XT Radeon HD 8330 8670A 8670M 8690M}} || <!--Audio-->{{Yes|AMD FCH Azalia rev 02 with ALC898 codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{{Yes|Realtek RTL8111 8168 8411}} || <!--Wireless-->{{unk|Atheros AR9485}} || <!--Test Distro-->2016 Icaros 2.1 || <!--Comments-->2013 64bit may support avx kabini trinity -
|-
| <!--Name-->Asus ROG G751GY || <!--Chipset-->Intel i7-4720HQ || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->GTX 980M || <!--Audio-->HDAudio || <!--USB-->USB3 || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2014 64bit -
|-
| <!--Name-->Asus ROG G752VY || <!--Chipset-->Intel i7-6700HQ || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->GTX 980M || <!--Audio-->HDAudio || <!--USB-->USB3 || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2015 64bit -
|-
| <!--Name-->Asus X555Y || <!--Chipset-->AMD A6-7210 A8-7410 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|2.5" and mSATA form factors using SATA Rev 3.0 interface }} || <!--Gfx-->{{Maybe|VESA 2D for AMD R5}} || <!--Audio-->{{unk|HD Audio codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{Maybe|rtl8169 Realtek}} || <!--Wireless-->{{no| }}Realtek || <!--Test Distro--> || <!--Comments-->2015 64bit does support AVX or SSE 4.1 - 4gb soldered with 1 ddr3 slot - silver-colored plastic - internal battery -
|-
| <!--Name-->Asus X555B X555DG X555S X555U X555YI X555LAB || <!--Chipset-->Intel Core i5-4210U to || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|2.5" and mSATA form factors using SATA Rev 3.0 interface }} || <!--Gfx-->{{Maybe|VESA 2D for Intel}} || <!--Audio-->{{No|HDAudio with coxenant and realtek alc codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{Maybe|Realtek}} || <!--Wireless-->{{no| }}Realtek || <!--Test Distro--> || <!--Comments-->2015 64bit does support AVX or SSE 4.1 - 4gb soldered with 1 ddr3 slot - silver-colored plastic - internal battery -
|-
| <!--Name-->Asus X555D || <!--Chipset-->AMD A10-8700P || <!--IDE-->{{N/A}} || <!--SATA-->{{unk|2.5" and mSATA form factors using SATA Rev 3.0 interface }} || <!--Gfx-->{{Maybe|VESA 2D for AMD R6}} || <!--Audio-->{{unk|HD Audio codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|Realtek}} || <!--Wireless-->{{No|Realtek}} || <!--Test Distro--> || <!--Comments-->2016 64bit - 15.6in 1366 x 768 - 4gb soldered with 1 ddr3 slot - silver-coloured plastic - internal battery - keyboard swap problematic -
|-
| <!--Name-->ASUS X555Q || <!--Chipset-->AMD® Bristol Ridge A10-9600P 7th Gen, A12-9720p || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|2.5" and mSATA form factors using SATA Rev 3.0 interface}} || <!--Gfx-->{{Maybe|R5 + Radeon™ R6 M435DX Dual Graphics with VRAM GCN 3}} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no|Realtek 8821AE}} || <!--Test Distro--> || <!--Comments-->2017 64bit - FHD 15.6 1920x1080 - 37W battery internal - 4gb soldered with 1 ddr3 slot - internal battery -
|-
| <!--Name-->ASUS M509ba || <!--Chipset-->AMD A9-9425 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|2.5" and mSATA form factors using SATA Rev 3.0 interface}} || <!--Gfx-->{{Maybe|Vesa 2d for RADEON R5}} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2020 64bit - 15.6in 1366 x 768 - 1 ddr4 sodimm slot max 16Gb - 19VDC 2.37A Max 45W 4.0mm x 1.35mm - keyboard swap problematic -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->ExpertBook P1410, ASUS ExpertBook P1 P1510CD, Expertbook Y1511CD || <!--Chipset-->Ryzen 3 3200U, Ryzen 5 3500U || <!--IDE-->{{N/A}} || <!--SATA-->Nvme || <!--Gfx-->{{Maybe|Vesa 2d for AMD}} || <!--Audio-->{{unk|HDaudio with codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2019 64bit 14in or 15.6in 768p to 1080p - keyboard swap problematic - 19V 3.42A asus barrel connector 4.0MM X 1.35MM 4phi -
|-
| <!--Name-->ASUSTeK ASUS EXPERTBOOK L1 L1400CDA, L1500CDA - 19v 3.42a 4.5phi Barrel with centre pin Outer 4.5mm Inner 3mm asus special untested EXA1203XH, EXA1203YH, EXA1208UH, PA-1650-30, PA-1650-78, PA-1650-93, ADP-65GD B, ADP-65DW B (Euro) || <!--Chipset-->'''tested''' Ryzen 5 3500U - '''untested''' Ryzen 3 3200U, 3250U || <!--IDE-->{{N/A}} || <!--SATA-->{{no|1 Nvme m.2 slot will not boot with sata3 m.2, optional 1 sata hdd with ribbon cable, no dvd drive}} || <!--Gfx-->{{Maybe|Vesa 2d for AMD vega 3, 8}} || <!--Audio-->{{unk|HDaudio 0x15de 0x15e3 with ALC256 codec 0x10ec 0x0256}} || <!--USB-->{{maybe|USB3 1 usb-c and 3 usb-a }} || <!--Ethernet-->{{maybe|rtl8169 Realtek RTL8111HSH-CG }} || <!--Wireless-->{{No| }} || <!--Test Distro-->3500U with AROS One 64bit 1.2 usb installed to m.2 sata on another machine || <!--Comments-->2019 64bit 14in or 15.6in 1080p - keyboard swap problematic - up to 8Gb ddr4 sodimm soldered on board and 1 slot - micro sd card slot on some models - 42Whr B31N1915 C31N1915 C31N2204 - hold down F2 and press power for bios setup -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
==== Dell ====
[[#top|...to the top]]
Order of build quality (Lowest to highest)
<pre >
Studio
Inspiron
Vostro
XPS
Alienware
Precision
Latitude
</pre >
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="10%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="5%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Latitude CP 233GT, CPi d233xt d266xt D300XT a366xt, CPt S400GT S500GT S550GT S600GT S700ST, CPt C333GT C400GT || <!--Chipset-->Neo Magic || <!--IDE--> || <!--SATA--> || <!--Gfx-->Use VESA - Neo magic Magic Media 2160 2360 256ZX || <!--Audio-->{{No|crystal pnp 4237b or magic media 256zx sound nm2360}} || <!--USB-->USB 1.1 || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->1998 32bit Low-Density 16-chip 144p 144-pin 32Mx64 3.3V SODIMM -
|-
| <!--Name-->Dell Latitude CPx H450GT H500GT H Series, CPt V433GT V466GT V600, Inspiron 5000 || <!--Chipset-->Intel 440BX with Pentium 3M (CPx) or Celeron (CPt) || <!--IDE-->{{{Yes| }} || <!--SATA-->{{N/A| }} || <!--Gfx-->{{Maybe|Use Vesa - ATi Rage Pro Mobility M1}} || <!--Audio-->{{No|ESS ES1978 Maestro 2E Canyon 3D}} || <!--USB-->{{Yes|1 slot 1.1 only}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{N/A| }} || <!--Test Distro-->NB May 2013 || <!--Comments-->1998 32bit - 3 pin PA-6 PA6 power adapter plug - CDROM DVD Cxxx family media bay accessories untested
|-
| <!--Name-->Latitude C500 C600 (Quanta TM6) Inspiron 4000 7500, CPx J Series || <!--Chipset-->440BX ZX/DX || <!--IDE-->{{yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{partial|ATI Rage 128Pro Mobility M3 (VESA only)}} || <!--Audio-->{{no|ES1983S Maestro 3i}} || <!--USB-->{{yes|USB 1.1 only}} || <!--Ethernet-->{{N/A|some models had mini pci e100}}|| <!--Wireless-->{{N/A|a few came with internal antenna wiring}} || <!--Test Distro--> || <!--Opinion-->1999 square 3 pin charger PA9 PA-9 - C/Dock II untested - C/Port untested - Parallel to Floppy cable untested - CPx J600GT J650GT J700GT J750GT J800GT J850GT
|-
| <!--Name-->Latitude C510 C610 Insprion 4100 PP01L 2600 || <!--Chipset-->i830 and 1GHz+ P3-M || <!--IDE-->{{yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{partial|use VESA - ATI Radeon Mobility M6}} || <!--Audio-->{{No|AC97 CS4205}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{yes|3Com Etherlink}} || <!--Wireless-->{{Maybe|internal antenna wiring for an Atheros mini pci card}} || <!--Test Distro--> || <!--Opinion-->2000 poor build quality - hard to find in good working order
|-
| <!--Name-->Latitude C400 || <!--Chipset-->Intel 830 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA Intel 830 CGC}} || <!--Audio-->{{No|ac97 Crystal 4205}} || <!--USB--> || <!--Ethernet-->{{Yes|3Com 3c905C TX/TX-M}} || <!--Wireless-->{{N/A| }} || <!--Test Distro--> || <!--Comments-->2000 Slim for the time - no media bays
|-
| <!--Name-->Latitude C640 (Quanta TM8) C840 Inspiron 8k2 8200 i8200 precision m50 || <!--Chipset-->P4M with 845EP || <!--IDE--> || <!--SATA--> || <!--Gfx-->use VESA if ATi - use nouveau if 64mb Nvidia Gforce 4 440 Go || <!--Audio-->AC97 CS4205 || <!--USB--> || <!--Ethernet-->3com 905c || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2001 C640 had one fan so was noisy and hot - C840 had 2 fans and ran slightly cooler but fan noise louder
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| Latitude D400 || P-M 82845 || {{yes|82801 ide}} || {{N/A}} || {{partial|VESA only}} || {{yes|AC97 Audio playback only}} || {{maybe|USB 2.0}} || {{maybe|PRO 100 VM (KM)}} || {{no|BCM4318 AirForce one 54g replace with atheros 5k mini pci}} || <!--Test Distro--> Icaros 1.2.4 || 2003 32bit might boot from USB stick but won't boot from USB-DVD - no sd card slot - power plug style -
|-
| Latitude D500 / D505 PP10L, Inspiron 510m
|| 855GME
* revA00
* revA03
* revA06
| {{yes|IDE but needs the Dell adapter}} || {{N/A}} || {{partial|855GM Gfx (VESA only)}} || {{Yes|Intel AC97 with IDT STAC 9750 codec playback head phones only}} || {{maybe| }} || {{yes|Intel PRO 100 VE}} || {{no|Broadcom BCM4306 but exchange with atheros g in panel on laptop bottom}} || <!--Test Distro-->2016 Icaros 2.1.1 || 2003 - 14 / 15 inch XGA 4:3 screen - plastic build - no sd card slot - boots from bay optical drive - not powering on/off with ac adapter is a [http://www.geekzone.co.nz/forums.asp?forumid=37&topicid=30585 mobo fault of PC13 SMT 1206 ceramic cap hot] suggest [http://www.die4laser.com/D505fix/ 0.1uF 50V instead] - pc2700 333Mhz ram 1Gb max -
|-
| Latitude D505 (some) || VIA VT8237 VX700 || {{yes|IDE}} || || {{partial|VESA 2d on ATI RV350 Radeon 9550}} || {{no|VIA AC97 with codec}} || {{maybe|VIA USB glitchy}} || {{yes|VIA VT6102 Rhine-II}} || {{no|Intel 2200g Calexico2}} || <!--Test Distro--> || 2003 32bit little support - diagnostics pressing holding the Fn key, press the Power ON button (battery removed). Check the LEDs pattern - cmos battery behind flap in laptop battery slot -
|-
| <!--Name-->Inspiron 1000 || <!--Chipset-->SIS || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->{{maybe|use VESA SIS}} || <!--Audio-->{{Yes|AC97 SIS with AD1981B codec playback}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{Yes|SIS 900 but}} || <!--Wireless-->{{N/A}} || <!--Test Distro-->2016 Icaros 2.1 || <!--Comments-->2004 32bit [https://forum.level1techs.com/t/my-time-with-icaros-desktop-and-what-i-am-doing-as-a-dev-contributor-also-some-other-shit/113358 aremis using it]
|-
| <!--Name-->Inspiron 1100 PP07L || <!--Chipset-->845 || <!--IDE-->{{Yes| }} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Maybe|use VESA Intel 845G}} || <!--Audio-->{{Yes|AC'97 playback}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{Maybe|Broadcom 4401}} || <!--Wireless--> || <!--Test Distro-->Icaros 1.5 || <!--Comments-->2004
|-
| <!--Name-->Inspiron 8500 5150 || <!--Chipset-->P4 855GM || <!--IDE-->{{Yes| }} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Yes|Nvidia 5200 Go - VESA if intel gfx}} || <!--Audio-->{{Yes|MCP AC97 with SigmaTel 9750}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{Yes|Broadcom 440x}} || <!--Wireless-->{{No|Broadcom 4306 rev 02 use Atheros Mini PCI}} || <!--Test Distro-->Icaros 2.3 || <!--Comments-->2004 32bit P4 runs well but hot
|-
| Latitude X300 PP04S small, slim and light case
|| 855GME
* revA00 Intel ULV 1.2 Ghz
* revA01 Intel ULV 1.4Ghz
| {{yes|IDE internal and will boot cd/dvd through dock PR04S}} || {{N/A}} || {{partial|855GM Gfx (VESA only)}} || {{Yes|Intel AC97 with STAC 97xx codec but no audio out of the dock}} || {{maybe|works but dock usb ports and usb DVD PD01S not detected}} || {{No|Broadcom BCM5705M gigabit}} || {{no|Broadcom BCM4306 later intel - replace with atheros in the underside}} || <!--Test Distro-->2016 Icaros 2.1.1, 2020 AROS One 1.6 usb, || 2003 12.1" 1024 x 768 - 19.5v PA-10 or PA-12 dell - ACPI works but bad s3 ram suspend sleep - no sd card boot - 1Gb max sodimm ddr 2700
|-
| <!--Name-->Latitude D600 (Quanta JM2) PP05L - 600m
|| <!--Chipset-->82855 PM i855
* reva00
* revA01
* revA02
* revA03
* revA04
| <!--IDE--> {{yes}} || <!--SATA--> {{N/A}} || <!--Gfx-->{{Maybe|Use VESA - ATI Radeon RV250 Mobility FireGL 9000}} || <!--Audio-->{{Yes|AC97 - STAC 9750}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no|Broadcom BCM5705}} || <!--Wireless-->{{no|Intel 2100 or Broadcom BCM4306 - swap for Atheros panel in base}} || <!--Test Distro-->2011 Icaros 1.3 and [http://www.amiga.org/forums/archive/index.php/t-62187.html 1.4.1 and 2016 2.1.1] || <!--Opinion-->2003 32bit 14inch using pc2100 memory with Caps light blinking is usually a memory error - Dell D505 D600 power up pressing the case docking port -
|-
| <!--Name-->Latitude D600 (Quanta JM2) || <!--Chipset-->82855 PM i855 || <!--IDE--> {{yes}} || <!--SATA--> {{N/A}} || <!--Gfx-->{{Yes|2D only vidia NV28 GeForce4 Ti 4200 Go 5200 Go 5650 Go}} || <!--Audio-->{{Yes|AC97 - STAC 9750}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no|Broadcom BCM5705}} || <!--Wireless-->{{no|Broadcom BCM4306 mini pci - swap for Atheros}} || <!--Test Distro--> Icaros 1.3 and [http://www.amiga.org/forums/archive/index.php/t-62187.html 1.4.1] || <!--Opinion-->2003 32bit 14" - solder joints on the bios chip (press down f7/f8 keys) - RAM clean with eraser - memory cover plate maybe apply some pressure -
|-
| <!--Name-->D800 (Compal LA-1901) || <!--Chipset-->Intel 855 || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio-->AC97 || <!--USB-->{{maybe| }} || <!--Ethernet-->Broadcom 570x || <!--Wireless-->Broadcom 4309 || <!--Test Distro--> || <!--Comments-->2004 32bit - trackpoint type pointing device -
|-
| <!--Name-->D800 || <!--Chipset-->Intel 855 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{No|Nvidia }} || <!--Audio-->AC97 || <!--USB-->{{maybe| }} || <!--Ethernet-->Broadcom 570x || <!--Wireless-->Broadcom 4309 || <!--Test Distro--> || <!--Comments-->2004 32bit 15inch 39cm
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Inspiron 1200 2200 PP10S Latitude 110L m350 1.3Ghz || <!--Chipset-->Intel 915GM || <!--IDE--> {{yes|UDMA boots cd or DVD and installs to HDisk}} || <!--SATA--> {{N/A}}|| <!--Gfx-->{{yes|Intel GMA900 (2D and 3D openGL 1.x) Gearbox 56}} || <!--Audio-->{{yes|Intel AC97 playback only}} || <!--USB-->{{maybe|USB 2.0}} || <!--Ethernet-->{{yes|Intel PRO 100 VE}} || <!--Wireless-->{{no|BroadCom BCM4318 - swap for Atheros mini PCI in base panel}} || <!--Test Distro-->Icaros 1.4.5 || <!--Comments-->2005 single core 32bit 14" 4:3 1024 768 XGA screen - heavy 6 lbs - PA16 barrel 19V 3.16A AC adapter - battery life 4cell 29WHr lasts 2 hours - 256mb soldered with 1 ddr pc2100 sodimm 1gb max -
|-
| <!--Name-->Inspiron 1300 business B130 home PP21L Latitude 120L B120 by Compal - Inspiron 630m || <!--Chipset-->Intel Celeron M360 1.4GHz, M370 1.50 GHz, M380 1.73GHz || <!--IDE-->{{Yes|boots cd or DVD and installs to HDisk}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Yes|GMA 915 2D and 3D openGL 1.x tunnel 172 gearbox 70}} || <!--Audio-->{{Yes|HD Audio playback ear phones only}} || <!--USB-->{{maybe|works but waiting boot fail with AROS One usb version}} || <!--Ethernet-->{{Yes|Broadcom 440x}} || <!--Wireless-->{{No|intel 2200 or BCM4318 swap for Atheros mini pci underside - one antenna lead for main wifi}} || <!--Test Distro-->2016 Icaros 2.1.2, 2020 AROS One 1.6 usb, || <!--Comments-->2005 32bit single core - 14.1″ XGA 4:3 or 15.4" WXGA wide 1280 x 800 matte - ddr2 sodimm ram 2gb max - PA-16 19v psu tip 7.4mm * 5mm - f10 boot select f1 f2 bios
|-
| Latitude X1 PP05S || PP-M GMA915 rev A00 1.1GHz non-pae || {{yes|ide 1.8in zif/ce under keyboard}} || {{N/A}} || {{Maybe|Vesa for Intel 915GM}} || {{yes|AC97 6.6 playback only with STAC codec}} || {{maybe|USB 2.0 but partial boot to blank screen}} || {{No|Broadcom 5751}} || {{no|Intel 2200BG - swap for Atheros mini pci under keyboard palm rest - disassembly of all laptop}} || <!--Test Distro-->Icaros 2.3 dvd iso image virtualbox'd onto usb, Aros One 1.5 and 1.8 usb (2022) || 2005 32bit 12.1" 4:3 1024 x 768 - sd slot not bootable - 256mb soldered to board and 1 sodimm max 1GB ddr2 under keyboard - F12 bios boot F2 - pa-17 pa17 19v octagonal psu port
|-
| Latitude D410 PP06S
*rev A00
*A01, A02
*A03
|| GMA915 1.6GHz Pentium® M 730, 1.7GHz, 750 1.86GHz & 760 2.0GHz, 770 2.13GHz || {{yes|caddy and adapter needed 2.5" - remove hdd and write}} || {{N/A}} || {{Yes|Intel 915GM 2D and 3D OpenGL 1.3 tunnel 170 and gearbox 75}} || {{yes|AC97 playback only with STAC 9751 codec}} || {{maybe|works but will not boot from USB-DVD or AROS One 1.5 usb version}} || {{No|Broadcom 5751}} || {{no|Intel 2915ABG or later 2200BG - swap for Atheros mini pci under keyboard}} || <!--Test Distro-->2015 Icaros 1.4, 2016 2.1.1 and AROS One 1.5 usb, || 2005 32bit 12.1" 4:3 1024 x 768 - no sd card slot - PR06S dock base
|-
| <!--Name-->Latitude D510 (Quanta DM1) || <!--Chipset-->915GM socket 479 || <!--IDE--> {{N/A}} || <!--SATA--> {{partial|IDE mode}}|| <!--Gfx-->{{yes|Intel GMA 915 2D and 3D}} || <!--Audio-->{{Yes|AC97 STAC 975x}} || <!--USB--> {{maybe|USB 2.0}} || <!--Ethernet-->{{no|Broadcom BCM5751}} || <!--Wireless-->{{no|Intel PRO Wireless 2200BG swap Atheros mini pci in base}} || <!--Test Distro--> || <!--Comments-->2005 14.1" 32bit single core Intel Celeron M 1.6GHz Pentium M 730 1.73Ghz - squarish 3:2 - issues with 3rd party battery 4 quick flashes of red led with 1 final green
|-
| <!--Name-->Latitude D610 (Quanta JM5B) PP11L
|| <!--Chipset-->910GML 915GM with mobile 1.6 to 2.26ghz
* Rev A0x
* Rev A0x
* Rev A07 1.73Ghz
| <!--IDE--> {{N/A}} || <!--SATA--> {{partial|IDE mode}}|| <!--Gfx-->{{yes|Intel GMA 915 2D and 3D tunnel 174 gearbox 74}} || <!--Audio-->{{yes|Intel AC97 speaker head phones playback only with stac codec}} || <!--USB--> {{maybe|USB 2.0}} || <!--Ethernet-->{{no|Broadcom BCM5751}} || <!--Wireless-->{{no|Intel 2200BG or Broadcom mini pci under keyboard, swap wifi card for atheros 5k}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2005 32bit 14" 1024 x 768 - very noisy clicky trackpad buttons - one dimm slot under keyboard and other in underside 2GB 533Mhz 667Mhz DDR2 max -
|-
| <!--Name-->Latitude D610 (Quanta JM5B) 0C4717 REV A05, 0K3879 REV.A00 || <!--Chipset-->915GM || <!--IDE--> {{N/A}} || <!--SATA--> {{partial|IDE mode}}|| <!--Gfx-->{{Maybe|Use VESA 2d - Ati X300 no radeon 2d}} || <!--Audio-->{{yes|Intel AC97}} || <!--USB--> {{maybe|USB 2.0}} || <!--Ethernet-->{{no|Broadcom NetXtreme 57xx Gigabit replace with Atheros 5k}} || <!--Wireless-->{{no|Intel PRO Wireless 2200BG mini pci use Atheros 5k}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2005 32bit 14" 1024 x 768 - very noisy clicky trackpad buttons - 19.5v psu
|-
| <!--Name-->Latitude D810 (Quanta ) || <!--Chipset-->915GM || <!--IDE-->{{Yes| }} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Maybe|Use VESA 2d - Ati X300 RV370 M22 later x600}} || <!--Audio-->{{yes|Intel AC97 stereo playback only idt 9751 codec}} || <!--USB--> {{maybe|USB 2.0 but no boot from usb on 1.5}} || <!--Ethernet-->{{no|Broadcom NetXtreme 57xx Gigabit}} || <!--Wireless-->{{no|Intel PRO Wireless 2200BG mini pci replace with Atheros 5k}} || <!--Test Distro-->2017 Icaros 2.1.1, aros one 1.5 || <!--Comments-->2005 32bit 15.4" F12 one time boot menu - 19.5v 90w psu ideal - battery not same as later dx20 ones -
|-
| <!--Name-->Inspiron 6000 6400, E1505 PP20L
*A00 Pentium M
*A0? Core Duo
|| <!--Chipset-->GM945 with PM 1.73Ghz, T2050 or T2060 || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe|}} || <!--Gfx-->{{Maybe|vesa 2d - Ati 9700, x1300 RV515 M52, x1400 or nvidia go 7300 on mxm board}} || <!--Audio-->{{yes|HD Audio IDT 9200}} || <!--USB-->{{Yes|usb boot }} || <!--Ethernet-->{{Yes|Broadcom BCM4401 B0}} || <!--Wireless-->{{No|Intel 2200 3945 - swap for Atheros 5k}} || <!--Test Distro-->2016 Icaros 2.1, AROS One 1.6 || <!--Comments-->2006 mostly 32bit - 15.4 inch glossy - 2 ddr2 sodimm slots - broadcom bcm92045 bluetooth detected but no support - 19.5v dell psu socket - f2 bios setup, f12 boot order -
|-
| <!--Name-->Inspirion E1705 9200 9300 9400 PP12L PP14L || <!--Chipset-->945GM || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->proprietary Dell card/socket format Nvidia 6800, ati X300 or nVidia 7900GS gpu 3d corrupt || <!--Audio-->{{Maybe| }} || <!--USB-->{{Maybe| }} || <!--Ethernet-->{{Maybe|Broadcom BCM4401}} || <!--Wireless-->Intel 3945 swap with Atheros 5k mini pcie || <!--Test Distro--> || <!--Comments-->2006 [http://amigaworld.net/modules/news/article.php?mode=flat&order=0&item_id=6481 increasing vertical lines issues] 32bit -
|-
| <!--Name-->Studio XPS M1210 || <!--Chipset-->GM945 with Core Duo to intel C2D T5500, T7400 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->nVidia G72M 7300 7400m || <!--Audio-->HD Audio IDT 92xx || <!--USB-->{{Maybe| }} || <!--Ethernet-->{{Maybe|Broadcom BCM4401 B0}} || <!--Wireless-->{{No|Broadcom BCM4311 - swap for Atheros 5k mini pci-e}} || <!--Test Distro--> || <!--Comments-->2006 64bit - 2 ddr2 slots max 4Gb -
|-
| <!--Name-->Inspiron 1501 PP23LA Latitude 131L || <!--Chipset-->AMD Sempron 1.8GHz Turion MK-36 or X2 1.6Ghz TL-50 or TL-56 on ATI RS480 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|Use VESA 2d - ATI 1150 (x300) RS482M Mobility Radeon Xpress 200}} || <!--Audio-->{{Yes|HD audio with stac 92xx codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{Maybe|Broadcom bcm 4401}} || <!--Wireless-->{{No|Broadcom bcm4311 replace with Atheros 5k}} || <!--Test Distro-->Icaros 1.5 || <!--Comments-->2006 64bit 15.4 inch matt 16:10 1280x800 WXGA -
|-
| <!--Name-->Inspiron 6400 (Quanta FM1)
*A00 Pentium M
*A0? Core Duo
*A08 Core2 Duo
|| <!--Chipset-->GM945 with BGA479 (socket M) T2050 1.6Ghz, T2060 1.60Ghz, T2080 1.73Ghz much later T5500 1.66Ghz || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{Yes|GMA 2D and 3D}} || <!--Audio-->{{Yes|HD Audio with IDT 92xx codec}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{Yes|Broadcom BCM4401 B0}} || <!--Wireless-->{{No|Broadcom BCM4311 swap for Atheros 5k mini pci-e under keyboard}} || <!--Test Distro-->deadwood 2019-04-16 iso || <!--Comments-->2006 mostly 32bit - 15.4" glossy - sd card - front multimedia keys - dvd rw - generic dell keyboard - coin cr2032 bios battery under keyboard -
|-
| <!--Name-->Inspiron 640m PP19L XPS M140 e1405 || <!--Chipset-->Core Solo T2050, T2300 Duo 1.83GHz T2400 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel GMA 950 || <!--Audio-->HD Audio IDT || <!--USB--> || <!--Ethernet-->Broadcom BCM4401-B0 100Base || <!--Wireless-->{{No|Intel 3945 or Broadcom 43xx, swap for Atheros 5k - Wireless Internet ON or OFF press the Function key + F2}} || <!--Test Distro--> || <!--Comments-->2006 32 bit - 12.1 LCD CCFL WXGA 1280x800 up to 14.1 inch 16:10 1440x900 pixel, WXGA+ UltraSharp - supports also SSE3 on duos -
|-
| <!--Name-->Latitude D420 (Compal LA-3071P) PP09S
|| <!--Chipset-->945
* revA00 Solo 1.2Ghz ULV U1400
* revA01 Duo 1.06Ghz u2500
* revA02 Duo 1.2Ghz
| <!--IDE-->{{yes|ZIF/CE 1.8" slow under battery, ribbon cable}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{yes|Intel GMA950 - 2D and 3D opengl tunnel 138 gearbox 103}} || <!--Audio-->{{yes|HD Audio with STAC 92xx playback speakers head phones only)}} || <!--USB-->{{yes|2 and external usb optical drive works}} || <!--Ethernet-->{{no|Broadcom BCM5752}} || <!--Wireless-->{{No|Intel 3945 mini pcie - swap Atheros 5k in base panel}} || <!--Test Distro-->Icaros Desktop 1.4 || <!--Opinion-->2006 32bit only - 12.1" 1280x800 - PR09S dock base rev02 DVD-RW usb boots - 1GB DDR2 2Rx16 max in base panel - f2 setup f5 diagnostics f12 boot list -
|-
| <!--Name-->Latitude D520 PP17L
|| <!--Chipset-->
* 64bit rev A01, A02 945GM Core2 Duo 1.83Ghz to 2.3Ghz
* 32bit rev A00, A01 940GML Solo later Duo T2400
| <!--IDE-->{{yes| Philips SDR089, Philips CDD5263, TEAC DW224EV, Optiarc AD-5540A, HL-DL-ST GSAT21N, TSSTcorp TS-L632D}} || {{Yes|bios sata set to ide mode}} || {{Yes|Intel GMA 900 series 2D and OpenGL1 3D tunnel 210 gearbox 153 teapot 27}} || {{Yes|HD audio with STAC 9200 codec}} || {{Yes|Boots and detects USB2.0}} || {{Yes|Broadcom 4400}} || {{No|Broadcom BCM4312 BCM4321 Dell 1390 / 1490 mini pcie - easy to replace with atheros 5k in base panel}} || <!--Test Distro-->Icaros 1.4 and 2.2 and both AROS One 1.8 and AROS One x64 1.1 USB boot || 2006 mostly 64bit 4:3 aspect ratio 14.1 (XGA 1024x768) or later 15 inches (XGA+ 1400 by 1050) - F2 enter bios F12 choose boot - 19.5v dell tip pa-12 charger - bios coin cell cr2032 battery socketed in base panel -
|-
| <!--Name-->Latitude D620 (Compal LA-2792) PP18L
|| <!--Chipset-->945GMS
* rev A00 all Core Duo's 32 bit
* rev A0x all Core 2 Duo's 64 bit
| <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Intel GMA 950 (2D and 3D tunnel gearbox opengl1 || <!--Audio-->{{yes|HD Audio playback}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no|Broadcom BCM5752}} || <!--Wireless-->{{no|Intel 3945 mini pcie swap with Atheros 5k}} || <!--Test Distro-->AspireOS Xenon || <!--Opinion-->2006 64bit AROS capable with later revisions - 14" 1280 x 800
|-
| <!--Name-->Latitude D620
|| <!--Chipset-->Intel i945
* revA00 all Core Duo's 32 bit
* revA01 all Core 2 Duo's 64 bit
| <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Nvidia 7300, 7600 NVS 110M G72 || <!--Audio-->{{dunno|HD Audio with STAC 9200 codec}} || <!--USB--> || <!--Ethernet-->{{No|Broadcom BCM5752}} || <!--Wireless--> {{dunno}} || <!--Test Distro--> || <!--Opinion-->2007 1440x900 screen - LA-2792P Rev.2.0 - DT785 UC218 Fan/ Heatsink (64bit) -
|-
| <!--Name-->Latitude D820 (Quanta JM6)
|| <!--Chipset-->945GMS 940GML
* rev A00
* rev A01
| <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Yes|Intel GMA 2D and 3D tunnel 195 - 100? gearbox 156}} || <!--Audio-->{{Yes|HD Audio with STAC 9200 playback}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|Broadcom BCM5752}} || <!--Wireless-->{{No|BCM4310 replace with mini pcie atheros 5k}} || <!--Test Distro-->2016 Icaros 2.1.2 || <!--Opinion-->2007 widescreen 15 inch 1280 x 800 matte - -
|-
| <!--Name-->Latitude D820 (Quanta JM)
|| <!--Chipset-->945GMS 940GML
* revA00
* revA01
| <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|Nvidia NVS 110M 120M G72}} || <!--Audio-->{{Yes|HD Audio STAC 9200}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|Broadcom BCM5752}} || <!--Wireless-->{{No|BCM4310 swap with Atheros 5k mini pcie}} || <!--Test Distro--> || <!--Opinion-->2007 64bit 15.4 1650x1050 WXGA or WSXGA+ or 1920x1200 WUXGA -
|-
| <!--Name-->Dell Latitude D531 15" || <!--Chipset-->AMD Turion X2 TL56 or TL60 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{Maybe|Use VESA - ATi xpress X1270}} || <!--Audio-->HD Audio with IDT codec || <!--USB-->{{Maybe| }} || <!--Ethernet-->{{No|Broadcom 57xx}} || <!--Wireless-->Intel 3945 or Dell Wireless 1390, 1505 or BCM4311 mini pcie || <!--Test Distro--> || <!--Comments-->2007 64bit possible - no trackpoint - fails and goes wrong often -
|-
| <!--Name-->Latitude D430 PP09S
|| <!--Chipset-->945 with Core2 Duo C2D U7500 1.06GHz U7600 1.2GHz U7700 1.33GHz
* rev A00
* rev A01
* rev A02
| <!--IDE-->ZIF PATA IDE 1.8inch under battery and ribbon cable - slow use USB instead || <!--SATA-->{{N/A}} || <!--Gfx-->{{yes|945GML 2D and 3D opengl 1.x 171 tunnel 105 gearbox}} || <!--Audio-->{{yes|STAC 92xx HD Audio speaker and ear phone - mono speaker}} || <!--USB-->{{yes|3 }} || <!--Ethernet-->{{no|Broadcom BCM5752}} || <!--Wireless-->{{no|Intel 4965 AGN or 3945 ABG mini pci-e underside with Atheros 5k mini pci-e}} || <!--Test Distro-->Aspire 1.8 || <!--Comments-->2007 64bit capable - sd card not supported - 19.5v PA12 power adapter - 12.1" 1280x800 matte - f2 setup f5 diagnostics f12 boot list -
|-
| <!--Name-->Latitude D530 || <!--Chipset-->GM965 + ICH8 || <!--IDE-->{{N/A}} || <!--SATA-->{{partial|IDE mode}}|| <!--Gfx-->{{partial|nVidia Quadro NVS 135M 2D 3d glitches G86}} || <!--Audio-->{{partial|HD Audio with STAC 9205 head phones only}} || <!--USB-->{{yes|USB 2.0}}|| <!--Ethernet-->{{no|Broadcom BCM5755M}} || <!--Wireless-->{{no|Intel PRO Wireless 3945ABG swap with Atheros 5k}} || <!--Test Distro-->Icaros 1.4.5 || <!--Comments-->2007 [http://amigaworld.net/modules/news/article.php?mode=flat&order=0&item_id=6481 ] cool air intake from underneath needed with pa-10 or pa-3e 90w psu required - standard 4:3 ratio aspect screen -
|-
| <!--Name-->Latitude D630 (Compal LA-3301P) PP18L
|| <!--Chipset-->GM965 + ICH8 T7250 2.0Ghz T7300
* revA00
* revA01
| <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{yes|Intel GMA X3100 (2D only, no external monitor)}} || <!--Audio-->{{yes|HD Audio STAC 9205 but speaker and head phones}} || <!--USB-->{{yes|4 USB 2.0}}|| <!--Ethernet-->{{no|Broadcom BCM5755M}} || <!--Wireless-->{{no|Broadcom BCM4312 swap with pci-e Atheros 5k under keyboard}} || <!--Test Distro--> || <!--Comments-->2007 64bit possible - F12 to choose boot option - 2 ddr2 sodimm max 4G - 4400mah 48Wh battery lasts 2 hours - 6600mah 73Wh lasts 3 hours - two wire cr2032 cmos -
|-
| <!--Name-->Latitude D630
|| <!--Chipset-->GM965 + ICH8
* revA00 [http://amigaworld.net/modules/news/article.php?mode=flat&order=0&item_id=6481 ] GPU heatpad, no copper
* revA01 0DT785 heatsink
| <!--IDE-->{{N/A}} || <!--SATA-->{{partial|IDE mode}}|| <!--Gfx-->{{partial|use VESA as nVidia NVS 135M 3d corrupts 0.7 tunnel 0.25 gearbox G86}} || <!--Audio-->{{partial|HD Audio with STAC 9205 head phones only}} || <!--USB-->{{yes|USB 2.0}}|| <!--Ethernet-->{{no|Broadcom BCM5755M}} || <!--Wireless-->{{no|Intel PRO Wireless 3945ABG swap with Atheros 5k mini pcie}} || <!--Test Distro-->Icaros 1.4.5 || <!--Comments-->2007 64bit
|-
| <!--Name-->Latitude D830
|| <!--Chipset-->965GM with Core2
* revA00
* revA01
| <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{Yes|GM965 crestline 2d and 3d tunnel 115}} || <!--Audio-->{{Yes| }} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No| }} || <!--Wireless-->{{Maybe|replace with Atheros 5k mini pcie}} || <!--Test Distro-->Icaros || <!--Comments-->2007 15 inch 1280 x 900 but updating the LCD to WXGA or WSXGA+ could be better - 2 ddr2 sodimm -
|-
| <!--Name-->Latitude D830 || <!--Chipset-->ICH8, Core2 DUO T7800 @ 2.60GHz || <!--IDE-->{{N/A}} || <!--SATA-->Intel ICH8M Serial ATA || <!--Gfx-->nVidia Quadro NVS 140M G86 || <!--Audio-->{{yes|HD Audio with STAC 92XX codec}} || <!--USB-->{{yes|USB 2.0}} || <!--Ethernet-->Broadcom NetXtreme 57xx Gigabit || <!--Wireless-->Intel Wireless 4965AGN swap with Atheros 5k || <!--Test Distro-->Icaros 2.03 || <!--Comments-->2007 64bit 15." - FN,F2 or FN,F8 or FN,F12
|-
| <!--Name-->XPS M1710 || <!--Chipset-->945PM with T2400 T2600 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->proprietary Dell card socket format GTX 7950 || <!--Audio-->HD Audio with STAC 92XX codec || <!--USB--> || <!--Ethernet-->Intel 1000 or Broadcom BCM5752 || <!--Wireless-->Intel swap with Atheros 5k || <!--Test Distro-->Aros One 64bit || <!--Comments-->2007 64bit 17.3" workstation type WXGA+ screen 1920x1200 - 2 ddr-2 667Mhz sodimm slots,
|-
| <!--Name-->XPS M1730 || <!--Chipset-->965 with T7200 T7600 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->GTX 7950 || <!--Audio-->HD Audio with STAC 92XX codec || <!--USB--> || <!--Ethernet-->Intel 1000 || <!--Wireless-->Intel swap with Atheros 5k || <!--Test Distro--> || <!--Comments-->2008 64bit 17" workstation type WXGA+ screen manufactured by AU Optronics poor viewing angles, unevenly lit, light leakage, 2 ddr-2 800Mhz slots,
|-
| <!--Name-->Latitude E6410 P27LA, E6510 PP30LA, E6310 || <!--Chipset-->Intel Core i5-520M to i7-620M i7 820QM but no sse4.1 or AVX || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|NVidia NVS 3100M GT218 2D but 3D through external monitor}} || <!--Audio-->{{Maybe|HD Audio IDT 92HD81}} || <!--USB-->{{Yes|USB2 }} || <!--Ethernet-->{{No|Intel}} || <!--Wireless-->{{No|Broadcom or Intel 6200AGN or Link 6300}} || <!--Test Distro-->Icaros 1.3 || <!--Comments-->2010 64 bit - 14.1” WXGA+ up to 15.6in 15.6” FHD 1080p - 2 ddr3l 1333Mhz max 8Gb - 90w dell charger - 3pin cmos -
|-
| <!--Name-->Inspiron M5030 || <!--Chipset-->rev A01 AMD V120, V140 rev A0? V160 M880G || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE}} || <!--Gfx-->{{Maybe|VESA RS880M Radeon HD 4225, 4250}} || <!--Audio-->{{Yes|HD audio with ALC269q codec}} || <!--USB--> || <!--Ethernet-->{{No|Atheros AR8152 v2}} || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro--> || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 - DDR3 sodimm -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->E6420 E6520 ATG semi ruggized XFR || <!--Chipset-->sandy bridge i5 2520M 2540M or duo I7 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|set to Bios UEFI mode AHCI}} || <!--Gfx-->{{Maybe|Intel HD 3000 with optional fermi Nvidia NVS 4200M GF119}} || <!--Audio-->{{Maybe|HD Audio with IDT 92HD90 BXX codec but not HDMI codec}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|Intel}} || <!--Wireless-->{{No|Intel 6205}} || <!--Test Distro-->Icaros 2.03 || <!--Comments-->2011 64bit 15.6in - fan exhausts a lot of hot air when cpu taxed - VGA if Bios ATA set and Vesa only with Bios ACHI set -
|-
| <!--Name-->Inspiron M5040 || <!--Chipset-->slow amd E450, later C-50 C50 or C-60 C60 with A50M chipset || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|non efi sata in IDE mode but base plastic difficult to remove for access}} || <!--Gfx-->{{Maybe|use VESA AMD Radeon 6320, 6250 or 6290}} || <!--Audio-->{{Yes|HD Audio IDT}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{Yes|rtl8169 Realtek RTL8105E VB 10/100}} || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro-->2016 icaros 2.1.1 and AROS USB 1.6 || <!--Comments-->2012 64bit 15INCH 1388 X 768 - f2 bios setup, f12 boot order - under removable keyboard via 4 top spring loaded catches is 1 ddr3l sodimm max 8gb and wifi -
|-
| Latitude e6230 E6330 E6430 || i3 3320M 3350M 2.8 GHz i5 3360M i7 3520M || {{N/A}} || {{partial|non RAID mode}} || {{partial|Intel HD 4000 (VESA only)}} || {{no|HD Audio}} || {{partial|Intel USB 3.0 (USB 1.1 2.0 only)}} || {{No|Intel 82579LM Gigabit}} || {{No|Broadcom BCM4313}} || <!--Test Distro-->Nightly Build 2014 09-27 || 2013 64bit Ivy Bridge - 12.5-inch 13.3-inch 14-inch screen - not great support, better under hosted -
|-
| <!--Name-->Dell Latitude 3330 || <!--Chipset-->Core i3 – 2375M to i5 – 3337U, Intel® Core i3 – 3227U, Celeron 1007U on HM77 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{maybe|VESA 2d for intel Hd 2000 3000 vga hdmi}} || <!--Audio-->{{maybe|HDAudio with IDT 92HD93 Controller codec }} || <!--USB-->{{maybe|USB 3.0 (2), USB 2.0 PowerShare capable }} || <!--Ethernet-->{{no|Intel }} || <!--Wireless-->{{no|Intel }} || <!--Test Distro-->Deadwood usb3 test iso || <!--Comments-->2013 64bit, 13.3” HD 1366X768 16:9, 2 ddr3l slots max 8Gb, 720p HD video webcam,
|-
| <!--Name-->Inspiron 15 5565 5567 AMD versions, Inspiron 3595 || <!--Chipset-->AMD A6-9200u A9-9400 9425 A12-9700P Bristol Ridge || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->Radeon R5 R8 GCN 3 || <!--Audio-->{{No| }} || <!--USB-->{{partial| }} || <!--Ethernet-->{{maybe|Realtek 1GbE}} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2017 64bit AVX2 - 15.6in 768p or 900p - there are intel versions avoid -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Latitude 5495, Inspiron 15 3585 || <!--Chipset-->Ryzen 2300U 2500U 2700U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|NVMe or optional 2.5in sata if caddy and ribbon cable}} || <!--Gfx-->Radeon Vega 3 or 7 || <!--Audio-->{{No|HDAudio with Realtek ALC3246 aka ALC295 0x10ec, 0x0295 or ALC3263 aka ALC 0x10ec, 0x0 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|Realtek}} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2018 64bit - 14.0" FHD WVA 1080p (16:9) 220 nits or HD 768p - 2 ddr4 sodimm slots max 32gb - 68whr battery with 2pin cmos bios coin - DC 19.5V 4.62A (90W) or 19.5V 3.34W (65W) 5.0mm x 7.4mm PA12 charging adapter -
|-
| <!--Name-->Inspiron 3505, Vostro 3515 || <!--Chipset-->athlon 300u, Ryzen 3250u (2c4t) 3450u 3500u 3700u (4c8t), Athlon Silver (2c2t) Gold (2c4t) || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|up to 2 nvme with optional 2.5in sata ribbon connector}} || <!--Gfx-->{{Maybe|VESA 2D for Vega 8, 10}} || <!--Audio-->{{No|Realtek ALC3204, Cirrus Logic CS8409 (CS42L42 and SN005825)}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{No|RTL 8106E}} || <!--Wireless-->{{No|Realtek RTL8723DE}} || <!--Test Distro--> || <!--Comments-->2019 64-bit - 15.6inch - 2 ddr4 sodimm max 16G - avoid knocking usb-c charging whilst in use -
|-
| <!--Name-->Inspiron 5485 2-in-1 || <!--Chipset-->athlon 300u, Ryzen 3250u (2c4t) 3450u 3500u 3700u (4c8t), Athlon Silver (2c2t) Gold (2c4t) || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|nvme}} || <!--Gfx-->{{Maybe|VESA 2D for Vega 8, 10}} || <!--Audio-->{{No|Realtek ALC3204}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No|Realtek RTL8723DE}} || <!--Test Distro--> || <!--Comments-->2019 64-bit - 14inch - 2 ddr4 sodimm max 16G - avoid knocking usb-c charging whilst in use -
|-
| <!--Name-->Latitude 3500, 3310, 3410, 3510, || <!--Chipset-->Intel Celeron-4205U, Pentium-5405U, Core i5 (8th Gen) i3-8145U, 8265U, i5-8365U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|nvme}} || <!--Gfx-->{{Maybe|Vesa 2D for Intel UHD Graphics 610 or 620 hdmi}} || <!--Audio-->{{no|HDAudio with Realtek ALC}} || <!--USB-->{{maybe|USB3 usb-c usb-a}} || <!--Ethernet-->{{Maybe|rtl8169 RTL8111H}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2019 64bit - 14in or 15.6in 768p to 1080p 220nits - 65w - 2 ddr4 sodimm slots - rtc cr2032 cmos 2 pin -
|-
| <!--Name-->Inspiron 5405 || <!--Chipset-->AMD Ryzen 5 4500U || <!--IDE-->{{N/A}} || <!--SATA-->One M.2 2230/2280 nvme || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{No|HDAudio with Realtek ALC3204 codec}} || <!--USB-->{{maybe|USB3 }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2020 64bit - 14" 1080p - dell round ac 19.50 VDC 4.50 mm x 2.90 mm 65W(19.5V-3.34A) round 4.5mm tip -
|-
| <!--Name-->Inspiron 5415, Inspiron 5515 || <!--Chipset-->AMD Ryzen 3 5300U, Ryzen 5 5500U, Ryzen 7 5700U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|nvme}} || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{No|HDaudio with realtek ALC3254 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2021 64bit 14" or 15.6in - avoid knocking usb-c charging whilst in use or use dell round ac 65W 4.5MM x 3.0MM - replacing keyboard not easy - 1 ddr4 sodimm -
|-
| <!--Name-->Vostro 3425, Vostro 3525, Vostro 5625 || <!--Chipset-->AMD Ryzen 3 5425U, Ryzen 5 5625U || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{no|HDAudio with codec}} || <!--USB-->{{maybe|USB4}} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2021 64bit - 14in 15.6" to 16" FHD 1080p - dell round ac 65w 4.5MM x 3.0MM or avoid knocking usb-c charging whilst in use -
|-
| <!--Name-->Dell Inspiron 15 Model 3535, Inspiron 14 7435 || <!--Chipset-->AMD Ryzen 5 7520U, AMD Ryzen 5 7530U, 7 7730U || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->{{No| hdmi 1.4 but no gpmi}} || <!--Audio-->{{No|HDaudio with codec }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2024 64bit - 14.0" or 15.6" 1080p - dell round ac 65w 4.5MM x 3.0MM or usb-c charging - full sd card slot -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|}
====Fujitsu-Siemens====
[[#top|...to the top]]
Order of build quality (Lowest to highest)
<pre >
Amilo
Esprimo
Lifebook
</pre >
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="5%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Fujitsu [http://www.labri.fr/perso/fleury/index.php?page=bug_transmeta FMV-Biblo Loox S73A (Japan P1100) LifeBook P1120 Biblo Loox T93C (Japan P2120) P2020] || <!--Chipset-->Transmeta Crusoe CPU TM5600 633MHz with Ali M1535 chipset || <!--IDE-->{{Yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->ATI Rage Mobility M with 4MB SDRAM || <!--Audio-->{{No|AC97 Ali M1535 + STAC9723 Codec}} || <!--USB-->USB 1.1 only || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->1999 32bit 10" 1280 x 600 matte LCD - QuickPoint IV mouse - metal chassis with palm rest plastic - 15GB 2.5 inch drive and SR 8175 8X DVD-ROM drive -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Lifebook S7000 S7010 S7010D S2020 || <!--Chipset-->Pentium M 1.6 or 1.7GHz || <!--IDE-->{{Yes| }} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Maybe|use VESA - Intel 855}} || <!--Audio-->{{maybe|AC97 with STAC 9751T or 9767 codec}} || <!--USB--> || <!--Ethernet-->{{No|Broadcom}} || <!--Wireless-->{{No|Atheros, Broadcom or Intel 2200BG - FN,F10}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2002 32bit 14.1 inch with minimal support
|-
| <!--Name-->Lifebook e8010 || <!--Chipset--> || <!--IDE-->{{Yes| }} || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA Intel 855GM}} || <!--Audio-->AC97 STAC9767 or ALC203 codec || <!--USB--> || <!--Ethernet-->{{No|Broadcom NetXtreme BCM5705M}} || <!--Wireless-->Intel PRO Wireless 2200BG || <!--Test Distro-->Icaros 1.3.1 || <!--Comments-->2002 32bit 15.1 inch
|-
| <!--Name-->Stylistic ST5000 ST5010 ST5011 ST5012 ST5020 ST5021 ST5022 || <!--Chipset-->1.0GHz P-M and later 1.1GHz on Intel 855GME || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->Intel 800 use VESA || <!--Audio-->Intel AC97 || <!--USB--> || <!--Ethernet-->Broadcom BCM5788 tg3 || <!--Wireless-->{{No|Intel 2200BG}} || <!--Test Distro--> || <!--Comments-->2003 32bit charged via a proprietary port power connector 16V 3.75A with wacom serial pen interface - indoor Screen transmissive 10.1 and later 12.1 XGA TFT -
|-
| <!--Name-->Amilo Pro V2010 || <!--Chipset-->VIA CN400 PM880 || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->{{No|S3 unichrome use VESA}} || <!--Audio-->{{No|VIA AC97 VT8237 with codec}} || <!--USB--> || <!--Ethernet-->Rhine 6102 6103 || <!--Wireless-->RaLink RT2500 || <!--Test Distro-->2017 Icaros 2.1.2 || <!--Comments-->2003 32bit boot mount - unknown bootstrap error then crashes
|-
| <!--Name-->Amilo Li 1705 CN896 || <!--Chipset--> with VIA P4M900 || <!--IDE--> || <!--SATA-->{{Maybe|IDE}} || <!--Gfx-->ATi || <!--Audio-->{{No|VIA VT8237 HD Audio with codec}} || <!--USB-->VT82xx 62xx || <!--Ethernet-->{{Yes|VIA Rhine}} || <!--Wireless-->{{No|Atheros G}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2005 32bit random freezes
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> Esprimo Mobile V5535 Skt mPGA 478MN
| <!--Chipset-->
| <!--IDE--> {{yes|IDE and EIDE}}
| <!--SATA--> {{maybe|IDE mode with SIS 5513}}
| <!--Gfx--> {{maybe|SiS 771 / 671 (VESA only)}}
| <!--Audio--> {{yes|HD Audio SIS968 SIS966 SI7012 with ALC268 codec}}
| <!--USB--> {{no|USB 1.1 and 2.0 issues}}
| <!--Ethernet--> {{no|SiS 191 gigabit}}
| <!--Wireless--> {{yes|Atheros AR5001 mini pci express}}
| <!--Test Distro-->aros one 1.5 usb
| <!--Comments-->2005 32bit 20v barrel - f2 setup f12 multi boot - random freezing short time after booting - chipset SIS 671MX -
|-
| <!--Name-->Amilo SI 1520 1521p || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Yes|GMA 2D}} || <!--Audio-->{{No|HD Audio Conexant codec}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{Yes|Intel Pro 100}} || <!--Wireless--> || <!--Test Distro-->Icaros 1.4.2 || <!--Comments-->2005 32bit - Set Bios option ATA Control Mode to Compatible
|-
| <!--Name-->Lifebook S7020 S7020D || <!--Chipset--> Pentium M 740 1.73MHz || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 915 || <!--Audio-->HD Audio ALC260 codec || <!--USB-->{{Yes| }} || <!--Ethernet-->Broadcom BCM5751M Gigabit || <!--Wireless-->Intel PRO Wireless 2200BG or Atheros 5k || <!--Test Distro--> || <!--Comments-->2006 32bit
|-
| <!--Name-->Stylistic ST5030 ST5031 ST5032 || <!--Chipset-->1 to 1.2GHx Pentium M with 915GM || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->Intel 900 || <!--Audio--> || <!--USB-->{{Yes| }} || <!--Ethernet-->Marvell || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2006 32bit charged via a proprietary port power connector 6.0 x 4.4 mm round - 200 pin ddr2 ram
|-
| <!--Name-->Stylistic ST5110 ST5111 ST5112 || <!--Chipset-->945GM with 1.2GHz Core Duo and Core2 Duo || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Intel 900 || <!--Audio-->HD audio with STAC9228 codec || <!--USB-->{{No| }} || <!--Ethernet--> || <!--Wireless-->Intel 3945 ABG or optional atheros || <!--Test Distro--> || <!--Comments-->2006 either 32 or 64 bit - charged via a proprietary port power connector 6.0 x 4.4 mm round - SigmaTel® touchscreen -
|-
| <!--Name-->E8110 S7110 E8210 || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Yes|945GM}} || <!--Audio-->{{Yes|HD Audio with ALC262 codec playback}} || <!--USB-->{{Yes}} || <!--Ethernet-->{{No|Marvell 88E8055 Gigabit}} || <!--Wireless-->{{No|Intel PRO Wireless 3945ABG}} || <!--Test Distro-->Icaros 2.0 || <!--Comments-->2006 32bit Core Duo
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || CHIPSET || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Lifebook PH521 || <!--Chipset-->AMD E-350 E-450 1.65GHz || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->HD 6310M 6320M || <!--Audio-->Realtek ALC269 || <!--USB-->{{No| }} || <!--Ethernet-->Realtek || <!--Wireless-->{{No|Atheros 802.11 bgn}} || <!--Test Distro--> || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 - 11.6 inch 1366x768 pixels - DDR3 1066MHz -
|-
| <!--Name-->LIFEBOOK E752/E782/S752/S782 || <!--Chipset--> with Intel Core i3-2328M to i3-3110M || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{Maybe| }} || <!--Audio-->{{yes| }} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no|Intel 82579V 1000 }} || <!--Wireless-->{{no|Intel Wireless 6205 may be able to swap for Atheros 5k }} || <!--Test Distro-->Aros One 64bit || <!--Comments-->2012 64bit
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====HP Compaq====
[[#top|...to the top]]
Build quality (Lowest to highest)
<pre >
Presario
Pavilion
Omnibook
ProBook
Armada
Elitebook
</pre >
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->1c00 series Compaq Presario [http://users.utu.fi/sjsepp/linuxcompaqarmada100s.html Armada 100S made by Mitac], 1247 || <!--Chipset-->K6-II with PE133 MVP-4 || <!--IDE--> || <!--SATA--> || <!--Gfx-->use VESA - Trident Blade3D AGP sp16953 || <!--Audio-->VIA ac'97 audio [rev20] with AD1881A codec || <!--USB-->{{Maybe|usual VIA issues [rev10]}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->1998 32bit 192MB max - PCcard Texas PC1211 no support - 1200 XL1 1200-XL1xx, XL101, XL103 XL105 XL106 XL109 XL110 XL111 XL116 XL118 XL119 XL125
|-
| <!--Name-->1c01 series Armada 110, Evo N150 || <!--Chipset-->Intel with VIA PLE133 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Use VESA - Trident Cyber Blade i1 chipset || <!--Audio-->VIA 686 rev20 82xxx 686a || <!--USB--> || <!--Ethernet-->Intel 82557 Pro 100 || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->1998 32bit max 192mb sodimm 100Mhz 133Mhz ram memory - 1200-XL405A 12XL405A XL502A 12XL502A 1600XL
|-
| Armada M300 M700 E500 || 440BX || {{Yes| }} || {{N/A}} || {{maybe|ATI Rage LT M1 Mobility (VESA only)}} || {{no|AC97 ESS Maestro 2E M2E ES1987 sound}} || {{yes|USB1.1 only}} || {{No|[http://perho.org/stuff/m300/index_en.html Intel PRO 100+ Mini PCI]}} || {{N/A}} || Aspire OS 2012, Nightly 30-01 2013 and 04-05 2013 || 1999 32bit - F10 bios options and Fn+F11 reset CMOS with 64mb ram already on board
|-
| <!--Name-->HP Omnibook XE3 || <!--Chipset-->Intel BX 600Mhz GC model 256mb or AMD GD 500Mhz || <!--IDE--> || <!--SATA--> || <!--Gfx-->Use VESA - S3 Inc. 86C270 294 Savage IX-MV (rev 11) || <!--Audio-->{{No|ESS ES1988 Allegro 1 (rev 12)}} || <!--USB-->Intel 82371AB PIIX4 USB (rev 01) || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->2002 32bit no cardbus pcmcia support - no audio from Polk Audio Speakers -
|-
| <!--Name-->HP Omnibook XE3 || <!--Chipset-->82830 ICH3 P3-M 750MHz 800Mhz 900MHz || <!--IDE-->{{Yes| }} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Maybe|use VESA - CGC 830MG}} || <!--Audio-->{{No|ESS ES1988 Maestro 3i}} || <!--USB-->{{Yes|only one 1.1 port}} || <!--Ethernet-->{{Yes|e100 82557}} || <!--Wireless-->{{N/A|}} || <!--Test Distro-->Icaros 1.51 || <!--Comments-->2002 32bit Boots USB Stick via Plop boot floppy - Memory for GF 256-512mb, GS up 1GB
|-
| <!--Name-->TC1000 TC-1000 Tablet PC || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->NVIDIA NV11 [GeForce2 Go] (rev b2) || <!--Audio-->VIA AC97 Audio (rev 50) || <!--USB-->OHCI NEC USB 2.0 (rev 02) || <!--Ethernet-->Intel 82551 QM (rev 10) || <!--Wireless-->Atmel at76c506 802.11b || <!--Test Distro--> || <!--Comments-->2002 32bit Transmeta LongRun (rev 03) with VT82C686 - Texas Instruments TI PCI1520 PC card Cardbus
|-
| <!--Name-->HP Compaq R3000 ZV5000 (Compal LA-1851) || <!--Chipset-->Nvidia nForce 3 with AMD CPU || <!--IDE--> || <!--SATA--> || <!--Gfx-->Nvidia NV17 [GeForce4 420 Go 32M] || <!--Audio-->Nvidia || <!--USB--> || <!--Ethernet-->Broadcom or Realtek RTL8139 || <!--Wireless-->{{Maybe|Broadcom BCM4303 BCM4306 or Atheros bios locked}} || <!--Test Distro--> || <!--Comments-->2003 32bit - HPs have a setting to automatically disable wireless if a wired connection is detected
|-
| <!--Name-->Compaq [http://www.walterswebsite.us/drivers.htm Presario 700 series] || <!--Chipset-->VT8363 VT8365 [Apollo Pro KT133 KM133] || <!--IDE-->{{yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{maybe|VT8636A (S3 Savage TwisterK) (VESA only)}} || <!--Audio-->{{Maybe|VIA AC97 [rev50] with AD1886 codec}} || <!--USB-->{{maybe|VIA UHCI USB 1.1 [rev1a]}} || <!--Ethernet-->{{yes|RealTek RTL8139}} || <!--Wireless-->{{no|Broadcom BCM4306}} || <!--Test Distro--> || <!--Comments-->2003 32bit poor consumer grade level construction - jbl audio pro speakers - no support for cardbus pcmcia TI PCI1410 - 700A EA LA UK US Z 701AP EA BR FR 701Z 702US 703US AP JP audio sp18895 Sp19472
|-
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| N400c || P3-M 82845 || {{yes|82801 CAM IDE U100}} || {{N/A}} || {{maybe|Rage Mobility 128 (VESA only)}} || {{No|Maestro 3 allegro 1}} || {{yes|USB1.1}} || {{yes|Intel PRO 100 VM (KM)}} || {{N/A}} || Icaros 1.2.4 || 2003 32bit Has no optical disc drive
|-
| N410c || P3-M 82845 || {{yes|82801 CAM IDE U100}} || {{N/A}} || {{maybe|Radeon Mobility M7 LW 7500 (VESA only)}} || {{yes|Intel AC97 with AD1886 codec}} || {{yes|USB1.1}} || {{yes|Intel PRO 100 VM (KM)}} || {{N/A}} || Icaros 1.2.4 || 2003 32bit Has no optical disc drive
|-
| Evo N600c || Pentium 4 || {{yes|IDE}} || {{N/A}} || {{partial|ATI Radeon Mobility M7 (VESA only)}} || {{No|ESS ES1968 Maestro 2}} || {{yes|USB}} || {{yes|Intel PRO 100}} || {{dunno}} || Icaros 1.3 || 2003 32bit
|-
| Evo N610c || Pentium 4 || {{yes|IDE}} || {{N/A}} || {{partial|ATI Radeon Mobility M7 (VESA only)}} || {{yes|Intel ICH AC97 with AD1886 codec}} || {{yes|USB}} || {{yes|Intel PRO 100}} || {{dunno}} || Icaros 1.2.4 ||
|-
| N800c || P4 || {{Yes|IDE}} || {{N/A}} || {{partial|ATI Radeon Mobility 7500 (VESA only)}} || {{yes|AC97}} || {{yes|USB}} || {{yes|Intel PRO 100}} || {{N/A}} || Icaros 1.2.4 || 2003 32bit P4M CPU can get very warm
|-
| <!--Name-->NX7010 || <!--Chipset-->Intel || <!--IDE-->{{yes|IDE}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{partial|ATI mobility 7500 or 9000 Radeon 9200 64MB (VESA only)}} || <!--Audio-->{{yes|AC97 ADI codec}} || <!--USB-->{{yes|uhci (1.1) and ehci (2.0)}} || <!--Ethernet-->{{yes|Realtek 8139}} || <!--Wireless-->{{No|Intel 2200b bios locked}} || <!--Test Distro--> || <!--Comments-->2003 32bit
|-
| <!--Name-->Compaq Preasrio V5000 (Compal LA-2771) || <!--Chipset-->AMD Sempron 3000+ or Turion ML with SB400 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA - Ati RS480M Xpress 200}} || <!--Audio-->{{No|AC97 ATI with Conexant CX 20468 codec}} || <!--USB--> || <!--Ethernet-->{{Yes|Realtek 8100 8101L 8139}} || <!--Wireless-->{{No|bcm4318 bios locked}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2004 64bit single core machine V5001 V5002 V5002EA V5003
|-
| <!--Name-->TC1100 TC-1100 Tablet PC || <!--Chipset-->855PM || <!--IDE--> || <!--SATA--> || <!--Gfx-->Nvidia Geforce4 Go || <!--Audio-->AC97 || <!--USB--> || <!--Ethernet-->{{Maybe|BCM 4400}} || <!--Wireless-->{{Maybe|Atheros wlan W400 W500 or ? bios locked}} || <!--Test Distro--> || <!--Comments-->2004 32bit
|-
| <!--Name-->NC6000 NC8000 NW8000 || <!--Chipset-->855PM with Pentium M 1.5 1.6 1.8GHz 2.0GHz || <!--IDE-->max 160 GB for NW 8000 || <!--SATA--> || <!--Gfx-->{{Maybe|Ati RV350 mobility 9600 M10 Fire GL T2 ISV use VESA 2D as no laptop display}} || <!--Audio-->{{Yes|Intel AC97 with ADI codec playback only}} || <!--USB-->{{Yes|2 ports}} || <!--Ethernet-->{{No|Broadcom BCM 5705M}} || <!--Wireless-->{{Maybe|mini pci Atheros 5212 BG W400 W500 or Intel - all bios locked}} || <!--Test Distro--> || <!--Comments-->2005 based [http://amigaworld.net/modules/newbb/viewtopic.php?topic_id=41916&forum=47 works] - Firewire TI TSB43AB22/A - 8 pound 2.5 kg travel weight - an SD slot as well as two PC Card slots - 15-inch UXGA screen (1,600 x 1,200) or 15" SXGA+ (1400 x 1050) (4:3 ratio)
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Compaq NC6110 NX6110 NC6120 NC6220 NC4200 NC8200 TC4200 || <!--Chipset-->GMA 915GML || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Yes|2D GMA 900}} || <!--Audio-->{{Yes|AC97 with ADI AD1981B playback}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{Unk|440x or BCM 5705M or 5751M}} || <!--Wireless-->{{No|Intel IPW 2200 bios locked}} || <!--Test Distro-->Icaros 1.5.2 || <!--Comments-->2005 32bit Sonoma based - Wifi with Atheros AR5007eg if apply hacked bios RISKY else use USB one - (INVENTEC ASPEN UMA MV) (INVENTEC ASPEN DIS PV) -
|-
| <!--Name-->Compaq C500 CTO aka HP G7000 || <!--Chipset-->Intel 945GM || <!--IDE--> || <!--SATA--> || <!--Gfx-->GMA 950 || <!--Audio-->HD Audio with realtek ALC262 codec || <!--USB--> || <!--Ethernet-->Realtek 8139 || <!--Wireless-->Broadcom BCM 4311 bios locked || <!--Test Distro--> || <!--Comments-->2005 32bit
|-
| <!--Name-->HP DV6000 || <!--Chipset-->945GMS || <!--IDE--> || <!--SATA--> || <!--Gfx-->GMA 950 || <!--Audio-->HD Audio IDT 92HD 91B || <!--USB--> || <!--Ethernet-->Intel PRO 100 VE || <!--Wireless-->{{No|Intel 3945 bios locked}} || <!--Test Distro--> || <!--Comments-->2006 32 bit only - Mosfet FDS6679 common cause of shorts giving no power to the tip. To reset adapter, unplug from AC (mains) and wait 15-30 sec. Then plug in again -
|-
| Presario F700 series, HP G6000 f730us F750 F750us F755US F756NR F765em || AMD Turion Mono MK-36 2.0Ghz NForce 560m or Twin X2 TK-55 with nForce 610m MCP67 || {{N/A| }} || {{Yes|but needs special sata adapt bit and caddy}} || {{Yes|GF Go 7000m 2D and 3D 640x350 to 1280x800 - ball solder issues due to poor cooling}} || {{Maybe| }} || {{Maybe|uhci and ehci boots}} || {{No|Nvidia }} || {{Yes|Atheros AR5007 bios locked}} || Icaros 1.3.1 and Aros One 1.6 USB || 2006 64bit - f9 boot device f10 bios setup - random freezes after a minutes use means internal ventilation maintenance needed each year essential - No sd card and overall limited phoenix bios options -
|-
| <!--Name-->Presario v6604au v6608au V3500 || <!--Chipset-->NVIDIA MCP67M with AMD Athlon64 X2 TK 55 amd 1.8ghz || <!--IDE--> || <!--SATA-->{{Yes|SATA 150}} || <!--Gfx-->NVIDIA GeForce Go 7150M 630i or C67 630M MCP67 || <!--Audio-->conexant codec || <!--USB--> || <!--Ethernet-->Nvidia or Realtek 10/100 || <!--Wireless-->{{No|Broadcom 4311 bios locked}} || <!--Test Distro--> || <!--Comments-->2006 64bit Altec Lansing Stereo Speakers - ball solder issues -
|-
| <!--Name-->Compaq presario v6610 v6615eo v6620us || <!--Chipset-->Turion 64 X2 mobile TK-55 / 1.8 GHz to athlon 64x2 @ 2.4ghz || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|SATA 150}} || <!--Gfx-->{{Yes|geforce 7150 or 7300m 2d and 3d}} || <!--Audio-->{{Yes|AMD HD Audio with IDT codec stereo playback only}} || <!--USB-->3 OHCI EHCI || <!--Ethernet-->{{Maybe| }} || <!--Wireless-->{{No|Broadcom bios locked}} || <!--Test Distro-->Icaros 1.3 - || <!--Comments-->2007 [http://amigaworld.net/modules/newbb/viewtopic.php?topic_id=40956&forum=48 works well] - 1 x ExpressCard/54 - SD Card slot - AO4407 test voltage of the Drain side (pins 5-8) with AC adapter and no battery, see 0 volts, connect the battery you should have 10-14v -
|-
| <!--Name-->v6630em v6642em || <!--Chipset-->nForce 630M with AMD Turion 64 X2 Mobile TL-58 || <!--IDE--> || <!--SATA--> || <!--Gfx-->NVIDIA GeForce 6150M or 7150M || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless-->{{No|Broadcom bios locked}} || <!--Test Distro--> || <!--Comments-->2007 64bit 15.4 in 1280 x 800 ( WXGA ) -
|-
| <!--Name-->HP Compaq NC6400 || <!--Chipset-->945GM Core Duo || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|GMA 950 2D issues and no 3d}} || <!--Audio-->{{No|HD Audio AD1981HD}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|BCM }} || <!--Wireless-->{{No|Broadcom locked}} || <!--Test Distro-->Icaros || <!--Comments-->2007 - replaced with Atheros AR5007eg if apply hacked bios RISKY else use USB g -
* 32bit Core Duo T2400
* 64bit Core 2 Duo T5600 T7600
|-
| <!--Name-->HP Compaq NV NC6400 || <!--Chipset-->Core Duo + 945PM || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|use VESA Radeon x1300M (2D)}} || <!--Audio-->{{Maybe|HD Audio with ADI1981 low volume}} || <!--USB-->{{yes}} || <!--Ethernet-->{{no|BCM 5753M}} || <!--Wireless-->{{No|Intel 3945 ABG bios locked}} || <!--Test Distro--> Icaros 1.4.2 || <!--Opinion-->2007 Harmon Kardon speakers
|-
| <!--Name-->HP Compaq NC6320 || <!--Chipset-->945GM with
* 32bit Core Duo 1.83GHz T2400
* 64bit Core2 Duo 1.83GHz T5600
|| <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Yes|GMA 950 2D with a little 3D tunnel 213}} || <!--Audio-->{{Maybe|Intel HD Audio with AD1981HD codec}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|BCM 5788}} || <!--Wireless-->{{No|Intel 3945 bios locked}} || <!--Test Distro-->Icaros 2 || <!--Comments-->2007 replaced with Atheros AR5007eg if applying hacked wifi bios RISKY!! else use USB - 14.1" or 15 inch XGA 1024x768 - noisy cpu fan for core2 - trackpad rhs acts as window scroller -
|-
| <!--Name-->HP NC4400 TC4400 Tablet || <!--Chipset-->Core Duo with 82945 chipset || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|bios F.07 limits to 100GB 120GB}} || <!--Gfx-->{{yes|2D and 3D 282 tunnel and gearbox 150}} || <!--Audio-->{{Yes|HD Audio with ADI 1981HD codec via ear phones}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{No|BCM 5753M}} || <!--Wireless-->{{No|Intel 3945 or BCM 4306 - Whitelist BIOS F.0C needed but risky}} || <!--Test Distro-->2017 Icaros 2.1.2 || <!--Comments-->2008 64 bit possible with Core2 - TI SD card reader non bootable - wacom serial digitiser pen not working -
* 32bit 1.86GHz core duo
* 64bit 2Ghz T7200, 2.16Ghz Core 2 Duo T7600 2.33GHz
|-
| <!--Name-->HP Pavilion DV2000 CTO || <!--Chipset-->945GMS || <!--IDE--> || <!--SATA--> || <!--Gfx-->GMA 950, X3100, Nvidia 8400M || <!--Audio-->HD Audio Conexant CX 20549 Venice || <!--USB--> || <!--Ethernet-->Nvidia MCP51 || <!--Wireless-->{{No|Broadcom BCM 4311 or Intel 3945 4965 ABG bios locked}} || <!--Test Distro--> || <!--Comments-->2008 Atheros AR5007eg if apply hacked bios RISKY
|-
| <!--Name-->Compaq Presario C700 || <!--Chipset-->GMA960 || <!--IDE--> || <!--SATA--> || <!--Gfx-->X3100 || <!--Audio-->HD Audio || <!--USB--> || <!--Ethernet-->RTL 8139 || <!--Wireless-->{{Maybe|Atheros AR5007 AR5001 AR242x}} || <!--Test Distro--> || <!--Comments-->2008
|-
| <!--Name-->Compaq 2510p 6510b 6710b 6910b || <!--Chipset-->GMA 965GM GL960 || <!--IDE-->{{yes| }} || <!--SATA--> || <!--Gfx-->{{yes|X3100 some 2d but slow software 3d only}} || <!--Audio-->{{maybe|HD Audio ADI AD1981 HD low volume on head phones}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no|Intel 82566 or Broadcom BCM 5787M}} || <!--Wireless-->{{No|Intel 3945ABG or 4965ABG bios locked}} || <!--Test Distro-->Aspire OS Xenon 2014 || <!--Comments-->2008 no sd card boot support - F9 to choose boot option - [http://forums.mydigitallife.info/threads/7681-This-is-no-request-thread!-HP-COMPAQ-bioses-how-to-modify-the-bios/page111?p=333358#post333358 whitelist removal (risky) bios block for wifi card swap]
|-
| <!--Name-->CQ40 CQ41 || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|VESA Intel}} || <!--Audio-->HD Audio || <!--USB--> || <!--Ethernet-->Realtek RTL8101E || <!--Wireless-->{{No|Broadcom BC4310 bios locked}} || <!--Test Distro--> || <!--Comments-->2008
|-
| <!--Name-->Compaq Presario CQ35 CQ36 || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|VESA }} || <!--Audio--> || <!--USB--> || <!--Ethernet-->Realtek RTL8101E RTL8102E || <!--Wireless-->{{No|Broadcom BCM4312 bios locked}} || <!--Test Distro--> || <!--Comments-->2008 Compal LA-4743P -
|-
| <!--Name-->HP Compaq CQ42 CQ43 CQ45 || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|VESA }} || <!--Audio-->HD Audio with Coxenant codec || <!--USB--> || <!--Ethernet-->Realtek || <!--Wireless-->{{No|Realtek RTL8191SE, Realtek 8188CE}} || <!--Test Distro--> || <!--Comments-->2008 (Quanta AX1)
|-
| <!--Name-->Compaq Presario CQ50 CQ56 || <!--Chipset-->Nvidia MCP78S || <!--IDE--> || <!--SATA--> || <!--Gfx-->Geforce 8200M || <!--Audio-->nVidia HD Audio with codec || <!--USB--> || <!--Ethernet-->nvidia MCP77 || <!--Wireless-->{{unk|Atheros AR928X bios locked}} || <!--Test Distro--> || <!--Comments-->2008 [http://donovan6000.blogspot.co.uk/2013/06/insyde-bios-modding-wifi-and-wwan-whitelists.html bios modding risky] MCP72XE MCP72P MCP78U MCP78S
|-
| <!--Name-->CQ60 || <!--Chipset-->Single core Sempron to dual turion || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|VESA for Nvidia 8200M}} || <!--Audio-->{{yes|HD Audio}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{No| bios locked}} || <!--Test Distro--> || <!--Comments-->2008
|-
| <!--Name-->HP DV6700 || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{no|Vesa for Nvidia 8400M}} || <!--Audio-->{{no| }} || <!--USB-->{{no| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{No|Intel }} || <!--Test Distro--> || <!--Comments-->2008 64bit -
|-
| <!--Name-->CQ60 || <!--Chipset-->Intel C2D || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|VESA for Nvidia 9200M}} || <!--Audio-->{{yes|HD Audio}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{No| bios locked}} || <!--Test Distro--> || <!--Comments-->2009 64bit -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->CQ57z || <!--Chipset-->AMD slow E-300 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{Maybe|VESA ATi HD 6310 wrestler}} || <!--Audio-->{{unk| }} || <!--USB-->{{yes| }} || <!--Ethernet-->{{maybe|Realtek RTL8101 RTL8102}} || <!--Wireless-->{{No|RaLink RT5390}} || <!--Test Distro--> || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->HP CQ58z 103SA E5K15EA || <!--Chipset-->AMD slow Dual-Core E1-1500 APU with A68M FCH || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{Maybe|VESA 2D for Radeon HD 7310}} || <!--Audio-->Realtek idt codec || <!--USB-->{{yes| }} || <!--Ethernet-->{{yes|Realtek 10/100 BASE-T}} || <!--Wireless-->{{No|Broadcom}} || <!--Test Distro--> || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 - 39.6 cm (15.6") HD BrightView LED-backlit (1366 x 768)
|-
| <!--Name-->HP 635 DM1 || <!--Chipset-->AMD slow E-300, E-450 later E2-1800 on SB7x0 SB8x0 SB9x0 || <!--IDE-->{{N/A}} || <!--SATA-->ATI non efi SATA AHCI - IDE mode || <!--Gfx-->{{Maybe|use VESA 2D - AMD HD6310, 6320 to HD7340}} || <!--Audio-->{{Yes|Realtek ALC270A GR but not Wrestler HDMI Audio}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{Yes|rtl8169 driver covers Realtek RTL8101E RTL8102E}} || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - 14" 1366 x 768 - f9 f10 - external battery - 2 stacked ddr3l sodimm slots max 16Gb under one base plate - removable keyboard -
|-
| <!--Name-->HP G6 2000-2b10NR 2000-2d10SX 2000-2d80NR || <!--Chipset-->AMD very slow E1-2000 E2-3000M on A50M (soldered) A4-3305A on A60M (socket) || <!--IDE-->{{N/A}} || <!--SATA-->2.5in || <!--Gfx-->{{Maybe|VESA AMD Radeon 6320, 6620G, 6520G, 6480G, 6380G}} || <!--Audio-->{{No| }} || <!--USB-->{{No| }} || <!--Ethernet-->{{maybe|Realtek 100 1000}} || <!--Wireless-->{{No|Realtek}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - 39.6-cm (15.6-in) HD LED BrightView (1366×768) - 1 or 2 ddr3l max 8G - 19VDC 3.42A Max 65W Tip 7.4mm x 5.0mm -
|-
| <!--Name-->HP ProBook 6465B || <!--Chipset-->AMD massively slow A6-3310MX or A6-3410MX with A60M || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA AMD 6480G or 6520G}} || <!--Audio-->{{No|IDT 92HD81B1X}} || <!--USB-->{{No| }} || <!--Ethernet-->{{maybe|rtl8169 Realtek 8111}} || <!--Wireless-->{{No|Intel AC 6205 or broadcom 4313 bios locked}} || <!--Test Distro--> || <!--Comments-->2013 64bit does not support AVX or SSE 4.1 - 13-inch or 14-inch runs hot -
|-
| <!--Name-->HP Elitebook 8470p 8570p || <!--Chipset-->Intel Quad i7-3840QM, i7-3610QM, i7-3520M, i5-3210M, i3-3130M, i3-2370M on Intel QM77 chipset || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|set the bios boot options to not fastboot and drive mode IDE rather than AHCI }} || <!--Gfx-->{{Maybe|Vesa 2d for HD4000 with some having switchable Radeon M2000 or 7570M}} || <!--Audio-->{{yes|HDAudio for IDT codec}} || <!--USB-->{{yes|USB2}} || <!--Ethernet-->{{No|Intel 82579LM }} || <!--Wireless-->{{No|Intel, Broadcom, Atheros}} || <!--Test Distro-->64 bit boots from CD* if safe mode 2 is used, although it is possible to remove the 'nodma' and 'debug' entries and boot || <!--Comments-->2013 64bit with SSE4.1 and AVX - 14in 1600 x 900 to 1366 x 768 - 2 DDR3L sodimm slots max 16Gb - TPM 1.2 - dual boot 32/64 bit is working fine -
|-
| <!--Name-->HP ProBook 6475b, Probook 4445s 4545s, HP Pavilion 15-b115sa, [https://support.hp.com/gb-en/document/c04015674#AbT6 HP mt41 Mobile Thin Client PC] || <!--Chipset-->AMD very slow A4 4300M, A6 4400M 4455M or A8 4500M with AMD A70M A76M FCH || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA 7420 7520G 7640G 7660G}} || <!--Audio-->{{no|HD Audio with idt or realtek codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{No|Realtek RTL8151FH-CG}} || <!--Wireless-->{{No|Intel 6205 or Broadcom BCM 43228 bios locked}} || <!--Test Distro--> || <!--Comments-->2014 64bit does support AVX or SSE 4.1 - 15.6-inch -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->HP ENVY 15-k112nl K1Y78EA || <!--Chipset-->Intel® Core™ i7 i7-4510U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe| }} || <!--Gfx-->Intel HD4400 and/without NVIDIA® GeForce® GTX 850M || <!--Audio-->{{maybe| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{no| }} || <!--Test Distro-->Deadwood usb3 test iso || <!--Comments-->2014 64bit - 15.6" 768p to 1080p - 19.5V 3.33A/4.62A/6.15A 65W/90W/120W AC -
|-
| <!--Name-->HP Pavilion Gaming Laptop 15-ak002na || <!--Chipset-->Intel 4 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->GTX 950 || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2015 64bit -
|-
| <!--Name-->HP ProBook 255 G1, 455 G1 F2P93UT#ABA, 645 G1, Envy 15-j151ea G7V80EA, Envy m6-1310sa (E4R01EA#ABU) || <!--Chipset-->AMD very slow Dual-Core E1-1500, or AMD Quad A4-4300M A8-4500M A10-4600M A4-5150M A6-5350M 2.9Ghz A10-5750M || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA 2D for 7310, 7420G 7520G 7640G 7660G 8350G 8450G or 8550G, 8650G, 8750G }} || <!--Audio-->{{No|HD Audio IDT 92HD91 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|realtek}} || <!--Wireless-->{{No|Atheros}} || <!--Test Distro--> || <!--Comments-->2015 64bit does support AVX or SSE 4.1 - 14in and 15in 1366 x 768 - external battery - 2 ddr3l sodimm slots - 19.5v / 4.62A psu runs hot -
|-
| <!--Name-->HP ProBook 245 G4, 255 G2, 455 G2, 255 G3, 455 G3, 255 G4 80CB, 255 G5 82F6, 355 G2, HP Pavilion 15-p038na 15-g092sa 15-p091sa 15-G094S 15-p144na 15-p142na, 15-Af156sa || <!--Chipset-->AMD very slow A4-5000 A6-5200, E2-6110, E1-6010 E2-2000, E1-2100 E2-3800, A4-6210 A6-6310 A8-6410, E2-7110, A6-7310 A8-7410 APU on A68M || <!--IDE-->{{N/A}} || <!--SATA-->sata some with cdrw dvdrw || <!--Gfx-->{{Maybe|VESA Radeon R2 R4 R5}} || <!--Audio-->{{no|HD Audio ALC3201-GR}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 RTL8102E or Atheros 1GbE}} || <!--Wireless-->{{unk|Qualcomm Atheros AR9565}} || <!--Test Distro--> || <!--Comments-->2015 64bit most have SSE4 AVX but E2-2000 does not - 15.6-inch (1366 x 768) - 2 ddr3l sodimm slots - small 31Whr or 41Whr external battery covers 240 G4, 245 G4, 250 G4, 255 G4, 256 G4, 14G, 15G - keyboard repair swap requires removal of all components -
|-
| <!--Name-->HP Elitebook 725 G2, 745 G2, 755 G2 || <!--Chipset-->Amd Quad very slow A6-7050B A8-7150B 1.9GHz A10-7350B || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA on AMD R4 R5 Radeon R6 with DP and vga}} || <!--Audio-->{{No|HD audio with IDT 92HD91}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 PCIe GBE}} || <!--Wireless-->{{no|Broadcom or Atheros}} || <!--Test Distro--> || <!--Comments-->2016 64bit - 12.5-inch, 14" or 15.6in (all 1366 x 768) - 19.5V 65w 45W AC adapter - internal pull up tab battery under base which slides off - 2 ddr3l sodimm slots - keyboard swap requires removal of all components -
|-
| <!--Name-->HP ProBook 645 g2, Probook 445 G2, Probook 245 G2 most have cmos rtc battery || <!--Chipset-->AMD very slow A6-8600 A8-8700 a10- || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA 2D for Radeon R5 R6}} || <!--Audio-->{{No|HD Audio }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{No|Intel I219V 100/1000}} || <!--Wireless-->{{No|Intel or Qualcomm Atheros}} || <!--Test Distro--> || <!--Comments-->2016 64bit - 14in and 15.6-inch HD (1366 x 768) or FHD 1080p - 2 ddr3l sodimm slots max 16GB - internal battery - hp ac psu tip -
|-
| <!--Name-->HP Probook 455 G3 should have a cmos battery || <!--Chipset-->AMD slow A10-8700P || <!--IDE-->{{N/A}} || <!--SATA-->1 2.5in sata and most should have 9.5mm dvd-rw || <!--Gfx-->{{Maybe|VESA 2D for Radeon R5}} || <!--Audio-->{{No|HDAudio with Conexant CX7501 codec }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 Realtek RTL8111HSH-CG}} || <!--Wireless-->{{no|RTL8188EE }} || <!--Test Distro--> || <!--Comments-->2016 64bit - 2 ddr3l sodimm slots - keyboard swap problematic -
|-
| <!--Name-->HP Elitebook 725 G3, 745 G3, 755 G3, 725 G4, 745 G4, 755 G4, HP mt43 || <!--Chipset-->Amd slow A8-8600B, A10-8700B, A12-8800B to Quad A8 Pro 9600B to A10 9800 || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA on AMD R5 R6 R7 with DP and vga but screen is low res, dull colours, and blurry}} || <!--Audio-->{{No|HD audio with IDT codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{No|Broadcom 5762 PCIe GBE}} || <!--Wireless-->{{no|Realtek RTL8723BE-VB}} || <!--Test Distro--> || <!--Comments-->2016 64bit - 12.5-inch (1366 x 768) to 14" and 15.6in - 2 sodimm ddr3 - 19.5V 45W AC slim 4.5mm hp adapter - randomly shuts down and the noisy fans constantly on - keyboard swap problematic -
|-
| <!--Name-->HP ProBook 645 G3, 655 G3 should have a cmos rtc battery underside of mb || <!--Chipset-->AMD 8th Gen slow A10-8730B, A8-9600B (4c4t) A6-8530B (2c2t) || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA 2d for AMD R5}} || <!--Audio-->{{No|HD Audio}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 RTL8111HSH}} || <!--Wireless-->{{No|Intel or Realtek}} || <!--Test Distro--> || <!--Comments-->2016 64bit - 15.6in - 2 ddr4 sodimm slots - keyboard repair swap requires removal of all components -
|-
| <!--Name-->HP ProBook 250 G5 easy cmos and external main battery || <!--Chipset-->Intel i7-6500U, i5-6200U, i3-6100U to slow i3-6006U, N3710 all sse4.1 and avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe| }} || <!--Gfx-->{{maybe|VESA 2D for iGPU Intel HD405 to HD520 dGPU or AMD Radeon R5 430M}} || <!--Audio-->{{unk|HDAudio with Realtek ALC3227 (or ALC282) codec 0x0282 }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 rtl8111HSH}} || <!--Wireless-->{{no| }} || <!--Test Distro-->Deadwoods' latest usb3 test iso with noacpi || <!--Comments-->2016 64bit - 15.6 inch 768p - HP ac psu - 2 ddr4 sodimm slots -
|-
| <!--Name-->HP ProBook 250 G6 SL52 LA-E801P - easy cmos battery and external battery || <!--Chipset-->Intel tested '''7200U''' untested 7500U to slow N3060 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|ahci on M.2 sata or 2.5in whichever installed with 1 m.2 permanent and internal dvdrw}} || <!--Gfx-->{{Maybe|VESA 2D for Intel Intel HD Graphics 620 or AMD Radeon 520}} || <!--Audio-->{{yes|HDAudio 0x8086, 0xa170 or 0x8086, 0x9dc8 with ALC3227 aka ALC282 codec 0x10EC, x0282}} || <!--USB-->{{maybe|intel sunrise point-lp USB3.0 xHCI}} || <!--Ethernet-->{{yes|rtl8169 Realtek RTL8111}} || <!--Wireless-->{{No|RTL8821CE or Intel wifi}} || <!--Test Distro-->Deadwoods' latest usb3 test iso with noacpi || <!--Comments-->2017 64bit 768p or 1080p - 19.5V 65W - 2 DDR4 sodimm slots max 16Gb - keyboard swap problematic - synaptics touchpad - poor hinges -
|-
| <!--Name-->HP Pavilion 14-BS, HP 15-BS LA-E802P cmos battery and external battery || <!--Chipset-->Intel i3-7200U to slow Celeron || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata 2.5in (possibly requires the drive cable and M.2 sata3, most have no cdrw dvdrw}} || <!--Gfx-->{{Maybe|VESA 2d for Intel}} || <!--Audio-->{{No|HDAudio 0x8086, 0x9d70 with ALC codec 0x10EC, x0}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|Realtek rtl8169}} || <!--Wireless-->{{No|RTL8188CTV, RTL8821CE or Intel Dual Band Wireless-AC 3168}} || <!--Test Distro-->Deadwoods' latest usb3 test iso || <!--Comments-->2017 64bit 768p all - 19.5V 65W - DDR4 slot max 8Gb - keyboard swap problematic - synaptics touchpad -
|-
| <!--Name-->HP 14-bw022na - cmos coin battery and external battery || <!--Chipset-->AMD very slow A6-9120 APU || <!--IDE-->{{N/A}} || <!--SATA-->m.2 sata || <!--Gfx-->{{Maybe|VESA 2D for R3}} || <!--Audio-->{{no|HDAudio VOID with conexant CX7501 codec}} || <!--USB-->{{maybe|USB3 not working but port on the right works}} || <!--Ethernet-->{{yes|Realtek GbE}} || <!--Wireless-->{{No|Realtek}} || <!--Test Distro-->Deadwoods' latest usb3 test iso with noacpi || <!--Comments-->2017 64bit 768p to 900p - keyboard swap problematic -
|-
| <!--Name-->HP Probook 455 G4, Probook 455 G5, cmos battery on underside of mb take off back cover and below wifi card || <!--Chipset-->AMD very slow A10-9600P APU, A9-9410, A6-9210 APU || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA Radeon R4, R5 or R6}} || <!--Audio-->{{No|HD }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|realtek 1GbE}} || <!--Wireless-->{{no|realtek or intel Wireless-AC 7265}} || <!--Test Distro--> || <!--Comments-->2017 64bit 15.6in 768p - 2 ddr4 sodimm slots - keyboard swap problematic - rr03xl battery -
|-
| <!--Name-->HP ProBook 255 G6 (), easy cmos and external battery || <!--Chipset-->AMD very slow E2-9000e, A9-9420, 9220P, A4-9125 (all 2c) AMD A6-9225 AMD A9-9425 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata 2.5in (possibly requires the drive cable and M.2 sata3 and internal cdrw dvdrw}} || <!--Gfx-->{{Maybe|VESA 2d for R2 R3 R4}} || <!--Audio-->{{No|HDAudio 0x1022, 0x157a or 0x1002, 0x15b3 with ALC codec 0x10EC, x0}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|Realtek rtl8169}} || <!--Wireless-->{{No|RTL8188CTV, RTL8821CE or Intel Dual Band Wireless-AC 3168}} || <!--Test Distro--> || <!--Comments-->2017 64bit 768p all - 19.5V 65W - DDR4 slot max 8Gb - keyboard swap problematic - synaptics touchpad -
|-
| <!--Name-->HP ProBook 255 G7 (la-g078p) - no cmos battery so needs internal battery || <!--Chipset-->AMD very slow E2-9000e, A9-9420, 9220P, A4-9125 (all 2c) AMD A6-9225 AMD A9-9425 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata 2.5in (possibly requires the drive cable and M.2 sata3, most have no internal cdrw dvdrw}} || <!--Gfx-->{{Maybe|VESA 2d for R2 R3 R4}} || <!--Audio-->{{No|HDAudio 0x1022, 0x157a or 0x1002, 0x15b3 with ALC codec 0x10EC, x0}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|Realtek rtl8169}} || <!--Wireless-->{{No|RTL8188CTV, RTL8821CE or Intel Dual Band Wireless-AC 3168}} || <!--Test Distro--> || <!--Comments-->2017 64bit 768p all - 19.5V 65W - DDR4 slot max 8Gb - keyboard swap problematic - synaptics touchpad -
|-
| <!--Name-->ProBook 245 g8 - no cmos rtc coin battery but uses internal battery || <!--Chipset-->AMD very slow A6-9225, A4-9125, A6-8350B, A4-5350B APU || <!--IDE-->{{N/A}} || <!--SATA-->m.2 sata || <!--Gfx-->{{Maybe|VESA R4 R6}} || <!--Audio-->{{no|HDAudio}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|Realtek GbE}} || <!--Wireless-->{{No|Realtek}} || <!--Test Distro-->Deadwoods' latest usb3 test iso || <!--Comments-->2017 64bit 768p - many later variants - keyboard swap problematic -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Probook 255 G7 84AE 7DE72EA 7DE73EA (epv51 la-g076p) - CMOS Error (502) replace main internal battery HT03XL to have bios remember settings || <!--Chipset-->Ryzen 3 2200U 2300U (2c4t), R5 2500U, R7 2700U (4c8t) Raven Ridge || <!--IDE-->{{N/A}} || <!--SATA-->{{no|M.2 (Sata or NVMe) and very optional 2.5in sata, most have mini sata port}} || <!--Gfx-->{{Maybe|VESA 2d 640p to 768p for AMD Vega 3, 6, or 8}} || <!--Audio-->{{unk|HDAudio 0x1022, 0x15e3 with ALC236 0x10ec, 0x0236 codec}} || <!--USB-->{{maybe|USB3 }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no|Realtek RTL8821CE, 8822BE or Intel AC 8265}} || <!--Test Distro-->AROS x64 deadwoods' iso does not boot with cd/dvd and installed to 2.5in ssd, boots to grub choice, select but no further and reboots || <!--Comments-->2017 64bit - 12.5 to 15.6in 768p mostly to 1080p - 1 on smaller laptops or 2 ddr4 2400mhz sodimm slots on larger laptops max 16Gb - hp 4.5mm blue tip charging - keyboard swap problematic - esc boot options f9 boot order f10 bios - synaptics touchpad -
|-
| <!--Name-->HP EliteBook 725 G5, 735 G5, 745 G5, 755 G5, Probook 455 G6, ProBook 645 G6 || <!--Chipset-->Ryzen 3 2200U 2300U (2c4t), R5 2500U, R7 2700U (4c8t) Raven Ridge || <!--IDE-->{{N/A}} || <!--SATA-->{{no|M.2 (Sata or NVMe) and very optional 2.5in sata, some have mini sata port but no cdrw dvdrw}} || <!--Gfx-->{{Maybe|VESA 2d 640p to 768p for AMD Vega 3, 6, or 8}} || <!--Audio-->{{No|HDAudio 0x1022, 0x15e3 with ALC 0x10ec, 0x0 codec}} || <!--USB-->{{maybe|USB3 }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no|Realtek RTL8821CE, 8822BE or Intel AC 8265}} || <!--Test Distro-->Deadwoods' latest usb3 test iso does not boot software error || <!--Comments-->2017 64bit - 12.5 to 15.6in 768p mostly to 1080p - 1 on smaller laptops or 2 ddr4 2400mhz sodimm slots on larger laptops max 16Gb - hp 4.5mm blue tip charging - keyboard swap problematic - esc boot options f9 boot order f10 bios - synaptics touchpad -
|-
| <!--Name-->HP 14-cm, 15-bw0, HP 15-db0043na, HP 15-db0996na, HP 15-db0997na, 17-ca0007na, 17-ca1, ProBook 645 G4 - no cmos battery || <!--Chipset-->Ryzen 2200U (2c 4t) 2500U (4c 8t) with AMD Carrizo FCH 51 || <!--IDE-->{{N/A}} || <!--SATA-->{{no|1 M.2 and 1 2.5in on some larger models and hdd port }} || <!--Gfx-->{{Maybe|VESA Radeon R5 and later Vega 3 or 7}} || <!--Audio-->{{No|HDaudio 0x1002, 0x103c or 0x1022, 0x157a with Realtek ALC3227 0x10ec, 0x0282 but ATI HDMI}} || <!--USB-->{{Maybe|USB3 USB boot drive stuck on kitty's eyes}} || <!--Ethernet-->rtl8169 RTL8111E || <!--Wireless-->{{No|RTL 8723DE 8821 bios locked}} || <!--Test Distro-->2020 Icaros 2.3 USB, Deadwoods' latest usb3 test iso does not boot software error || <!--Comments-->2018 64bit 2kg - screen is dim 14in, 15.6in or 17.3" 768p or 1080p - 65W 19.5V ac adapter - internal 3-cell 41 Wh Li-ion battery does not last long - 2 ddr4 sodimm slots - no DVD-Writer - keyboard swap problematic -
|-
| <!--Name-->HP ProBook 250 G7, 250 G8 - no cmos battery so needs internal battery and needs usb3 boot due to garbage bios boot options || <!--Chipset-->Intel 8235U 8265U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|M.2 nvme not working, optional sata 2.5in requires LS-G072P and ribbon cable, if internal cdrw dvdrw partial boot}} || <!--Gfx-->{{Maybe|VESA 2D for Intel WhiskeyLake-U 620 GT2 UHD}} || <!--Audio-->{{No|HDAudio 0x8086, 0xa170 or 0x8086, 0x9dc8 with ALC236 codec 0x10EC, x0236}} || <!--USB-->{{maybe|Cannon Point-LP USB3.1 xHCI}} || <!--Ethernet-->{{maybe|rtl8169 Realtek RTL8111}} || <!--Wireless-->{{No|RTL8821CE or Intel Dual Band Wireless-AC 3168}} || <!--Test Distro-->Deadwoods' latest usb3 test iso does not boot stuck on kittys eyes || <!--Comments-->2018 64bit 1080p all - 19.5V 65W - DDR4 slot max 16Gb - keyboard swap problematic - synaptics touchpad -
|-
| <!--Name-->HP 255 G7 7DC73EA 2D200EA 87CE (fpp55 la-g07jp), - CMOS Error (502) replace 41.04Wh ht03xl hto3xl dynapack suzhou main battery to have bios remember settings || <!--Chipset-->'''tested''' R5 3500U (4c8t) '''untested''' mostly dual cores - AMD Athlon Gold 3150U (2c2t), Silver 3050U APU (2c2t), Ryzen 3 Pro 3145U APU, 3200U (2c4t) || <!--IDE-->{{N/A}} || <!--SATA-->{{no|1 m.2 NVMe or sata3 up to 2280, optional 2.5in sata, many have mini-sata slimline 6+7 internal port but no physical 9mm drive}} || <!--Gfx-->{{Maybe|VESA 2D from 640p to 1080p for AMD Vega 3, 6 or 8 with up to 2gb ram taken}} || <!--Audio-->{{unk|HDAudio 0x1022, 0x15e3 with realtek ALC236 codec 0x10ec, 0x0236}} || <!--USB-->{{maybe|USB3 but no usb-c}} || <!--Ethernet-->{{maybe|rtl8169 Realtek GbE RTL8111HSH}} || <!--Wireless-->{{No|Realtek 8822BE}} || <!--Test Distro-->2025 Aros One 32bit and 64bit burnt iso does not fully boot (stuck on kitty's eyes) and installed onto 2.5in on another compatible computer, sometimes has dosboot bootstrap error -6 || <!--Comments-->2018 64bit - 14in / 15.6in dim tn panel 768p or 1080p - 2 ddr4 sodimm slots max 16gb - hp 19.5V 45W 65W AC blue tip round 4.5 mm - keyboard swap problematic - synaptics touchpad - caps lock blinking 3 times then 2 quick pulses means ram or bios issue - f9 boot order f10 uefi - laptop needs usb3 to boot and use so avoid until usb3 arrives
|-
| <!--Name-->HP ProBook 450 G5 needs main battery for bios settings saved || <!--Chipset-->Intel i7-8550U, i5-8250U, i3-8130U, i7-7500U, i5-7200U, i3-7100U, i3-7020, i3-6006U all sse4.1 and avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe| }} || <!--Gfx-->{{maybe|VESA 2D for Intel UHD}} || <!--Audio-->{{unk|HDAudio with codec }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 rtl8111HSH}} || <!--Wireless-->{{no| }} || <!--Test Distro-->Deadwoods' latest usb3 test iso with noacpi || <!--Comments-->2018 64bit - 15.6 inch 768p or 1080p - HP ac psu, 1 ddr4 sodimm slot -
|-
| <!--Name-->[https://support.hp.com/gb-en/document/c06955717 ProBook 245 g8], Probook 445R G6, 455R G6, HP14-dk0599sa, pavilion 15-cw1511na 15-cw1507sa, HP 15s-eq1516sa no cmos battery || <!--Chipset-->AMD Athlon Gold 3150U (2c2t), Silver 3050U APU (2c2t), Ryzen 3 Pro 3145U APU, 3200U (2c4t) and 3500U (4c8t) || <!--IDE-->{{N/A}} || <!--SATA-->{{no|1 m.2 (NVMe or sata3 up to 2280), optional 2.5in sata but resets}} || <!--Gfx-->{{Maybe|VESA 2D from 640p to 1080p for AMD Vega 3, 6 or 8 with up to 2gb ram taken}} || <!--Audio-->{{unk|HDAudio 0x1022, 0x15e3 with realtek ALC codec 0x10ec, 0x0}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 Realtek GbE RTL8111HSH}} || <!--Wireless-->{{No|Realtek 8822BE}} || <!--Test Distro-->Aros || <!--Comments-->2018 64bit - 14in / 15.6in dim tn panel 768p or 1080p - 2 ddr4 sodimm slots max 16gb - hp 19.5V 45W 65W AC blue tip round 4.5 mm - keyboard swap problematic - synaptics touchpad - f9 boot order f10 uefi
|-
| <!--Name-->HP ProBook 450 G6 needs main battery for bios settings saved || <!--Chipset-->Intel i7-8565U, i5-8265U, i3-8165U all sse4.1 and avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe| }} || <!--Gfx-->{{maybe|VESA 2D for Intel UHD 620}} || <!--Audio-->{{unk|HDAudio with Realtek ALC3246 aka ALC295 codec }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 rtl8111HSH}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2019 64bit - 15.6 inch 768p or 1080p - 45W 19.5V HP ac psu - 2 ddr4 sodimm slots -
|-
| <!--Name-->Elitebook 735 G6 5VA23AV, Elitebook 745 G6, 255 g8, HP 15s-dy - no cmos battery || <!--Chipset-->AMD® Ryzen™ 5-3500U Ryzen 3-3300U AMD Ryzen 3-3250U AMD Athlon® Gold 3150U AMD Athlon Silver 3050U AMD 3020e || <!--IDE-->{{N/A}} || <!--SATA-->{{no|m.2 2280 nvme in legacy - hp sure start and secure boot disabled but still issues with gpt installs - LS-H323P LS-K201P}} || <!--Gfx-->{{Maybe|VESA for Vega 8, 5 or 3}} || <!--Audio-->{{No|HDAudio 6.34 ahi with realtek ALC codec 0x10EC, 0x0295}} || <!--USB-->{{maybe|USB3 type-A port boots stick partially to kitty eyes}} || <!--Ethernet-->{{Maybe|rtl8169 realtek RTL8111E or 8111H}} || <!--Wireless-->{{No|realtek or intel}} || <!--Test Distro-->2020 Icaros 2.3 onto USB and AROS One 1.8 USB, Deadwoods' latest usb3 test iso with noacpi || <!--Comments-->2019 64bit - 15.6in 1366x768 to 1920x1080 - 2 3200MHz DDR4 sodimms - 19.5V 2.31A or 20V 2.25 45W 4.5X3.0MM hp - esc bios setup, f9 boot device select - low travel keyboard - poor hw03xl or battery life - plastic hooked base with retained screws - touchpad? -
|-
| <!--Name-->HP ProBook 445 G7, 455 G7 || <!--Chipset-->Ryzen 3 4300U 5 4500U 4700U || <!--IDE-->{{N/A}} || <!--SATA-->1 sata and 1 nvme || <!--Gfx-->{{Maybe|VESA Vega 3}} || <!--Audio-->{{unk|HDAudio with realtek alc236 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|realtek rtl8111ep}} || <!--Wireless-->{{No|realtek RTL8822CE or intel AC 9260 or Wi-Fi 6 AX200}} || <!--Test Distro-->Deadwoods' latest usb3 test iso || <!--Comments-->2020 64bit - 14 inch 768p or 1080p - 2 ddr4 sodimm slots - smart 45w 65w hp or usb-c charging - keyboard swap problematic - RE03XL battery -
|-
| <!--Name-->HP ProBook 450 G7 || <!--Chipset-->Intel || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe| }} || <!--Gfx-->{{maybe|VESA 2D for Intel UHD}} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 rtl8111EP}} || <!--Wireless-->{{no| }} || <!--Test Distro-->Deadwoods' latest usb3 test iso with noacpi || <!--Comments-->2020 15.6 inch 768p or 1080p - 1 ddr4 sodimm slot -
|-
| <!--Name-->HP EliteBook 745 G7, 845 G7, HP 15-EH0006NA || <!--Chipset-->AMD Ryzen 3 4300U, 5 4500U, PRO 4650U || <!--IDE-->{{N/A}} || <!--SATA-->SSD M.2 || <!--Gfx-->{{Maybe|VESA AMD Radeon Vega 8}} || <!--Audio-->{{unk|Hdaudio with codec 0x10EC, 0x0257}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2020 64bit - 15.6in 1080p - 1 ddr4 sodimm slot - Bang & Olufsen speakers - keyboard swap problematic -
|-
| <!--Name-->HP ProBook 255 G8, HP 245 G9, ProBook 255 G9 816C2EA#ABE, - no cmos battery only internal battery || <!--Chipset-->AMD RYZEN 3 5300u, 5425U, 5 5500U 5625U, 7 5700u || <!--IDE-->{{N/A}} || <!--SATA-->{{no|NVMe}} || <!--Gfx-->{{Maybe|VESA AMD Vega 6 or 8 hdmi 1.4B}} || <!--Audio-->{{unk|HDAudio}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 Realtek RTL8111HSH-CG GbE}} || <!--Wireless-->{{No|Realtek RTL8822CE or Intel}} || <!--Test Distro--> || <!--Comments-->2021 64bit - 14" to 15.6in 768p to 1080p poor gamut - 45 or 65w hp psu - 2 ddr4 sodimm slots max 16GB - keyboard swap problematic -
|-
| <!--Name-->HP ProBook 450 G9 || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe| }} || <!--Gfx-->{{maybe|VESA 2D for Intel Iris Xe}} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 rtl8111H}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2020 15.6 inch - 1 ddr4 sodimm slot -
|-
| <!--Name-->HP EliteBook 645 g7, 835 G8, 845 g8, HP ENVY x360 13 15, HP 17-cp0021na || <!--Chipset-->AMD Ryzen 5 5650U, 7 5800U, R7 Pro 5850U || <!--IDE-->{{N/A}} || <!--SATA-->NVMe || <!--Gfx-->{{Maybe|VESA 2D for AMD Radeon}} || <!--Audio-->{{unk|HDAudio 0x, 0x with ALC3247 aka ALC236 codec 0x10ec, 0x0236}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{Maybe|Realtek 1Gbe on 645 only}} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2021 64bit - 13.3" or 14" 1080p - poor screens low nits and srgb score - 845 gets hot ue to poor cooling - slim round hp ac - keyboard swap problematic -
|-
| <!--Name-->HP Dev One, HP ProBook 455 G8 || <!--Chipset-->AMD Ryzen 7 5800U, R7 5850U || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|VESA }} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2021 64bit 15.6" 1080p - 2 internal sodimm slots - hp barrel charging -
|-
| <!--Name-->Elitebook 655 g9 669y1ut#aba, || <!--Chipset-->AMD Ryzen 5 PRO 5675U || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|VESA }} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2021 64bit 15.6" 1080p - 1 or 2 internal sodimm slots - usb-c charging -
|-
| <!--Name-->HP probook 635 Aero G8 || <!--Chipset-->AMD Ryzen 5 5600U || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2921 64bit - 14in 1080p - 2 ddr4 slots - ec chip nuvoton NPCX797HA1B - bios winbond 250256JYEN -
|-
| <!--Name-->HP PROBOOK X360 435 G8 cmos battery || <!--Chipset-->RYZEN 5 5600U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe| }} || <!--Gfx-->{{maybe|Vesa 2D }} || <!--Audio-->{{maybe|HDaudio with ALC236 codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|RTL8822CE or Intel AX200}} || <!--Test Distro--> || <!--Comments-->2021 64bit - hp round ac plug -
|-
| <!--Name-->HP Elitebook 845 g9 || <!--Chipset-->AMD 6000 series 6850u || <!--IDE-->{{N/A}} || <!--SATA-->M.2 NVMe || <!--Gfx-->{{Maybe|VESA 2D for Vega 8}} || <!--Audio-->{{unk|HDaudio with codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| }}Qualcomm Atheros || <!--Test Distro--> || <!--Comments-->2022 64bit aluminum case - 14in 1080p to 2140p 16:10 poor screen again - 2 internal ddr5 sodimm slots - usb-c ac charging avoid any knocks - keyboard swap problematic -
|-
| <!--Name-->HP ProBook 445 G10, 455 G10 || <!--Chipset-->AMD Ryzen 5 7530U || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD Vega 7 || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2023 64bit - 15.6in - hp round ac -
|-
| <!--Name-->Hp 455 G11 || <!--Chipset-->AMD Ryzen 3 7335U (4c8t), 5 7535U (6c12t), 7 7735U (8c16t) || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD Vega 7 || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 RTL8111HSH}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2023 64bit - 35.6 cm (14.0 in) 1920x1200 or 2560x1600 - usb-c 45w or 65w ac - 2 ddr5 sodimm slots max 32gb -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|}
====IBM/Lenovo====
[[#top|...to the top]]
Build quality (Lowest to highest)
<pre >
iSeries
Edge
Ideapad
Thinkpad - good cases and construction but electronic internals same as anyone else
</pre >
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Thinkpad 390X 390E (2626) || <!--Chipset-->Neo Magic MM2200 with C400 P2-266 to P3 500MHz || <!--IDE--> || <!--SATA--> || <!--Gfx-->use VESA || <!--Audio-->{{No|256AV or ESS Solo-1}} || <!--USB--> || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->1998 32bit
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Thinkpad 600x || <!--Chipset-->Intel 440BX || <!--IDE-->{{Maybe| }} || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA Neomagic NM2360 MagicMedia 256ZX}} || <!--Audio-->{{No|Crystal CS4297A codec}} || <!--USB--> || <!--Ethernet-->{{N/A| }} || <!--Wireless-->{{N/A| }} || <!--Test Distro-->Icaros 1.3.1 || <!--Comments-->1998 32bit a little support - earlier 600 and 600e were Pentium 2 based
|-
| <!--Name-->Thinkpad X20 (2662-32U) X21 || <!--Chipset-->Intel 440 BX ZX DX || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio-->{{no|AC97 with Cirrus Logic Crystal cs4281}} || <!--USB-->1.1 || <!--Ethernet-->no mini pci intel e100 || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2002 32bit
|-
| Thinkpad T20 (2647) T21 (26) T22 || 440BX || {{Maybe| }} || {{N/A}} || {{partial|Savage IX-MV (VESA only)}} || {{no|Cirrus Logic CS 4614/22/ 24/30}} || {{yes|USB 1.1}} || {{yes|Intel PRO 100}} || {{N/A}} || Icaros 1.2.4 || 2002 32bit
|-
| <!--Name-->A21e (2628, 2655) A22e || <!--Chipset-->440MX || <!--IDE--> || <!--SATA--> || <!--Gfx-->Ati rage mobility || <!--Audio-->{{no|AC97 Cs4299 CS4229}} || <!--USB--> || <!--Ethernet-->intel e100 || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2002
|-
| Thinkpad T23 (2647) || i810 || {{yes|IDE}} || {{N/A}} || {{maybe|S3 Super Savage IX/C SDR (VESA only)}} || {{maybe|AC'97 CS4299}} || {{yes|USB 1.1}} || {{yes|Intel ICH3 PRO 100 VE}} || {{no|Realtek RTL8180L others with bios hacking risky}} || || 2003 32bit with some support
|-
| <!--Name-->Thinkpad X22 X23 X24 || <!--Chipset-->830 || <!--IDE--> || <!--SATA--> || <!--Gfx-->ATi Mobility M6 LY || <!--Audio-->Ac97 CS4299 || <!--USB-->2 x 1.1 || <!--Ethernet-->Intel Pro 100 || <!--Wireless-->Actiontec Harris Semi Intersil Prism 2.5 (X23 and X24 only) || <!--Test Distro--> || <!--Comments-->2003 32bit with slice Ultrabase X2 -
|-
| <!--Name-->A30 A30p || <!--Chipset-->830 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Ati Radeon M6 || <!--Audio-->AC97 CS 4299 || <!--USB--> || <!--Ethernet-->Intel Pro 100 ve || <!--Wireless-->{{No|Intel 2200 bios locked}} || <!--Test Distro--> || <!--Comments-->2003 32bit
|-
| <!--Name-->A31 A31p R31 R32 T30 || <!--Chipset-->830 || <!--IDE-->{{yes| }} || <!--SATA-->{{N/A| }} || <!--Gfx-->Ati Radeon 7500 or FireGL || <!--Audio-->{{yes|AC97 Intel with AD1881A codec}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{yes| Intel Pro 100 ve}} || <!--Wireless-->{{No|Intel bios locked}} || <!--Test Distro-->[https://forums.lenovo.com/t5/Android-Ecosystem-Developers/AROS-An-operation-system-inside-Android/td-p/1441741 Icaros 1.5.2] || <!--Comments-->2003 32bit Also tested with Icaros 2.0.3.
|-
| Thinkpad X30 (2673) X31 (2884-xx2) X31t || i830 || {{yes}} || {{N/A}} || {{maybe|VESA only Radeon M6 Mobility}} || {{yes|AC97 - AD1981B codec}} || {{yes|USB 1.1}} || {{yes|Intel PRO 100}} || {{no|Cisco Aironet or Intel 2915 but atheros with bios hacking}} || Icaros 1.4 || 2004 32bit sound bit distorted
|-
| <!--Name-->R50e R51 || <!--Chipset-->855M || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|Intel 855M use VESA}} || <!--Audio-->intel AC97 with AD1981B codec || <!--USB--> || <!--Ethernet-->{{Yes|Intel 100 VE}} || <!--Wireless-->{{No|Intel PRO Wireless 2200BG bios locked}} || <!--Test Distro--> || <!--Comments-->2004 32bit -
|-
| IBM Thinkpad T40 (2373) T41 T41p (2379) T42 T42p T43 T43p || Intel 8xx || {{partial|PIO}} || {{N/A}} || {{partial|ATI mobility 7500 9000 (VESA only)}} || {{yes|AC97 playback}} || {{yes|uhci 1.1 and ehci 2.0}} || {{no|e1000}} || {{Maybe|Intel 2200bg bios locked but possible AR5BMB-44 AR5212 FRU 39T0081 mini PCI}} || Icaros 1.2.4 || 2004 32bit 16v IBM plug - Centrino Needs ATA=nodma option - issues with the inner chip of the SMT BGA graphics chip
|-
| Thinkpad X32 || i855 || {{yes|40, 60 or 80GB 2.5" PATA HDD}} || {{N/A}} || {{maybe|VESA only ATI Mobility Radeon 7000 with 16MB}} || {{maybe| Intel AC'97 Audio with a AD1981B codec}} || {{yes|USB}} || {{no|Intel 1000}} || {{no|Intel 2200 but atheros with bios hacking}} || 2016 Icaros 2.1 || 2004 32bit - 12.1" TFT display with 1024x768 resolution; 256 or 512MB PC2700 memory standard (2GB max)
|-
| <!--Name-->Thinkpad X40 X40t by Quanta || <!--Chipset--> || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->{{maybe|Intel 800 (VESA only)}} || <!--Audio-->{{yes|AC97 AD1981B}} || <!--USB-->{{yes}} || <!--Ethernet-->{{no|Intel e1000}} || <!--Wireless-->{{Maybe|Intel but most atheros with bios hacking - difficult though}} || <!--Test Distro--> || <!--Comments-->2004 32bit last IBM design
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Thinkpad X41 (IBM) MT 1864 1865 2525 2526 2527 2528 x41t (Lenovo) MT 1866 1867 || <!--Chipset-->Intel with single core 1.5 1.6 and tablet 1.2GHz || <!--IDE-->{{yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Yes|Intel 915GML 2D}} || <!--Audio-->{{yes|AC97 AD1981B}} || <!--USB-->{{yes}} || <!--Ethernet-->{{no|Broadcom BCM5751M tg3}} || <!--Wireless-->{{Maybe|Intel or MiniPCI Wi-Fi Atheros AR5BMB FRU 39T0081 but ordinary atheros 54meg needs risky bios hacking}} || <!--Test Distro--> || <!--Comments-->2005 32bit - amongst first Lenovo design - 3pin cmos -
|-
| <!--Name-->R52 (most 18xx) || <!--Chipset-->Intel 915 || <!--IDE-->{{Yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Yes|Intel 915GML 2D}} || <!--Audio-->{{yes|AC97 AD1981B}} || <!--USB-->{{yes}} || <!--Ethernet-->{{no|Broadcom}} || <!--Wireless-->{{no|Broadcom bios locked}} || <!--Test Distro--> || <!--Comments-->2005 32bit
|-
| <!--Name-->R52 1846, 1847, 1848, 1849, 1850, 1870 || <!--Chipset-->ATi 200m || <!--IDE-->{{Yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{No|ATI}} || <!--Audio-->{{yes|AC97 AD1981B}} || <!--USB-->{{yes}} || <!--Ethernet-->{{no|Broadcom BCM5751M tg3}} || <!--Wireless-->{{no|Broadcom bios locked}} || <!--Test Distro--> || <!--Comments-->2005 32bit
|-
| <!--Name-->Thinkpad T60 T60P
* 64bit - 6 or 8 is 16:10 on T60/p, eg. 8742-CTO 15.4"
* 32bit - 1 and 2 are 14", 15" 4:3, like 2007-YM3 or 1952-CTO
|| <!--Chipset-->*any* T60/p will take a Core 2 Duo CPU with newer BIOS || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->Intel GMA (2D) with "p" graphics card (ATi V5200 or V5250) || <!--Audio-->{{no|HD Audio}} || <!--USB-->{{yes}} || {{no|e1000e 82573L}} || <!--Wireless-->{{No|Intel ipw3945 ABG but atheros with Middleton's or Zender BIOS hacking risky}} || Icaros 1.4 || <!--Comments-->2006 -
|-
| <!--Name-->X60 x60s x60t tablet || <!--Chipset-->945GMS 940GML || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{yes|Intel GMA (2D)}} || <!--Audio-->{{no|AD1981 HD Audio}} || <!--USB-->{{yes}} || <!--Ethernet-->{{no|Intel}} || <!--Wireless-->{{no|Intel 3945 ABG or fru 39T5578 Atheros 5K AR5BXB6 ar5007eg with bios hacking}} || <!--Comments-->Icaros 1.4 || 2006 32bit - perhaps needs a zendered bios update but risky
|-
| <!--Name-->R60 R60e || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->intel 950 with optional radeon x1300 x1400 || <!--Audio-->HD Audio with 1981HD codec || <!--USB--> || <!--Ethernet-->Intel or Broadcom || <!--Wireless-->{{Maybe|Intel 3945 or atheros fru 39T5578 bios locked}} || <!--Test Distro--> || <!--Comments-->2006 32bit
|-
| Thinkpad T61 T61p without Middleton's or Zender BIOS || Core 2 Duo CPU T7300 T8300 || {{N/A}} || <!--SATA-->{{yes| }} || Intel GMA (2D), NVS 140m or Quadro FX 570M () || {{maybe|HD Audio with Analog Devices AD1984 or AD1984A HD Audio Codec routed to the line output}} || <!--USB-->{{yes}} || {{no|intel e1000e 82573L}} || {{No|Intel but atheros with bios hacking risky}} || Icaros 1.6, AROS One || 2007 64bit
|-
| <!--Name-->X61 x61s X61T Tablet || <!--Chipset-->Core Duo T8100 on i965 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{yes|Intel GMA 3100 (2D) slow 3D}} || <!--Audio-->{{no|AD1984 HD Audio}} || <!--USB-->{{yes|USB 2.0}} || <!--Ethernet-->{{no|Intel 82566DM}} || <!--Wireless-->{{maybe|Atheros AR5212 (some revisions use Intel WLAN runs very hot) bios locked}} || <!--Test Distro--> || <!--Opinion-->2007 64bit ultrabook running very hot - ddr2 max 4gb - 3pin cmos -
|-
| <!--Name-->R61 R61i || <!--Chipset-->Intel 965 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->intel 965 || <!--Audio-->HD Audio with conexant codec || <!--USB--> || <!--Ethernet-->Broadcom BCM5787M || <!--Wireless-->{{No|Intel 3945 bios locked}} || <!--Test Distro--> || <!--Comments-->2008 64bit
|-
| Lenovo 3000 N200 || <!--Chipset-->Santa Rosa || {{N/A}} || <!--SATA-->{{maybe| }} || {{yes|Geforce 7300 (2D)}} || {{yes|ALC262 HD Audio}} || <!--USB-->{{yes}} || {{no|Broadcom}} || {{no|Intel 3945 bios locked}} || Icaros 1.4 || 2007 64bit 3D graphics parts are supported but buggy.
|-
| Lenovo 3000 N200 / V200 || GM965 ICH9-M with Intel Mobile Core 2 Duo T5450 || {{N/A}} || <!--SATA-->{{maybe| }} || {{yes|X3100 (2D)}} || {{Maybe|HD Audio ALC269VB or CX20549}} || {{yes| }} || {{no|BCM5906M}} || {{no|Intel 3965 / 4965AGN bios locked}} || Icaros 1.4.1 2.1 || 2007 64bits of laptop works
|-
| <!--Name-->X300 || <!--Chipset-->Core 2 Duo Merom SL7100 1.2GHz || <!--IDE-->{{N/A}} || <!--SATA-->1.8 inch || <!--Gfx-->{{maybe|Intel X3100}} || <!--Audio-->HD Audio AD1984A || <!--USB--> || <!--Ethernet-->Intel || <!--Wireless-->{{No|Intel 4965 bios locked}} || <!--Test Distro--> || <!--Comments-->2007 64bit 13.3" TFT 1440x900 (WXGA+) with LED backlight
|-
| <!--Name-->Thinkpad Edge 11″ AMD K325 || <!--Chipset-->M880G || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{maybe|VESA for ATI HD4200}} || <!--Audio-->{{maybe| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 8111}} || <!--Wireless-->{{no|8192CE (Realtek 8176) bios locked}} || <!--Test Distro--> || <!--Comments-->2007 little support
|-
| <!--Name-->Thinkpad X301 || <!--Chipset-->Core 2 Duo Penryn SU9400 Su9600 with GM45 chipset || <!--IDE-->{{N/A}} || <!--SATA-->1.8 inch micro SATA (uSATA) || <!--Gfx-->{{maybe|Intel X4500}} || <!--Audio-->AD1984A || <!--USB--> || <!--Ethernet-->Intel || <!--Wireless-->{{No|Intel 5xxx WiFi link 5100, 5150, 5300 and 5350 (WiMAX) bios locked}} || <!--Test Distro--> || <!--Comments-->2009 WXGA+ (1440×900) LED backlight display - 2774 or 4057 Alps and 2776 Synaptics touchpad - optical bay interface is Legacy IDE (PATA) - Addonics ADMS18SA, Lycom ST-170m
|-
| <!--Name-->X100e || <!--Chipset-->AMD Athlon Neo Single-Core (MV-40) and dual cores || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|2.5in tray in ide mode in bios}} || <!--Gfx-->{{Maybe|Vesa ATI HD3200}} || <!--Audio-->{{yes|HD Audio with CX20582 codec playback}} || <!--USB-->{{Maybe| }} || <!--Ethernet-->{{Yes|Realtek 8111}} || <!--Wireless-->{{no|Realtek r8192se bios locked}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2009 64bit 11.6in 1366 x 768 - 20v 65W round barrel - enter f1 setup f11 diagnostics f12 boot list - runs very warm -
|-
| <!--Name-->SL400 SL500 || Intel || {{N/A}} || {{Yes|IDE mode}} || {{Maybe|Nvidia 9400M}} || {{Maybe|ALC269}} || {{yes|USB 2.0}} || {{Maybe|RTL8169}} || {{Maybe| bios locked}} || ||
|-
| <!--Name-->SL410 SL510 || 965 || {{N/A}} || {{maybe|IDE mode}} || {{maybe|Intel GMA X4500M (some 2D)}} || {{yes|HD Audio with ALC269 codec - speaker and ear phones}} || {{yes|USB 2.0}} || {{yes|RTL8169}} || {{Maybe| bios locked}} || [http://www.amiga.org/forums/showpost.php?p=645774&postcount=28 Icaros 1.3] || 2009 64bit SL-410
|-
| <!--Name-->T400 ODM Wistron || <!--Chipset-->i || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS}} || <!--Gfx-->{{Maybe|Intel 4500MHD works limited 2d no 3d - optional switchable Nvidia or ATi HD3470 untested}} || <!--Audio-->{{Yes|HD Audio with Codec CX20561 (T400)}} || <!--USB--> || <!--Ethernet-->{{no|Intel e1000e}} || <!--Wireless-->{{No|Intel Wifi Link 5100 (AGN) half height card with FRU 43Y6493 or 5300 bios locked}} || <!--Test Distro--> || <!--Comments-->2009 64bit 20v lenovo plug - non-free firmware required iwlwifi
|-
| <!--Name-->T400s || <!--Chipset-->i || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS}} || <!--Gfx-->{{Maybe|VSEA for Intel 4500MHD works limited 2d no 3d}} || <!--Audio-->{{Maybe|HD Audio with CX20585}} || <!--USB--> || <!--Ethernet-->{{no|Intel e1000e}} || <!--Wireless-->{{No|Intel Wifi Link 5100 (AGN) half height card with FRU 43Y6493 or 5300 bios locked}} || <!--Test Distro--> || <!--Comments-->2009 64bit non-free firmware required iwlwifi
|-
| <!--Name-->Lenovo T500 T510 || <!--Chipset-->i || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS}} || <!--Gfx-->{{maybe|VESA for switchable Intel / AMD HD 3640}} || <!--Audio-->{{maybe|Intel HD Audio with a CX20561 (t500) and CX20585 (T510) codec}} || <!--USB--> || <!--Ethernet-->{{no|Intel }} || <!--Wireless-->{{no|Intel or Lenovo branded unit Atheros AR5007EG AR5BHB63 bios locked}} || <!--Test Distro--> || <!--Comments-->2009 64bit
|-
| <!--Name-->X200 ODM Wistron [http://itgen.blogspot.co.uk/2008/12/installing-arch-linux-on-lenovo.html X200s] and x200t tablet model without [http://fsfe.soup.io/post/590865884/the-unconventionals-blog-English-Flashing-Libreboot-on Risky flash of the Libreboot BIOS] || <!--Chipset-->GM45 GS45 with slow Celeron, SU or faster SL Core 2 Duos CPUs || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS}} || <!--Gfx-->{{maybe||Intel GMA 4500 MHD 2D but slow software 3D tunnel 10 gearbox 8 tests}} || <!--Audio-->{{yes|Intel HD Audio with Conexant CX20561 codec playback}} || <!--USB-->{{{Yes|USB 2.0 USB SD card reads and writes}} || <!--Ethernet-->{{no|Intel 82567LM Gigabit}} || <!--Wireless-->{{no|Intel Pro 5100 5150 5300 5350 AGN due to whitelist prevention bios locked}} || <!--Test Distro-->Icaros 2.0.1 || <!--Comments-->2009 64bit 12.1" CCFL (webcam version) or LED backlit (no webcam). no support for 54mm express cards or Authentec 2810 fingerprint reader - thinkpoint only no trackpad - 3pin cmos -
|-
| <!--Name-->Lenovo T410 T410s T410si || <!--Chipset-->qm57 with i5 m || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS}} || <!--Gfx-->{{maybe|use vesa Intel 5700MHD (Ironlake) core processor igp with optional Nvidia Quadro NVS 3100M}} || <!--Audio-->{{yes|HD Audio Conexant CX20585 codec playback}} || <!--USB-->{{Yes|2.0}} || <!--Ethernet-->{{no|Intel 82577lm gigabit}} || <!--Wireless-->{{unk|Intel n 6200 or Atheros AR9280 AR5BHB92 half size minipcie bios locked}} || <!--Test Distro-->Icaros 2.2 xmas || <!--Comments-->2009 64bit battery life much lower with Nvidia graphics version - no support firewire ricoh r5c832 - ricoh sd card - series 5 3400
|-
| <!--Name-->X201 X201s x201t || <!--Chipset-->QM57 Core i3 370m, i5 M520 2.4GHz or i7 620LM 2.0GHz || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS}} || <!--Gfx-->{{Maybe|vesa 2d on Intel GMA HD}} || <!--Audio-->{{yes|Intel HD with [https://ae.amigalife.org/index.php?topic=94.0 Conexant 20585] codec}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no|Intel}} || <!--Wireless-->{{No|bios locked}} || <!--Test Distro--> || <!--Comments-->2010 X201 arrandale power consumption limits battery life to 3-4 hours for 48Whr though to 6 on 72Whr - 12.5" WXGA - 3pin cmos -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Ideapad B470, B570, V370, V470, V570 || <!--Chipset-->Intel® Core™ i5 i5-2430M, i5-2450M, || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->Vesa 2d for Intel || <!--Audio-->HDaudio 0x8086, 0x1c20 with codec || <!--USB-->USB3 || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no|whitelisted}} || <!--Test Distro--> || <!--Comments-->2011 64bit - 14in or 15.6in 768p -
|-
| <!--Name-->T420 type 4180 4236, t420s , T520 4239 L520 || <!--Chipset-->i5 2540, 2520 or i7 2860QM 2620 has sse4.1 avx || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS but not AHCI}} || <!--Gfx-->{{Maybe|Vesa 136 x 768 - Intel HD 3000 with optional NVS 4200M Nvidia optimus or Radeon HD 565v }} || <!--Audio-->{{Yes|HD Audio playback ear phones only with Conexant CX20672 codec - AHI 6.27}} || <!--USB-->{{Maybe| }} || <!--Ethernet-->{{No|Intel PRO 1000 82579LM}} || <!--Wireless-->{{No|Realtek 1x1, Intel Ultimate-N 6205 6250 2x2 6300 3x3 all bios locked}} || <!--Test Distro-->Icaros 2.2.2 add noacpi to grub boot options || <!--Comments-->2011 64bit - screen 1600x900 or 1366x768 - 2 ddr3l sodimm slots max 16gb -
|-
| <!--Name-->Thinkpad W520 || <!--Chipset--> has sse4.1 avx || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS}} || <!--Gfx-->{{Maybe|VESA Intel HD 3000 with nvidia quadro 1000m 2000m optimus issues with Nvidia Intel hybrids}} || <!--Audio-->{{Maybe|Intel Hd with CX 20585 codec}} || <!--USB--> || <!--Ethernet-->{{No|Intel 82579 Lm}} || <!--Wireless-->{{No|Intel 6000s}} || <!--Test Distro--> || <!--Comments-->2011 64bit - 15.6" TFT display with 1366x768 (HD), 1600x900 (HD+) or 1920x1080 (FHD) resolution with LED backlight
|-
| <!--Name-->X220 x220t || <!--Chipset-->QM67 express, dual i5 2520M or i7 dual 2620M sse4.1 avx support || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS but not AHCI}} || <!--Gfx-->{{Maybe|VESA 2D 1024 x 768 for Intel HD Graphics 3000}} || <!--Audio-->{{Yes|Intel HD playback with Conexant 20672 codec ear phones and speaker - AHI 6.27 6.34}} || <!--USB-->{{Yes|USB 2.0}} || <!--Ethernet-->{{No|Intel 82579LM}} || <!--Wireless-->{{No|Intel Centrino Advanced-N 6205 Wi-Fi bios locked}} || <!--Test Distro-->Icaros 2.3, Aros One USB 1.6 || <!--Comments-->2011 64bit possible - uses slimmer 7 mm storage sata devices - NEC USB 3.0 on i7's - unwanted trackpad gestures when palms rests on it - 2 ddr3 sodimm slots - external battery -
|-
| <!--Name-->Thinkpad X120e, x121e Quanta FL8A DAFL8AMB8D0 Rev D || <!--Chipset-->Hudson M1 with slow AMD E350 has no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA ATI 0x9802}} || <!--Audio-->{{Maybe|ATI SBx00 Azalia HD Audio}} || <!--USB-->USB 2.0 || <!--Ethernet-->RTL8169 RTL8111 || <!--Wireless-->{{no|Broadcom 0x0576 bios locked}} || <!--Test Distro--> || <!--Comments-->2011 64bit 11.6 inch screen - 1 inch think - chiclet keyboard
|-
| <!--Name-->Ideapad S205 G575 G585, Edge 11 E325 || <!--Chipset-->Slow E-350 later E-450 with A75 or AMD Athlon II Neo has no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA HD6310}} || <!--Audio-->{{Yes| }} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|Atheros}} || <!--Wireless-->{{No|Broadcom}} || <!--Test Distro--> || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 - removeable and plug in battery - 2pin CR2032 CMOS battery -
|-
| <!--Name-->Ideapad S206 || <!--Chipset-->AMD E300 1.3GHZ Dual has no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA }} || <!--Audio-->{{Maybe|Intel HD Audio with CX20672 codec}} || <!--USB-->{{Maybe|3.0}} || <!--Ethernet-->Broadcom 10/100 || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - 11.6" and integrated battery - Conexant®
|-
| <!--Name-->Lenovo x130e or x131e edu || <!--Chipset-->Slow AMD E-300 or E-450 has no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA Radeon HD 6310 or 6320 }} || <!--Audio-->{{Maybe|HD Audio Realtek ALC269VC / ALC3202 codec}} || <!--USB-->{{Maybe|USB 30 and USB 20}} || <!--Ethernet-->{{maybe|Realtek RTL8111 RTL8168B}} || <!--Wireless-->{{No|Realtek RTL8188CE or Broadcom BCM43228 bios locked}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - rubber edged bumper for K12 education market - 2pin CR2032 CMOS battery -
|-
| <!--Name-->Thinkpad Edge E135 E335 || <!--Chipset-->amd dual E-300, E2-1800 or E2-2000 slow atom like A68M FCH has no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|SATA 3.0Gb/s 2.5" wide 7mm high}} || <!--Gfx-->{{Maybe|VESA radeon 6310 or 7340 vga or hdmi}} || <!--Audio-->{{Maybe|HDAudio with Realtek ALC3202 codec}} || <!--USB-->{{maybe|2 usb3, 1 powered usb2}} || <!--Ethernet-->{{maybe|rtl8169 8111f}} || <!--Wireless-->{{no|Realtek WLAN whitelist bios locked}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - 11.6 inch to 13.3in 1366x768 - Acrylonitrile-Butadiene-Styrene (ABS) plastic case - external battery - 20v 65w lenovo barrel ac - 2 ddr3 sodimm 8Gb max -
|-
| <!--Name-->ThinkPad Edge E525 E535 LENOVO IDEAPAD Z575 || <!--Chipset-->AMD A6-3420M A8-3500M later A8-4500M has no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA AMD 6620G later 7640G}} || <!--Audio-->{{No|HDAudio with Conexant codec}} || <!--USB-->{{Maybe|USB2 but not usb3}} || <!--Ethernet-->{{maybe|rtl8169 Realtek 8111}} || <!--Wireless-->{{No|Broadcom bios locked}} || <!--Test Distro--> || <!--Comments-->2013 64bit does not support AVX or SSE 4.1 - 15.6in 1368 x 768 matt - 65W 20v lenovo round psu - thick desktop replacement - ThinkPad Edge E520 E520S E525 E530 E545 E535 E530C Laptop Keyboard swap -
|-
| <!--Name-->T430 t430i T530 || <!--Chipset-->ivy bridge i5 3320 3230m on Intel QM77 has sse4.1 and avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA 1366 x 768 for Intel HD 4000 with optional Nvidia 5400M}} || <!--Audio-->{{Maybe|Intel HD with Realtek ALC3202 aka ALC269VC codec playback ear head phones - HDA 6.27}} || <!--USB-->{{Yes|USB 2 ports and usb2.0 devices thru usb 3.0 ports}} || <!--Ethernet-->{{No|Intel e1000}} || <!--Wireless-->{{unk|Intel or Atheros AR9285 bios locked}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2013 64bit fan noise and chiclet keyboard, synaptics trackpad - HD+ 768p -
|-
| <!--Name-->Thinkpad X230 x230t || <!--Chipset-->Intel QM67 express i5 has sse4.1 and avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA }} || <!--Audio-->{{Maybe|Intel HD with ALC269 aka ALC3202}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no|Intel }} || <!--Wireless-->{{No|I}} || <!--Test Distro--> || <!--Comments-->2013 64bit - 12.2 in 1366 x 768 - 2 ddr3 sodimm slots - external battery -
|-
| <!--Name-->Thinkpad T440 t440s t440p T540 L440 L540 || <!--Chipset-->intel haswell 8 series Core i3 to i7 has sse4.1 and avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA - Intel 4600 or Nvidia}} || <!--Audio-->Intel HD with Realtek ALC3232 alc269 codec or ALC292 || <!--USB-->{{maybe| }} || <!--Ethernet-->{{No|Intel}} || <!--Wireless-->{{No|Intel AC 7260 bios locked}} || <!--Test Distro--> || <!--Comments-->2014 64bit - 14 and 15" models with glitchy trackpad and no physical buttons - keyboard repair not easy as well as 4 variants of key caps - 2pin CR2032 CMOS battery -
|-
| <!--Name-->Thinkpad X240 x240t ultrabook TN (20AL0081GE), HD IPS display without touch (20AL007NGE) and touch (20AL0076GE) but all 65% sRGB || <!--Chipset-->haswell i7-4600U i5 4200U 4210U 4300U i3-4100U - two batteries, one internal 3cell 45N1110 (45N1111) or 45N1112 (FRU 45N1113) and external 3 / 6cell 45N1126 (FRU 45N1127) || <!--IDE-->{{N/A}} || <!--SATA-->2.5in 7mm sata (torq t7), m.2 2242 in WWAN slot (m and b key NGFF Sata) || <!--Gfx-->{{Maybe|use VESA for Intel 4400 for vga or mini-dp}} || <!--Audio-->{{No|HDAudio 0x8086, 0x0a0c 0x8086, 0x9c20 with Realtek ALC3232 aka ALC292 0x10ec, 0x0292}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{no|Intel® 82577LM Gigabit (Hanksville) }} || <!--Wireless-->{{no|Realtek or Intel 7260n I218-V or I218-LM bios locked}} || <!--Test Distro-->AROS One USB || <!--Comments-->2014 64bit - 12.2in 1366 x 768 or 1080p - 1 ddr3l sodimm slot - no keyboard spill drainage and at least 2 variants of key caps - lenovo rectangle pwr ac - TPM 1.2 - Bluetooth 4.0 no support - bottom panel with 8 retained screws - 2pin CR2032 CMOS battery -
|-
| <!--Name-->ThinkPad Edge E545
* key cap swap with E440 E531 E540 L440 L450 T431S T440S T440P T540
* Keyboard swap L540 T540p W540 Edge E531 E540 W541 T550 W550S L560 P50S T560
|| <!--Chipset-->AMD Socket FS1r2 A6-5350M (2c2t) or A8-4500M, A8-5550M, A10-5750M (4c4t) with A76M FCH has sse4.1 and avx || <!--IDE-->{{N/A}} || <!--SATA-->2.5in 9.5mm - enter UEFI bios with Enter or ESC, config section, sata into compatibility and security, secure boot disabled - mini sata DVD burner PLSD DS8A9SH || <!--Gfx-->{{Maybe|VESA 2D for AMD 7640G, 8450G, 8550G, 8650G ?? Islands}} || <!--Audio-->{{no|VOID for HDAudio 6.34 0x1022, 0x780d with Conexant CX20590 Analog 0x14f1, 0x506e CX20671 codec 0x14f1, 0x5069 or audio over Trinity HDMI}} || <!--USB-->{{maybe|boots pen drives from yellow usb port but not from blue USB3 ones, issues with AMD usb3 hardware quirks}} || <!--Ethernet-->{{yes|rtl8169 1GbE 8111F}} || <!--Wireless-->{{No|Broadcom BCM43142 bios locked}} || <!--Test Distro-->AROS One 2.3 USB works with noacpi added to end of grub2 boot line but not booting on AROS One 64bit 1.1 via usb2 stick or iso burnt to dvd || <!--Comments-->2015 64bit - 15.6in 1366 x 768 matt - 20v 65w 90w round lenovo plug psu - 2 DDR3 SODIMM slots 16GB Max - external 6 Cell Li-Ion Battery 48Wh l11s6y01 45n1043 - 2pin CR2032 CMOS battery in wifi area jp1202 - amd v(tm) virtualization not working -
|-
|<!--Name-->Y50-70 || <!--Chipset-->Intel 4 || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->GTX 860M or GTX 960M || <!--Audio-->HDAudio || <!--USB-->USB3 || <!--Ethernet-->{{maybe|rtl8169 rtl8111}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2015 64bit -
|-
|<!--Name-->AMD platform codes
*Beema: ABM,
*Carizzo-L: ACL,
*Carizzo: ACZ,
*Godavari: AGR,
*Kaveri: AKV,
*Stoney Ridge: ASR,
*Stoney Ridge: AST (NB),
|| <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
*Summit Ridge: ASU,
*Bristol Ridge-L: ABL,
*Bristol Ridge: ABR,
*Raven Ridge: ARR,
*Picasso: API
|-
|<!--Name-->Lenovo ThinkPad P50 || <!--Chipset-->Intel i7-6820HQ || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->Quadro M2000M || <!--Audio-->HDAudio || <!--USB-->USB3 || <!--Ethernet-->{{no|Intel}} || <!--Wireless-->{{no|Intel }} || <!--Test Distro--> || <!--Comments-->2015 64bit -
|-
| <!--Name-->[https://www.laptop-schematics.com/db/78/V%20series%20laptops%20(Lenovo)/ V110-14AST (14in) V110-15AST, V110-14ISK V110-15ISK 80TL (15")], || <!--Chipset-->AMD E1-9000, A6-9210 to A9-9410 all dual core and intel 6006u, 6100u, 6200u || <!--IDE-->{{N/A}} || <!--SATA-->1 2.5in sata most 7mm some 9.5mm || <!--Gfx-->{{Maybe|VESA 2D for AMD R2, R3, R5 or R6 or Intel Gfx}} || <!--Audio-->{{No|HDAudio with codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2016 64bit - 14in to 15.6in mostly 768p 220 nits - 20v 45W or 65W lenovo slim rectangle end ac - keyboard swap hard - integrated 24WHr battery - 4gb ddr4 ram soldered and 1 2133Mhz ddr4 slot max 12Gb - abs plastic -
|-
|<!--Name-->
*ThinkPad A275 12in (1 ddr4 1866MHz sodimm)
*Thinkpad A475 14in (2 ddr4 1866MHz sodimm) - both internal (main) and external (secondary) battery
|| <!--Chipset-->A10-8730B A10-9700B 2.500Ghz later A12-8830B A12-9800B all 4c4t (AVX2 on 9000s) || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe|7mm 2.5in sata with mbr and not gpt, setup in another machine - secure boot disabled, bios startup boot set to legacy then uefi - WWAN slot cannot use M.2 2242 sata with M and B key}} || <!--Gfx-->{{Maybe|VESA 2D for AMD R5 or R7}} || <!--Audio-->{{No|HDAudio 6.34 ahi 0x1022, 0x157a with ALC3268 aka ALC298 codec 0x10ec, 0x0298 - VOID even with QUERY / QUERYD added}} || <!--USB-->{{no|USB3 error on boot suspect AMD usb3 quirk}} || <!--Ethernet-->{{Yes|rtl8169 RTL8111EPV}} || <!--Wireless-->{{No|Realtek RTL8822BE WLAN whitelist locked cannot swap}} || <!--Test Distro-->{{maybe|AROSOne USB 32bit 1.8 with noacpi noapic noioapic added to grub2 boot line but Aros One 64bit 1.2 USB has krnPanic }} || <!--Comments-->2016 64bit 12 or 14in 768p - 45W or 65w lenovo rectangle ac adapter - F1 enter bios and F12 boot order - 6 retained screws and snap on base - 2100 error message no solution except using only efi/gpt bios option -
|-
|<!--Name-->320S-15AST, 320S-15ABR, ideapad Slim 1-11AST-05 81VR || <!--Chipset-->AMD A6-9220e, AMD A6-9225, A9-9425, A10-9600P 7th Gen || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata 2.5in}} || <!--Gfx-->{{maybe| Vesa 2D for AMD}} || <!--Audio-->{{No| }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No|Qualcomm Atheros QCA9377 or Realtek RTL8821CE}} || <!--Test Distro--> || <!--Comments-->2018 64bit AVX2 - 14in or 15.6" 768p - 1 ddr4 sodimm slot - keyboard swap problematic -
|-
|<!--Name-->Lenovo Ideapad S145-14AST S145-15AST 81N3 || <!--Chipset-->AMD A6-9225, A9-9425, A10-9600P 7th Gen, AMD A12-9720P Mobo 5B20P11110 NMB341 Bristol Ridge || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata 2.5in}} || <!--Gfx-->{{Maybe|VESA Radeon 8670A 8670M 8690M GCN 3}} || <!--Audio-->{{No| }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No|Qualcomm Atheros QCA9377 or Realtek RTL8821CE}} || <!--Test Distro--> || <!--Comments-->2018 64bit AVX2 - 14in or 15.6" 768p or 1080p - 1 ddr4 sodimm slot -
|-
|<!--Name-->Lenovo Ideapad V145-14AST V145-15AST, 81mt, Ideapad 310, Ideapad 320-15ABR, Ideapad 330-14AST 330-15AST 330-17AST || <!--Chipset-->AMD A6-9225, A9-9425 (2c2t), A10-9600P 7th Gen, AMD A12-9720P Mobo 5B20P11110 NMB341 Bristol Ridge || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata 2.5in with optional dvd}} || <!--Gfx-->{{Maybe|VESA Radeon 8670A 8670M 8690M GCN 3}} || <!--Audio-->{{unk|HDaudio with ALC3240-va3-cg aka ALC236? codec 0x10de, 0x0236}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{no|rtl8169 8106E 10/100 only}} || <!--Wireless-->{{No|Qualcomm Atheros QCA9377 or Realtek RTL8821CE}} || <!--Test Distro--> || <!--Comments-->2017 64bit AVX2 - 14in or 15.6" 768p or 1080p - 1 ddr4 sodimm slot - 45w 65w slim ac adapter -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
|<!--Name-->Lenovo V330-14ARR 81B1, V330-15ARR 81, 330-14ARR 81 330-15ARR 81D2 - battery internal about 30whr || <!--Chipset-->AMD Ryzen R3 2200U, 2300U or R5 2500U Raven Ridge || <!--IDE-->{{N/A}} || <!--SATA-->M.2 nvme/sata, optional 2.5in sata but no dvd || <!--Gfx-->{{Maybe|VESA Vega 3, 6 or 8 up to 1Gb of soldered ram memory taken}} || <!--Audio-->{{No|HDAudio 0x1002, 0x15de with Realtek® ALC5682I-VD codec 0x10de, 0x or coxenant CX11802 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|Realtek 1GbE}} || <!--Wireless-->{{no|Realtek}} || <!--Test Distro--> || <!--Comments-->2018 64bit - 14" 768p 20mm thick 1.8kg - 20v 2.25a 45w ac round barrel - chiclet keyboard - 4Gb soldered and 1 ddr4 sodimm - TPM 2.0 in bios - 4GB soldered -
|-
|<!--Name-->Ideapad 330s-14ARR, 330s-15ARR, ideapad 330S-14IKB, 330S-15IKB, - battery internal about 30whr || <!--Chipset-->AMD Ryzen R3 2200U, 2300U or R5 2500U Raven Ridge || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|nvme}} || <!--Gfx-->{{Maybe|VESA 2D for AMD or Intel 610, 620 up to 1Gb of soldered ram memory taken}} || <!--Audio-->{{No|HD Audio with codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|Realtek}} || <!--Test Distro--> || <!--Comments-->2018 64bit - 14" 20mm thick 1.8kg - 20v 2.25a 45w ac round barrel - chiclet keyboard - 4Gb soldered and 1 ddr4 sodimm - TPM 2.0 in bios - 4GB soldered -
|-
|<!--Name-->Thinkpad Edge E485 E585 - internal battery only || <!--Chipset-->AMD Ryzen R3 2300U R5 2500U R7 2700U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|m.2 nvme optional 1 2.5in sata}} || <!--Gfx-->{{Maybe|VESA for Vega 3, 8 or 10}} || <!--Audio-->{{No|HDAudio with CX11852 codec }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 rtl8111GUS}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2018 64bit - 14in or 15.6in 768p or 1080p - USB-C 20V 2.25A 3.25A avoid knocking charging port as damages easily - 2 ddr4 sodimm slot max 2400Mhz 32GB - TPM 2.0 software -
|-
|<!--Name-->Thinkpad A285 - internal and external battery || <!--Chipset-->AMD Ryzen PRO 3 2200U 5 2500U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|m.2 nvme/sata}} || <!--Gfx-->{{Maybe|VESA Vega up to 2Gb of soldered ram memory taken}} || <!--Audio-->{{unk|HD Audio with ALC ALC3287 codec aka ALC257 }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{No|Mini-Ethernet/Docking}} || <!--Wireless-->{{no|Realtek or Qualcomm - WLAN whitelist no more??}} || <!--Test Distro--> || <!--Comments-->2018 64bit - 12.5in 1080p - avoid usb-c port being lifted/moved whilst in use as damages laptop easily - soldered ram 8gb or 16gb - WWAN whitelist - keyboard swap problematic -
|-
|<!--Name-->Thinkpad A485 bios setting [https://github.com/PSPReverse/PSPTool AMD PSP Platform Security Processor Key] - internal and external battery || <!--Chipset-->AMD Ryzen PRO 5 2500U || <!--IDE-->{{N/A}} || <!--SATA-->sata port and m.2 nvme port || <!--Gfx-->{{Maybe|VESA Vega }} || <!--Audio-->{{unk|HD Audio with ALC ALC3287 codec aka ALC 257 }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 RTL8111GUL}} || <!--Wireless-->{{no|Realtek or Qualcomm wifi - WLAN whitelist no more??}} || <!--Test Distro--> || <!--Comments-->2018 64bit - 14in 768p, 1080p or 1440p - avoid usb-c port being lifted/moved whilst in use as damages laptop easily - 2 ddr4 sodimm slots max 32gb - WWAN whitelist - keyboard swap problematic -
|-
|<!--Name-->[https://www.diy-laptoprepair.com/forum/fix-Lenovo-V155-15-repair-guide-schematics.php Lenovo v155-15api 81V5] V155 (15" AMD) budget all plastic build - MS new protocol, HID over I2C so [https://askubuntu.com/questions/1033033/elantech-touchpad-does-not-work-i2c-hid i2c] [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/input/mouse/elantech.c?h=v6.17 i2c] [https://www.kernel.org/doc/html/v4.16/input/devices/elantech.html PS2 hybrid trackpad] [https://cgit.freebsd.org/src/tree/sys/dev/atkbdc/psm.c?h=releng/14.3 elantech] [https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/dev/pckbc/?only_with_tag=OPENBSD_7_8_BASE i2c-hid] 04F3:3140 touchpad not working - internal sunwoda battery L18D3PF1, L18L3PF1, L18C3PF2 35Whr most dead after 5 years || <!--Chipset-->'''tested''' Ryzen 5 3500U and Ryzen 3 3200U - '''untested''' AMD Athlon 300U with bios winbond 25q64fwsiq soic 1.8v bios near nvme || <!--IDE-->{{N/A}} || <!--SATA-->1 M.2 nvme and usually 2.5in 7mm sata - install on mbr not gpt 2.5in in another compatible machine - mini sata dvd/cd da-8aesh11b will boot cd or dvd aros || <!--Gfx-->{{Maybe|VESA 2D to 1080p work for Vega 3 or 8 with up to 2Gb of soldered ram memory taken but hdmi 1.4b no output}} || <!--Audio-->{{Yes|HDAudio add 0x1022, 0x15E3 with ALC3287 aka Realtek ALC257 codec 0x10ec, 0x0257 with 32bit on external speaker and most of the time works on 64bit}} || <!--USB-->{{no|2 USB3.0 usb-a, on left hand side, detected but not working}} || <!--Ethernet-->{{yes|rtl8169 RTL8111GUS works well with 32bit and 64bit}} || <!--Wireless-->{{no|Realtek or Intel wifi}} || <!--Test Distro-->2025 AROS One 2.8 DVD 32bit and AROS One x64 1.1 and 1.2 iso DVD burnt but not USB boot || <!--Comments-->2019 64bit - 15.6in 768p or 1080p 200nits tn panel - 4Gb ddr4 2400MHz soldered with 1 dimm slot max 20Gb - round ac 20V 65W psu 4.0mm x 1.7mm - Fn+F2 to enter bios and F12 boot order - no sd card slot - 2pin cr2032 cmos coin battery -
|-
|<!--Name-->V15-ADA 82C700E4UK- elan touchpad not working - internal battery 34whr L16M2PB2 l16l2pb3 || <!--Chipset-->AMD r5 3500U || <!--IDE-->{{N/A}} || <!--SATA-->1x 2.5" HDD + 1x M.2 SSD NVMe near fan, no cd dvd || <!--Gfx-->{{Maybe|VESA 2D for Vega 3, 8 with up to 1080p with 2Gb of soldered ram memory taken}} || <!--Audio-->{{Yes|HD Audio 6.36 0x1022, 0x15E3 with R155189 ALC236 codec 0x10ec, 0x0236 on 32bit and on 64bit}} || <!--USB-->{{maybe|3 USB3, on left hand side,}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|Realtek or Qualcomm wifi}} || <!--Test Distro-->2025 3500U with Aros One 32bit 2.8 installed to 2.5in drive on another machine and same for 64bit || <!--Comments-->2019 64bit - 14 or 15.6in 768p on low spec machines to 1080p - 4GB soldered with 1 ddr4 sodimm slot - 2pin cr2032 cmos coin battery - sd card slot - noisy fan -
|-
|<!--Name-->V15-ADA 82C7 - elan touchpad not working - internal battery 34whr L16M2PB2 l16l2pb3 || <!--Chipset-->AMD Athlon Silver 3020e, Ryzen 3 3050U, 3150U, 3250U || <!--IDE-->{{N/A}} || <!--SATA-->1x 2.5" HDD + 1x M.2 SSD NVme near fan, no cd dvd || <!--Gfx-->{{Maybe|VESA 2D for Vega 3, 8 with up to 1080p with 2Gb of soldered ram memory taken}} || <!--Audio-->{{No|HD Audio 6.36 0x1022, 0x15E3 with RTS5119 R155119 ALC230 codec}} || <!--USB-->{{maybe|3 USB3.0, on left hand side,}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|Realtek or Qualcomm wifi}} || <!--Test Distro-->2025 Aros One 32bit 2.8 and 64bit || <!--Comments-->2019 64bit - 14 or 15.6in 768p on low spec machines to 1080p - 4GB soldered with 1 ddr4 sodimm slot - 2pin cr2032 cmos coin battery - sd card slot - for this mbd bios ram disable doesn't work - noisy fan -
|-
|<!--Name-->Lenovo V14-ADA 82C6, - elan touchpad not working - if blank black display, bios bug going from uefi->legacy so reset bios rhs push in with pin, then Down, ent, Right x3, ent, up, ent, right, ent x2 - internal battery 34whr L16M2PB2 l16l2pb3 || <!--Chipset-->'''tested''' 3250U - '''untested''' AMD Athlon Silver 3020e, Ryzen 3 3050U, 3150U - for this mbd GV451&GV551 NM-D151 bios ram disable doesn't work || <!--IDE-->{{N/A}} || <!--SATA-->1x 2.5" HDD if cbl + 1x M.2 SSD NVMe near fan, no cd dvd || <!--Gfx-->{{Maybe|VESA 2D for Vega 3 up to 1080p with 2Gb of soldered ram memory taken}} || <!--Audio-->{{no|HD Audio 6.36 0x1022, 0x15E3 with Realtek ALC3223 RTS5119 R185199 aka ALC230 codec 0x10ec, 0x0230 on 32bit and on 64bit}} || <!--USB-->{{maybe|3 USB3, on left hand side,}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|Realtek or Qualcomm wifi}} || <!--Test Distro-->2025 AMD 3250U with Aros One 32bit 2.8 installed to 2.5in drive on another machine and same for 64bit || <!--Comments-->2019 64bit - 14 or 15.6in 768p on low spec machines to 1080p - 4GB soldered with 1 ddr4 sodimm slot - 2pin cr2032 cmos coin battery - sd card slot - F2 bios F12 select -
|-
|<!--Name-->IdeaPad 1 14ADA5 (low spec cpus) ideaPad 3 14ADA05, IdeaPad 3 15ADA05 81W100QVUK, IdeaPad 3 17ADA05 - elan touchpad not working - internal battery 34whr L16M2PB2 l16l2pb3 || <!--Chipset-->AMD Athlon Silver 3020e, Ryzen 3 3050U, 3150U, 3250U, Ryzen 5 3500U on mobo NM-C821 REV 0.2 1.0 || <!--IDE-->{{N/A}} || <!--SATA-->1x 2.5" HDD if cbl + 1x M.2 SSD NVMe near fan, no cd dvd || <!--Gfx-->{{Maybe|VESA 2D for Vega 3, 8 up to 1080p with 2Gb of soldered ram memory taken}} || <!--Audio-->{{no|HD Audio 6.36 0x1022, 0x15E3 with ALC230 codec 0x10ec, 0x0230 on 32bit and on 64bit}} || <!--USB-->{{maybe|3 USB3, on left hand side,}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|Realtek or Qualcomm wifi}} || <!--Test Distro-->2025 Aros One 32bit 2.8 installed to 2.5in drive on another machine and same for 64bit || <!--Comments-->2019 64bit - 14 or 15.6in 768p on low spec machines to 1080p - 4GB soldered with 1 ddr4 sodimm slot - 2pin cr2032 cmos coin battery - sd card slot - F2 bios F12 boot select -
|-
|<!--Name-->Lenovo IdeaPad L340-15API 81LW001CUS L340-17API - elan trackpad not functioning - internal battery L18M3PF2 || <!--Chipset-->AMD Athlon 300U, Ryzen 3 3200U r5 3500U || <!--IDE-->{{N/A}} || <!--SATA-->1 M.2 nvme and usually 2.5in sata if ribbon cable present - mini sata dvd/cd da-8aesh11b || <!--Gfx-->{{Maybe|VESA 2D for Vega 3 or 8 with up to 2Gb of soldered ram memory taken - hdmi 1.4b}} || <!--Audio-->{{unk|HDAudio add 0x1022, 0x15E3 with Realtek ALC236 0x10ec, 0x0236}} || <!--USB-->{{maybe|USB3 not detected}} || <!--Ethernet-->{{maybe|rtl8169 RTL8111GUS}} || <!--Wireless-->{{no|Realtek or Intel wifi}} || <!--Test Distro-->AROS One 2.8 USB - install on mbr not gpt 2.5in in another compatible machine || <!--Comments-->2019 64bit - 15.6in 768p or 1080p 200nits - 4Gb ddr4 2400MHz soldered with 1 dimm slot max 20Gb - round ac 20V 65W psu 4.0mm x 1.7mm - Return or F1 to enter bios and F12 boot order - no sd card slot -
|-
|<!--Name-->[https://www.laptop-schematics.com/db/78/T%20series%20laptops%20(ThinkPad)/ ThinkPad T295 T495] || <!--Chipset-->Ryzen 3 3300U, R5 Pro 3500U or R7 3700U || <!--IDE-->{{N/A}} || <!--SATA-->1 NVMe up to 2280 || <!--Gfx-->{{Maybe|VESA Vega 6, 8 or 10 up to 2Gb of soldered ram memory taken}} || <!--Audio-->{{unk|HD Audio with Realtek® ALC3287 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 Realtek RTL8111EPV}} || <!--Wireless-->{{No|Realtek RTL8822BE or Intel AC 9260}} || <!--Test Distro--> || <!--Comments-->2019 64bit - 14in 768p but mostly FHD 1080p 250 nits - internal battery - ram 8gb or 16gb 2400Mhz soldered with 1 ddr4 slot on T495 only - TPM 2.0 - usb-c charging avoid knock whilst in use - keyboard swap problematic -
|-
|<!--Name-->ThinkPad T495s (14in) X395 (13in) || <!--Chipset-->Ryzen 3 3300U, R5 Pro 3500U or R7 3700U || <!--IDE-->{{N/A}} || <!--SATA-->1 NVMe up to 2280 || <!--Gfx-->{{Maybe|VESA Vega 6, 8 or 10 up to 2Gb of soldered ram memory taken}} || <!--Audio-->{{unk|HD Audio with Realtek® ALC3287 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{unk| needs Lenovo ThinkPad Ethernet Adapter Gen 2 SC10P42352 or SC10P42354}} || <!--Wireless-->{{No|Realtek RTL8822BE or Intel AC 9260 wifi}} || <!--Test Distro--> || <!--Comments-->2019 64bit - 13in or 14in 768p but mostly FHD 1080p 250 nits - internal battery - ram 8gb or 16gb 2400Mhz soldered - TPM 2.0 - usb-c charging avoid knock whilst in use - keyboard swap problematic -
|-
|<!--Name-->ThinkPad E14 Gen2, E15 Gen 2 (AMD) 20T8, - lenovo has a mobile phone PC Diagnostic App for error/beep codes || <!--Chipset-->AMD Ryzen 3 4300U, 5 4500U, 7 4700U || <!--IDE-->{{N/A}} || <!--SATA-->2 m.2 nvme, 1 2242 and 1 2280 || <!--Gfx-->{{Maybe|VESA 2D for AMD Radeon up to 2Gb of soldered ram memory taken}} || <!--Audio-->{{unk|HD Audio with ALC ALC3287 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 RTL8111GUS}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2020 15.6in 1080p 220 nits - TPM 2.0 - usb-c charging of internal 45Whr battery - 4gb ddr4 3200Mhz soldered and 1 ddr4 sodimm slot max 20Gb - keyboard swap problematic - plastic bendy case -
|-
|<!--Name-->Lenovo ThinkPad T14 Gen 1, ThinkPad P14s Gen 1 (AMD) || <!--Chipset-->AMD Ryzen 3 4300u, 5 4500U, Ryzen 5 Pro 4650U, Ryzen 7 Pro 4750U || <!--IDE-->{{N/A}} || <!--SATA-->1 NVMe || <!--Gfx-->{{Maybe|VESA 2D for AMD Vega }} || <!--Audio-->{{unk|HDAudio with Realtek® ALC3287 0x10EC, 0x0257}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 RTL8111EPV (DASH models) or RTL8111HN}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2020 64bit - USB-C charging avoid moving whilst in use - 14" or 15" 1080p - keyboard swap problematic - 8gb or 16gb 3200MHz soldered with 1 ddr4 sodimm slot - sd card slot -
|-
|<!--Name-->Thinkpad L14 Gen 1, L15 Gen 1, || <!--Chipset-->AMD Ryzen 3 4300u, 5 4500U, Ryzen 5 Pro 4650U, Ryzen 7 Pro 4750U || <!--IDE-->{{N/A}} || <!--SATA-->1 NVMe || <!--Gfx-->{{Maybe|VESA 2D for AMD Vega }} || <!--Audio-->{{unk|HDAudio with Realtek® ALC3287 0x10EC, 0x0257}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{no|rtl8169 needs dongle RTL8111EPV (DASH models) or RTL8111HN}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2020 64bit - USB-C charger avoid moving whilst in use - 14" or 15" 1080p - keyboard swap problematic - 8gb or 16gb 3200MHz soldered with 1 ddr4 sodimm slot - sd card slot -
|-
|<!--Name-->Lenovo ThinkPad X13 Gen1 AMD, || <!--Chipset-->AMD RYZEN 3 4450U, 5 4650U or 7 4750U || <!--IDE-->{{N/A}} || <!--SATA-->One drive, up to 512GB M.2 2242 SSD or 1TB M.2 2280 SSD NVMe || <!--Gfx-->{{partial|VESA Radeon up to 2Gb of soldered ram memory taken}} || <!--Audio-->{{unk|HDAudio with Realtek® ALC3287 codec}} || <!--USB-->{{maybe| but USB-C ports can fail}} || <!--Ethernet-->{{no|Realtek RTL8111EPV, mini RJ-45 to RJ-45 via optional ThinkPad Ethernet Extension Adapter Gen 2}} || <!--Wireless-->{{no|Realtek Wi-Fi 6 RTL8852AE}} || <!--Test Distro--> || <!--Comments-->2020 13.3" HD 1366x768 to 1080p - USB-C port care needed as damages easily - Memory soldered to systemboard, no slots, dual-channel DDR4-3200 -
|-
|<!--Name-->Lenovo ThinkBook 14 G2, 15 G2 Are || <!--Chipset-->Ryzen 5 4500u, 7 4700U || <!--IDE-->{{N/A}} || <!--SATA-->14in has 2 m.2 nvme but 15in has 1 nvme and might have 2.5in sata metal caddy if smaller battery version || <!--Gfx-->VESA 2d for AMD Radeon up to 2Gb of soldered ram memory taken || <!--Audio-->{{unk|HDAudio with ALC???? codec 0x10EC, 0x0}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 }} || <!--Wireless-->{{No| wifi}} || <!--Test Distro--> || <!--Comments-->2020 64bit - 14in or 15in 1080p - usb-c charging but high failure rate on the charging port - 4gb or 8gb soldered with 1 ddr4 sodimm slot 3200mhz - hinge(s) issues -
|-
|<!--Name-->IdeaPad 5 14ARE05 (81YM), Ideapad 5 15ARE05 (), IdeaPad 3 17ARE05 (model 81W5) - elan touchpad MSFT0004:00 06CB:CD98 not working || <!--Chipset-->'''tested''' 4500u - '''untested''' AMD 3 4300U (4c4t), 4600U (6c12t), 7 4700u (8c16t) on AMD Promontory Bixby FCH || <!--IDE-->{{N/A}} || <!--SATA-->{{no|1x M.2 2242 slot and 1x M.2 2280 NVMe which will take sata m.2 will boot to grub then laptop reset after choice}} || <!--Gfx-->{{Maybe|VESA 2D for Vega 6 via hdmi output up to 2Gb of soldered ram memory taken}} || <!--Audio-->{{unk|HDAudio 6.36 0x1637 0x15e3 with Realtek ALC3287 aka ALC257 codec 0x10ec 0x0257}} || <!--USB-->{{maybe|USB 3.1 or 3.2 gen 1}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|Intel ax200 wifi 6}} || <!--Test Distro-->4500u with AROS One 64bit 1.2 usb installed to m.2 sata on another machine || <!--Comments-->2020 64bit 14inch 768p or 1080p - round lenovo ac - 4gb, 8gb, or 16gb ddr4 3200Mhz ram soldered with 1 slot - keyboard swap problematic - integrated battery -
|-
|<!--Name-->Ideapad Flex 5 81X2, Lenovo Yoga 6 13ALC6 || <!--Chipset-->AMD R5 4500u, R7 4800U, R3 5300 R5 5500U || <!--IDE-->{{N/A}} || <!--SATA-->M.2 NVMe ssd || <!--Gfx-->{{Maybe|VESA AMD Vega up to 2Gb of soldered ram memory taken}} || <!--Audio-->{{unk|HD Audio with ALC? codec}} || <!--USB-->{{maybe|USB3.1 gen 1}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|realtek ac wifi}} || <!--Test Distro--> || <!--Comments-->2020 64bit abs plastic case 14in convertible 1080p touch low nits - 65w usb-c psu ac - possible wacom esr note taking pen supplied - ram soldered DDR4 - keyboard swap problematic -
|-
|<!--Name-->ThinkPad T14 Gen 2, P14s Gen 2 || <!--Chipset-->AMD 5850U || <!--IDE-->{{N/A}} || <!--SATA-->NVme || <!--Gfx-->VESA 2D || <!--Audio-->{{unk|HDaudio with ALC3287-CG codec 0x10EC, 0x0}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{Maybe| }} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2021 - usb-c power 90% failure rate on the charging port -
|-
|<!--Name-->Lenovo ThinkBook 14 G3, 15 G3 ACL, || <!--Chipset-->Ryzen 5 5500U || <!--IDE-->{{N/A}} || <!--SATA-->m.2 nvme || <!--Gfx-->VESA 2d for AMD Radeon || <!--Audio-->{{unk|HDAudio with ALC codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 }} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2021 64bit - 14in or 15in 1080p - usb-c charging powered -
|-
|<!--Name-->ThinkPad E14 G3, E15 Gen 3 (AMD) || <!--Chipset-->AMD 5300U 5500U 5650U 5700U 5800U || <!--IDE-->{{N/A}} || <!--SATA-->up to 2 m.2 nvme || <!--Gfx-->{{Maybe|VESA }} || <!--Audio-->{{unk|HDaudio with Realtek® ALC3287 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 RTL8111GUS}} || <!--Wireless-->{{no|realtek or intel }} || <!--Test Distro--> || <!--Comments-->2021 64bit - 15.6in 1080p - - usb-c charging issues - keyboard swap problematic - 4gb or 8gb soldered with 1 ddr4 3200Mhz sodimm slot - plastic bendy case -
|-
|<!--Name-->V14 Gen 2 (82KA, 82KC)
*ALO
*ALC 82KD
|| <!--Chipset-->Ryzen 3 5300U, 5 5500U, 7 5700U || <!--IDE-->{{N/A}} || <!--SATA-->1 nvme 2280 and optional 2.5in sata after sourcing ribbon cable and connector, no dvd || <!--Gfx-->VESA 2D for AMD radeon || <!--Audio-->{{unk|HDAudio with Realtek® ALC3287 codec}} || <!--USB-->{{maybe|USB3 }} || <!--Ethernet-->{{maybe|rtl8169 Realtek RTL8111H-CG}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2022 64bit - 15.6" FHD 1080p - 4gb or 8gb soldered with 1 ddr4 sodimm slot - 65w round ac adaptor -
|-
|<!--Name-->V15 G2 Gen2 (82KB, 82KD)
*ALO
*ALC 82KD
|| <!--Chipset-->Ryzen 3 5300U, 5 5500U, 7 5700U || <!--IDE-->{{N/A}} || <!--SATA-->1 nvme 2280 and optional 2.5in sata after sourcing ribbon cable and connector, no dvd || <!--Gfx-->VESA 2D for AMD radeon || <!--Audio-->{{unk|HDAudio with Realtek® ALC3287 codec}} || <!--USB-->{{maybe|USB3 }} || <!--Ethernet-->{{maybe|rtl8169 Realtek RTL8111H-CG}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2022 64bit - 15.6" FHD 1080p - 4gb or 8gb soldered with 1 ddr4 sodimm slot - 65w round ac adaptor -
|-
|<!--Name-->ThinkPad L15 Gen 2 (15″, AMD) || <!--Chipset-->AMD 5000 series AMD Ryzen 3 5400U (4c8t), 5 5600U, 5 5650U (6c12t), 7 PRO 5850U (8c16t) || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{unk|HDAudio with Realtek® ALC3287}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{no|rtl8169 needs dongle RTL8111EPV (DASH models) or RTL8111HN}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2022 64bit - 15.6in 768p or 1080p - usb-c charging - 4gb soldered with 1 ddr4 3200Mhz sodimm slot -
|-
|<!--Name-->ThinkPad E14 Gen 4, E15 Gen 4 (15″, AMD) || <!--Chipset-->AMD 3 5425u, 5 5625U, 7 5825u || <!--IDE-->{{N/A}} || <!--SATA-->1 (14") or 2 (15") nvme || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{unk|HDAudio with ALC3287 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 }} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit - 15.6in 1080p - usb-c charging - 4gb or 8gb soldered with 1 ddr4 3200Mhz sodimm slot - L19M3PDA 45Whr battery - U24 TPS65994 and QB6 QB5 mosfet issues - plastic bendy case -
|-
|<!--Name-->ThinkPad T14 Gen 3 Machine types MT 21AH 21AJ 21CF and 21CG, P14s Gen 3 || <!--Chipset-->AMD 6850U || <!--IDE-->{{n/a}} || <!--SATA-->NVme || <!--Gfx-->VESA 2d || <!--Audio-->{{unk| ALC3287-VA2-CG codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{Maybe|rtl8169 }} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2022 64bit - 14in
|-
|<!--Name-->ThinkPad T14s Gen 3 || <!--Chipset-->AMD 6500U || <!--IDE-->{{n/a}} || <!--SATA-->NVme || <!--Gfx-->VESA 2d || <!--Audio-->{{unk| ALC3287-VA2-CG codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no|Ethernet support via optional Lenovo® USB-C® to Ethernet Adapter}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2022 64bit - 14in
|-
|<!--Name-->V14 G3, V15 G3 Gen3 ALC || <!--Chipset-->Ryzen 5 6500U || <!--IDE-->{{N/A}} || <!--SATA-->nvme and optional 2.5in sata if smaller 38Wh battery and after sourcing ribbon cable and connector, no dvd || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 }} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit - 15"FHD - battery BYD L20B2PFO -
|-
|<!--Name-->ThinkPad L15 Gen 3 (15″, AMD) || <!--Chipset-->AMD 6000 series || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{No| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no|rtl8169 needs dongle}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2023 64bit- 15.6in 1080p -
|-
|<!--Name-->Lenovo Yoga 7 14ARB7 || <!--Chipset-->AMD Ryzen 5, 6600U, 7 6800U || <!--IDE-->{{N/A}} || <!--SATA-->1 nvme || <!--Gfx-->AMD 660M or 680M || <!--Audio-->{{No|HDaudio with ALC3306 aka alc287 codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2022 64bit - 14in 1800p ips 300 nits - usb-c ac charging 71whr integrated battery - sd card slot - digital pen input - 8gb, 6gb or 32gb soldered ddr5 ram -
|-
|<!--Name-->ThinkPad T14 Gen 4, P14s Gen 4 || <!--Chipset-->AMD Ryzen Pro 5 7540U, Ryzen Pro 7 7840U (AI NPU) || <!--IDE-->{{n/a}} || <!--SATA-->NVme || <!--Gfx-->VESA 2D for AMD 740M 780M|| <!--Audio-->{{unk|HDAudio ALC3287 codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 }} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit - 14in 1920x1200 - 8gb, 16gb or 32gb lpddr5 soldered - usb-c charging -
|-
|<!--Name-->ThinkPad E14 g5, E15 Gen 5 (15″, AMD) || <!--Chipset-->AMD 7000 series Ryzen 5-7530U, 7-7730U || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{unk|HDAudio with codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe| }} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit- 15.6in 1080p -
|-
|<!--Name-->Thinkbook 14 G6 ABP IRL, ThinkBook 16 G6ABP (21KK001CUK) || <!--Chipset-->AMD Ryzen 7530U 7730U || <!--IDE-->{{N/A}} || <!--SATA-->m.2 nvme || <!--Gfx-->VESA 2d for AMD Radeon || <!--Audio-->{{unk|HDaudio with codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 untested}} || <!--Wireless-->{{No| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit - 14in 1200p or 1440p - 100W USB-C AC power adapter -
|-
|<!--Name-->IdeaPad Slim 5 Light 14ABR8 Laptop || <!--Chipset-->AMD Ryzen 3 7330U (4c8t) 5 7530U (6c12t) 7 7730U (8c16t) || <!--IDE-->{{N/A}} || <!--SATA-->2 m.2 nvme slot - 1 2242, 1 2280 || <!--Gfx-->VESA 2d for AMD Radeon || <!--Audio-->{{unk|HDaudio with Realtek® ALC3287 codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit - 14in 1080p - 8Gb or 16Gb soldered ram - usb-c charging only -
|-
|<!--Name-->ThinkPad X13 Gen 4 (13" AMD) || <!--Chipset-->AMD 7480U 7040U || <!--IDE-->{{N/A}} || <!--SATA-->NVMe || <!--Gfx-->{{partial|VESA}} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2023 - avoid usb-c port damage -
|-
|<!--Name-->ThinkPad L14 (Gen4), L15 Gen 4 (15" AMD) || <!--Chipset-->MD Ryzen 5 PRO 7530U, 7480U 7040U || <!--IDE-->{{N/A}} || <!--SATA-->NVMe || <!--Gfx-->{{partial|VESA}} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no|rtl8169 needs dongle}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit - elan trackpad -
|-
|<!--Name-->Lenovo Gen 4 V14 (82YT, 82YV, 83A0, 83A1, 83CC, 83FR, 82YX, 83FG), V15 (82YU, 82YW, 83FS, 82YY, 83CR), V17 (83A2), || <!--Chipset-->AMD AMD Athlon™ Gold 7220U (2c4t), AMD Athlon™ Silver 7120U (2c2t), AMD Ryzen™ 3 7320U (4c8t), AMD Ryzen™ 5 7520U (4c8t) || <!--IDE-->{{N/A}} || <!--SATA-->nvme and 2.5in sata if smaller 38Wh battery, no dvd || <!--Gfx-->{{Maybe|VESA 2d for AMD 610M HDMI® and USB-C}} || <!--Audio-->{{unk|HDaudio with ALC3287 codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no|Gigabit Ethernet, 1x RJ-45}} || <!--Wireless-->{{no|wifi 6}} || <!--Test Distro--> || <!--Comments-->2023 64bit - 15.6" FHD 1080p - 8 or 16Gb soldered - 65W round tip (3-pin) AC adapter or USB-C -
|-
|<!--Name-->ThinkPad e14 G6, e15 Gen 6 (15″, AMD) || <!--Chipset-->AMD 7000 series AMD Ryzen™ 7 7735HS || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{unk|HDAudio codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe| }} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit- 15.6in 1080p -
|-
|<!--Name-->ThinkPad L16 (16" AMD), || <!--Chipset-->AMD 8000 || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D || <!--Audio-->{{unk|HDAudio with codec}} || <!--USB-->{{maybe|USB4}} || <!--Ethernet-->{{no|rtl8169 needs dongle}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2025 64bit
|-
|<!--Name-->ThinkPad T14 Gen 5, P14s Gen 5 || <!--Chipset-->AMD Ryzen 7 PRO 8840U, AMD Ryzen™ 5 PRO 8540U || <!--IDE-->{{N/A}} || <!--SATA-->NVME || <!--Gfx-->VESA 2d || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 }} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2025 64bit - 14inch 1920 x 1200 -
|-
|<!--Name--> Lenovo WinBook 300e SKU: 82GKS00000 || <!--Chipset-->AMD 3015E || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2023 64bit 4GB 64GB SSD 11.6 Inch Touchscreen Windows 10 Pro Laptop
|-
|<!--Name-->ThinkPad || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
|<!--Name-->Lenovo Yoga Slim 7a || <!--Chipset-->AMD Ryzen AI 7350 || <!--IDE-->{{N/A}} || <!--SATA-->1 nvme || <!--Gfx-->AMD 860M || <!--Audio-->{{No|HDaudio with ALC3306 aka alc287 codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2025 64bit - 14in 1800p ips 300 nits - usb-c ac charging 71whr integrated battery - sd card slot - digital pen input - 8gb, 6gb or 32gb soldered ddr5 ram -
|-
|<!--Name-->ThinkPad || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Samsung====
[[#top|...to the top]]
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="2%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->NP-Q1 Q1 || <!--Chipset-->Celeron-M 353 ULV 600Mhz || <!--IDE-->{{Yes|1.8" SFF HDD 20 / 60 GB }} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Yes|GMA 915 2D and 3D opengl1 tunnel 95 gearbox 68}} || <!--Audio-->{{Yes|HD Audio with codec - head phones only}} || <!--USB-->{{Yes}} || <!--Ethernet-->{{No|Marvell}} || <!--Wireless-->{{Yes|Atheros 5006EX}} || <!--Test Distro-->2016 Icaros 2.1 || <!--Comments-->2005 32bit old style tablet UltraMobile PC UMPC - Wacom serial resistive pen or finger no support - 1 sodimm ddr2 max 1Gb - LCD 7" WVGA (800 x 480) - CompactFlash port Type II -
|-
| <!--Name-->NP Q1U Ultra Mobile PC UMPC Q1F NP-Q1-F000 || <!--Chipset-->Intel A100 600 / A110 Stealey 800 MHz CPU || <!--IDE-->{{Yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Maybe|GMA 950 2D and 3D opengl1}} || <!--Audio-->{{No|HD Audio 1986}} || <!--USB--> || <!--Ethernet-->Intel || <!--Wireless-->{{Maybe|Atheros 5006EX}} || <!--Test Distro-->2016 Icaros 2.1 || <!--Comments-->2006 32bit 1024×600 - sd card slot -
|-
| <!--Name-->NP P500 family P500Y || <!--Chipset-->AMD with SB600 || <!--IDE-->{{N/A| }} || <!--SATA-->{{Yes| }} || <!--Gfx-->{{Maybe|use VESA Ati x1250}} || <!--Audio-->{{Yes| Audio with codec }} || <!--USB--> || <!--Ethernet-->{{No|Marvell 88E8039 yukon}} || <!--Wireless-->{{yes|Atheros G}} || <!--Test Distro-->2017 Icaros 2.1.2 || <!--Comments-->64bit possible - 15.4 tft display - cheap plastic okay build - 19v propriety end -
|-
| <!--Name-->R505 R510 || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless-->Atheros G || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->R520 R522 R610H R620 || <!--Chipset-->Intel Mobile Core i3 Intel PM45 82801M ICH9-M|| <!--IDE--> || <!--SATA--> || <!--Gfx-->ATI Mobility Radeon HD 4650 (RV730) || <!--Audio-->Intel HD Audio with Realtek ALC272 || <!--USB--> || <!--Ethernet-->Marvell Yukon 88E8057 || <!--Wireless-->Atheros AR5007EG || <!--Test Distro--> || <!--Comments-->2010 64 bit possible
|-
| NP-R530 || || {{N/A}} || {{partial|IDE mode}} || {{yes|Intel GMA (2D)}} || {{partial|HD Audio playback}} || {{yes|USB 2.0}} || {{no|Marvell}} || {{unk|Atheros AR9285}} || Icaros 1.5.2 || <!--Comments-->
|-
| <!--Name-->Samsung R730 17.3 Essential Notebook NP-R730-JA02UK, NP-R730-JA01SE, R730-JT06 || <!--Chipset-->Intel HM55 Dual Core T4300 i3-370M || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA for Intel 4500MHD and GeForce G 310M with 1 VGA, 1 HDMI}} || <!--Audio-->{{Yes|HDAudio ALC??? codec Realtek}} || <!--USB-->{{yes|USB2}} || <!--Ethernet-->{{No|Marvell Yukon 88E8059 PCI-E}} || <!--Wireless-->{{unk|Broadcom, Intel or Atheros 9k AR9285}} || <!--Test Distro-->Deadwoods ISO 2023-11 || <!--Comments-->2010 64bit - 17.3in HD 1280 x 720 pixels low contrast or some 1600x900 - 2 DDR3 sodimm slots - 2.84 kg 6.26 lbs -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->[http://www.notebookcheck.net/Review-Samsung-305U1A-A01DE-Subnotebook.68246.0.html Series 3 Samsung 305u1a] || <!--Chipset-->AMD Zacate E350 or E450 || <!--IDE--> || <!--SATA--> || <!--Gfx-->AMD Radeon 6320 || <!--Audio-->ALC ACL 269 || <!--USB--> || <!--Ethernet-->Realtek 8111 8169 || <!--Wireless-->Broadcom 4313 || <!--Comments-->2011 64bit
|-
| <!--Name-->NP-RV415 NP-RV515 || <!--Chipset-->E350 or E450 plus A50M chipset || <!--IDE--> || <!--SATA--> || <!--Gfx-->AMD Radeon HD 6470 || <!--Audio-->HD Audio Realtek || <!--USB--> || <!--Ethernet-->{{unk|RTL8169 Realtek RTL8111 8168B}} || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro--> || <!--Comments-->2012 64bit slow -
|-
| <!--Name-->Series 5 NP535U3C || <!--Chipset-->A6-4455M || <!--IDE-->{{N/A}} || <!--SATA-->2.5in || <!--Gfx-->radeon || <!--Audio-->HDAudio || <!--USB-->USB2 || <!--Ethernet-->Realtek GbE || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2012 64bit slow - 13.3in 1368 x 768 - plastic build - 65w 19v psu -
|-
| <!--Name-->series 3 NP355V5C || <!--Chipset-->A6-4400M, A8-4500M, A10-4600M || <!--IDE-->{{N/A}} || <!--SATA-->2.5in || <!--Gfx-->7640M || <!--Audio-->HDAudio || <!--USB-->USB2 || <!--Ethernet-->Realtek GbE || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2012 64bit - 15.4in 1368 x 768 - plastic build - 65w 19v psu -
|-
| <!--Name-->Samsung ATIV Book 9 Lite NP905S3G || <!--Chipset-->AMD A6-1450 quad 1GHz Temash atom like || <!--IDE--> || <!--SATA-->128gb || <!--Gfx-->AMD 8250 || <!--Audio-->HD Audio || <!--USB--> || <!--Ethernet-->{{Maybe|Realtek rtl8169 but only with mini LAN AA-AE2N12B Ethernet Adapter RJ45 dongle}} || <!--Wireless-->{{unk|Atheros AR9565}} || <!--Test Distro--> || <!--Comments-->2014 64bit - 13.3 TN glossy 1366 x 768 200nits 60% srgb - plastic case - 26W battery built in with 4hr life - 19V 2.1A 3.0*1.0mm psu - 1 ddr3l slot max 4gb - 720p webcam - mini hdmi out - 1w speakers -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Toshiba====
[[#top|...to the top]]
Order of Build Quality (Lowest to highest)
<pre >
Equium
Satellite (Pro)
Libretto
Portege
Tecra
</pre >
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| Tecra 8100 8200 9000 || 440BX || {{yes|IDE}} || {{N/A}} || {{maybe|S3 Savage MX 3D (VESA only)}} || {{no|Yamaha DS-XG ymf744 ymf-754}} || {{yes|USB1.1 only}} || {{N/A}} || {{N/A}} || Icaros 1.5 || little support
|-
| <!--Name-->Tecra 9100 || <!--Chipset-->810 || <!--IDE-->{{Yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{maybe|S3 Savage IX}} || <!--Audio-->{{no|ymf754}} || <!--USB-->USB 1.1 || <!--Ethernet-->eeee pro100 || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->PSU Adapter For Toshiba Tecra 9000 9100 A1 A10 A11 A3 A3X A4 A5 A7 M1 M2 M3 M4 M5 M7 M9 R10 S1 series 75 Watt 15V 5A
|-
| [http://tuxmobil.org/toshiba_sp4600.html Satellite Pro 4600] || i810 || IDE || {{N/A}} || {{maybe|Trident Cyber Blade XP (VESA only)}} || {{no|YAMAHA DS-XG AC97 ymf754}} || {{yes|USB}} || {{yes|Intel e100}} || {{no|Agere (internal PCMCIA)}} || || little support
|-
| Satellite 2805 S603 || Intel 815 || {{yes|IDE}} || {{N/A}} || {{maybe|nVidia GeForce2 Go}} || {{no|Yamaha Corp YMF 754}} || {{yes|USB}} || {{yes|Intel PRO/100}} || {{dunno}} || || little support
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Satellite A10 S167 S1291 - A15 A20 A25 || <!--Chipset-->P4M || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 852GM or Radeon || <!--Audio--> || <!--USB--> || <!--Ethernet-->RTL 8139 || <!--Wireless-->{{Maybe|Intel 2100, Agere or Atheros PA3399U 1MPC minipci}} || <!--Test Distro--> || <!--Comments-->a few models came with antenna leads
|-
| Satellite [http://eu.computers.toshiba-europe.com/innovation/jsp/SUPPORTSECTION/discontinuedProductPage.do?service=EU&com.broadvision.session.new=Yes&PRODUCT_ID=76230 A30-714] || P4-M / 82845 i845 || {{yes|82801}} || {{N/A}} || {{maybe|VESA}} || {{yes|AC97}} || {{yes}} || {{yes|RTL8139}} || {{N/A}} || Icaros 1.2.4 || nice laptop, drawbacks: heavy, really hot (P4-3.06 GHz!!) - A30 (EU) A33 (Australian) A35 (USA) -
|-
| <!--Name-->Satellite A40 A45 || <!--Chipset-->P4M or Celeron M with Intel 845 865 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 852GME or Radeon 7000 Mobility || <!--Audio-->AC97 Realtek || <!--USB-->USB2.0 || <!--Ethernet--> || <!--Wireless-->Atheros 5002G 5004G - PA3299U mini pci || <!--Test Distro--> || <!--Comments-->2003 32bit - A40 S161 A40-S1611 A40-2701, A45-S120 A45-S1201 S130 S1301 S1501 -
|-
| <!--Name-->Satellite a50 A55 a60-s156 Equium A60 PSA67E A65 || <!--Chipset-->P4M or Celeron M with Intel 845 865 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 852GME or Radeon 7000 Mobility || <!--Audio-->AC97 Realtek || <!--USB-->USB2.0 || <!--Ethernet--> || <!--Wireless-->Atheros 5002G 5004G - PA3299U mini-pci || <!--Test Distro--> || <!--Comments-->2003 32bit -
|-
| <!--Name-->Satellite A70 A75-S206 A80 A85-S107 || <!--Chipset-->P4M or Celeron-M with Intel 845 865 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 852GME or Radeon 7000 Mobility || <!--Audio-->AC97 Realtek || <!--USB-->USB2.0 || <!--Ethernet--> || <!--Wireless-->Atheros 5002G 5004G - PA3299U mini-pci || <!--Test Distro-->Icaros 1.5.1 || <!--Comments-->2003 32bit -
|-
| Toshiba Satellite Pro M30 || intel 855 || {{yes|boots with ATA=nodma option}} || {{N/A}} || {{maybe|VESA}} || {{yes|AC97}} || {{yes|USB2.0}} || {{yes|Intel PRO/100 VE}} || {{dunno}} || Icaros 1.5 || nice laptop with some support
|-
| <!--Name-->Portege M300 - M200 tablet || <!--Chipset-->855GM with 1.2GHz Pentium M 753 || <!--IDE-->{{yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{maybe|VESA 2d only - tablet with nvidia 5200 go}} || <!--Audio-->{{no|AC97 STAC 9750}} || <!--USB-->{{yes}} || <!--Ethernet-->{{yes|Intel PRO 100}} || <!--Wireless-->{{no|Intel PRO Wireless 2200BG}} || <!--Test Distro--> || <!--Comments-->little support
|-
| <!--Name-->Tecra M2 M2-S || <!--Chipset-->Intel 855P Pentium-M || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->nvidia fx go5200 32mb or 64mb agp || <!--Audio-->AC97 1981B || <!--USB--> || <!--Ethernet--> || <!--Wireless-->Intel Pro || <!--Test Distro--> || <!--Comments-->2003 32bit - PSU 15V 5A -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Satellite Pro L20 267 (PSL2YE PSL2XE) PSL25E L30 || <!--Chipset-->Celeron M 370 1.4 1.5GHz, 1.73Ghz with RC410M SB400 || <!--IDE-->{{N/A| }} || <!--SATA-->{{yes|IDE mode}} || <!--Gfx-->{{Maybe|use VESA - Ati x200}} || <!--Audio-->{{No|[https://forums.gentoo.org/viewtopic-t-490297-start-0.html ALC861]}} || <!--USB-->{{Maybe|Boots usb sticks}} || <!--Ethernet-->{{yes|rtl8139 Realtek 8139}} || <!--Wireless-->{{No|Atheros mini-pci should work maybe not working with ATi chipset or need to swap??}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2004 32bit 14" pioneer dvd-rw - 19v
|-
| <!--Name-->Satellite L30 PSL30E L33 PSL33E || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 800 or ATi RC410 x200 || <!--Audio-->AC97 AD1981B or HD Audio ALC861 || <!--USB--> || <!--Ethernet-->realtek 8139 || <!--Wireless-->Atheros or Intel || <!--Test Distro--> || <!--Comments-->L30 PSL30L 101 PSL33E 113 115 134 00M019 -
|-
| Satellite Pro M40 313 psm44e || AMD with Ati || {{yes|boots with ATA=nodma}} || {{N/A}} || {{maybe|VESA}} || {{yes|AC97}} || {{yes|USB2.0}} || {{yes|}} || {{maybe|atheros askey ar5bmb5 mini pci}} || || 2005 32bit - nice laptop with some support
|-
| <!--Name-->Satellite L40 PSL40E PSL40L, PSL43E || <!--Chipset-->945GM with U7700 1.3GHz ULV || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 945 || <!--Audio-->{{No|Intel HD with AD1986A codec}} || <!--USB-->2 USB2.0 || <!--Ethernet-->realtek 8139 || <!--Wireless-->Atheros AR24xx Askey || <!--Test Distro-->Icaros 2.0.3 || <!--Comments-->2006 32bit only - - 12X 13G 139 14B 143 15J 19O -
|-
| <!--Name-->Satellite L45 PSL40U S7409 S2416 || <!--Chipset-->945GM with Celeron M 440 1.86 GHz || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 945 || <!--Audio-->{{No|Intel HD with AD1986A codec}} || <!--USB-->2 USB2.0 || <!--Ethernet-->realtek 8139 || <!--Wireless-->Atheros AR24xx Askey || <!--Test Distro-->Icaros 2.0.3 || <!--Comments-->2006 32bit only -
|-
| <!--Name-->Satellite Pro A100 || <!--Chipset-->940G || <!--IDE--> || <!--SATA--> || <!--Gfx-->Nvidia G72M Quadro NVS 110M GeForce Go 7300 / Ati (PSAA3E)|| <!--Audio-->HD Audio with ALC861 codec || <!--USB--> || <!--Ethernet-->Intel 100 || <!--Wireless-->Intel 3945 swap with atheros || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Satellite A110 159 (PSAB0), Equium A110 (PSAB2E), Satellite A110 233 (PSAB6), || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio-->ALC861 || <!--USB--> || <!--Ethernet-->Realtek 8136 || <!--Wireless-->Atheros || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Satellite Pro A120 PSAC0 PSAC1 PSAC1E || <!--Chipset-->Core Solo GMA 950 to T2300 || <!--IDE--> || <!--SATA--> || <!--Gfx-->GMA 945 || <!--Audio-->ALC262 or AC97 AD1981B || <!--USB-->UHCI EHCI || <!--Ethernet--> || <!--Wireless-->Atheros Ar5001 or Intel or Broadcom || <!--Test Distro--> || <!--Comments-->15V 4A charger -
|-
| <!--Name-->Satellite Pro A120 || <!--Chipset-->Core Duo ATi RS480 + SB450 || <!--IDE--> || <!--SATA--> || <!--Gfx-->use VESA - ATI RC410 Radeon Xpress 200M || <!--Audio-->ALC262 || <!--USB-->OCHI UHCI || <!--Ethernet-->RTL 8139 || <!--Wireless-->Intel 3945 or Atheros Ar5001 || <!--Test Distro--> || <!--Comments-->15v 5a proprietary charger needed
|-
| <!--Name-->Satelite A130 PSAD6U || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet-->Realtek 8101E || <!--Wireless-->Atheros or Intel || <!--Test Distro--> || <!--Comments-->ST1311 s1311 ST1312 S2276 S2386 -
|-
| <!--Name-->Satellite A135 S2686 (Compal LA 3391P) || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet-->Realtek 8101E || <!--Wireless-->Atheros or Intel || <!--Test Distro--> || <!--Comments-->S2246 S2346 S2256 S4477 S4666 S4827 -
|-
| <!--Name-->Satellite A200 PSAE1E (Inventec MW10M) || <!--Chipset-->Pentium M with 945GM Express Celeron M 520 1.6Ghz or Pentium® Core Duo T2130 1.86 GHz || <!--IDE--> {{N/A}}|| <!--SATA--> {{Maybe|SATA}}|| <!--Gfx--> {{Yes|Intel GMA 950 (2D and 3D)}}|| <!--Audio--> {{Yes|HD Audio ALC862}}|| <!--USB--> {{Yes| }}|| <!--Ethernet--> {{yes|RTL8101E rtl8139}}|| <!--Wireless--> {{yes|Atheros 5000 - FN,F5 or FN,F8 or switch}} || <!--Test Distro-->2016 AspireOS 1.8 || <!--Comments-->2006 Excellent 32 bit support! - make sure that your WLAN card is enabled, do this using the hardware switch and FN+F8 key combination
|-
| <!--Name--> A210, Satellite A215 AMD (Inventec 10A) S5808 || <!--Chipset--> Ati with SB690 || <!--IDE--> {{N/A}}|| <!--SATA-->{{Maybe|SATA}}|| <!--Gfx-->{{Maybe|use VESA HD2600 Mobility M76}} || <!--Audio-->HD Audio ALC268 || <!--USB--> {{Yes| }}|| <!--Ethernet-->{{yes|RTL8101E}}|| <!--Wireless--> {{yes|Atheros 5000}}|| <!--Test Distro-->2018 AspireOS 1.8 || <!--Comments-->A215-S7422 A215-S7472 A215-S4697 (USA) -
|-
| <!--Name--> [http://www.amiga.org/forums/showthread.php?t=62036 A215 S4757] || <!--Chipset--> Ati X1200 with SB600 || <!--IDE--> {{N/A}}|| <!--SATA-->{{Maybe|SATA}}|| <!--Gfx-->{{Maybe}} || <!--Audio-->HD Audio || <!--USB--> {{Yes| }}|| <!--Ethernet-->{{yes|RTL8101E}}|| <!--Wireless--> {{yes|Atheros 5000}}|| <!--Test Distro-->2017 AspireOS 1.8 || <!--Comments-->
|-
| <!--Name-->Qosmio G30 (PQG31C-HD202E) || <!--Chipset-->945 with Duo T2500 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{yes|Nouveau Nvidia Go 7600 2d and 3d}} || <!--Audio-->{{yes| }} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2006 32bit - 17" UXGA 1920x1200,
|-
| <!--Name-->Tecra A10 || <!--Chipset--> || <!--IDE--> {{N/A}} || <!--SATA--> {{Maybe|IDE mode}} || <!--Gfx--> {{Maybe|Intel GMA 4500M (2D)}} || <!--Audio--> {{Yes|HD Audio}} || <!--USB--> {{Yes|USB 2.0}} || <!--Ethernet-->{{No|Intel PRO 1000}} || <!--Wireless-->{{No|Intel WiFi Link 5100}} || <!--Test Distro--> || <!--Comments-->64 bit possible
|-
| <!--Name-->L35 - L40 PSL48E - L45 S7423 || <!--Chipset-->GL960 with Intel Celeron || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|X3100 some 2D but software 3d tunnel 9 gearbox 4}} || <!--Audio-->{{Yes|HD Audio with ALC660 codec playback}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{Yes|REALTEK 8139}} || <!--Wireless-->{{No|Realtek 8187b replace with Atheros 5k}} || <!--Test Distro-->2017 Icaros 2.1.2 || <!--Comments-->1,73Ghz M 520 or M 540 or Dual T2310 (1.46 GHz) T2330 (1.6 GHz) - 14H 14N 15B 17H 17K 17R 17S 18Z -
|-
| <!--Name-->Satellite a300 - inventec potomac 10s pt10s A300D 21H || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->ATI Mobility Radeon HD 3650 || <!--Audio-->HD Audio - Realtek || <!--USB--> || <!--Ethernet-->Realtek 8102E || <!--Wireless-->Atheros 5005 || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->satellite L300D-224 PSLC8E PSLC9E, l305 (inventec ps10s) || <!--Chipset-->AMD M780 with Turion RM70 or QL-64 || <!--IDE--> {{yes|IDE}} || <!--SATA--> {{yes|SATA}} || <!--Gfx--> {{Maybe|use VESA for Radeon 3100}} || <!--Audio-->{{maybe|HD Audio with Realtek ALC268}} || <!--USB--> {{yes|USB 2.0}} || <!--Ethernet--> {{no|rtl8169 Realtek RTL8101E RTL8102E}} || <!--Wireless-->{{no|Atheros G XB63L or Intel or Realtek}} || <!--Test Distro--> Icaros Desktop Live 2.3 AROS One 2.3 || <!--Comments--> Wireless-handler crashing when using Atheros-Wireless-Card
|-
| <!--Name-->Satellite P300 (PSPC0C-01D01C) || <!--Chipset-->945GM with Intel Core 2 Duo T5750 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{maybe| }} || <!--Audio-->{{No| codec}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{No| swap with Atheros 5k }} || <!--Test Distro-->AROS One 64bit || <!--Comments-->2007
|-
| <!--Name-->satellite l300-1bw PSLBDE-005005AR, L300-148 PSLB0E, l300-20D PSLB8E-06Q007EN, l300-294 L300-23L PSLB9E || <!--Chipset-->Intel GM45 + PGA478 socket Celeron 900, Pentium T1600, T2390, T3400 (Socket P) to Core2 Duo T6400 T6670 || <!--IDE--> {{unk|IDE}} || <!--SATA--> {{unk|SATA}} || <!--Gfx--> {{Maybe|use VESA for Intel gma 4500M}} || <!--Audio-->{{maybe|HD Audio with Realtek ALC???}} || <!--USB--> {{unk|USB 2.0}} || <!--Ethernet--> {{unk|rtl8169 Realtek 810xE}} || <!--Wireless-->{{no|Intel or Realtek}} || <!--Test Distro--> || <!--Comments-->2009 64-bit - new unfamiliar Bios called insyde H20 -
|-
| <!--Name-->satellite l350d || <!--Chipset-->AMD Athlon (tm) X2 QL-60 + RS780M || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Radeon HD 3100 || <!--Audio-->HD Audio with Realtek || <!--USB--> || <!--Ethernet-->Realtek || <!--Wireless-->Realtek 8187b || <!--Test Distro--> || <!--Comments-->2009 64bit
|-
| <!--Name-->Satellite L450 12 13 14 || <!--Chipset-->AMD Sempron, 2.1GHz with AMD RS780M || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Radeon HD 3200 (based on HD 2400) || <!--Audio--> || <!--USB--> || <!--Ethernet-->Realtek RTL8101E RTL8102E || <!--Wireless-->Realtek 8172 || <!--Test Distro--> || <!--Comments-->2009 64bit - 12X 13P 13X 14V PSLY6E00C006EN
|-
| <!--Name-->Satellite Pro L450 (Compal LA-5821P) 179 || <!--Chipset-->intel celeron 900 2.20 Ghz no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->intel 4500m || <!--Audio-->HD Audio with codec || <!--USB--> || <!--Ethernet-->RTL8101 /2 /6E PCI Express Gigabit || <!--Wireless-->RTL8191 SEvB || <!--Test Distro--> || <!--Comments-->2009 64bit - 39.6cm (15.6”) Toshiba TruBrite® HD TFT 16:9 768p
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Toshiba Satellite P775, P775-S7320 and P775-10K || <!--Chipset-->Intel Core i5 (2nd Gen) 2430M i7-2630QM || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|Vesa 2D for Intel}} || <!--Audio-->{{maybe| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2011 17.3" - 1600 x 900 (HD+) - 2 DDR3 sodimm max 16Gb -
|-
|<!--Name-->Toshiba Satellite C660D-19X || <!--Chipset-->AMD E-300 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{maybe|Vesa 2D for ATi}} || <!--Audio-->{{no|HD Audio with Realtek codec}} || <!--USB-->{{no| }} || <!--Ethernet-->{{Maybe|r8169 rtl8101e}} || <!--Wireless-->{{no|Realtek RTL8188 8192ce rtl8192ce}} || <!--Test Distro--> || <!--Comments-->2011 64bit -
|-
| <!--Name-->L755D (E-350) L750D (E-450) || <!--Chipset-->AMD E350 E450 no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Radeon HD 6310 6320 || <!--Audio-->HDAudio conexant codec || <!--USB--> || <!--Ethernet--> || <!--Wireless-->Realtek || <!--Test Distro--> || <!--Comments-->2012 64bit
|-
| <!--Name-->Satellite Pro SP C640 C660D-15X (PSC1YE) C670D- () || <!--Chipset-->AMD E350 no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->6310G || <!--Audio-->HD Realtek ALC259 || <!--USB-->USB2 || <!--Ethernet-->Realtek || <!--Wireless-->Broadcom || <!--Test Distro--> || <!--Comments-->2012 64bit
|-
| <!--Name-->C70D-A C75D-A || <!--Chipset-->E1-1200 no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{maybe|AMD HD8330}} || <!--Audio-->{{no|HA Audio CX20751 11Z}} || <!--USB-->{{no| }} || <!--Ethernet-->{{no|Atheros AR8162 alx}} || <!--Wireless-->{{no|Realtek 8188e}} || <!--Test Distro--> || <!--Comments-->2013 64bit -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
|}
====Misc====
[[#top|...to the top]]
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Time 500 Packard Bell EasyOne 1450 1550 || <!--Chipset-->K6-3 500Mhz + VIA MVP4 vt82c686a || <!--IDE-->{{N/A|Issues}} || <!--SATA-->{{N/A}} || <!--Gfx-->Use VESA || <!--Audio-->{{No|VIA AC97 3058 with wolfson codec WM9703 WM9704 WM9707 WM9708 or WM9717}} || <!--USB-->via 3038 2 ports USB 1.1 untested || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{N/A}} || <!--Test Distro-->NB May 2013 || <!--Comments-->2001 32bit grub runs but stalls around [PCI] Everything OK
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Sony Vaio PCG FX201/FX202 FX210/FX215 FX401/FX402 FX404/FX405 972M, FX501/FX502 FX504/FX505 || <!--Chipset-->VIA KT133A KM133 Duron 800Mhz Athlon 1.3Ghz || <!--IDE-->{{partial|boot issue with 2013 kernel VIA [rev 06]}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{partial|ATI Rage Mobility Pro (VESA only)}} || <!--Audio-->{{Yes|VIA AC97 686b [rev 50] AD1881A Ear phone and Mic}} || <!--USB-->{{Maybe|issues}} || <!--Ethernet-->{{Yes|RTL 8139}} || <!--Wireless-->{{N/A}} || <!--Comments-->Nightly 1st March 2013 || <!--Comments-->booting usb pendrive from Plop Boot Loader floppy (no bios USB boot). Can freeze coz hardware issue or a ram slot problem - no support for iLink firewire VT8363/8365 pci - vt82c686b
|-
| <!--Name-->Sony Vaio PCG FX601/FX602, FX604/FX605 FXA53(US), FX701/FX702, FX704/FX705, FX801/FX802 FX804/FX805 || <!--Chipset-->VIA KT133A KM133 Duron 800Mhz Athlon 1.3Ghz || <!--IDE-->{{partial|boot issue with 2013 kernel VIA [rev 06]}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{partial|ATI Rage Mobility Pro (VESA only)}} || <!--Audio-->{{Yes|VIA AC97 686b [rev 50] AD1881A Ear phone and Mic}} || <!--USB-->{{Maybe|issues}} || <!--Ethernet-->{{Yes|RTL 8139}} || <!--Wireless-->{{N/A}} || <!--Comments-->Nightly 1st March 2013 || <!--Comments-->booting usb pendrive somes works
|-
| <!--Name-->Sony Vaio PCG FX100 R505LE || <!--Chipset-->Intel i815 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Use VESA Intel 82815 CGC || <!--Audio-->Intel ICH AC97 with ADI AD1881A codec || <!--USB--> || <!--Ethernet-->Intel e100 || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->PCG-FX105 FX105K PCG-FX108 FX108K PCG-FX109 FX109K FX200 FX203/FX203K FX205 FX205K FX209 FX209K FX220 [http://juljas.net/linux/vaiofx240/ FX240] FX250 FX270 FX290 FX301 FX302 FX340 FX370 FX390 FX403 FX503 FX950
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| Sony VAIO VGN X505VP || Pentium M ULV and Intel 855GM || {{yes}} || {{N/A}} || {{maybe|Intel 855 (VESA only)}} || {{yes|AC97}} || {{yes|USB}} || {{yes|Intel PRO 100 VE}} || {{N/A}} || || 2004 32bit - 0.38 inches at its thinnest point - first laptop to feature a "chiclet" keyboard resemble Chiclets gum -
|-
| <!--Name-->Sony Z505LE Z505JE || <!--Chipset-->P3 || <!--IDE--> || <!--SATA-->n/a || <!--Gfx-->Rage Mobility M1 AGP mach64 || <!--Audio-->no Yamaha DS-XG PCI YMF744 || <!--USB--> || <!--Ethernet-->Intel 8255x based PCI e100 || <!--Wireless-->n/a || <!--Test Distro--> || <!--Comments-->2004 32bit -
|-
| <!--Name-->Panasonic Toughbook CF-18 || <!--Chipset-->Core || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{yes|gma for i915}} || <!--Audio-->{{yes|AC97 SigmaTel}} || <!--USB-->{{yes|usb2 }} || <!--Ethernet-->{{yes|RTL 8139C}} || <!--Wireless-->{{no|Intel swap for atheros 5k}} || <!--Test Distro-->Deadwoods' D02 test || <!--Comments-->2003 32bit
|-
| <!--Name-->Panasonic Toughbook CF-29 CF-30 || <!--Chipset-->Core || <!--IDE--> || <!--SATA--> || <!--Gfx-->use VESA || <!--Audio-->AC97 SigmaTel || <!--USB--> || <!--Ethernet-->RTL 8139C || <!--Wireless-->Intel || <!--Test Distro--> || <!--Comments-->2003 32bit
|-
| <!--Name-->MSI Microstar PR210 || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA ATi RS690M}} || <!--Audio-->{{Yes|HD Audio through speaker / head phones but not hdmi}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{yes|Realtek 8111 8169}} || <!--Wireless-->Atheros AR242x AR542x aw-ge780 mini pci-e || <!--Test Distro-->2017 Icaros 2.1.2 || <!--Comments-->2004 32bit - ENE PCI based SD card with no bios boot option
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Advent 7106 EAA-88 || <!--Chipset-->Pentium M 1.7GHz with 915GM || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Yes|2D and 3D tunnel 187 gearbox 67}} || <!--Audio-->{{Yes|AC97 Intel ICH6 with Conexant Cx20468 31 codec playback head phones only}} || <!--USB--> || <!--Ethernet-->{{Yes|Realtek 8169}} || <!--Wireless-->{{No|Intel 2200BG Fn/F2 replaced with atheros mini pci in small base panel - startup errors in wireless manager}} || <!--Test Distro-->2017 Icaros 2.1.1 || <!--Comments-->2005 32bit 14" cheap rubbish sadly - fan noise through audio channel -
|-
| <!--Name-->Motion Computing LE1600 PC Slate || <!--Chipset-->915 || <!--IDE--> || <!--SATA--> || <!--Gfx-->915 || <!--Audio-->Intel AC97 SigmaTel STAC9758 9759 || <!--USB--> || <!--Ethernet-->Realtek 8169 || <!--Wireless-->Intel PRO Wireless 2200BG || <!--Test Distro--> || <!--Comments-->2005 serial Wacom digitiser not usb
|-
| <!--Name-->Panasonic Toughbook CF-51 CF-P1 CF-T5 CF-Y2 || <!--Chipset-->945GMS || <!--IDE--> || <!--SATA--> || <!--Gfx-->GMA 950 || <!--Audio-->HD Audio || <!--USB--> || <!--Ethernet-->Broadcom || <!--Wireless-->Intel || <!--Test Distro--> || <!--Comments-->2006 32bit
|-
| <!--Name-->Sony Vaio VGN-AR11S || <!--Chipset-->ntel Core Duo T2500 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{yes| Nvidia Go 7600}} || <!--Audio-->{{yes| }} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{No| }} || <!--Test Distro-->Aros One 32bit || <!--Comments-->2006 32bit - 17" 1920x1200 - blu-ray -
|-
| Sony Vaio VGN SR29VN || Intel ICH9 || {{N/A}} || {{maybe|IDE legacy}} || {{partial|ATI HD 3400 (VESA only)}} || {{partial|HD Audio (too quiet)}} || {{yes|USB1.1 and USB2.0}} || {{no|Marvell 8040}} || {{no|Intel 5100}} || Icaros 1.5 || 2007 32bit -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Wyse XM Class DELL WYSE Xn0m LAPTOP || <!--Chipset-->AMD T-G56N 1.6 1.65Ghz || <!--IDE-->{{N/A| }} || <!--SATA-->decased 2.5in ssd || <!--Gfx-->{{Maybe|Vesa 2d only AMD 6320}} || <!--Audio-->{{Maybe| }} || <!--USB-->{{Maybe|EHCI 2.0 with NEC uPD720200 USB 3.0}} || <!--Ethernet-->{{Yes|Realtek rtl8169 8111E}} || <!--Wireless-->{{No|Atheros 93xx}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - 1366 x 768 14" - 2 ddr3l slots max 16gb - 19v coax barrel plug psu -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->MSI Ge40 Ge60 || <!--Chipset-->Intel 4 || <!--IDE--> || <!--SATA--> || <!--Gfx-->GTX 860M || <!--Audio--> || <!--USB--> || <!--Ethernet-->{{no|Killer}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2014 64bit -
|-
| <!--Name-->MSI GE62 2QF Apache Pro || <!--Chipset-->Intel 5 || <!--IDE--> || <!--SATA--> || <!--Gfx-->GTX 970M || <!--Audio--> || <!--USB--> || <!--Ethernet-->{{no|Killer }} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2015 64bit -
|-
| <!--Name-->MSI GS65 Stealth || <!--Chipset-->i7-8750H and later i7-9750H || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->GeForce GTX 1060 or 1070 Max Q, GTX 1660 Ti, RTX 2080 Max-Q || <!--Audio-->{{unk|HDAudio }} || <!--USB-->{{unk|US3}} || <!--Ethernet-->{{No| }} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2018 64bit -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Gigabyte P35X || <!--Chipset-->Intel || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->GTX 980M || <!--Audio-->HDaudio || <!--USB-->USB3 || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2014 64bit -
|-
| <!--Name-->Panasonic Toughpad FZ-G1 MK2 || <!--Chipset-->Core i5-3437U, 1.9GHz || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet-->{{N/A}} || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2014 64bit -
|-
| <!--Name-->ToughPad FZ-G1 Mk3 || <!--Chipset-->Intel Core i5-4310U || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->Intel HD 4400 || <!--Audio-->HDaudio Codec ALC255 || <!--USB--> || <!--Ethernet-->{{N/A}} || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2015 64bit -
|-
| <!--Name-->[https://wiki.recessim.com/view/Panasonic_Toughpad_FZ-G1_MK4 Panasonic Toughpad FZ-G1 MK4] || <!--Chipset-->intel 6300U || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->Intel 520 || <!--Audio-->HDaudio with ALC256 codec - o/c or s/c fails early || <!--USB-->{{maybe|USB3 but options on the right hand side of screen case}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|intel ac 8260}} || <!--Test Distro--> || <!--Comments-->2016 64bit - 10.1in 1600x1200 - 4gb ddr3l soldered - waterproof pen left hand side base - optional slot-in 4g lte and sdhc - 16v 4.06A 64.96W panasonic barrel -
|-
| <!--Name-->Panasonic Toughpad FZ-G1 MK5 || <!--Chipset-->intel i5-7300U || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->Intel 620 || <!--Audio-->HDaudio ALC295 codec - o/c or s/c fails early || <!--USB-->{{maybe|USB3 but optional usb2 plugin r.h.s. of screen casing}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|Intel}} || <!--Test Distro--> || <!--Comments-->2018 64bit - 8gb ddr3l soldered - 10.1" WUXGA 1920 x 1200 with LED backlighting screen 2-800 nit - 10-point capacitive multi touch + Waterproof Digitizer pen l.h.s -
|-
| <!--Name-->ToughPad FZ-M1 || <!--Chipset-->Intel® Core TM m5-6Y57 vPro TM || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->Intel HD 4200 || <!--Audio-->HDaudio with ALC codec || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2016 64bit - 7in 800p - 8gb ddr3l soldered -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Any Razor Razer laptops || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->AVOID unable to remove secure boot
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
===Netbook===
[[#top|...to the top]]
* PC to write Aros image onto an USB pendrive with Raspberry PI writer, USB writer or Rufus for boot purposes on a netbook
* SD card sometimes can boot like Dell 2100, EeePC 1001P, ASUS EeePC 900, acer aspire one d150, MSI Wind U100,
====Acer Packard Bell Netbooks====
[[#top|...to the top]]
{| class="wikitable sortable" width=100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| Aspire One AOA110 (A110) (ZG5) || Intel 945GSE || {{N/A}} || {{Maybe|IDE legacy mode}} || {{Yes|Intel GMA (2D and 3D) tunnel 99 and gearbox 84 score}} || {{Yes|HD Audio ALC6628}} || {{Yes|USB1.1 and USB2.0}} || {{Yes|rtl8169 RTL8101E}} || {{Yes|AR5006}} atheros 5k || 2016 AspireOS 1.8, 2025 Aros One 2.6 32bit USB || 2007 32bit 1 core - 19v barrel A13-045N2A 19V2.37A 45W 5.5x1.7mm -
|-
| Aspire One AOA150 (A150) (ZG5) || Intel 945GSE || {{N/A}} || {{Maybe|ide mode}} || {{Yes|Intel GMA 2D and accelerated 3D with tunnel 99 and gearbox 84.1 result}} || {{Yes|HD Audio ALC6628}} || {{Yes|uhci and ehci}} || {{Yes|rtl8169 RTL8101E}} || {{Yes|AR5006}} atheros 5k || 2016 AspireOS 1.8, 2025 aros one 2.6 32bit USB || 2007 32bit 1 core - 19v barrel -
|-
| Aspire One AOD150 D150 (Compal LA-4781P), AOD110 D110 (ssd) || Intel 945GME || {{N/A}} || {{Maybe|ide legacy}} || {{Yes|Intel GMA 950 (2D)}} || {{Yes|HDAudio with alc272}} || {{Yes|USB}} || {{No|Atheros AR8121 AR8113 AR8114 l1e}} || {{Maybe|AR5007EG AR5BXB63 works but Broadcom BCM4312 has no support}} || 2010 Icaros Desktop 1.3, 2024 Aros one 32bit USB || 2008 32bit 1 core - 19v barrel -
|-
| Aspire One (ZG8) || Intel 945G and N270 || {{N/A}} || {{Maybe|ide mode}} || {{Yes|Intel GMA 2D and accelerated 3D}} || {{maybe|HD Audio }} || {{Yes|uhci and ehci}} || {{No|Broadcom }} || {{no|Intel}} || 2014 AspireOS 1.8 || 2009 32bit -
|-
| Aspire One AOD250 D250 emachines em250 || 945GME || {{N/A}} || {{Maybe|ide legacy}} || {{Yes|Intel GMA (2D)}} || {{Yes|alc272 HD Audio}} || {{Yes}} || {{No|AR8132 (L1c)}} || {{No|BCM4312 or Atheros AR5B95}} || 2010 Icaros 1.3 || 2009 32bit 1 core - 19v barrel -
|-
| <!--Name-->Aspire AO532H (Compal LA-5651p) 533H Pineview || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio-->{{Yes|HD Audio playback}} || <!--USB--> || <!--Ethernet-->{{No|AR8132 (L1c)}} || <!--Wireless-->{{No|Atheros 9k}} || [http://www.amigaworld.net/modules/news/article.php?mode=flat&order=0&item_id=5968 Tested AspireOS June 2011] || <!--Comments-->
|-
| <!--Name-->emachines eM350 NAV51 || <!--Chipset--> with N450 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 3150 || <!--Audio-->HD Audio with codec || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro-->Icaros 2.2 || <!--Comments-->Single core 64bit - 160GB HDD 1GB RAM 10.1" LED backlit screen and Webcam - 3 cell li-ion battery for 3 hours usage -
|-
| <!--Name-->emachines eM355 || <!--Chipset--> with N455 || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->64bit support possible -
|-
| <!--Name-->Aspire One 533 || <!--Chipset-->N455 with NM10 || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes}} || <!--Gfx-->{{Yes|2D 0x8086 0xa011}} || <!--Audio-->{{Yes| ALC272 codec ich7}} || <!--USB-->{{Yes}} || <!--Ethernet-->{{No|Atheros AR8152 v1.1 1c}} || <!--Wireless-->{{No|Broadcom 4313}} || <!--Test Distro-->2016 Icaros 2.1 and AROS One 2.3 || <!--Comments-->2011 64bit - f2 setup - 10.1inch 1024 x 768 -
|-
| Aspire One AOD255 AOD255e AOD260 AOHAPPY (Compal LA-6221P) || N570 and Nm10 || {{N/A}} || {{Maybe|SATA}} || {{Maybe|Intel GMA 3150}} || Audio || USB || {{No|Atheros AR8152 V1.1 (1lc)}} || {{No|Broadcom BCM4313}} || || a little support
|-
| Aspire One 522 AO522 (Compal LA-7072p) || 1GHz dual C-50 C50 or C-60 C60 + Hudson M1 || {{N/A}} || SATA || AMD 6250 (ATI 9804) or 6290 || ATI SB CX20584 HD Audio || USB || Atheros 8152 v2.0 l1c || {{No|Broadcom BCM4313 or Atheros ath9k}} || ||
|-
| <!--Name-->AAOD270 Aspire One D270 || <!--Chipset-->N2600 Cedarview || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes| }} || <!--Gfx-->{{Yes|2D on Intel GMA 3650}} || <!--Audio-->{{Yes| }} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{Yes|RTL 8169 RTL8101E}} || <!--Wireless-->{{No|Broadcom BCM4313 but swap for Atheros 5k}} || <!--Test Distro--> || <!--Opinion-->2011 64bit atom - ddr2 so-dimm 2gb max -
|-
| <!--Name-->Aspire One AO532G (Compal LA-6091p) || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Aspire One D257 (Quanta ZE6) || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Acer Aspire One 722 AO722 P1VE6 || <!--Chipset-->AMD C-60 C60 with SB900 || <!--IDE-->{{N/A| }} || <!--SATA--> || <!--Gfx-->{{Maybe| use VESA Ati 6290}} || <!--Audio-->{{Yes|HD Audio with codec but no Wrestler HDMI output}} || <!--USB--> || <!--Ethernet-->{{No|Qualcomm Atheros AR8152 v2.0}} || <!--Wireless-->{{unk|Atheros AR9485}} || <!--Test Distro-->2017 Icaros 2.1.2 || <!--Comments-->
|-
| <!--Name-->Aspire One AO721 (Wistron SJV10-NL) || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->AO751 AO751H (Quanta ZA3) || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Packard Bell Dot .S || <!--Chipset-->N280 + || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|legacy}} || <!--Gfx-->{{yes|Intel GMA950 (2D)}}|| <!--Audio-->HD Audio ALC272X || <!--USB--> USB2.0 || <!--Ethernet--> {{no|Atheros l1e}} || <!--Wireless-->{{no|Atheros 9k}} || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Packard Bell Dot .SE || <!--Chipset-->N450 + || <!--IDE-->{{N/A}} || <!--SATA-->legacy || <!--Gfx-->Intel GMA950 (2D) || <!--Audio-->HD Audio ALC|| <!--USB-->USB2.0 || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Packard Bell Dot .S2 NAV50 || <!--Chipset-->N455 NM10 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Intel X3150 || <!--Audio-->HD Audio ALC269 || <!--USB--> || <!--Ethernet-->Atheros || <!--Wireless-->Atheros || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Packard Bell Dot M/A || <!--Chipset-->1.2GHz Athlon L110 + RS690E || <!--IDE-->{{N/A}} || <!--SATA-->legacy mode? || <!--Gfx-->AMD ATI Radeon Xpress X1270 (VESA only) || <!--Audio-->HD Audio ATI SBx00 || <!--USB--> || <!--Ethernet-->Realtek RTL8101E RTL8102E rtl8169 || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro--> || <!--Opinion-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Asus Netbooks====
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| [http://wiki.debian.org/DebianEeePC/Models eeePC] 700 701 2G 4G 8G Surf || Intel 910GML + ICH7 || {{N/A}} || {{Maybe|IDE legacy mode}} || {{Yes|Intel GMA 900 2D and 3D tunnel 68 gearbox 43 on 701 800x480}} || {{Yes|ALC662 HD Audio}} || {{Yes|UHCI and EHCI}} || {{No|Atheros L2}} || {{Yes|Atheros 5k AR5007EG (AR2425 works}} || 2016 Icaros 2.1.1, 2.1.2, Aros One 2.5 32bit USB, || 2007 32bit - power supplies fail due to bad caps issue 9.5V 2.5A 24W Charger AD59930 4.8*1.7MM -
|-
| [http://wiki.debian.org/DebianEeePC/Models eeePC] 701SD || Intel 910GML + ICH7 || {{N/A}} || {{Maybe|IDE legacy mode}} || {{Maybe|Intel GMA 900 (2D)}} || {{Yes|ALC662 HD Audio}} || {{Yes|UHCI and EHCI}} || {{No|Atheros L2}} || {{No|RTL8187SE swap with Atheros 5k}} || 2014 AspireOS 1.7, || 2007 32bit - boot issues but does boot with ATA=32bit,nopoll or ATA=nodma,nopoll
|-
| [http://wiki.debian.org/DebianEeePC/Models eeePC] 900 || Intel 910GML + ICH7 || {{N/A}} || {{Maybe|IDE legacy mode}} || {{Maybe|Intel GMA 900 (2D, 3D in some models)}} || {{Yes|ALC662 HD Audio}} || {{Yes|UHCI and EHCI}} || {{No|Atheros L2}} || {{Maybe|depends on chipset AR5007EG (AR2425) works but not RaLink}} || 2014 AspireOS 1.7, || 2008 32bit - boot issues but does boot with ATA=32bit,nopoll or ATA=nodma,nopoll. 900's may need BIOS upgrade to boot usb optical drives. 3D available in some model revisions - AD59230 9.5v 2.31a psu -
|-
| eeePC 900A || 945GSE || {{N/A}} || {{Maybe|IDE legacy mode}} || {{Yes|Intel GMA 950 (3D)}} || {{Yes|HD Audio ALC269}} || {{Yes|USB2.0}} || {{No|Atheros L1e [1969 1026]}} || {{Yes|Atheros 5k AR242x}} || Nightly Build 2012, 2023 Aros One 32bit 2.4 || 2009 32bit
|-
| eeePC 901 1000 || 945GM || {{N/A}} || {{Maybe|IDE legacy mode}} || {{yes|Intel GMA 950 (2D)}} || {{Yes|ALC269 HD Audio}} || {{Yes|USB}} || {{No|Atheros L1E (AR8121 AR8113 AR8114)}} || {{No|RaLink Device 2860 swap with Atheros 5k}} || 2011 Icaros 1.4, || 2009 32bit - 12v 3a psu -
|-
| eeePC Seashell 1000HA 1000HE 1008 1005HA || N280 + Intel GMA950 || {{N/A}} || SATA || {{Yes|Intel GMA (2D)}} || {{Yes|HD Audio ALC269}} || {{Yes|USB}} || {{Maybe|Realtek but not Atheros AR8132 (L1c)}} || {{unk|Atheros AR9285}} || 2014 Aspire OS 1.6, || 2010 32bit - 12v 3a psu -
|-
| <!--Name-->eeePC 1001ha || <!--Chipset-->GMA945 || <!--IDE-->{{N/A}} || <!--SATA-->legacy || <!--Gfx-->Intel GMA 950 (2D) || <!--Audio-->ALC269 HD Audio || <!--USB--> || <!--Ethernet-->{{No|Attansic Atheros AR8132 l1c}} || <!--Wireless-->{{No|RaLink RT3090 swap with Atheros 5k}} || <!--Test Distro-->untested || <!--Opinion-->2010 32bit
|-
| eeePC 1001P T101MT 1005PX 1005PE 1015PE Pineview 1001PXD || NM10 and N450 N455 CPU || {{N/A}} || {{Maybe|IDE mode}} || {{Yes|Intel GMA 3150 (2D)}} || {{Yes|HD Audio}} || {{Yes|USB 2.0}} || {{No|Atheros AR8132 (l1c)}} || {{unk|Atheros AR928x 802.11n}} || 2010 Icaros 1.3.3, || 2011 64bit - 19V 2.1A 2.3x0.7 -
|-
| EeePC 1015B 1215B || single C-30 C30 or dual C-50 C50 + Hudson M1 || {{N/A}} || SATA || {{partial|AMD 6250 (VESA only)}} || ATI SBx00 HD Audio || USB || {{No|AR8152 v2.0 atl1c}} || {{No|Broadcom BCM4313 [14e4 4727]}} || untested recently || 2011 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->Flare X101CH Cedarview || <!--Chipset-->N2600 + N10 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Intel GMA 6300 || <!--Audio--> || <!--USB--> || <!--Ethernet-->{{No|Atheros l1c 2.0}} || <!--Wireless-->{{unk|Atheros 9k AR9285}} || <!--Test Distro--> || <!--Comments-->2012 64bit
|-
| <!--Name-->Flare 1025CE 1225CE || <!--Chipset-->N2800 + N10 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{dunno|Intel GMA 3600}} || <!--Audio--> || <!--USB--> || <!--Ethernet-->{{No|Atheros l1c 2.0}} || <!--Wireless-->{{unk|Atheros 9k AR9285}} || <!--Test Distro--> || <!--Comments-->2012 64bit
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Dell Netbooks====
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| Inspiron 910 Mini 9 PP39S Vostro A90 || GMA945 || {{Maybe|STEC 8G 16G 32G IDE PATA Parallel ATA miniPCIE SSD 50MM / 70MM very slow}} || {{N/A| }} || {{yes|Intel GMA 2D and 3D opengl1}} || {{yes|ALC268 HD Audio}} || {{yes|USB2 boots and works}} || {{yes|rtl8169 Realtek RTL8102E}} || {{no|Broadcom BCM4310 and 4312 swap with atheros 5k bx32}} || ICAROS 1.3 but Icaros 2.3 (pci issues), AROS One 2.6 and Tiny AROS (digiclock startup) mouse cursor vanishes || 2008 32bit - 9inch 1024x600 screen - 1 ddr2 sodimm slot max 2gig - 19v 1.58a - 0 boot disk select - cr2032 battery under laptop base cover, while mem 2GB max under base flap -
|-
| <!--Name-->Inspiron Mini 10 1010 PP19S || <!--Chipset-->Atom Z520 Z530 Intel US15W Poulsbo || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{maybe|Intel GMA 500 (VESA only)}} || <!--Audio-->{{Maybe|HD Audio ALC269 codec}} || <!--USB--> || <!--Ethernet-->{{yes|rtl8169 RTL8102E}} || <!--Wireless-->{{no|Intel or BCM4312}} || <!--Test Distro-->untested || <!--Comments-->2008 32bit - 10.10 inch 16:9, 1366 x 768 glossy - 28whr or 56wHr battery options -
|-
| [https://wiki.ubuntu.com/HardwareSupport/Machines/Netbooks#Dell%20Mini%2010v%20(Inspiron%201011) Mini 10v 1011] [http://wiki.debian.org/InstallingDebianOn/Dell/InspironMini10v ] || Intel 950 || {{N/A}} || {{maybe|ide legacy mode}} || {{yes|Intel GMA (2D)}} || {{maybe|HDAudio}} || {{yes|USB}} || {{yes|RTL8102E 8103E}} || {{no|Dell 1397 Wireless}} || untested || 2008 32bit -
|-
| <!--Name-->Inspiron Mini 1018 || <!--Chipset-->Intel Atom N455 || <!--IDE-->{{N/A}} || <!--SATA-->{{partial|IDE mode }} || <!--Gfx-->{{yes|Intel GMA 3150 (2D, no VGA output)}} || <!--Audio-->{{partial|HD Audio head phones only - speaker and micro phone do not work}} || <!--USB-->{{yes|USB 2.0}} || <!--Ethernet-->{{yes|RTL8169}} || <!--Wireless-->{{unk|RTL8188CE or AR928X}} || <!--Test Distro-->2011 Icaros 1.5.1, || <!--Comments-->2009 64bit - 1 DDR3 max 2gb -
|-
| Latitude 2100 || Intel Atom N270 N280 1.60Ghz GMA 945GME || {{N/A}} || {{Yes|set to IDE in bios as ahci not working || {{yes|Intel GMA 950 (2D and 3D with tunnel 98 and gearbox 84)}} || {{yes|HD Audio with ALC272 codec}} || {{yes|USB2.0}} || {{No|Broadcom BCM5764M}} || {{No|Intel 5100 or BCM4322 DW 1510 half height mini pcie use small Atheros 5k}} || <!--Test Distro-->2016 AspireOS 1.8, Icaros 2.1.1 and AROS One USB 2.4 || 2009 32bit ddr2 sodimm max 2G - [https://sites.google.com/site/arosaspireone/about-aspire-one Webcam and card reader not working] lcd cable over hinge an issue - f12 bios and boot -
|-
| <!--Name-->Latitude 2110 2120 || <!--Chipset-->N470 1.83Ghz, N455 1.6Ghz, N550 1.5Ghz || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|ATA mode in bios not ahci}} || <!--Gfx-->{{Yes|Intel 3150 2D only}} || <!--Audio-->{{Maybe|HD Audio with ALC269 codec}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No| }} || <!--Wireless-->{{No| swap for Atheros}} || <!--Test Distro-->2014 Icaros 2.3, || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 - ddr2 sodimm
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====HP Compaq Netbooks====
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| HP Mini 2133 || VIA C7-M P4M900 / 8237 VX700 || {{N/A}} || {{maybe|SATA}} || {{maybe|VIA Chrome 9 HC (VESA only)}} || {{no|VT1708/A HD Audio}} || USB || {{no|Broadcom Corp NetXtreme BCM5788}} || {{no|Broadcom Corp BCM4312}} || untested || 2008 32bit -
|-
| HP mini 1000 Mi 2140 ks145ut || N270 + 945GM || {{N/A}} || SATA || <!--Gfx-->{{Yes|Intel GMA 950 (2D and opengl1 3d)}} || <!--Audio-->{{Yes|HD Audio (playback tested)}} || <!--USB-->{{Yes| }} || {{no|Marvell 88E8040}} || {{no|Broadcom Corp BCM4312 hard blocked}} || untested || 2009 32Bit - unable to change wifi card
|-
| <!--Name-->HP Mini 700 702 || <!--Chipset-->N270 + 945GSE || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{Yes|Intel GMA 950 (2D)}} || <!--Audio-->{{Yes|HD Audio IDT 92HD75B (111d:7608, only playback tested)}} || <!--USB-->{{Yes| }} || <!--Ethernet--> || <!--Wireless-->{{No|Broadcom hard locked}} || <!--Test Distro-->untested || <!--Comments-->2009 32bit -
|-
| Compaq HP Mini 110 110-3112sa || 945GM Express || {{N/A}} || {{maybe|IDE mode}} || {{yes|Intel GMA 950 (2D)}} || {{yes|HD Audio IDT STAC 92xx}} || {{yes|USB 2.0}} || {{no|Atheros}} || {{no|Broadcom hard blocked Fn+F12}} || untested || 2009 32bit - unable to change wifi
|-
| HP Mini 200 210 || 945GM NM10 Express || {{N/A}} || SATA || Intel GMA 950 || {{Maybe|HDAudio with }} || USB || RTL8101E RTL8102E || {{no|Broadcom BCM4312 hard locked}} || untested || 2009 32bit -
|-
| HP Mini 311 DM1 (Quanta FP7) || N280 + ION LE || {{N/A}} || SATA || nVidia Geforce ION || {{maybe|HDAudio with }} || USB || eth || {{No|hard locked}} || untested || 2009 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|}
====Lenovo Netbooks====
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| IdeaPad S9 S9e(3G) S10 S10e(3G) || 945GME || {{N/A}} || {{maybe|SATA}} || {{yes|Intel GMA (2D)}} || {{maybe|ALC269 or SigmaTel HD Audio}} || {{yes|USB}} || {{no|Broadcom NetLink BCM5906M}} || {{no|Broadcom BCM4312 hard blocked}} || untested || 2009 32bit -
|-
| IdeaPad S12 || Intel Atom N270 + Nvidia ION LE MCP79 || {{N/A}} || SATA || nVidia C79 ION [Quadro FX 470M] || {{maybe|ALC269 HD Audio}} || USB || {{no|Broadcom}} || {{no|Intel locked down}} || 2012 Icaros 2.0, || 2009 32bit - does not boot - cause unknown
|-
| S10-2 || 945GME and N280 CPU || {{N/A}} || SATA || {{yes|Intel GMA (2D)}} || {{maybe|ALC269 HD Audio}} || {{yes}} || {{yes|rtl8169}} || {{no|Broadcom BCM4312 hard blocked}} || 2011 Icaros 1.3, || 2009 32bit -
|-
| S10-3 || NM410 and N450 CPU || {{N/A}} || SATA || {{yes|Intel GMA 3150 (2D)}} || {{maybe|HD Audio ALC269}} || {{yes|USB}} || {{yes|rtl8169}} || {{no|Atheros 9285 or Broadcom BCM4312 hard blocked}} || 2011 Icaros 1.3, || 2009 32bit -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Samsung Netbooks====
[[#top|...to the top]]
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| [http://www.amigaworld.net/modules/newbb/viewtopic.php?post_id=616910&topic_id=33755&forum=28#616910 NC10] || 945GME || {{N/A}} || {{maybe|SATA}} || {{yes|Intel GMA 950 (2D)}} || {{partial|SigmaTel HD Audio (playback only)}} || {{yes|USB}} || {{maybe|rtl8169 works but not Marvell 88E8040 sky2}} || {{yes|AR5007EG}} || 2011 Icaros 1.4, || 2009 32bit - Nano silver on keyboard and lcd ribbon cable over hinge issues
|-
| [http://www.sammywiki.com/wiki/Samsung_NC20 NC20] || VIA VX800 || {{N/A}} || SATA || {{maybe|VIA Chrome9 (VESA only)}} || ALC272 GR (VT1708A) HD Audio || {{yes|USB}} || {{no|Marvell 88E8040}} || {{yes|Atheros AR5001}} || untested || 2009 32bit -
|-
| NP-N110 NP-N120 || 945GSE || {{N/A}} || SATA || {{yes|Intel GMA 950 (2D)}} || {{yes|ALC272 HD Audio or ALC6628}} || {{yes|USB}} || {{no|Marvell 88E8040}} || {{no|Realtek rtl8187}} || untested || 2009 32bit - Namuga 1.3M Webcam none
|-
| NP-N130 || 945GSE || {{N/A}} || {{yes|SATA in IDE mode}} || {{yes|Intel GMA 2D and opengl 1.x 99.5 tunnel 99 gearbox}} || {{yes|Intel HD with ALC272 ALC269 codec playback}} || {{yes|USB}} || {{yes|RTL 8169.device - 8101e 8102e}} || {{no|rtl 8192se rtl8187 too small an area to swap for atheros 5k}} || untested || 2009 32bit - 10.x inch 1024 x 600 - Namuga 1.3M Webcam - front slide power on and f2 setup bios - keyboard 17.7mm Pitch is made with Silver Nano (Anti-Bacterial) tech - small touchpad - 1 ddr2 2rx16 sodimm slot 2G max - 44Wh
|-
| <!--Name-->Go NP-N310 || <!--Chipset-->N270 + 945GME || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|IDE legacy mode}} || <!--Gfx-->{{yes|Intel GMA 950 (2D)}} || <!--Audio-->{{yes|HD Audio ALC6628}} || <!--USB-->{{yes}} || <!--Ethernet-->{{yes|rtl8169}} || <!--Wireless-->{{yes|Atheros5k}} || <!--Test Distro-->untested || <!--Opinion-->2010 32bit - N280 version changed specs
|-
| NP-N510 || N270 euro N280 uk + ION MCP79 || {{N/A}} || SATA || nVidia C79 ION [Quadro FX 470M] || HD Audio || USB || Marvell 88E8040 || Realtek 8192E || untested || 2010 32bit - does not boot - cause unknown
|-
| NP-N145 Plus || n450 + NM10 || {{N/A}} || {{maybe|IDE legacy mode}} || {{yes|Intel GMA 3150 (2D, no VGA output)}} || {{yes|Realtek HD Audio}} || {{yes|USB2.0}} || {{no|Marvell 88E8040}} || {{unk|Atheros AR9285}} || untested || 2010 some support but often the trackpad does not work
|-
| <!--Name-->NC110 Axx || <!--Chipset-->NM10 || <!--IDE-->{{N/A}} || <!--SATA-->Sata || <!--Gfx--> || <!--Audio-->HDAudio with ALC269 codec A9M22Q2 || <!--USB--> || <!--Ethernet-->{{Maybe|Rtl8169}} || <!--Wireless-->{{No|Broadcom BCM4313 or Atheros}} || <!--Test Distro-->untested || <!--Comments-->2011 64bit -
|-
| NF210 Pineview || n455 or n550 + N10 || {{N/A}} || {{maybe|SATA}} || {{maybe|Intel GMA 3150 (needs retesting, VESA works)}} || {{yes|HD Audio}} || {{yes|USB}} || {{no|Marvell 88E8040}} || Wireless || untested || 2011 64bit - some support
|-
| <!--Name-->NS310 NP-NS310-A03UK || <!--Chipset-->N570 with NM10 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{Maybe|use Vesa 2d }} || <!--Audio-->{{yes| ich7}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{yes|rtl8169 realtek 810xe }} || <!--Wireless-->{{no|bcm4313 }} || <!--Test Distro-->2022 AROS One 2.3, || <!--Comments-->2011 64bit Atom N570 or 1.5 GHz Intel Atom N550 dual core processor, 1 DDR3 sodimm slot memory, a 250GB hard drive, and a 10.1 inch, 1024 x 600 pixel 10.1" W7St - 2300mAh short life -
|-
| <!--Name-->[https://wiki.archlinux.org/index.php/Samsung_N150 N150] NB30 || <!--Chipset-->MN10 || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Yes|Intel GMA 3150 (2D)}} || <!--Audio-->{{No| }} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|Marvell 88E8040}} || <!--Wireless-->{{unk|Atheros AR9285 or Realtek 8192E}} || <!--Test Distro-->untested || <!--Comments-->2011 a little support
|-
| <!--Name-->[http://www.kruedewagen.de/wiki/index.php/Samsung_N220 N210 N220] N230 || <!--Chipset-->N450 + NM10 || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Yes|Intel GMA 3150 (2D)}} || <!--Audio-->HD Audio ALC269 || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|Marvell}} || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro-->untested || <!--Comments-->2011 64bit no sse4.1 or avx -
|-
| <!--Name-->NC110 Pxx Cedarview || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{dunno|Intel GMA 3600}} || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless-->{{No|Intel 6000g}} || <!--Test Distro-->untested || <!--Comments-->2012 64bit
|-
|}
====Toshiba Netbooks====
[[#top|...to the top]]
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->NB100 || <!--Chipset-->945GM || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|legacy}} || <!--Gfx-->{{yes|Intel GMA (2D)}} || <!--Audio-->{{yes|ALC262 HD Audio}} || <!--USB--> || <!--Ethernet-->{{yes|rtl8169}} || <!--Wireless-->{{yes|AR5001}} || <!--Test Distro-->untested || <!--Comments-->2009 32bit -
|-
| <!--Name-->Mini NB200 series NB205 || <!--Chipset-->N280 + GSE945 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|IDE legacy mode}}|| <!--Gfx-->{{yes|Intel GMA (2D)}} || <!--Audio-->ALC272 HD Audio || <!--USB-->{{yes}} || <!--Ethernet-->{{yes|RTL8169}} || <!--Wireless-->{{maybe|AR9285}} || <!--Test Distro-->untested || <!--Opinion-->2009 32bit -
|-
| <!--Name-->Mini 300 series NB305 || <!--Chipset-->N455 with NM10 || <!--IDE-->{{N/A}} || <!--SATA-->legacy || <!--Gfx-->Intel GMA 3150 (2D) || <!--Audio-->ALC272 HD Audio || <!--USB--> || <!--Ethernet-->{{maybe|RTL8101E RTL8102E}} || <!--Wireless-->{{maybe|AR9285}} || <!--Test Distro-->untested || <!--Opinion-->2010 64bit -
|-
| <!--Name-->Mini 500 series NB505 NB520 NB550-10v || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA-->legacy || <!--Gfx-->Intel GMA 3150 (2D) || <!--Audio-->HD Audio || <!--USB--> || <!--Ethernet-->{{maybe|RTL8101E RTL8102E}} || <!--Wireless-->{{no|Realtek 8176 RTL 8188CE}} || <!--Test Distro-->untested || <!--Opinion-->2011 64bit -
|-
| [http://www.notebookcheck.net/Review-Toshiba-NB550D-AMD-Fusion-Netbook.46551.0.html Mini NB550D 10G] 108 (c30) 109 (c50) || C-50 + M1 || {{N/A}} || SATA || AMD 6250 (VESA only) || HD Audio || USB || {{maybe|rtl8169 Realtek 8111e}} || {{maybe|Atheros 9k}} || untested || 2011 64bit Realtek SD card reader
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Misc Netbooks====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="5%" |Wireless
! width="5%" |Test Distro
! width="30%" |Comments
|-
| Cammy's A1600 || GME945 || {{N/A}} || {{maybe}} || {{yes|Intel GMA950 (2D)}} || {{yes|HD Audio playback}} || {{yes}} || {{no|JMC 250/260}} || Wireless || 2010 Icaros 1.2.4, || 2009 32bit -
|-
| <!--Name-->Fujitsu Siemens Amilo Mini Ui 3520 || <!--Chipset-->Intel 945 || <!--ACPI--> || <!--SATA-->{{yes}} || <!--Gfx-->{{yes|Intel GMA (2D)}} || <!--Audio-->ALC269 HD Audio || <!--USB-->{{yes}} || <!--Ethernet-->{{yes|rtl8169}} || <!--Wireless-->{{yes|AR5001}} || <!--Test Distro-->untested || <!--Comments-->2009 32bit -
|-
| Guillemot Hercules eCafe EC-900 H60G-IA], Mitac MiStation and Pioneer Computers Dreambook Light U11 IL1 || Intel 945GME || {{N/A}} || {{maybe}} || {{yes|Intel GMA950 (2D)}} || {{Yes|HD Audio (playback only)}} || {{yes|uhci and ehci}} || {{yes|rtl8169}} || {{no|RAlink RT2860}} || untested || 2009 32bit -
|-
| <!--Name-->Hannspree Hannsnote SN10E2 24 48 || <!--Chipset-->N450 + NM10 || <!--IDE-->{{N/A}} || <!--SATA-->IDE legacy mode || <!--Gfx-->Pineview Intel (2D) || <!--Audio-->ALC HD Audio || <!--USB-->USB2.0 || <!--Ethernet-->Atheros l1c || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro-->untested || <!--Opinion-->2009 32bit -
|-
| MSI Wind U90/U100 || GME945 || {{N/A}} || {{maybe}} || {{yes|Intel GMA 950 (2D)}} || {{partial|HD Audio ALC888s (playback only?)}} || {{yes|uhci 1.1 and ehci 2.0}} || {{yes|rtl8169}} || {{no|RaLink RT2860 RT2700E or rtl8187se (u100x)}} || 2011 Icaros 1.3, || 2009 32bit -
|-
| Advent 4211 || 945GSE || {{N/A}} || {{maybe|IDE legacy mode}} || Intel GMA950 (2D) || ALC HD Audio || USB || rtl8169 || {{no|Intel 3945 ABG}} || untested || 2009 32bit - MSI U100 clone
|-
| <!--Name-->Hannspree Hannsnote SN10E1 || <!--Chipset-->N270 + GMA945 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|IDE legacy mode}} || <!--Gfx-->{{yes|Intel GMA 950 (2D)}} || <!--Audio-->ALC HD Audio || <!--USB-->USB2.0 || <!--Ethernet-->{{yes|Realtek RTL8101E RTL8102E RTL8169}} || <!--Wireless-->{{no|RaLink RT2860}} || <!--Test Distro-->untested || <!--Comments-->2009 32bit MSI U100 clone
|-
| <!--Name--> Vaio VGN-P11Z
| <!--Chipset-->
| <!--IDE--> {{dunno}}
| <!--SATA--> {{N/A}}
| <!--Gfx--> {{Partial|Intel (VESA only)}}
| <!--Audio--> {{no|HD Audio}}
| <!--USB--> {{yes|USB 2.0}}
| <!--Ethernet--> {{no|Marvell}}
| <!--Wireless--> {{unk|Atheros AR928X}}
| <!--Test Distro-->2012 Icaros 2.0.3
| <!--Comments-->2008 32bit Rarely boots!
|-
| <!--Name-->Sony VPC-W11S1E
| <!--Chipset-->N280 with 945GSE
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Yes| }}
| <!--Gfx-->{{yes|Intel GMA950 - hdmi}}
| <!--Audio-->HD Audio with realtek codec
| <!--USB-->3 USB2
| <!--Ethernet-->{{No|Atheros AR8132}}
| <!--Wireless-->{{unk|Atheros AR9285}}
| <!--Test Distro-->untested
| <!--Comments-->2009 32bit - 10.1" 1366 x 768 glossy - 3hr battery life -
|-
| <!--Name-->Archos 10 Netbook || <!--Chipset-->Atom with ICH7 NM10 945GSE || <!--IDE-->{{No }} || <!--SATA--> || <!--Gfx-->GMA 950 || <!--Audio-->HD Audio with ALC662 codec || <!--USB--> || <!--Ethernet-->Realtek 8139 || <!--Wireless--> || <!--Test Distro-->untested || <!--Comments-->2008 32bit -
|-
| <!--Name-->MSI Wind U135 DX MS-N014 || <!--Chipset-->Intel N455 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{Yes|2D only accelerated}} || <!--Audio-->{{No|ALC662 rev 1}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{Maybe|RTL}} || <!--Wireless-->{{No|Atheros AR 9K}} || <!--Test Distro-->2015 Icaros 2.1, || <!--Comments-->2009 32bit - needs noacpi notls added to grub boot line to start up
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
===Desktop Systems===
[[#top|...to the top]]
{| class="wikitable sortable" width="100%"
| <!--OK-->{{Yes|'''Works well'''}} || <!--May work-->{{Maybe|'''Works a little'''}} || <!--Not working-->{{No|'''Does not work'''}} || <!--Not applicable-->{{N/A|'''N/A not applicable'''}}
|-
|}
====Acer====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->[https://www.acer.com/ac/en/ID/content/support-product/486;-; Veriton X270 VTX270] Intel Core 2 Duo ED7400C or Pentium dual-core UD7600C with 630i
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->{{Maybe|Vesa 2d Nvidia 7100 VGA and HDMI connections}}
| <!--Audio-->{{Maybe| with realtek codec}}
| <!--USB-->{{Maybe|4 rear and 5 front}}
| <!--Ethernet-->{{Maybe| nForce}}
| <!--Test Distro-->Icaros 2.3 dvd
| <!--Comments-->2009 64bit capable but would not fully boot, DHCP address timeout too short and failed often. Put in a third party NIC, worked - 1 PCI Express x16 slot and a free PCI x1 slot - internal thin long psu with 12pin -
|-
| <!--Name--> Imedia S1710 with Intel Dual Core E5200
| <!--IDE--> {{Yes|SATA/AHCI}}
| <!--SATA--> {{Maybe|Native IDE}}
| <!--Gfx--> {{Yes|Nvidia nForce 7100}}
| <!--Audio--> {{Yes|Nvidia MCP73}}
| <!--USB--> {{Yes|USB 2.0}}
| <!--Ethernet--> {{No|NVIDIA MCP73 Ethernet}}
| <!--Test Distro--> Nightly Build 14-09-2023, AROS One 2.3
| <!--Comments--> 2009 64-bit - Boot over USB not working on front - 2 DDR2 dual channel max 8GB - DEL for entering Bios - F12 for boot menu - Bus weird, could be reason for Ethernet issue
|-
| <!--Name-->Acer Revo AR1600, R1600 AR3600, R3600, Packard Bell IMAX Mini N3600, ACER Veriton N260G N270G slim nettop subcompact
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe|Native IDE mode, '''when it works''' boots}}
| <!--Gfx-->{{Maybe|Nvidia ION GeForce 9300M - nouveau 3d - '''when it boots''' 400 fps in shell'ed gearbox, 278 in tunnel, 42 in teapot}}
| <!--Audio-->{{Maybe|HD Audio with alc662 codec but nothing from HDMI audio}}
| <!--USB-->{{Maybe|Nvidia USB boot usb2 stick issues and slower with usb3 drives}}
| <!--Ethernet-->{{No|MCP79 nForce}}
| <!--Test Distro-->ArosOne 32bit very often boot stuck around ehciInit, 64bit ...
| <!--Comments-->2009 64bit does not support AVX or SSE 4.1 Intel Atom 230 N280 - 20cm/8" high 1 ltr noisy fan - DEL setup F12 boot options - 2 ddr2 sodimm slots max 4GB - 19v special barrel size 5.5mm/1.7mm psu - 2 ddr2 sodimm slots max 4GB - atheros 5k AR5BXB63 wifi - 3 wire CMOS coin battery -
|-
| <!--Name-->Revo AR3610 R3610 3610 Atom 330 nettop subcompact dual core
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe|Native IDE mode, '''when it works''' boots}}
| <!--Gfx-->{{Maybe|Nvidia ION GeForce 9400M LE MCP79MX 0x10de 0x087d - nouveau 3d - '''when it boots''' 400 fps in shell'ed gearbox, 278 in tunnel, 42 in teapot}}
| <!--Audio-->{{Yes|HD Audio with Realtek alc662 rev1 alc662-hd later ALC885 codec but nothing from HDMI audio}}
| <!--USB-->{{Maybe|Nvidia USB with 1% chance slow boot with usb2 sticks, more issues with usb3 drives}}
| <!--Ethernet-->{{No|RTL8211CL MCP79 nForce 0x10de 0x0ab0}}
| <!--Test Distro-->AROS One 32bit 1.5, 1.6 and 2.4 usb around ehciInit or Kernel SATA, etc try ATA=off, and 64bit 1.2 USB boot often stuck at device 0x00000000b05228c8 interrrupt by using noacpi noiopica
| <!--Comments-->2010 64bit does not support AVX or SSE 4.1 20cm/8" high 1 ltr noisy fan - non usb hub keyboard - DEL bios setup, F12 BBS POPUP/drive boot - 2 ddr2 sodimm slots max 4GB - 19v barrel psu with smaller inner pin size 5.5mm/1.7mm - replace wifi RT3090 ver c (0x1814 0x3090) with atheros 5k - 3 wire CMOS coin battery -
|-
| <!--Name-->Revo N281G
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe| }}
| <!--Gfx-->{{maybe|GMA 2d for GMA 3100}}
| <!--Audio-->HD audio codec
| <!--USB-->USB2
| <!--Ethernet-->Realtek
| <!--Test Distro-->
| <!--Comments-->2011 64bit does not support AVX and SSE 4.1 Atom D425 - 19v 65w barrel psu thinner inner pin - 2 DDR3L single channel max 4GB - replace wifi RT3090 ver d with atheros 5k mini pci-e - 1lr or 1.5 ltr dvdrw case 209.89 mm, (D) 209.89 mm, (H) 35.35 mm - del enter bios - 3 wire CMOS coin battery -
|-
| <!--Name-->REVO AR3700 R3700 3700 - ACER Veriton N282G
*one long beep with two short - bios damaged
*looping one long two short - video card fault
*two short beeps - CMOS damaged
*got one long and one short beep - board error?
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Yes|IDE ready in Bios
* Known issue, boot into bios, set bios to UEFI and reboot, set bios back to defaults and reboot, blank display, repair with reflash of 8 pin Winbond W25Q socketed bios chip with ch341a using P01.B0L or P01.A4 renamed amiboot.rom}}
| <!--Gfx-->{{Yes|Nvidia ION2 GT218 9400M class 0x10de 0x0a64 with vga fine but hdmi fussy over cable and display port used - 32bit nouveau 2d & 3d gearbox 404 tunnel 292 teapot 48 - 64bit not detected}}
| <!--Audio-->{{Yes|HDA Intel with Realtek ALC662 rev1 codec 0x10ec 0x0662, head phones only but nothing from NVidia HDMI 0x10de 0x000b}}
| <!--USB-->{{Yes|Intel® NM10 Express (NM10 is basically an ICH7 with a die shrink and IDE removed) USB boots usb, installs usb, accesses ok}}
| <!--Ethernet-->{{Yes|rtl8169 Realtek rtl8111g}}
| <!--Test Distro-->AROS one 32bit USB 1.5 and 1.6 and ArosOne 64bit usb 1.2
| <!--Comments-->2011 Atom D525 64bit does not support AVX or SSE 4.1 - 20cm/8" high 1 ltr noisy fan - early 2 ddr2 sodimm slots but later 2 ddr3 sodimm slots 1Rx8 max 4GB - 19v barrel psu thinner pin - replace wifi RT3090 ver d with atheros 5k mini pci-e - cmos 3pin cr2032CL plastic wrapped - del bios f12 boot choice -
|-
| <!--Name-->Revo 70 (RL70) with or without dvdrw
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->6320 or 6310
| <!--Audio-->HD audio ALC662-VCO-GR codec
| <!--USB-->USB2, 1.1 Hudson D1
| <!--Ethernet-->Realtek 8111E
| <!--Test Distro-->
| <!--Comments-->2012 64bit does not support AVX or SSE 4.1 AMD E450 1.65GHz - 19v 65w barrel psu thinner inner pin - 2 DDR3L single channel max 4GB - replace wifi RT3090 ver d with atheros 5k mini pci-e - 1lr or 1.5 ltr dvdrw case 209.89 mm, (D) 209.89 mm, (H) 35.35 mm - del enter bios -
|-
|}
====Asus====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->EEEbox B202
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Intel GMA950
| <!--Audio-->Intel Azalia HDaudio with Realtek ALC662 or ALC888-GR CODEC
| <!--USB-->
| <!--Ethernet-->Realtek 8111 or JM250
| <!--Test Distro-->Icaros
| <!--Comments-->internal 3 types of wifi chipset not supported
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
|}
====Dell====
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name--> Precision 340
| <!--IDE--> {{yes}}
| <!--SATA--> {{n/a}}
| <!--Gfx--> {{n/a}}
| <!--Audio--> {{yes|Intel AC97}}
| <!--USB--> {{yes|USB 1.1 (UHCI)}}
| <!--Ethernet--> {{yes|3Com}}
| <!--Test Distro--> Nightly Build 2014 09-27
| <!--Comments-->
|-
| <!--Name-->Dimension 2400
| <!--IDE-->{{Yes}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{Yes|Intel 82845GL Brookdale G/GE (VESA 640x480 by 16)}}
| <!--Audio-->{{Unk|AC97 with ADI codec}}
| <!--USB-->{{Yes|UHCI EHCI}}
| <!--Ethernet-->{{Maybe|Broadcom 440x 4401}}
| <!--Test Distro-->[http://eab.abime.net/showthread.php?p=832495 Icaros 1.4]
| <!--Comments-->Graphics chipset is capable of higher resolution.
|-
| <!--Name-->Dimension 4600
| <!--IDE-->{{yes}}
| <!--SATA-->{{dunno}}
| <!--Gfx-->{{partial|Intel Extreme (VESA only)}}
| <!--Audio-->{{yes|Intel AC97 (use rear black port)}}
| <!--USB-->{{Yes|UHCI/EHCI}}
| <!--Ethernet-->{{yes|Intel PRO/100}}
| <!--Test Distro-->Icaros 1.5.2
| <!--Comments-->
|-
| <!--Name--> Optiplex 170L
| <!--IDE--> {{yes|IDE}}
| <!--SATA--> {{partial|IDE mode}}
| <!--Gfx--> {{partial|Intel Extreme (VESA only)}}
| <!--Audio--> {{no|Intel AC97}}
| <!--USB--> {{yes|USB 2.0}}
| <!--Ethernet--> {{yes|Intel PRO/100}}
| <!--Test Distro--> {{dunno}}
| <!--Comments-->
|-
| <!--Name--> Optiplex GX260
| <!--IDE--> {{yes|IDE}}
| <!--SATA--> {{N/A}}
| <!--Gfx--> {{partial|Intel Extreme (VESA only)}}
| <!--Audio--> {{yes|Intel AC97}}
| <!--USB--> {{yes|USB 2.0}}
| <!--Ethernet--> {{no|Intel PRO/1000}}
| <!--Test Distro--> Nightly Build 2014 09-27
| <!--Comments-->
|-
| Optiplex GX270
| {{yes|Working}}
| {{partial|IDE mode}}
| {{partial|Intel Extreme (VESA only)}}
| {{yes|Intel AC97}}
| {{yes|USB 2.0}}
| {{no|Intel PRO/1000}}
| Icaros 1.5.2
| <!--Comments-->
|-
| Optiplex GX280
| {{yes|Working}}
| {{partial|IDE mode}}
| {{maybe|Intel GMA (only VESA tested)}}
| {{yes|Intel AC97}}
| {{yes|USB 2.0}}
| {{no|Broadcom}}
| Nightly Build 2014 09-27
| <!--Comments-->
|-
| <!--Name--> Optiplex GX520
| <!--IDE--> {{yes|IDE}}
| <!--SATA--> {{partial|IDE mode}}
| <!--Gfx--> {{yes|Intel GMA}}
| <!--Audio--> {{partial|Intel AC97 (no line-out)}}
| <!--USB--> {{yes|USB 2.0}}
| <!--Ethernet--> {{no|Broadcom}}
| <!--Test Distro--> {{dunno}}
| <!--Comments-->
|-
| <!--Name--> Optiplex 745
| <!--IDE--> {{N/A}}
| <!--SATA--> {{partial|IDE mode}}
| <!--Gfx--> {{partial|Intel GMA (VESA only)}}
| <!--Audio--> {{partial|HD Audio (no volume control)}}
| <!--USB--> {{partial|Only keyboard mouse (legacy mode)}}
| <!--Ethernet--> {{no|Broadcom}}
| <!--Test Distro--> {{dunno}}
| <!--Comments-->
|-
| <!--Name--> Optiplex 755
| <!--IDE--> {{N/A}}
| <!--SATA--> {{partial|IDE mode}}
| <!--Gfx--> {{partial|Intel GMA (VESA only)}}
| <!--Audio--> {{no|HD Audio}}
| <!--USB--> {{yes|USB 2.0}}
| <!--Ethernet--> {{no|Intel Gigabit}}
| <!--Test Distro--> Icaros 1.5.1
| <!--Comments--> Around 25 second delay in booting from USB
|-
| <!--Name--> Optiplex 990
| <!--IDE--> {{N/A}}
| <!--SATA--> {{partial|non-RAID mode}}
| <!--Gfx--> {{partial|Intel HD (VESA only)}}
| <!--Audio-->{{no|HD Audio}}
| <!--USB--> {{yes|USB 2.0}}
| <!--Ethernet--> {{no|Intel Gigabit}}
| <!--Test Distro--> Nightly Build 2014 09-27
| <!--Comments-->
|-
| <!--Name-->Optiplex 360
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{maybe|ordinary boot gives VGA mode only - VESA}}
| <!--Audio-->{{no|HD Audio (Analog Devices ID 194a)}}
| <!--USB-->
| <!--Ethernet-->{{no|Broadcom}}
| <!--Test Distro-->Aspire Xenon
| <!--Comments-->poor support
|-
| <!--Name-->Dell Wyse Vx0 (V90 V30), Vx0L (V10L V90L), Vx0LE (V30LE V90LE) from VIA C7 800GHz to Eden 1.2GHz
| <!--IDE-->{{Maybe| }}
| <!--SATA-->{{N/A| }}
| <!--Gfx-->{{Maybe|Vesa 2d for S3 UniChrome Pro}}
| <!--Audio-->{{No|AC97 VIA VT8233A with ?? codec}}
| <!--USB-->{{yes|2 back and 1 front USB2}}
| <!--Ethernet-->{{Maybe|early models work but later VT6102-3 do not}}
| <!--Test Distro-->AROS One 2.2
| <!--Comments-->2006 to 2009 32bit - 12V 4A Coax 5.5mm/2.1mm - 1 sodimm DDR 333MHz SO-DIMM later DDR2 - early V90s do seem to have a reliability problem -
|-
| <!--Name-->[https://www.poppedinmyhead.com/2021/01/wyse-cx0-thin-client-notes-experiences.html Dell Wyse Cx0] C00LE, C10LE, C30LE, C50LE, C90LE, C90LE7, C90LEW VIA C7 Eden 1GHz
| <!--IDE-->{{Maybe| }}
| <!--SATA-->{{N/A| }}
| <!--Gfx-->{{Maybe|Vesa 2d VX855 VX875 Chrome 9}}
| <!--Audio-->{{Maybe|some VIA VT8237A VT8251 HDA with ?? codec work}}
| <!--USB-->{{yes|4 outside 2 inside USB2}}
| <!--Ethernet-->{{No|VT6120 VT6121 VT6122 Gigabit}}
| <!--Test Distro-->Icaros 2.3
| <!--Comments-->2010 to 2013 32bit - [https://ae.amigalife.org/index.php?topic=815.0 boots and works] - 12V 2.5A Coax 5.5mm/2.1mm - 1 sodimm ddr2 -
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->Dell RxxL Rx0L Wyse thin client
*R00L Cloud PC of Wyse WSM
*R10L Wyse Thin OS
*R50L Suse Linux Enterprise
*R90L Win XP Embedded
*R90LW Win Embedded Standard 2009
*R90L7 Win Embedded Standard 7
| <!--IDE-->128Mb IDE or 1GB
| <!--SATA-->{{Maybe|SATA Hyperdisk}}
| <!--Gfx-->AMD 690E RS690M Radeon Xpress 1200 1250 1270
| <!--Audio-->
| <!--USB-->4 usb2
| <!--Ethernet-->Realtek
| <!--Test Distro-->
| <!--Comments-->2009 64bit AMD Sempron™ 210U SMG210UOAX3DVE 1.5GHz SB600, up to 4GB single slot 240-pin DDR2 DIMM, 19v barrel psu, DEL key bios - Late 2012 2 data sockets added but only CN18 be used with two white sockets (CN13 & CN15) can used to power the SATA device "4-pin Micro JST 1.25mm
|-
| <!--Name-->Optiplex 390 sff small form factor - mt mini tower desktop - dt full desktop
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->{{maybe|1 pci-e}}
| <!--Audio-->{{maybe|HD Audio}}
| <!--USB-->
| <!--Ethernet-->{{maybe|realtek}}
| <!--Test Distro-->aros one 1.6 usb
| <!--Comments-->2011 64bit dual i3 2xxx - kettle iec plug psu cable - add nvidia gf218 gfx - error code 3 mobo or cpu -
|-
| <!--Name-->Optiplex 3010 sff small form factor
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->{{maybe|1 pci-e}}
| <!--Audio-->{{maybe|HD Audio}}
| <!--USB-->{{maybe| }}
| <!--Ethernet-->{{no|Broadcom 57XX}}
| <!--Test Distro-->
| <!--Comments-->2012 64bit dual i3 3xxx - kettle iec plug psu cable -
|-
| <!--Name-->Optiplex 7010 sff small form factor
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->{{maybe|1 pci-e}}
| <!--Audio-->{{maybe|HD Audio}}
| <!--USB-->
| <!--Ethernet-->{{no|Broadcom or Intel 825xx}}
| <!--Test Distro-->
| <!--Comments-->2012 64bit dual i3 3xxx Q77 - kettle iec plug psu cable - add pci-e ethernet and nvidia gf218 gfx -
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->Dell Wyse 5010 thin client ThinOS D class (D10D D00D D00DX, Dx0D), PCoIP (D10DP) or D90D7, 5040
*username: Administrator, admin, [blank]
*password: Fireport, DellCCCvdi, rappot, Wyse#123, Administrator, administrator, r@p8p0r+
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Yes|IDE mode may need 30cm ext cable as small area for half-slim sata ssd - decased new ssd??}}
| <!--Gfx-->{{Maybe|Vesa 2d 1400x1050 HD6250E IGP by using DVI to hdmi cable and 1 display port, no hdmi port}}
| <!--Audio-->{{Maybe|HD 6.34 audio chipset detected but codec alc269 working from one case speaker - none if v6.29 used}}
| <!--USB-->{{Yes|most 5010 have 4 USB 2.0 but D90Q7 has 2 USB3 instead}}
| <!--Ethernet-->{{Yes|rtl8169 Realtek 8168 8169 - rev 1.?? 8111? - rev 1.91 8111E}}
| <!--Test Distro-->Icaros 2.3
| <!--Comments-->2011 64bit no SSE4.1 or AVX slow AMD G-T44R 1.2Ghz later G-T48E 1.4Ghz Dual Bobcat Brazos BGA413 - Del for BIOS - p key to select boot with noacpi - single DDR3 sodimm slot max 4Gb, (8Gb hynix 2rx8 ddr3l)? (remove small board to upgrade) - passive no fan - 15cm/6" small 1ltr case and lack of expansion options - PA16 19v barrel psu Coax 5.5mm/2.5mm
|-
| <!--Name-->Dell Wyse 7010 DTS thin client (Z class Zx0D)
*2011 Zx0 Z90D7 2GF/2GR
*2013 Z10D
*2014 Z50D 2GF/2GR
*2012 Cisco VXC 6000 CVXC-6215-K9 white
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Yes|Bios set Sata mode to IDE mode and grub boot add 'noacpi' for half slim sata2 ssd or/with 50cm sata ext cable}}
| <!--Gfx-->{{Maybe|VESA 2d HD6310 HD6320 Terascale 2 through DVI and sometimes DP 1.1a - no hdmi port}}
| <!--Audio-->{{Maybe|HD Audio 6.34 detected but ALC269VB codec works on the one case speaker only}}
| <!--USB-->{{Yes|2.0 works but NEC 720200 3.0 not working}}
| <!--Ethernet-->{{Yes|rtl8169 Realtek 8169 8111e 8111F}}
| <!--Test Distro-->Icaros 2.3 and Aros One 32bit 1.5, 1.9 and 2.3 usb and 64bit 1.2
| <!--Comments-->2011 64bit does not support AVX or SSE 4.1 slow AMD G-t52R 1.5GHz later G-T56N 1.65 GHz Dual with A50M FCH - 20cm/8" high 1.5ltr larger fanless black plastic case with metal ventilated box inside - 2 desktop DDR3L DIMM slots max 16GB - PA-16 19v external psu Coax 5.5mm/2.5mm - 2 40cm SMA female WiFi Antenna to IPEX IPX u.fl Ufl Cable pigtail needed - does not like uefi boot devices -
|-
| <!--Name-->Wyse 7020 Thin Client
* 2013 Quad-core AMD GX-420CA 2.0 GHz (25W) -
* 2018 Zx0Q Quad-core AMD GX-415GA 1.5 GHz (15W) with Quad display 3dp and 1dvi
| <!--IDE-->{{N/A}}
| <!--SATA-->1 sata port
| <!--Gfx-->{{Maybe|Vesa 2d only for AMD Radeon HD8400E radeonsi (dual display) or AMD Radeon HD 8330E IGP with AMD Radeon E6240 Seymour E6460 (quad display), no hdmi ports}}
| <!--Audio-->
| <!--USB-->4 x USB2.0 works but 2 USB3.0
| <!--Ethernet-->rtl8169 Realtek 8169 8111
| <!--Test Distro-->
| <!--Comments-->2013 64bit does support AVX or SSE 4.1 quad eKabini Jaguar cores - two SODIMM sockets layered in centre of mobo DDR3L RAM - Coax 5.5mm/2.5mm ac psu 9mm plug is too short but 14mm length is fine - 15cm/6" high smaller 1ltr case and lack of expansion options -
|-
| <!--Name-->Dell Wyse Dx0Q (5020) D90Q8 NJXG4 AMD G-Series
| <!--IDE-->{{N/A}}
| <!--SATA-->1 sata port
| <!--Gfx-->HD 8330E
| <!--Audio--> with Realtek codec
| <!--USB-->4 x USB2.0 works but 2 USB3.0
| <!--Ethernet-->rtl8169 Realtek 8169 8111
| <!--Test Distro-->
| <!--Comments-->2014 64bit does support AVX or SSE 4.1 Quad-core AMD GX-415GA 1.5 GHz - 2 layered near edge of mobo 204-pin DDR3L SODIMM (bottom one tricky to insert) - 19v Coax 5.5mm/2.5mm - passive no fan - 15cm/6" high smaller 1ltr case and lack of expansion options
|-
| <!--Name-->Dell Wyse 5060 N07D thin client
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Yes|IDE bios mode for sata2 port}}
| <!--Gfx-->{{maybe|Vesa 2d - AMD R5E GCN2 IGP Sea Islands thru dp1 with an hdmi adapter no output thru dp2 - no hdmi dvi ports}}
| <!--Audio-->{{maybe|HD Audio with Realtek ALC231 codec head phones only}}
| <!--USB-->{{Maybe|4 x USB2.0 works but 2 USB3.0}}
| <!--Ethernet-->{{yes|rtl8169 realtek 8169 8111h}}
| <!--Test Distro-->AROS One 1.6 usb
| <!--Comments-->2017 64bit does support AVX or SSE 4.1 quad GX-424CC 19.5v external psu - CN-0Y62H1 mobo with 2 layered ddr3l 16Gb max sodimm slots at edge of mobo, bottom 0 one blocking - passive no fan so quiet - 15cm/6" high smaller 1ltr case and lack of expansion options -
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
|}
====Fujitsu Siemens====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="15%" |Test Distro
! width="20%" |Comments
|-
| Scenic [http://uk.ts.fujitsu.com/rl/servicesupport/techsupport/ProfessionalPC/Scenic/ScenicE/ScenicE.htm E600] (compact desktop)
|
|
| {{partial|VESA only}}
| {{yes|AC97}}
|
| {{no|Intel PRO/1000}}
| {{dunno}}
| Nice small, silent PC with good AROS support.
|-
| Scenic T i845
| {{dunno}}
| {{n/a}}
| {{n/a}}
| {{dunno|Intel AC97}}
| {{dunno|UHCI}}
| {{dunno|Intel PRO/100}}
| Icaros 1.5.2
| AROS does not boot
|-
| <!--Name-->Futro S200 S210 S220 and later S300
| <!--IDE-->{{yes| compactflash CF card max ??}}
| <!--SATA-->
| <!--Gfx-->{{maybe|VESA Silicon Integrated Systems [SiS] 315PRO PCI/AGP }}
| <!--Audio-->{{unk|AC97 via }}
| <!--USB-->{{unk|via uhci and ehci}}
| <!--Ethernet-->{{unk|via VT6102 [Rhine-II] (rev 74) }}
| <!--Test Distro-->
| <!--Comments-->2008 32bit - TR5670 Rev 1.4 mother with Transmeta TM5800 cpu - pci socket - single SODIMM socket for DDR memory PC2700S max 512MB -
|-
| <!--Name-->Futro S400
| <!--IDE-->{{yes| but swap with compactflash CF card already with AROS installed}}
| <!--SATA-->
| <!--Gfx-->{{maybe|VESA Silicon Integrated Systems [SiS] SiS741CX }}
| <!--Audio-->{{unk|AC97 SiS7018}}
| <!--USB-->{{unk|sis uhci and ehci}}
| <!--Ethernet-->{{unk|rtl8169 }}
| <!--Test Distro-->
| <!--Comments-->2008 32bit - AMD Geode NX1500 1GHz gets hot - SiS 963L / SiS 741CX chipset - 12V 4.2A 4-pin (DP-003-R) psu - single SODIMM socket for DDR PC2700S max 1G - large case 246 x 48 x 177cms torx screws - pci socket -
|-
| <!--Name-->FUJITSU Futro S700 and S900 Thin Client (based on mini-ITX motherboard D3003-A12, D3003-C1 lesser variant of [https://www.parkytowers.me.uk/thin/Futro/s900/TechNotes_V3.1_Mini-ITX_D3003-S.pdf D3003-S])
*G-T56N 1.65GHz
*G-T40N 1.00GHz
*G-T44R 1.20GHz
| <!--IDE-->{{N/A}}
| <!--SATA-->1 sata data socket but mSata 18+8pins 1GB-16GB
| <!--Gfx-->Radeon HD 6320, HD 6250, HD 6290 dvi or displayport (DP runs higher)
| <!--Audio-->HDAudio
| <!--USB-->{{yes|two USB2 front sockets and four on the rear}}
| <!--Ethernet-->{{Maybe|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2011 64bit AMD slow atom-like and fanless - 20V 2A psu 5.5mm/2.1mm coax (S900) - 2 DDR3L SODIMM sockets max 8GB tricky to run 1333 MHz on the Futro S900 - proprietary X2 PCI-e - 1 PCI socket but need a right-angle adaptor -
|-
| <!--Name-->esprimo p420 e85 desktop case
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe|IDE mode}}
| <!--Gfx-->Intel 4600 or old Geforce in pci-e slot
| <!--Audio-->HDAudio realtek alc671 codec
| <!--USB-->USB3
| <!--Ethernet-->rtl8169 8111
| <!--Test Distro-->
| <!--Comments-->2013 64bit - 2 ddr3 dimm slots - 16 pin special psu -
|-
| <!--Name-->esprimo E420 e85+ SFF case
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe|IDE mode}}
| <!--Gfx-->Intel 4600 or low profile pci-e card
| <!--Audio-->HDAudio realtek alc671 codec
| <!--USB-->USB3
| <!--Ethernet-->rtl8169 8111G
| <!--Test Distro-->
| <!--Comments-->2013 64bit - 2 ddr3 dimm slots - 16ish pin special psu - hd under front metal bracket, take front cover off first with 3 tabs - 3 slim pci-e slots -
|-
| <!--Name-->Futro S520 AMD dual 1.0Ghz codenamed "Steppe Eagle"
* GX-210HA @ 1.0GHz
* GX-212ZC @ 1.2GHz
| <!--IDE-->{{N/A}}
| <!--SATA-->no sata - 4Gb or 16Gb flash memory soldered to the board
| <!--Gfx-->AMD Radeon HD 8210E (GX210HA) or AMD Radeon R1E (GX212ZC)
| <!--Audio-->HDAudio
| <!--USB-->
| <!--Ethernet-->rtl8169 rtl8111e
| <!--Test Distro-->
| <!--Comments-->2016 64bit does support AVX or SSE 4.1 - smaller than ITX 160mm x 160mm Fujitsu D3314-A11 - 19V 3.4A PSU standard 5.5mm/2.1mm coax plug - 1 ddr3 sodimm slot -
|-
| <!--Name-->Fujitsu Futro S720 ThinClient D3313-B13 D3313-F
*2014 64bit AMD GX-217GA 1.65GHz VFY:S0720P8009FR VFY:S0720P8008DE VFY:S0720P4009GB
*2015 64bit AMD GX-222GC 2.20GHz VFY:S0720P702BDE VFY:S0720P702BFR
all begin VFY:S0720P and end two digit country code
| <!--IDE--> {{N/A|}}
| <!--SATA--> {{Yes|up to 2 Sata-cable-connector with space in casing so normal SSD/HDD over Sata was running very well on AHCI and IDE-Mode and 2242 mSata}}
| <!--Gfx--> {{Maybe|use VESA 2D for AMD Radeon HD 8280E IGP ( islands) or later R5E IGP ( islands)}}
| <!--Audio--> {{yes|HDAudio ALC671 codec partially working, external audio speaker}}
| <!--USB--> {{yes|4 rear USB 2.0 but not front 2 USB 3.1}}
| <!--Ethernet-->{{yes|rtl8169 Realtek 8169}}
| <!--Test Distro-->AROS One USB 2.0
| <!--Comments-->2014 64bit supports AVX and SSE 4.1 - 1 ddr3 Sodimm slot max 8Gb - 19V-20V 2A 5.5mm/2.5mm coax - D3313-B13 stripped down Mini-ITX mobo D3313-S1/-S2/-S3 (eKabini) D3313-S4/-S5/-S6 - SATA data socket can be located under the fins of the cpu heatsink is fanless - mPCIe socket for wireless card -
|-
| <!--Name-->Fujitsu FUTRO S920 D3313-E D3313-G
*2016 AMD GX-222GC SOC 2.20GHz Dual
*2017 AMD G-Series GX-415GA (1.50 GHz, Quad Core, 2 MB, AMD Radeon™ HD 8330E)
*2017 AMD G-Series GX-424CC 2.40 GHz Quad
| <!--IDE--> {{N/A}}
| <!--SATA--> {{yes|2242 mSata and 1 Sata-cable-connector with space in casing so normal SSD/HDD over Sata possible}}
| <!--Gfx--> {{yes|use VESA 2D for Radeon R5E GCN2/3 IGP}}
| <!--Audio--> {{yes|HDAudio ALC671 codec partially working}}
| <!--USB--> {{yes|4 rear USB 2.0, front 2 USB 3.1 downgradable to 2.0 in BIOS setting}}
| <!--Ethernet--> {{yes|rtl8169 Realtek 8169}}
| <!--Test Distro--> AROS One USB 2.4
| <!--Comments-->2016 64bit does support AVX or SSE 4.1 - 2 so dimm slot with max of 8 GB - 19v barrel psu 5.5mm 2.5mm - SATA data socket can be located under the fins of the heatsink - mPCIe a e keyed socket for wireless card - propetary X2 connector with official raizer to X1 connector - almost silent background noise, not affecting sound quality in any way
|-
| <!--Name-->Fujitsu Thin Client Futro S5011 S7011
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->{{maybe|Vesa 2D for AMD Vega 3 on 2 dp 1.4}}
| <!--Audio-->{{No|HDAudio with ALC623 codec}}
| <!--USB-->{{maybe|USB3 USB 3.2 Gen 2 front and 3 usb2 rear }}
| <!--Ethernet-->rtl8169 Realtek RTL8111H
| <!--Test Distro-->
| <!--Comments-->2019 64bit - AMD Ryzen Dual Core R1305G or R1505G 1ltr case - 2 ddr4 sodimm slots - TPM 2.0 - 19v 3.42amp round coax or usb-c 20c 3.25a external psu -
|-
| <!--Name-->Fujitsu FUTRO S9011 Thin Client VFY:S9011THU1EIN || <!--IDE-->{{N/A}} || <!--SATA-->NVMe || <!--Gfx-->{{maybe|Vesa 2D for AMD Vega 3 on 2 dp 1.4}} || <!--Audio-->{{No|HDAudio with ALC623 codec}} || <!--USB-->{{maybe|USB3 USB 3.2 Gen 2 front and 3 usb2 rear }} || <!--Ethernet-->rtl8169 Realtek RTL8111H || <!--Test Distro--> || <!--Comments-->2020 64bit Ryzen Embedded R1606G - 2 ddr4 sodimm slots - TPM 2.0 -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
|}
====HP Compaq====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Compaq presario 7360
| <!--IDE-->{{yes|Working}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{Maybe|VESA}}
| <!--Audio-->{{Maybe|AC97 via}}
| <!--USB-->{{Maybe|issues}}
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->Compaq EP Series 6400/10
| <!--IDE--> {{yes|IDE}}
| <!--SATA--> {{N/A}}
| <!--Gfx--> {{N/A}}
| <!--Audio--> {{no|ISA}}
| <!--USB--> {{yes|USB 1.1}}
| <!--Ethernet--> {{N/A}}
| <!--Test Distro--> {{dunno}}
| <!--Comments-->
|-
| <!--Name-->Compaq Evo D510
| {{yes|Working}}
| {{N/A}}
| {{partial|Intel Extreme (VESA only)}}
| {{yes|AC97}}
| {{yes|Working}}
| {{yes|Intel PRO/100}}
| Icaros 1.5
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->Compaq DX2000 MT
| <!--IDE-->{{yes}}
| <!--SATA-->{{maybe}}
| <!--Gfx-->{{maybe|Intel Extreme 2 (VESA only)}}
| <!--Audio-->{{no|detects AC97 but no support for ADI AD1888 codec}}
| <!--USB-->{{yes|OHCI/EHCI }}
| <!--Ethernet-->{{no|Intel 82526EZ e1000}}
| <!--Test Distro--> Icaros 1.51
| <!--Comments-->boots ok but no audio
|-
| <!--Name-->Compaq DX 2200
| <!--IDE-->{{yes}}
| <!--SATA-->{{maybe}}
| <!--Gfx-->{{maybe|RC410 [Radeon Xpress 200] (VESA only)}}
| <!--Audio-->{{dunno|HD Audio}}
| <!--USB-->{{maybe|OHCI/EHCI issues }}
| <!--Ethernet-->{{N/A}}
| <!--Test Distro--> {{dunno}}
| <!--Comments-->issues
|-
| <!--Name--> d230
| <!--IDE--> {{yes|UDMA}}
| <!--SATA--> {{N/A}}
| <!--Gfx--> {{partial|Intel Extreme (VESA only)}}
| <!--Audio--> {{partial|Intel AC97 (speaker and headphones only, no line-out)}}
| <!--USB--> {{yes|USB}}
| <!--Ethernet--> {{Maybe|Broadcom BCM4401}}
| <!--Test Distro--> Icaros 1.4.5
| <!--Comments-->
|-
| <!--Name-->HP Pavilion a220n || <!--IDE-->{{Yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Yes|VESA 1024x768 on nVidia GF4 MX with 64MB shared video ram}} || <!--Audio-->{{Yes|Realtek ALC650 AC'97 comp.}} || <!--USB-->{{Yes|USB 2.0}} || <!--Ethernet-->{{Yes|Realtek 8201BL 10/100 LAN}} || <!--Test Distro-->AROS One 2.5|| <!--Comments-->2004 32bit athlon xp 2600+ Socket 462 / Socket A - 2 dimm ddr pc2700 -
|-
| <!--Name-->t500
| <!--IDE-->{{Yes}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{Yes|FX5200 (2D; 3D with older driver)}}
| <!--Audio-->{{Yes|AC97 ICH4 ALC658D}}
| <!--USB-->{{Yes|UHCI/EHCI}}
| <!--Ethernet-->{{Yes|RTL 8101L 8139}}
| <!--Test Distro-->Nightly Build 2012-09-22
| <!--Comments-->2004
|-
| <!--Name-->DC7700
| <!--IDE-->{{Yes}}
| <!--SATA-->{{Yes}}
| <!--Gfx-->{{Yes|GMA 2D}}
| <!--Audio-->{{Yes| ICH8}}
| <!--USB-->{{Yes}}
| <!--Ethernet-->{{No|82566DM e1000e}}
| <!--Test Distro-->Nightly Build 2013-??-??
| <!--Comments-->2006 Some support at low cost
|-
| <!--Name-->HP dc 7600 CMT
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{Yes|Intel Graphics Media Accelerator 950}}
| <!--Audio-->{{Yes|Realtek ACL 260}}
| <!--USB-->{{Yes|USB 2.0}}
| <!--Ethernet-->{{No|Intel PRO/1000 GT}}
| <!--Test Distro-->
| <!--Comments-->2007
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->HP t5000 thin client series t5500 t5510 t5515 PC538A or PC542A t5700 t5710 Transmeta Crusoe Code Morphing TM 5400 5600 800Mhz
| <!--IDE-->128mb to 512MB
| <!--SATA-->{{N/A}}
| <!--Gfx-->Ati Radeon 7000M
| <!--Audio-->VIA with codec
| <!--USB-->{{No|Issues}}
| <!--Ethernet-->VIA Rhine 2
| <!--Test Distro-->
| <!--Comments-->2006 32bit - ddr max 1GB - F10 setup - all t51xx and some t55xx units will not include a SODIMM slot -
|-
| <!--Name-->HP t5000 thin client series CN700
*HSTNC-002L-TC t5135, t5530
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Vesa 2d 128Mb Via S3 32-bit colour
| <!--Audio-->AC97
| <!--USB-->
| <!--Ethernet-->VIA VT6102 VT6103 [Rhine-II] (rev 78)
| <!--Test Distro-->
| <!--Comments-->2007 32bit t5135 appears identical to the t5530 except the CPU VIA Esther 400 MHz - RAM 64Mb (? max) - 8 x USB2.0 - 12V 3.33A Coax 5.5mm/2.1mm
|-
| <!--Name-->HP t5720, t5725 HSTNC-001L-TC
| <!--IDE-->{{unk| }}
| <!--SATA-->{{N/A}}
| <!--Gfx-->VESA 2d SiS741GX 2048 x 1536 32-bit colour
| <!--Audio-->AC97 SiS SiS7012 AC'97
| <!--USB-->6 x USB2.0
| <!--Ethernet-->VIA VT6102 VT6103 [Rhine-II] (rev 8d)
| <!--Test Distro-->
| <!--Comments-->2007 32bit AMD Geode NX1500 1GHz socketed - RAM 512MB or 1GB, 256MB, 512MB or 1GB - 12V psu - sis DDMA support - custom 1.13 BIOS - pci low profile -
|-
| <!--Name-->t5000 series VX800 HSTNC-004-TC t5145, t5540, t5545, t5630
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Vesa 2d VIA Chrome9
| <!--Audio-->HD Audio VIA
| <!--USB-->
| <!--Ethernet-->{{No|VT6120 VT6121 VT6122 Gigabit (rev 82)}}
| <!--Test Distro-->
| <!--Comments-->2010 32bit - RAM 64Mb (? max) - 8 x USB2.0 - 12V 4.16A Coax: 5.5mm/2.1mm -
|-
| <!--Name-->t5730w HSTNC-003-TC t5730
| <!--IDE-->{{n/a|ATA 44pin DOM Flash}}
| <!--SATA-->
| <!--Gfx-->Vesa 2d ATI Radeon X1250 2048 x 1536 no 3D
| <!--Audio-->HD audio with codec
| <!--USB-->{{Yes|6 x USB2.0}}
| <!--Ethernet-->{{No|Broadcom 5707M tg3 10/100/1000}}
| <!--Test Distro-->
| <!--Comments-->2008 64bit AMD Sempron 2100+ 1GHz - 1 slot of ddr2 sodimm (Max 2GB) - 12V 4.16A Coax 5.5mm/2.1mm - F10 enter bios F12 boot devices -
|-
| <!--Name-->HSTNC-005-TC gt7720, gt7725
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Vesa 2d AMD RS780G HD 3200 - 2560 x 1600 DVI-D & DVI-H
| <!--Audio-->
| <!--USB-->8 x USB2.0
| <!--Ethernet-->{{No|Broadcom BCM5787M}}
| <!--Test Distro-->
| <!--Comments-->2009 64bit AMD Turion Dual Core CPU 2.3GHz - 1 DDR2 200-pin SODIMM - 19V 4.16A Coax 7.4mm/5.0mm (gt7725) -
|-
| <!--Name-->HP t5740 Thin Client HSTNC-006-TC t5740, t5745, st5742
| <!--IDE-->1 port
| <!--SATA-->1 port
| <!--Gfx-->{{Maybe|VESA for Intel CL40 VGA and DisplayPort connectors}}
| <!--Audio-->{{Yes|HD audio with IDT codec}}
| <!--USB-->{{Maybe| }}
| <!--Ethernet-->{{No|Broadcom BCM57780 Gigabit}}
| <!--Test Distro-->Nightly build and Icaros
| <!--Comments-->2009 32bit Atom N280 - F10 on power up to get into the BIOS screens. F12 brings up the boot options - hp 19V one with a coax connector, outer diameter 4.8mm with inner to be 1.7mm to 1.4mm - 2 ddr3 sodimm slots max 3gb due to 32bit - 1 pci-e slot completely non standard -
|-
| <!--Name-->t5000 series HSTNC-012-TC VIA Nano u3500 VX900
*t5550 512MB/1GB Windows CE6 R3
*t5565 1GB/1GB HP ThinPro
*t5570 2GB/1GB WES 2009
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Vesa 2d VIA ChromotionHD 2.0 GPU Chrome9
| <!--Audio-->VIA 9170 VT1708S codec
| <!--USB-->
| <!--Ethernet-->{{No|Broadcom BCM57780 Gigabit}}
| <!--Test Distro-->
| <!--Comments-->32bit - 1 sodimm - 19V 3.42A supply connector standard yellow-tip coax plug 4.8mm/1.8mm "Standard HP Compaq DC Power Plug 4.8mm x 1.5mm / 1.7mm Yellow Tip Connector -
|-
| <!--Name-->HP t510 Via Eden X2 U4200 HSTNC-012-TC shares features with t5570e, t5565z
| <!--IDE-->2G ATA Flash DOM
| <!--SATA-->one
| <!--Gfx-->{{Maybe|Vesa 2d for Chrome9 VIA ChromotionHD 2.0 gfx}}
| <!--Audio-->{{Maybe|VIA VT8237A VT8251 HDA with codec}}
| <!--USB-->{{Maybe|6 USB2 }}
| <!--Ethernet-->{{No|Broadcom Corporation NetLink BCM57780 Gigabit Ethernet PCIe}}
| <!--Test Distro-->
| <!--Comments-->2010 32bit - one slot ddr3 sodimm max 4GB - 19V 3.42A Coax 4.8mm/1.8mm -
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->HP T610 Thin Client and thicker PLUS version AMD G-T56N A55E
| <!--IDE-->{{Maybe|}}
| <!--SATA-->2 sata
| <!--Gfx-->Radeon 6320 1 dp port 1 dvi
| <!--Audio-->HDAudio with ALC codec
| <!--USB-->two USB2 on the front, two USB2 and two USB 3 ports on the rear
| <!--Ethernet-->{{No|Broadcom BCM57780}}
| <!--Test Distro-->
| <!--Comments-->2010 64bit does not support AVX SSE 4.1 - 2 204-pin DDR3 1600MHz SODIMMs PC3-12800 under motherboard via removable panel - 19.5V 3A Coax male 7.4mm/5.0mm + centre pin -
|-
| <!--Name-->HP T420 Thin Client
*AMD Embedded G-Series GX-209JA SOC (1 GHz, 2 cores)
| <!--IDE-->{{N/A}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->Radeon 8180 dvi vga
| <!--Audio-->HDAudio with ALC codec
| <!--USB-->2 front 2 rear USB2
| <!--Ethernet-->{{Yes|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2015 64bit supports AVX SSE 4.1 - soldered in place 2GB DDR3 - smaller than usual 19.5V 2.31A Coax male 4.5mm/3.0mm + centre pin - usb stick internal for storage - E15 BBR -
|-
| <!--Name-->HP t520 TPC-W016
*AMD GX-212JC 1.2Ghz (2 core)
| <!--IDE-->{{N/A}}
| <!--SATA-->1 m.2 mounting holes for 2242 and 2260 SSDs SATA (not NVME)
| <!--Gfx-->Radeon R2E GCN2 IGP Sea Islands
| <!--Audio-->HDAudio with ALC codec
| <!--USB-->2 USB3 front, 4 USB2 back
| <!--Ethernet-->{{Yes|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2014 2017 64 bit supports AVX SSE 4.1 - 1 204-pin DDR3 SODIMM - 19.5V 3.33A 7.4mm Coax with central pin
|-
| <!--Name-->HP t620 TPC-I004-TC
*AMD G-Series GX-217GA 2 core APU 1.65GHz (65W)
*AMD GX-415GA 4 core (65W)
and t620 PLUS (PRO wider version) TPC-I020-TC
*AMD GX-420CA SOC 4 core (Plus 85W)
| <!--IDE-->{{N/A}}
| <!--SATA-->{{yes|single M.2 2280 socket sata3, mSATA socket removed end of 2014}}
| <!--Gfx-->{{maybe|Vesa 2d for Radeon HD 8280E graphics 8330E Islands GCN2 IGP - 2 dp ports no dvi}}
| <!--Audio-->{{yes|HDAudio with Realtek ALC221 codec 0x10EC 0x0221}}
| <!--USB-->{{unk|4 front, 2 back, 1 inside limited space}}
| <!--Ethernet-->{{Yes|Realtek 8169}}
| <!--Test Distro-->Aros One 32bit with noacpi added to grub boot line
| <!--Comments-->2014 64bit supports AVX SSE 4.1 - 2 DDR3L SODIMMs side by side - mSATA ssd and M.2 SSD are M1.6 screws, M2.0 screws used on most SSDs - 19.5V 3.33A Coax male 7.4mm 5mm with centre pin - changed the network card to a Atheros 5000 compatible -
|-
| <!--Name-->HP T530
*AMD GX-215JJ (2 core) 1.5GHz
| <!--IDE-->{{N/A}}
| <!--SATA-->1 m.2 sata ssd up to 2280
| <!--Gfx-->Radeon R2E
| <!--Audio-->HDAudio with ALC codec
| <!--USB-->1 USB3.1, 1 usb-c front, 4 USB2 back
| <!--Ethernet-->{{Yes|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2015 64 bit does support AVX SSE 4.1 - 1 204-pin DDR4 SODIMM - 19.5V 2.31A Coax male 4.5mm/3.0mm with centre pin -
|-
| <!--Name-->HP T730 Wider "Thin" Client TPC-I018-TC Pixar RX-427BB (2c4t) - no display and fans blowing full speed caused by '''disabling internal gpu in bios''' flash L43_0116.bin onto smc MX25L6473F (3.3V 8-PIN SOP (200mil) SPI 25xx) ([https://www.badcaps.net/forum/troubleshooting-hardware-devices-and-electronics-theory/troubleshooting-desktop-motherboards-graphics-cards-and-pc-peripherals/bios-schematic-requests/96303-hp-t730-password-locked-bios in the rom rcvry socket under a delicate thin narrow surface flap]) with ch341a alike switchable from 5v, 3.3v to 1.8v
| <!--IDE-->{{N/A}}
| <!--SATA-->{{partial|Storage bios option to IDE and not AHCI to prevent constant install error messages to DH0: - add noacpi to end of grub boot line - 1 M.2 SATA slot (Key B+M) up to 2280 with T8 torx secure stub}}
| <!--Gfx-->{{maybe|use VESA for non-vulkan Radeon R7 GCN 2 UVD4.2 Sea Islands with 4 dp outs '''but too easy bricking''' if swapping with 1 PCIe 3.0 x8 slot 30W slim factor low profile 8400gs gt210 nvs295 nvs310 gt1030}}
| <!--Audio-->{{yes|HDaudio 6.34 realtek alc221 codec thru case speaker only}}
| <!--USB-->{{yes|'''Works''' for 4 USB2 in the back with 2 in the front, 2 USB3.0 ports on front and 1 more internal (not bootable)}}
| <!--Ethernet-->{{yes|rtl8169 Realtek RTL8111HSH-CG set up first in Prefs/Network}}
| <!--Test Distro-->boots with AROS One 32bit and 64bit USB with added noacpi added to grub boot line - press e - Latest distros can select grub boot options with Aros One 64bit USB and Aros One USB 2.8 but system seems to freeze after choice
| <!--Comments-->2016 64bit supports AVX SSE 4.1 - 2 DDR3L sodimm stacked slots max 32GB - '''Larger''' 20cm/8" high 3.5ltr case noisy fan - TPM2 - esc/F9 boot selector F10 enter bios - 2 serial and 1 parallel old ports - Key E Wireless - PCIe slot (x16 physical, x8 electrical) - 19.5V 4.36A 85w TPC-LA561 HP 7.4mm black-ring-tip power plug, red flashing power button, wrong psu or bad MotherBoard MB -
|-
| <!--Name-->HP t630 Thin Client TPC-I020-TC
*AMD Embedded G-Series SoC GX-420GI quad core 2Ghz
| <!--IDE-->{{N/A}}
| <!--SATA-->{{yes|ahci.device mbr msdos partiton table for 2 Sata M.2, sata0 up to 2280 (1tb max), sata1 2242 (64gb max), both T8 torx secure stubs}}
| <!--Gfx-->{{maybe|use VESA for Radeon AMD Wani R7E with 2 displayport 1.2 sockets, use one nearest to power jack - no dvi / hdmi}}
| <!--Audio-->{{Yes|HDAudio 6.36 0x1022, 0x157a and ALC255 aka ALC3234 codec 0x10ec, 0x0255, pins 0x17 as LFE and 0x1b as int speaker but not ahi 6.34}}
| <!--USB-->{{yes|USB2 2 front and 2 rear, 2 front USB3 and 1 inside}}
| <!--Ethernet-->{{Yes|Realtek 8169 8111H}}
| <!--Test Distro-->AROS One USB 2.2, 2.8 and 64bit USB 1.0, 1.2, 1.3 with noacpi added to the end of the grub bootline (press e)
| <!--Comments-->2016 64bit supports AVX SSE 4.1 - 2 DDR4 SODIMMs side by side speed 1866Mhz limit - 19.5V 3.33A 65W TPC-BA54 Coax male 7.4mm with centre pin - can be easily bricked, might reflash bios with M40 SP149736 - 20cm/8" high 1.5ltr larger fanless case - esc f1 f9 f10 -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->HP Compaq Elite 7200 7300 8200 8300 SFF with kettle IEC psu cable
| <!--IDE-->
| <!--SATA-->{{yes|IDE ata legacy only in BIOS}}
| <!--Gfx-->i pci-e
| <!--Audio-->{{Maybe|8200 works}}
| <!--USB-->{{yes| }}
| <!--Ethernet-->{{no|Intel or Broadcom}}
| <!--Test Distro-->icaros 2.3
| <!--Comments-->2013 64bit dual core - add pci-e rtl8169 ethernet card and pci-e gf210 nvidia low height -
|-
| <!--Name-->HP Compaq Pro 6305 Small Form Factor SFF AMD A75 chipset (FCH 6 SATA 6 Gb/s, 4 USB 3.0)
*AMD Quad A10-5800B
*AMD A8-5500B
*AMD Dual A6-5400B
*AMD A4-5300B
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Radeon 7000 Terascale iGPU series Radeon HD 7660D, Radeon HD 7560D, Radeon HD 7540D, Radeon HD 7480D
| <!--Audio-->HD ALC221
| <!--USB-->
| <!--Ethernet-->{{No|Broadcom 5761}}
| <!--Test Distro-->
| <!--Comments-->2012 64bit
|-
| <!--Name-->Elitedesk 705 G1 - SFF
*AMD A10-8850B, Quad-Core A10 PRO-7850B, A10-8750B
*AMD A10-7800B, A10 PRO-6800B, A8-7600B
*AMD A8-8650B, A6-8550B
*AMD A6-8350B, Dual A6 PRO 7400B, A4-7300B
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe| }}
| <!--Gfx-->{{Maybe|VESA 2D with Radeon R7 or 8000}}
| <!--Audio-->{{Maybe|HD audio with Realtek ALC221 codec}}
| <!--USB-->{{Maybe| }}
| <!--Ethernet-->{{No|Broadcom or Intel}}
| <!--Test Distro-->
| <!--Comments-->2014 64bit - T15 security torx psu with 6pin PWR 200W connector -
|-
| <!--Name-->HP EliteDesk 705 G2, 705 G3 Mini PC USFF thin client
| <!--IDE-->{{N/A}}
| <!--SATA-->2.5in and m.2
| <!--Gfx-->Radeon R7
| <!--Audio-->HDAudio
| <!--USB-->USB3
| <!--Ethernet-->{{No|Broadcom BCM5762 GbE}}
| <!--Test Distro-->
| <!--Comments-->2014 64bit AM4 socket with 35W TDP A10-8770E (4c), AMD PRO A6-8570E (2c), AMD Pro A6-9500E, or AMD PRO A10-9700E on AMD B300 FCH - ddr4 sodimm slots - 77 x 175 x 34mm (6.97 x 6.89 x 1.34in) 1L and about 3lbs -
|-
| <!--Name-->HP EliteDesk 705 G4 Mini 1ltr USFF AMD Ryzen 3 2200G (4c t) or 5 2400G (4c t)
| <!--IDE-->{{N/A|}}
| <!--SATA-->{{Maybe|Nvme 2280 and 2.5in sata}}
| <!--Gfx-->Vega 8 thru DP1.2 port
| <!--Audio-->{{No|HD Audio Conexant codec}}
| <!--USB-->USB2 usb3
| <!--Ethernet-->rtl8169 realtek
| <!--Test Distro-->
| <!--Comments-->2016 64bit Am4 socket - 2 sodimm 16GB max - 19.5v hp socket ext psu -
|-
| <!--Name-->Elitedesk 705 G4 35w, HP Prodesk 405 G4 35W USFF - baseboard 83e9 35W - AMD Athlon PRO 200GE (2c 4t), 2200GE (4c t) or 2400GE (4c t) on AMD B350 FCH
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe|Nvme 2280 and older models 2.5in sata}}
| <!--Gfx-->Vega 3, 8 or 11 with 2 dp1.2 ports
| <!--Audio-->{{no|HDAudio with Conexant CX20632 codec}}
| <!--USB-->USB3
| <!--Ethernet-->rtl8169 Realtek 8169 8111EPH 1Gbe or Realtek RTL8111F
| <!--Test Distro-->
| <!--Comments-->2017 64bit - realtek wifi 8821 or 8822 - up to 1 ddr4 dimm slots - hp barrel external ac -
|-
| <!--Name-->Elitedesk 705 G5, HP Elitedesk 806 G6, Prodesk 405 G6 || <!--IDE-->{{N/A}} || <!--SATA-->2x NVMe or 1x SATA + 1x NVMe, but not all three drives at the same time without serious modding of hd caddie || <!--Gfx-->Vega with DP1.4 port || <!--Audio-->{{no|HDAudio with Realtek ALC3205 codec}} || <!--USB-->USB3 || <!--Ethernet-->{{maybe|Realtek}} || <!--Test Distro--> || <!--Comments-->2018 64bit - 2 ddr4 sodimm slots - 3400GE Ryzen 5 PRO 3350GE (4c 8t), Ryzen 3 PRO 3200GE 3150GE (4c 4t), AMD Athlon Silver PRO 3125GE (2c 4t) on AMD PRO 565
|-
| <!--Name-->HP t540 1ddr4 slot, t640 2 DDR4 SDRAM sodimm SO-DIMM 260-pin non-ECC max 32gb thin client USFF
| <!--IDE-->{{N/A}}
| <!--SATA-->1 NVM Express (NVMe) 2230 or 2280
| <!--Gfx-->Vega 3 VGA, DisplayPort
| <!--Audio-->HD Audio with codec
| <!--USB-->2 USB3 gen1
| <!--Ethernet-->rtl8169 Realtek Realtek RTL8111HSH or RTL8111E PH-CG
| <!--Test Distro-->
| <!--Comments-->2019 64bit ryzen r1000 series Ryzen Embedded R1305G 1.5 GHz, R1505G dual (2c 4t) 2.0Ghz or R1606G ?.?Ghz (2c4t) - Realtek RTL8852AE wifi - 45W psu Coax male 4.5mm/3.0mm + centre pin -
|-
| <!--Name-->HP t740 SFF Thin Client
| <!--IDE-->{{N/A}}
| <!--SATA-->2 M.2, one is sata and other nvme
| <!--Gfx-->Vega 8 DisplayPort or + optional pci-e 30W Radeon E9173
| <!--Audio-->HD Audio with codec
| <!--USB-->USB3
| <!--Ethernet-->Realtek RTL8111E PH-CG 1Gbe
| <!--Test Distro-->
| <!--Comments-->2019 64bit - Ryzen Embedded V1756B 3.25Ghz quad - 90W 19.5V 4.62A psu Coax male 4.5mm/3.0mm + centre pin - sodimm DDR4 max 64Gb - slightly noisy fan -
|-
| <!--Name-->HP EliteDesk 805 G6 Mini 4750GE (8t 16t), Prodesk 405 G6 Ryzen 5 PRO 4650GE (6c 12t) or Ryzen 3 PRO 4350GE (4c 8t) on AMD PRO 565
| <!--IDE-->{{N/A}}
| <!--SATA-->2.5in carrier and 2 slots m.2 nvme
| <!--Gfx-->Vega 8 with DP1.4 and HDMI flex io2 output options
| <!--Audio-->HDAudio with Realtek ALC3205 codec
| <!--USB-->4 usb a - gen 2 10gig and gen 1 5gig ports
| <!--Ethernet-->{{N/A}}
| <!--Test Distro-->
| <!--Comments-->2021 64bit AMD Ryzen 4000 SBC unlocked - 2 sodimm ddr4 slots - wifi6 - 90W ac -
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Lenovo====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Lenovo Nettop IdeaCentre Q150 (40812HU)
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->ION2
| <!--Audio--> realtek codec
| <!--USB-->USB2
| <!--Ethernet-->intel 10/100
| <!--Test Distro-->
| <!--Comments-->2011 64bit D510
|-
| <!--Name-->M625q Tiny (1L)
| <!--IDE-->{{N/A}}
| <!--SATA-->M.2 Sata
| <!--Gfx-->Stoney Radeon R2, R3 or R4 and later R5 with 2 dp ports
| <!--Audio-->HD audio with ALC233-VB2-CG codec 0x10EC 0x0233
| <!--USB-->{{No|3 usb3.1 Gen 1 and 3 usb2}}
| <!--Ethernet-->rtl8169 RTL8111
| <!--Test Distro-->
| <!--Comments-->2016 64bit all dual cores - e2-9000e or a4-9120e later A9-9420e - heatsink covers 70% area covers wifi - 65w or 135w lenovo rectangle ac - 1 ddr4 2666MHz slot max 8gb - tpm 2.0 -
|-
| <!--Name-->M715q Gen 1 AMD A6 A8 A10-9700E 9770E (2c2t)
| <!--IDE-->{{N/A}}
| <!--SATA-->m.2
| <!--Gfx-->R4
| <!--Audio-->HDAudio
| <!--USB-->USB3
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->2016 64bit -
|-
| <!--Name-->M715q Gen 2 Ryzen 5 PRO 2400GE 4C 8T
| <!--IDE-->{{N/A}}
| <!--SATA-->m.2
| <!--Gfx-->Vega 11
| <!--Audio-->HD Audio with codec
| <!--USB-->USB3
| <!--Ethernet-->1GbE
| <!--Test Distro-->
| <!--Comments-->2018 64bit - f1 enter setup, esc device boot - fixed 1.8v ch341a needed to reflash 1.8v bios if no boot SOP8 DIP8 Winbond W25Q64, MXIC MX25U1635, MX25U6435 -
|-
| <!--Name-->ThinkCenter M75n nano Ryzen3 3300U
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->ThinkCentre M75q M75q-1 Tiny 1ltr TMM
*AMD Ryzen 5 PRO Quad 3500 Pro 3400GE (4c 8t) 11a5 soe400
*AMD 3200GE (2c 4t) zen1+ 11a4
| <!--IDE-->{{N/A|}}
| <!--SATA-->{{Maybe|NVMe 2280 1Tb max - untested 2.5inch}}
| <!--Gfx-->Vega 11
| <!--Audio-->HD Audio Realtek ALC222-CG codec ALC3287
| <!--USB-->3 USB3 Gen 1
| <!--Ethernet-->rtl8169 Realtek 8169 8111
| <!--Test Distro-->
| <!--Comments-->2019 64bit - 65w 20v 3.25A to 135W rectangle psu - 2 sodimm ddr4 sodimm max 32GB locked 2666MHz -
|-
| <!--Name-->ThinkCentre Ryzen 7 PRO Tiny 1ltr Gen 2 AMD 4000 series
*AMD 4650GE (6c12t) 4750GE (8c16t) 4350G (4c8t) Zen2 -
| <!--IDE-->{{N/A|}}
| <!--SATA-->{{Maybe|NVme}}
| <!--Gfx-->Vega 8
| <!--Audio-->HD Audio codec
| <!--USB-->
| <!--Ethernet-->Realtek 8169 8111
| <!--Test Distro-->
| <!--Comments-->2021 64bit vendor locked - 20v psu - 2 sodimm -
|-
| <!--Name-->Thinkcenter M75q-2 Gen2 refresh
| <!--IDE-->{{N/A}}
| <!--SATA-->m.2 nvme
| <!--Gfx-->Radeon Vega
| <!--Audio-->HDAudio
| <!--USB-->USB3
| <!--Ethernet-->1GigE
| <!--Test Distro-->
| <!--Comments-->2022 64bit 5650GE (6c12t) 5750GE (8c16t) - vendor/PSB can lock your AMD CPU - f12 boot devices
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->Thinkcentre M75q Tiny Gen5
| <!--IDE-->{{N/A| }}
| <!--SATA-->2 NVMe
| <!--Gfx-->Radeon 780M dp1.4a or hdmi
| <!--Audio-->HDAudio with codec
| <!--USB-->USB3 usb-c
| <!--Ethernet-->1GBe port
| <!--Test Distro-->
| <!--Comments-->2024 Ryzen PRO 7 8700GE - 90W yellow rectangle connector psu - 2 DDR5 sodimm slots max 128Gb -
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|}
====Misc====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Impart impact Media Group IQ Box mini Digital Signage with MB896 mini itx
| <!--IDE-->{{Yes| }}
| <!--SATA-->{{N/A}}
| <!--Gfx-->GMA 915 gme
| <!--Audio--> via audio
| <!--USB-->{{yes| }}
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->2007 32bit - 1 ddr2 slot - pentium m 1.73GHz -
|-
| <!--Name-->[https://everymac.com/systems/apple/mac_mini/specs/mac_mini_cd_1.83-specs.html Apple A1176 Intel MacMini1,1]
| <!--IDE-->{{N/A}}
| <!--SATA-->{{unk|gpt/efi }}
| <!--Gfx-->{{Yes|gma950 2d and 3d}}
| <!--Audio-->{{No|HDAudio with ICH7 [https://answers.launchpad.net/ubuntu/+source/alsa-driver/+question/186749 Sigmatel Stac 9221] [https://android.googlesource.com/kernel/msm/+/android-wear-5.1.1_r0.6/sound/pci/hda/patch_sigmatel.c codec][https://alsa-devel.alsa-project.narkive.com/Yt20W6cE/sigmatel-stac9221-mux-amp-out-0x02-microphone-not-working mic]}}
| <!--USB-->{{Yes|USB2}}
| <!--Ethernet-->{{No|Marvell}}
| <!--Test Distro-->
| <!--Comments-->2006 32bit possible 1.83 GHz Intel “Core Duo” (T2400) - swap pci-e wifi for atheros 5k AR5007EG - maybe hack with a 2,1 firmware - max 4GB Ram ddr2 sodimms - external apple psu - dvd boot only with c key -
|-
| <!--Name-->[https://everymac.com/systems/apple/mac_mini/specs/mac-mini-core-2-duo-1.83-specs.html Apple A1176 Intel Mac Mini2,1]
| <!--IDE-->{{N/A}}
| <!--SATA-->{{unk|gpt/efi }}
| <!--Gfx-->{{Yes|gma950 2d and 3d}}
| <!--Audio-->{{No|HDAudio with ICH7 Sigmatel Stac 9221 codec}}
| <!--USB-->{{Yes|USB2}}
| <!--Ethernet-->{{No|Marvell}}
| <!--Test Distro-->Aros One 2.0/ Icaros
| <!--Comments-->2007 64bit - swap pci-e wifi for atheros 5k AR5007EG - hacked with a 2,1 firmware and replaced the cpu for T7600 2.33 Ghz C2D and max 4GB Ram ddr2 sodimms - external apple psu - dvd boot only via c key
|-
| <!--Name-->Apple iMac 5,1 "Core 2 Duo" 1.83GHz 17" T5600 MA710LL || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->GMA 950 with 64Mb || <!--Audio-->HDAudio idt codec || <!--USB-->3 USB2 || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->2006 64bit - 2 ddr2 667MHz sodimm slots - 17.0" TFT widescreen 1440x900 - polycarbonate
|-
| <!--Name-->Apple iMac 6,1 "Core 2 Duo" 2.16 2.33 24" only T7400 T7600 aka MA456LL/A A1200 (EMC 2111) || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Nvidia 7300GT with 128 MB of GDDR3 SDRAM PCI Express or GeForce 7600GT with 256Mb mini dvi, vga || <!--Audio-->HDAudio || <!--USB-->3 USB2 || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->2006 64bit - 2 ddr2 667MHz sodimm slots - 24.0" TFT widescreen 1920 x 1200 - polycarbonate plastic case iMacs of this generation are the most difficult iMacs to service due to their front bezel design
|-
| <!--Name-->Neoware CA2
| <!--IDE-->flash DOM
| <!--SATA-->{{N/A}}
| <!--Gfx-->S3 Inc ProSavage PM133 (rev 02) vga
| <!--Audio-->VIA VT82C686 AC97 Audio
| <!--USB-->USB
| <!--Ethernet-->rtl8139
| <!--Test Distro-->
| <!--Comments-->2003 32bit - VIA Ezra 800MHz - 2 PC100 sodimm slots - riser board carries an ISA slot and a PCI slot - external 12V power supply.with 4 pins -
|-
| <!--Name-->Neoware CA5 Capio One
| <!--IDE-->44pin Disk On Module DOM
| <!--SATA-->{{N/A}}
| <!--Gfx-->SiS550 vga
| <!--Audio-->AC97 with SiS7019 codec
| <!--USB-->USB1.1
| <!--Ethernet-->rtl8139
| <!--Test Distro-->
| <!--Comments-->2004 32bit - internal power supply with mains lead has a "clover leaf" style - 2 144-pin PC100 or PC133 SODIMM might have 24MB of RAM soldered -
|-
| <!--Name-->Neoware CA10
*E140 model BL-XX-XX (800MHz CPU) later
*E100 model BK-XX-XX (1GHz CPU)
| <!--IDE-->
| <!--SATA-->{{N/A}}
| <!--Gfx-->VIA VT8623 (Apollo CLE266) vga
| <!--Audio-->AC97 with
| <!--USB-->4 USB2
| <!--Ethernet-->VIA VT6102/VT6103 [Rhine-II] (rev 74)
| <!--Test Distro-->
| <!--Comments-->2004/5 32bit - 12v 5.5mm/2.1mm - 2 184-pin DDR DIMM -
|-
| <!--Name-->VXL Itona thin client
*TC3200,
*TC3x41 (P3VB-VXL) TC3541 TC3641 TC3841,
*TC3xx1 (6VLE-VXL0) TC3931,
*TC43xx (Gigabyte C7V7VX) TC4321
| <!--IDE-->
| <!--SATA-->{{N/A}}
| <!--Gfx-->VIA vga
| <!--Audio-->AC'97 Audio with VIA VT
| <!--USB-->VIA USB
| <!--Ethernet-->Realtek 8100B
| <!--Test Distro-->
| <!--Comments-->2005 2006 32bit VIA Samuel 2, VIA C3 Nehamiah CPU, 1 DIMM slot, internal psu,
|-
| <!--Name-->Neoware Capio C50, model CA15 Thin Clients]
*Login Administrator Password Administrator
*Login User Password User
| <!--IDE-->1 flash Disk On Module
| <!--SATA-->{{N/A}}
| <!--Gfx-->VIA VT8623 (Apollo CLE266) vga
| <!--Audio-->AC97 with via codec
| <!--USB-->USB
| <!--Ethernet-->VIA
| <!--Test Distro-->
| <!--Comments-->2006 32bit VIA Eden (Samuel II core) CPU - 1 ddr sodimm slot max 512mb - slot - internal psu clover leaf -
|-
| <!--Name-->[http://etoy.spritesmind.net/neowareca21.html Neoware CA21 Thin Clients] Igel 3210 (and maybe the Clientron G270)
*Login Administrator Password Administrator
*Login User Password User
| <!--IDE-->1 flash Disk On Module DOM
| <!--SATA-->{{N/A}}
| <!--Gfx-->VIA CN700 vga
| <!--Audio-->AC97 with via codec
| <!--USB-->USB2
| <!--Ethernet-->VIA
| <!--Test Distro-->
| <!--Comments-->2007 32bit VIA C3 Nehemiah instead of Ezra-T - made 2 version of the CA 21, one with an Award bios and one with a Phoenix bios - 1 ddr2 sodimm slot max 1gb - VT6656 wireless - slot - internal psu iec -
|-
| <!--Name-->Neoware CA22 (e140), part number DD-L2-GE with BCOM WinNET P680 (V4) as the Igel 4210LX (Igel 5/4)
| <!--IDE-->1 VIA VT82C586A/B VT82C686/A/B VT823x/A/C PIPC Bus Master IDE (rev 06)
| <!--SATA-->{{N/A}}
| <!--Gfx-->VIA CN700 P4M800 Pro CE VN800 Graphics [S3 UniChrome Pro] (rev 01) vga
| <!--Audio-->AC97 with codec
| <!--USB-->USB2 VIA VT8237R Plus
| <!--Ethernet-->VIA VT6102/VT6103 [Rhine-II] (rev 78)
| <!--Test Distro-->
| <!--Comments-->2007 32bit - VIA Esther to later C7 1GHz - 1 ddr2 sodimm slots max 512mb - +12V DC/4.16A/50W 5.5mm/2.1mm coaxial -
|-
| <!--Name-->10Zig RBT402, Clientron U700,
| <!--IDE-->{{Yes|44 pin header very little room}}
| <!--SATA-->{{N/A|}}
| <!--Gfx-->{{Partial|VESA dvi}}
| <!--Audio-->{{unk|AC97 with codec}}
| <!--USB-->{{unk|VIA }}
| <!--Ethernet-->{{unk|}}
| <!--Test Distro-->
| <!--Comments-->2008 32bit - very small cases with very limited expansion - 1 sodimm 2GB max - 12v 3a psu - Password Fireport
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->Dell Optiplex FX170 D05U thin client, 10Zig 56xx range 5602, 5616v, 5617v, 5672v, Clientron U800, Devon IT TC5,
| <!--IDE-->{{Yes|44 pin header very little room}}
| <!--SATA-->{{N/A|}}
| <!--Gfx-->{{partial|GMA 950 dvi}}
| <!--Audio-->{{Yes|HD Audio with codec}}
| <!--USB-->{{Yes| }}
| <!--Ethernet-->{{No|Broadcom}}
| <!--Test Distro-->Icaros 2.3
| <!--Comments-->2009 32bit - very small cases with very limited expansion - 1 ddr2 sodimm 2GB max - 12v 3a psu - Password Fireport - ps2 keyboard socket -
|-
| <!--Name-->10Zig RBT-616V or Chip PC Technologies EX-PC (model number XPD4741)
| <!--IDE-->{{unk|44 pin header very little room}}
| <!--SATA-->{{N/A|}}
| <!--Gfx-->{{Yes|GMA 950}}
| <!--Audio-->{{unk|HD Audio with codec}}
| <!--USB-->{{unk| }}
| <!--Ethernet-->{{unk|rtl8169}}
| <!--Test Distro-->
| <!--Comments-->2010 32bit N270 on NM10 with ICH7 - very small cases with very limited expansion - 1 sodimm 2GB max - 12v 4a psu - Password Fireport
|-
| <!--Name-->Gigabyte Brix GS-A21S-RH (rev. 1.0) SFF
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{maybe|X3100}}
| <!--Audio-->{{No|HD Audio with ALC883-GR codec}}
| <!--USB-->Intel USB
| <!--Ethernet-->{{no|Intel 82566DC}}
| <!--Test Distro-->ICAROS 2.3
| <!--Comments-->2009 64bit Intel GME965 chipset with Intel ICH8M - 2 DDR2 Dimm slots - GA-6KIEH2-RH Rev.1.x mini ITX Case 213mm(D) x 64mm(W) x 234mm(H) - custom psu -
|-
| <!--Name-->VXL Itona MD+24 MD27 MD54 MD64 MD76 thin client
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->VIA Chrome 9
| <!--Audio-->HD Audio with VIA VT
| <!--USB-->VIA
| <!--Ethernet-->VIA
| <!--Test Distro-->
| <!--Comments-->2009 32bit VIA X2 U4200 - 12v-19v barrel psu -
|-
| <!--Name-->Acer Revo 100 RL100 AMD Athlon II X2 K325 || <!--IDE--> || <!--SATA--> || <!--Gfx-->NVIDIA® ION™ 9300m || <!--Audio-->HDAudio with ALC662 codec || <!--USB-->USB2 1 front 2 back || <!--Ethernet-->NVIDIA nForce 10/100/1000 || <!--Test Distro--> || <!--Comments-->2010 64bit but no AVX - 4Gb DDR3 sodimm - 500 GB - 19v 3.42a 65W - dvd but later BD drive -
|-
| <!--Name-->Asrock ION 330 330Pro HT-BD, Foxconn NT-330i, Zotac ION F (IONITX mini itx),
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->{{Maybe|ION geforce 9400}}
| <!--Audio-->{{Maybe| }}
| <!--USB-->{{Maybe|Nvidia USB}}
| <!--Ethernet-->{{No|Nvidia }}
| <!--Test Distro-->
| <!--Comments-->2010 32bit slow atom cpu - 2.5L 8" by 8" plastic case - 2 ddr2 sodimm max 4G - external 19v 65W 3.42A Plug 5.5mm X 2.5mm - little whiny fan -
|-
| <!--Name-->Zotac ZBOXHD-ND01
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->ION1
| <!--Audio-->HDaudio
| <!--USB-->USB2
| <!--Ethernet-->NVidia
| <!--Test Distro-->
| <!--Comments-->2009 32bit
|-
| <!--Name-->Zotac ZBOX HD-ID11
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->ION2
| <!--Audio-->HDaudio with ALC888 codec
| <!--USB-->USB2
| <!--Ethernet-->rtl8169 rtl8111D
| <!--Test Distro-->
| <!--Comments-->2010
|-
| <!--Name-->ZOTAC ZBOX Blu-ray 3D ID36 Plus
| <!--IDE-->{{N/A}}
| <!--SATA-->sata
| <!--Gfx-->ION2
| <!--Audio-->HDaudio
| <!--USB-->2 USB3
| <!--Ethernet-->GbE
| <!--Opinion-->2011 64bit -
|-
| <!--Name-->Shuttle XS35GT || <!--IDE--> || <!--SATA--> || <!--Gfx-->ION || <!--Audio-->HD audio IDT92HD81 || <!--USB--> || <!--Ethernet-->{{No|JMC261}} || <!--Test Distro--> || <!--Comments-->2011 64bit - Atom™ D510 NM10 - DDR2
|-
| <!--Name-->Shuttle XS35GT V2 || <!--IDE--> || <!--SATA--> || <!--Gfx-->ION2 || <!--Audio-->HD audio IDT92HD81 || <!--USB-->Intel || <!--Ethernet-->{{No|JMC251}} || <!--Test Distro--> || <!--Comments-->2011 64bit Atom™ D525 NM10 chipset - DDR3
|-
| <!--Name-->Sapphire Edge-HD || <!--IDE--> || <!--SATA--> || <!--Gfx-->ION2 GT218 with vga and hdmi || <!--Audio-->HDAudio realtek codec || <!--USB--> || <!--Ethernet-->{{Unk|Realtek}} || <!--Test Distro--> || <!--Comments-->2011 64bit - Atom™ D510 NM10 - DDR2 65 W AC, DC 19V~3.42A, 19.3L x 14.8w x 2.2H cm (1l), weight 530g,
|-
| <!--Name-->Sapphire Edge-HD2 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes|IDE mode}} || <!--Gfx-->{{Yes|nouveau ION2 GT218 with vga and hdmi 2d and 3d}} || <!--Audio-->{{Yes|HDAudio}} || <!--USB-->{{Yes|Intel USB2}} || <!--Ethernet-->{{Yes|}} || <!--Test Distro--> || <!--Comments-->2011 64bit Atom™ D525 NM10 chipset - DDR3
|-
| <!--Name-->AOPEN Digital Engine DE67-HA(I)
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe| }}
| <!--Gfx-->{{Maybe| Vesa 2d for Intel HD}}
| <!--Audio-->{{maybe|HDAudio for ALC662 codec}}
| <!--USB-->{{maybe|usb3}}
| <!--Ethernet-->{{no|Intel WG82579LM}}
| <!--Test Distro-->
| <!--Comments-->2011
|-
| <!--Name-->[https://www.jetwaycomputer.com/JBC600C99352W.html Jetway JBC600C99352W]
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->ION2
| <!--Audio-->{{No|C-Media CM108AH}}
| <!--USB-->USB2
| <!--Ethernet-->Realtek 8111DL
| <!--Test Distro-->
| <!--Comments-->2011 64bit D525 - DDR3 - 12v psu
|-
| <!--Name-->Foxconn nT-A3550 A3500 AMD A45 Chipset DDR3 Nettop Barebones - White
| <!--IDE-->{{N/A}}
| <!--SATA-->1 slot
| <!--Gfx-->AMD Radeon HD6310
| <!--Audio-->
| <!--USB-->4 USB2 back and 2 USB3 front
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->2012 64bit does not support AVX or SSE 4.1 AMD Dual-core E350 1.6GHz CPU - 1 ddr3 sodimm -
|-
| <!--Name-->Asus EeeBox PC EB1021 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Radeon HD6320M || <!--Audio-->HDAudio with ALC codec || <!--USB-->USB2 || <!--Ethernet-->Realtek GbE1 || <!--Test Distro--> || <!--Comments-->2012 64bit - AMD® Brazos E-350 SFF or E-450 with A50M - 2 ddr3l so-dimm - 40W ac -
|-
| <!--Name-->Xi3 Piston PC Athlon64 X2 3400e (X5A), AMD R-464L quad (X7A) Z3RO NUC
| <!--IDE-->{{N/A}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->AMD mobility HD3650 to radeon HD 7660G
| <!--Audio--> codec
| <!--USB-->4 USB2 3 USB3
| <!--Ethernet-->{{no|Atheros AR8161}}
| <!--Test Distro-->
| <!--Comments-->2012 - 2 sodimm 8GB max - 19v 3.3a round - Titan105 bios update -
|-
| <!--Name-->Sapphire Edge-HD3 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Radeon HD6320M with vga and hdmi || <!--Audio-->HDAudio with Realtek ALC662 codec || <!--USB-->USB2 || <!--Ethernet-->Realtek GbE1 || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 AMD® Brazos E-450 with A45M - ddr3l so-dimm - 65W ac - Wireless is Realtek 8191SU WiFi (802.11n) or AzureWave (802.11bgn) -
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->Samsung Syncmaster Thin Client Display TC-W Series 24" LF24 TOWHBFM/EN TC220W LED LF22TOW HBDN/EN || <!--IDE-->{{N/A}} || <!--SATA-->8gb SSD || <!--Gfx-->{{Maybe| VESA mode only Radeon HD 6290}} || <!--Audio--> || <!--USB-->2 USB 2.0 || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 thin Client C-50 C50 AMD® 1000 MHz and no wireless
|-
| <!--Name-->Advantech TPC-2140 thin client
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->{{Maybe|VESA }}
| <!--Audio-->
| <!--USB-->USB2
| <!--Ethernet-->{{Yes|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2012 64bit does not support AVX or SSE 4.1 atom-like G-T56E 1.65Ghz up to SSE3, BGA413 soldered -
|-
| <!--Name-->CompuLab FIT-PC3 fitPC3 USFF PC AMD G-T56N || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->RADEON HD 6320 || <!--Audio-->{{yes|HDAudio ALC888 codec}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{yes|rtl8169 8111}} || <!--Test Distro--> || <!--Comments-->2012 64 bit does not support AVX or SSE 4.1 - 12v 3a - 2x sodimm DDR3 max 4GB - wifi rtl8188ce
|-
| <!--Name-->10Zig 6872 thin client
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{Maybe|VESA }}
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->{{Yes|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2012 64bit does not support AVX or SSE 4.1 atom-like G-T56N up to SSE3 BGA413 (FT1) soldered - DDR3l single channel -
|-
| <!--Name-->10ZiG Technology 9972 1.6 GHz Linux 1.47 kg Black RX-216GD thin client
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->AMD Radeon 5E 3840 x 2160 @ 30Hz to 2560 x 1600 @ 60Hz 2 x Display Port
| <!--Audio-->
| <!--USB-->6 x USB2.0 2 x USB3.0
| <!--Ethernet-->{{Maybe|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2016 64bit does support AVX or SSE 4.1 AMD RX-216TD - 1 ddr3 sodimm - 12V 4A Coax 5.5mm/2.1mm
|-
| <!--Name-->10ZiG 7800q thin client
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->AMD Radeon 5E 3840 x 2160 @ 30Hz to 2560 x 1600 @ 60Hz 2 x Display Port
| <!--Audio-->
| <!--USB-->6 x USB2.0 2 x USB3.0
| <!--Ethernet-->{{Maybe|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2016 64bit does support AVX or SSE 4.1 AMD GX-424CC (Quad Core) 2.4GHz BGA769 (FT3b) - 1 ddr3 sodimm - 12V 4A Coax 5.5mm/2.1mm
|-
| <!--Name-->
*Itona VXL MZE12 AMD a4-5000 thin client
*VXL Itona LQ27 LQ+27 LQ44 LQ+44 LQ49 LQ+49 LQ50 LQ+50 LQ64 LQ+64 thin client
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->Ati 8330 vga hdmi dp
| <!--Audio-->
| <!--USB-->4 usb2 2 usb3
| <!--Ethernet-->Realtek
| <!--Test Distro-->
| <!--Comments-->2014 64bit quad BGA769 (FT3) soldered - 2 stacked sodimm ddr3 middle of mobo - 2 m.2 sata slots - 1 sata short cable half size space - limited 1ltr 8in case no fan - 19v hp style psu connector -
|-
| <!--Name-->Dell Wyse 5212 21.5" AIO Thin Client W11B
| <!--IDE-->{{N/A}}
| <!--SATA-->Sata
| <!--Gfx-->R3 out from DP or vga
| <!--Audio-->HDAudio
| <!--USB-->USB2
| <!--Ethernet-->Realtek
| <!--Test Distro-->
| <!--Comments-->2015 64bit slow atom like dual core AMD G-T48E 1.4 GHz - dell type round ac needed 90W 19.5V 4.62A - 21 inch 1080p screen -
|-
| <!--Name-->LG 24CK560N-3A 24' All-in-One Thin Client Monitor, 27CN650N-6N 27CN650W-AC 27', 34CN650W-AC 34',
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->2018 64bit AMD Prairie Falcon GX-212JJ
|-
| <!--Name-->CompuLab fit-PC4 fitPC4 4x 2Ghz AMD || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet-->{{no|Intel}} || <!--Test Distro--> || <!--Comments-->2018 64 - 2x DDR4 sodimm -
|-
| <!--Name-->IGEL Hedgehog M340C UD3 thin client
*2016 V1.0 AMD GX-412HC 1.2GHz-1.6GHz Radeon R3E, normal bios DEL for Bios or F12 boot selector
*2018 AMD GX-424CC 2.4GHz, Radeon R5E, UEFI hit DEL and choose boot or SCU icon
| <!--IDE-->{{N/A|}}
| <!--SATA-->SATA half slim version '''limited space''' with msata 8+18pins slot on earlier 2016 models
| <!--Gfx-->{{Maybe|VESA for Radeon R3E later R5E sea islands vulkan 1.2 with dvi dp output}}
| <!--Audio-->{{Yes|HD Audio with codec ?? (412) and Realtek ALC662-VD0-GR (424), both case speaker}}
| <!--USB-->amd usb3 boot usb2 with bios "disable usb" entry
| <!--Ethernet-->{{Yes|Realtek 8169 8111 (412) and (424)}}
| <!--Test Distro-->Aros One x86 USB 1.5, 1.8 and 2.2 but ArosOne 64bit 1.2 boot loop in usb2 port
| <!--Comments-->2016 64bit - 20cm/8" high case - 1 DDR3L sodimm slot max 8Gb 1600MHz - external '''12V 3A''' supply with 5.5mm/2.1mm coaxial - IDE like interface under base stand is for legacy addon ports RS232 parallel etc - capacitive touch power on - case opening 3 stages, remove stand and narrow black plastic strip from the back, top cover slides off to the back and lifts off -
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->10ZiG 6148v 6048qv (6100 series)
| <!--IDE-->{{N/A}}
| <!--SATA-->{{maybe| }}
| <!--Gfx-->
| <!--Audio-->{{maybe| }}
| <!--USB-->{{No| }}
| <!--Ethernet-->{{maybe| }}
| <!--Test Distro-->
| <!--Comments-->2018 64bit AMD Ryzen V1202B
|-
| <!--Name-->10ZiG 7111q
| <!--IDE-->{{N/A}}
| <!--SATA-->{{maybe| }}
| <!--Gfx-->
| <!--Audio-->{{maybe| }}
| <!--USB-->{{maybe| }}
| <!--Ethernet-->{{maybe| }}
| <!--Test Distro-->
| <!--Comments-->2019 64bit AMD Ryzen R2514 2.1 GHz -
|-
| <!--Name-->Shuttle DA320
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->R3 R5
| <!--Audio-->HD Audio with ALC662 codec
| <!--USB-->{{maybe| }}
| <!--Ethernet-->dual realtek 1GbE 8111H
| <!--Test Distro-->
| <!--Opinion-->2017 64bit AMD 2200G 2400G - Robust metal 1.3-liter case - A320 chipset DDR4 - 19V 6.32A DC PSU -
|-
| <!--Name-->IGEL UD7 H850C around december 2019 '''AMD Secure Processor''' is a built-in dedicated security system that checks if the BIOS has a valid signature and thus secures the next step in the boot process. This ensures that only devices with a signed BIOS will boot
| <!--IDE-->{{N/A}}
| <!--SATA-->None but 8gb emmc
| <!--Gfx-->Vega 3
| <!--Audio-->HD Audio with Realtek ALC897 or ALC888S codec
| <!--USB-->USB 3.2 and 2.0
| <!--Ethernet-->1GbE
| <!--Test Distro-->
| <!--Comments-->2018 64bit - AMD Ryzen™ Dual-Core 10W TDP - 2 DDR4 sodimms slots max 16Gb - 12V 4A psu - 2x DisplayPort 1.2 no dvi or hdmi - Intel® 9260 or SparkLAN WNFT-238AX wifi - 1x rear serial Prolific PL2303 chipset - locked down components and very limited expansion options
|-
| <!--Name-->IGEL UD7 H860C - '''AMD Secure Processor''' is a built-in dedicated security system that checks if the BIOS has a valid signature and thus secures the next step in the boot process. This ensures that only devices with a signed BIOS will boot
| <!--IDE-->{{N/A}}
| <!--SATA-->None but 8gb emmc
| <!--Gfx-->Vega 3
| <!--Audio-->HD Audio with Realtek ALC897 or ALC888S codec
| <!--USB-->USB 3.2 and 2.0
| <!--Ethernet-->1GbE
| <!--Test Distro-->
| <!--Comments-->2018 64bit - AMD Ryzen™ Dual-Core 10W TDP - 2 DDR4 sodimms slots max 16Gb - 12V 4A psu - 2x DisplayPort 1.2 no dvi or hdmi - Intel® 9260 or SparkLAN WNFT-238AX wifi - 1x rear serial Prolific PL2303 chipset - locked down components and very limited expansion options
|-
| <!--Name-->IGEL UD3 M350C (UEFI issues)
| <!--IDE-->{{N/A}}
| <!--SATA-->None but 8gb emmc
| <!--Gfx-->Vega 3
| <!--Audio-->HD Audio with Realtek ALC897 or ALC888S codec
| <!--USB-->USB 3.2 and 2.0
| <!--Ethernet-->1GbE
| <!--Test Distro-->
| <!--Comments-->2018 64bit - AMD Ryzen™ R R1505G Dual-Core 10W TDP - 2 DDR4 sodimms slots max 16Gb - 12V 4A psu - 2x DisplayPort 1.2 no dvi or hdmi - Intel® 9260 or SparkLAN WNFT-238AX wifi - 1x rear serial Prolific PL2303 chipset - locked down components and very limited expansion options
|-
| <!--Name-->IGEL UD7 H860C AMD Ryzen V1605B Thin Client - '''AMD Secure Processor''' is a built-in dedicated security system that checks if the BIOS has a valid signature and thus secures the next step in the boot process. This ensures that only devices with a signed BIOS will boot
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HDAudio
| <!--USB-->{{maybe| }}
| <!--Ethernet-->1GbE
| <!--Test Distro-->
| <!--Comments-->2020 AMD Ryzen™ Embedded V1605B 2 – 3.6 GHz (Quad-Core) - 12v 5A psu - up to 16GB RAM DDR4 - locked down components and very limited expansion options
|-
| <!--Name-->Gigabyte Brix Barebone Mini PC BSRE-1605
| <!--IDE-->{{N/A}}
| <!--SATA-->2 M.2
| <!--Gfx-->Vega 8
| <!--Audio-->HD Audio ALC269 codec
| <!--USB-->USB3
| <!--Ethernet-->2 GbE
| <!--Test Distro-->
| <!--Comments-->2020 64bit AMD Ryzen V1605B - 2 DDR4 sodimm slots
|-
| <!--Name-->MINISFORUM Deskmini UM250 Mini PC
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->{{maybe| }}
| <!--Ethernet-->{{maybe| }}
| <!--Test Distro-->
| <!--Comments-->2020 64bit AMD Ryzen V1605B -
|-
| <!--Name-->T-Bao MN25 Mini PC 2500U
| <!--IDE-->{{N/A| }}
| <!--SATA-->{{Unk|Intel NVMe}}
| <!--Gfx-->{{No|VESA Radeon Vega 8}}
| <!--Audio-->{{Unk| }}
| <!--USB-->{{maybe|USB 3}}
| <!--Ethernet-->{{Yes|Realtek PCIe 1GbE}}
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->Atari VCS || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{maybe|Vesa 2D for AMD Vega 3}} || <!--Audio-->{{unk|HDAudio with ALC codec}} || <!--USB-->{{maybe|USB3 USB 3.2 Gen 2 front and 3 usb2 rear }} || <!--Ethernet-->rtl8169 Realtek RTL8111H || <!--Test Distro--> || <!--Comments-->2021 64bit Ryzen Embedded R1606G - 2 ddr4 sodimm slots - TPM 2.0 -
|-
| <!--Name-->Minis Forum M200 Silver Athlon M300 3300U
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->Vega 8
| <!--Audio-->
| <!--USB-->{{maybe|USB 3.1 gen 1 and 2}}
| <!--Ethernet-->{{No|Realtek PCIe 2.5G}}
| <!--Test Distro-->
| <!--Comments-->2021 64bit
|-
| <!--Name-->Minis Forum DeskMini UM300 3300U, UM350 DMAF5 3550H, UM370 and UM700 with 3750H
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->Vega 8
| <!--Audio-->
| <!--USB-->{{maybe|USB 3.1 gen 1 and 2}}
| <!--Ethernet-->{{No|Realtek PCIe 2.5G}}
| <!--Test Distro-->
| <!--Comments-->2021 64bit
|-
| <!--Name-->MinisForum X300 with AMD 3400G
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->Vega 8
| <!--Audio-->
| <!--USB-->{{maybe|USB 3.1 gen 1 and 2}}
| <!--Ethernet-->{{No|Realtek PCIe 2.5G}}
| <!--Test Distro-->
| <!--Comments-->2021 64bit
|-
| <!--Name-->Beelink SER3 GTR4
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->AMD Vega 3 or 10
| <!--Audio-->HD Audio with codec
| <!--USB-->{{maybe|USB3}}
| <!--Ethernet-->Realtek RJ45 1GbE
| <!--Test Distro-->
| <!--Comments-->2020 64bit 3200u or 3750h
|-
| <!--Name-->AsRock DeskMini X300
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->2020 Ryzen 7 Pro 4750G 5600G
|-
| <!--Name-->MinisForum Besstar Tech X400 with AMD 4650G
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->AMD
| <!--Audio-->
| <!--USB-->{{maybe|USB 3.1 gen 1 and 2}}
| <!--Ethernet-->{{No|Realtek PCIe 2.5G}}
| <!--Test Distro-->
| <!--Comments-->2021 64bit - MP1584 - kill NB679 NB679GD-Z=ALTM=AL** QFN-12 IC-REG-DL buck/linear synchronous chip IC with bad usb cables -
|-
| <!--Name-->Beelink SER4 GTR5
| <!--IDE-->{{N/A}}
| <!--SATA-->cant boot from installed SSDs unless its an M.2
| <!--Gfx-->AMD Vega
| <!--Audio-->
| <!--USB-->{{maybe|USB3}}
| <!--Ethernet-->1 or 2 Realtek
| <!--Test Distro-->
| <!--Comments-->2021 64bit 4700U or 5900HX
|-
| <!--Name-->MSI PRO DP20Z 5M Mini PC - AMD Ryzen 5 5300G
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->{{No|Realtek 2.5G LAN RTL8125}}
| <!--Test Distro-->
| <!--Comments-->2018-2021 R3 3200G Vega 8 - R5 3400G Vega 11 - Ryzen 5 5600G Vega 7 - Athlon 3000G
|-
| <!--Name-->Minisforum UM450
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->Vega
| <!--Audio-->HDaudio
| <!--USB-->USB3
| <!--Ethernet-->{{No|Realtek 2.5G LAN RTL8125}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit - Ryzen 4500U -
|-
| <!--Name-->Gigabyte Brix
GB-BRR7-4800 (rev. 1.0)
GB-BRR7-4700 (rev. 1.0)
GB-BRR5-4500 (rev. 1.0)
GB-BRR3-4300 (rev. 1.0)
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->{{maybe|}}
| <!--Ethernet-->Realtek 2.5G LAN RTL8125
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->ASUS PN50 mini PC AMD Ryzen 7 4700U
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Vega
| <!--Audio-->HD audio with codec
| <!--USB-->{{maybe|3.1 gen1}}
| <!--Ethernet-->{{No|realtek 2.5GbE}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit -
|-
| <!--Name-->ASUS PN51-S1 mini PC AMD Ryzen 7 5700U
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->Vega thru dp or hdmi
| <!--Audio-->HD audio with codec
| <!--USB-->{{maybe|3.1 gen1}}
| <!--Ethernet-->{{No|realtek 2.5GbE}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit - 19v or 19.5v 90w psu round barrel - 32gb ddr4 sodimm -
|-
| <!--Name-->Minis Forum Bessstar Tech EliteMini B550
| <!--IDE-->{{N/A}}
| <!--SATA-->1 x 2.5in and 2 nvme
| <!--Gfx-->Vega 8
| <!--Audio-->
| <!--USB-->{{maybe|4 usb3.1}}
| <!--Ethernet-->{{No|realtek 8125 2.5GbE}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit AMD 4700G 5700G desktop cpu - 19v 120w round barrel -
|-
| <!--Name-->ASRock A300 and later X300 Mini itx with Desktop AM4 socket
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->Vega
| <!--Audio-->HDAudio
| <!--USB-->USB3
| <!--Ethernet-->1GbE
| <!--Test Distro-->
| <!--Comments-->2022 64bit - choose your own AMD APU GE 35w based - DDR4 -
|-
| <!--Name-->ASRock 4x4 BOX-5800U Zen 3-based AMD Ryzen 7 5800U 15W -
| <!--IDE-->{{N/A}}
| <!--SATA-->m.2 slot gen 3 and sata
| <!--Gfx-->vega
| <!--Audio-->HD audio with codec
| <!--USB-->{{maybe|}}
| <!--Ethernet-->{{Maybe|1 GbE and 1 2.5GbE}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit - WiFi 6E -
|-
| <!--Name-->Topton S500+ Gaming Mini PC - Morefine S500+ 5900HX Mini PC - Minisforum UM590 Ryzen AMD Zen3 Ryzen 9 5900HX 7 5800H 45W -
| <!--IDE-->{{N/A}}
| <!--SATA-->2 nvme 1 sata
| <!--Gfx-->Vega 8 thru HDMI 2.0, DP 1.4, and USB type-C
| <!--Audio-->
| <!--USB-->{{maybe|usb3.1}}
| <!--Ethernet-->{{Maybe|1 realtek rtl 8111h and 1 8125 2.5GbE bg-cg}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit - 2 sodimm ddr4 3200MHz -
|-
| <!--Name-->Chuwi RzBox later Ubox
| <!--IDE-->{{N/A}}
| <!--SATA-->2 nvme
| <!--Gfx-->Vega 8 later to 660m vga, dp, hdmi
| <!--Audio-->HDaudio
| <!--USB-->{{maybe|usb-c usb2}}
| <!--Ethernet-->dual gigabit
| <!--Test Distro-->
| <!--Comments-->2022 2025 64bit amd 5800h 4800h 6600H - 90w psu -
|-
| <!--Name-->Beelink Mini PC SER5, Trigkey AZW S5, Asus PN52, ZHI BEN MX-JB560,
| <!--IDE-->{{N/A}}
| <!--SATA-->PCIe3 M.2 2280 nvme
| <!--Gfx-->AMD Vega 6 with 1 or 2 hdmi
| <!--Audio-->HDAudio
| <!--USB-->{{maybe|USB3.0}}
| <!--Ethernet-->{{Maybe|Realtek 1GbE}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit 5500U 5560u 5600U to PRO 5600H 5800H - 19v 3.42W 65W psu -
|-
| <!--Name-->NIPOGI Kamrui ACEMAGICIAN AM06PRO Dual LAN Mini PC AMD Ryzen 7 5800U, 5 5500U or 5600U/5625U
| <!--IDE-->{{N/A}}
| <!--SATA-->M.2 and 2.5in sata
| <!--Gfx-->Vega 7
| <!--Audio-->HDAudio
| <!--USB-->USB3
| <!--Ethernet-->2 GbE ports
| <!--Test Distro-->
| <!--Comments-->2022 64bit - plastic build - 90w usb-c power - loud at 25W setting -
|-
| <!--Name-->Topton FU02 Fanless Mini PC AMD Ryzen 7 4700U 5600U 5800U 8 Core 16 Threads
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe and 2.5in sata
| <!--Gfx-->Vega
| <!--Audio-->HDAudio
| <!--USB-->4 3.0 with 2 2.0
| <!--Ethernet-->2 x 1G
| <!--Test Distro-->
| <!--Comments-->2022 64 - 2 ddr4 sodimm slots - fanless with copper cube from cpu to metal sheet which gets warm
|-
| <!--Name-->Xuu XR1 Lite (5300u 4c 8t) PRO 5400U MAX 5600U
| <!--IDE-->{{N/A}}
| <!--SATA-->1 NVMe 2242 slot
| <!--Gfx-->Vega 6
| <!--Audio-->HDAudio
| <!--USB-->2 3.0
| <!--Ethernet-->1G
| <!--Test Distro-->
| <!--Comments-->2022 64 quiet fan - very small case no expansions -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->MINISFORUM UM690 Venus Series
| <!--IDE-->{{N/A}}
| <!--SATA-->pcie4 nvme 2280 and 1 sata3 2.5in
| <!--Gfx-->680m RNDA2 12CU with 2 hdmi
| <!--Audio-->HD Audio with codec
| <!--USB-->{{maybe|1 USB4 and 2 USB3.2}}
| <!--Ethernet-->{{No|2.5G LAN}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit 6900hx 8C16T - 2 ddr5 sodimmm - 19v ???W -
|-
| <!--Name-->Beelink Mini PC GTR6
| <!--IDE-->{{N/A}}
| <!--SATA-->PCIe4
| <!--Gfx-->AMD 680M RDNA2
| <!--Audio-->
| <!--USB-->USB3.2
| <!--Ethernet-->{{No|Realtek 2.5GbE or intel i225}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit Ryzen 9 6900HX Zen3+ and a 2gb Radeon 680m 12CU ddr5 sodimm - 19v 120w psu -
|-
| <!--Name-->Asus PN53, Geekom AS 6,
| <!--IDE-->{{N/A}}
| <!--SATA-->pcie gen4 nvme and ata 2.5in
| <!--Gfx-->680m RNDA2 12CU with 2 hdmi and 1 dp
| <!--Audio-->HD Audio with codec
| <!--USB-->{{maybe|2 usb-c, 2 USB2.1 and 3 USB3.2}}
| <!--Ethernet-->{{No|1G LAN}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit 6900hx 8C 16T - 2 slots ddr5 sodimmm (64Gb max) - 19v 120W - 4 retained base screws beware ribbon cable -
|-
| <!--Name-->Micro Computer (HK) Tech Ltd MinisForum UM773 Lite later UM750L slim, GMKtec K2 Mini PC
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe PCIe4.0
| <!--Gfx-->RDNA
| <!--Audio-->HD Audio
| <!--USB-->USB4
| <!--Ethernet-->2.5GbE
| <!--Test Distro-->
| <!--Comments-->2023 2025 64bit - AMD Zen 3+ (8c 16t) Ryzen 7 7735HS, 7840HS and AMD Ryzen 9 7845HX AMD Ryzen™5 7545U (6c12t) - 19v up to 120w ac adapter - ddr5 sodimm 4800Mhz -
|-
| <!--Name-->[https://www.asrockind.com/en-gb/4x4 ASrock 4x4 SBC]
| <!--IDE-->{{N/A}}
| <!--SATA-->sata or nvme
| <!--Gfx-->Vega or 680M
| <!--Audio-->HDAudio
| <!--USB-->USB3 or USB4
| <!--Ethernet-->Realtek 1GbE or intel 2.5GbE
| <!--Test Distro-->
| <!--Comments-->2022 64bit -
|-
| <!--Name-->Beelink Mini PC GTR7 SER7
| <!--IDE-->{{N/A}}
| <!--SATA-->PCIe4 nvme 2280 up to 2Tb
| <!--Gfx-->AMD 780M RDNA3 GPU output on hdmi and dp
| <!--Audio-->HDAudio
| <!--USB-->USB3.2
| <!--Ethernet-->{{No|1 or 2 2.5GbE}}
| <!--Test Distro-->
| <!--Comments-->2023 64bit AMD Phoenix APUs Zen 4 CPU Ryzen 7 7840HS or 9 7940HS (8c 16t) - 19v 5.26A 120w psu - del dios setup f7 choose boot - 2 usb-c on back - up to 64gb via 2 ddr5 sodimm slots -
|-
| <!--Name-->MINISFORUM BD770i Ryzen 7 7745HX (8c16t) or BD795i SE 790i 9 7945HX (16c32t) or F1FXM_MB_V1.1 795M LGA1700 mATX
| <!--IDE-->{{N/A}}
| <!--SATA-->2 NVMe
| <!--Gfx-->Radeon 610m over usb-c, dp or hdmi
| <!--Audio-->HDAudio with codec
| <!--USB-->USB3 with 2 rear USB2
| <!--Ethernet-->Realtek 2.5G
| <!--Test Distro-->
| <!--Opinion-->2024 mini-ITX M/B is the first MoDT (Mobile on Desktop) with soldered AMD CPU - 2 dual PCIe4.0 M.2 slots - 2 ddr5 sodimm slots max 5200Mhz - 8pin cpu power - battery not easily replaceable underneath -
|-
| <!--Name-->Minisforum ms-a1 MS-a2
* 5700G to 8700G apu
* 9955HX
| <!--IDE-->{{N/A}}
| <!--SATA-->2 nvme
| <!--Gfx-->AMD 610M
| <!--Audio-->HDAudio
| <!--USB-->USB3
| <!--Ethernet-->dual 2.5GbE
| <!--Test Distro-->
| <!--Comments-->2024 64bit - 19v ?A round barrel jack - 2 ddr5 so-dimm slots -
|-
| <!--Name-->AOOSTAR GT68
| <!--IDE-->{{N/A}}
| <!--SATA-->Nvme
| <!--Gfx-->680m
| <!--Audio-->HDaudio
| <!--USB-->USB3
| <!--Ethernet-->2 2.5Gb
| <!--Test Distro-->
| <!--Comments-->2025 Ryzen7 Pro 6850H,
|-
| <!--Name-->NextSBC 7840HS
| <!--IDE-->{{N/A}}
| <!--SATA-->Nvme
| <!--Gfx-->AMD 780M 12CU
| <!--Audio-->HDAudio with codec
| <!--USB-->USB4 and USB 3.2
| <!--Ethernet-->2 GbE
| <!--Test Distro-->
| <!--Comments-->2025 64bit - 32Gb soldered -
|-
| <!--Name-->Firebat A6 R7 6800H
| <!--IDE-->{{N/A}}
| <!--SATA-->nvme
| <!--Gfx-->AMD 680M
| <!--Audio-->HDaudio
| <!--USB-->USB3
| <!--Ethernet-->rtl8169
| <!--Test Distro-->
| <!--Comments-->2025 64bit -
|-
| <!--Name-->Minisforum UM760 7640HS
| <!--IDE-->{{N/A}}
| <!--SATA-->nvme
| <!--Gfx-->AMD 760
| <!--Audio-->HDaudio
| <!--USB-->USB4
| <!--Ethernet-->rtl8169 and 2.5Gb
| <!--Test Distro-->
| <!--Comments-->2025 64bit -
|-
| <!--Name-->Peladn WO4 Mini PC
| <!--IDE-->{{N/A}}
| <!--SATA-->nvme
| <!--Gfx-->AMD 760
| <!--Audio-->HDaudio
| <!--USB-->USB3
| <!--Ethernet-->rtl8169
| <!--Test Distro-->
| <!--Comments-->2025 64bit 7640HS - 19v 5.26A 120W -
|-
| <!--Name-->BossGame M4 Neo 7840HS
| <!--IDE-->{{N/A}}
| <!--SATA-->nvme
| <!--Gfx-->AMD 780
| <!--Audio-->HDaudio
| <!--USB-->USB3
| <!--Ethernet-->rtl8169
| <!--Test Distro-->
| <!--Comments-->2025 64bit -
|-
| <!--Name-->Minisforum UM870 || <!--IDE-->{{N/A}} || <!--SATA-->NVme || <!--Gfx-->AMD 780M || <!--Audio-->HDaudio || <!--USB-->USB3 || <!--Ethernet-->2.5GbE || <!--Test Distro--> || <!--Comments-->2025 64bit -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->GEEKOM A8 Max AI Mini PC AMD Ryzen™ 9 8945HS, Ryzen™ 7 8845HS or 8745HS
| <!--IDE-->{{N/A}}
| <!--SATA-->NVme
| <!--Gfx-->AMD 780M
| <!--Audio-->HDAudio with codec
| <!--USB-->{{maybe| USB4}}
| <!--Ethernet-->{{No|Dual 2.5 G Ethernet ports}}
| <!--Test Distro-->
| <!--Comments-->2025 64bit -
|-
| <!--Name-->Beelink SER 9
| <!--IDE-->{{N/A}}
| <!--SATA-->NVme
| <!--Gfx-->Radeon 890M
| <!--Audio-->HDaudio
| <!--USB-->USB4
| <!--Ethernet-->{{No| }}
| <!--Test Distro-->
| <!--Comments-->2025 64bit - Ryzen AI HX 370 strix point -
|-
| <!--Name-->GMKtec EVO-X2 mini pc
| <!--IDE-->{{n/a}}
| <!--SATA-->nvme
| <!--Gfx-->AMD 8060S iGPU RDNA3.5 RADV GFX1151
| <!--Audio-->HDaudio
| <!--USB-->USB4
| <!--Ethernet-->{{No| }}
| <!--Test Distro-->
| <!--Comments-->2025 64bit - amd ryzen AI Max+ 395 (16c32t) strix halo -
|-
| <!--Name-->BosGame M5
| <!--IDE-->{{n/a}}
| <!--SATA-->nvme
| <!--Gfx-->AMD 8060S iGPU RDNA3.5 RADV GFX1151
| <!--Audio-->HDaudio
| <!--USB-->USB4
| <!--Ethernet-->{{No| }}
| <!--Test Distro-->
| <!--Comments-->2025 64bit - amd ryzen AI Max+ 395 (16c32t) -
|-
| <!--Name-->Steam Machine GabeCube
| <!--IDE-->{{N/A}}
| <!--SATA-->nvme
| <!--Gfx-->semi-custom 1080p amd 7600m like with 28cu 8gb ddr6 gddr 10GFlops
| <!--Audio-->hdaudio with codec
| <!--USB-->usb3
| <!--Ethernet-->{{maybe|rtl8169}}
| <!--Test Distro-->
| <!--Comments-->2026 64bit amd 1772 hawk point2 6c12t zen4 avx512 FP7 socket with FCH51 - 16gb ddr5 -
|-
| <!--Name-->AMD Ryzen AI Halo Developer Platform Workstation
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->2026 64bit - amd ryzen AI Max+ 395 (16c32t) -
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|}
===Server Systems===
[[#top|...to the top]]
====IBM====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="15%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->xSeries 206m
| <!--IDE-->{{yes}}
| <!--SATA-->{{yes}}
| <!--Gfx-->{{Maybe|ATI RN50b (VESA only)}}
| <!--Audio-->{{n/a}}
| <!--USB-->{{yes|USB 2.0 (UHCI/EHCI)}}
| <!--Ethernet-->{{no|Broadcom}}
| <!--Test Distro-->Nightly Build 2014-09-27
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
|}
===Motherboard===
[[#top|...to the top]]
* Late 2002, USB2.0 added and slightly better AROS sound support (AC97) appeared
* 2002-2005 and still, to a limited extent, ongoing [http://en.wikipedia.org/wiki/Capacitor_plague bad capacitors]
* Late 2003, ATX PSUs moved from 5V to 12v rails (extra 4pin on motherboard for CPU)
* Late 2005, PCI Express replaced AGP and HDAudio replaced AC97
* Late 2007, ATX PSUs added extra 12V PCI-E connectors and 4+4pin for CPUs
* Late 2010, USB3.0 appears on motherboards or needing a PCI-E motherboard slot
* Late 2014 Hardware USB2 removed from USB3 chipsets
====AMD Sockets====
[[#top|...to the top]]
=====Socket 7 (1997/1999)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->1997 VT82C586B (QFP-208) is the first from VIA with DDMA
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2000 VT82C686 has close to excellent DDMA support
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->SiS 5581/5582
SiS 5591/5595
SiS 530 /5595
SiS 600/5595
SiS 620/5595
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|}
=====Socket A 462 (2001/4)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->[http://www.sharkyextreme.com/hardware/motherboards/article.php/2217921/ABIT-NF7-S-nForce2-Motherboard-Review.htm Abit NF7-S]
| <!--Chipset-->nForce 2
| <!--ACPI-->
| <!--IDE-->2 ports
| <!--SATA-->SIL 3112A
| <!--Gfx-->
| <!--Audio-->{{yes|ALC650 AC97 (Nvidia APU)}}
| <!--USB-->{{yes}}
| <!--Ethernet-->Realtek RTL 8201LB
| <!--Opinion-->Firewire Realtek RTL8801B
|-
| <!--Name-->ASRock K7NF2
| <!--Chipset-->nforce2 ultra 400
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{yes|AGP 8x}}
| <!--Audio-->CMedia CMI 9761A AC'97
| <!--USB-->{{yes}}
| <!--Ethernet-->Realtek 8201
| <!--Opinion-->
|-
| <!--Name-->ASRock K7S8X
| <!--Chipset-->SIS 746FX
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->
| <!--Gfx-->{{yes|AGP 8x}}
| <!--Audio-->{{yes|AC'97 cmedia}}
| <!--USB-->{{maybe|USB2.0 works but does not boot}}
| <!--Ethernet-->{{yes|SiS900}}
| <!--Opinion-->
|-
| <!--Name-->ASRock K7S41GX
| <!--Chipset-->SIS 741GX + DDR 333
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->
| <!--Gfx-->{{maybe|onboard sis does not work with vga or vesa but AGP 8x works}}
| <!--Audio-->{{yes|AC97 SIS 7012}}
| <!--USB-->{{maybe|USB2.0 works but does not boot}}
| <!--Ethernet-->{{yes|SiS 900}}
| <!--Opinion-->works ok
|-
| <!--Name-->[http://www.asus.com ASUS A7N8X]
| <!--Chipset-->nForce2
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->Silicon Image Sil 3112A
| <!--Gfx-->1 AGP slot
| <!--Audio-->{{yes|ac97 ALC650}}
| <!--USB-->{{yes|ehci USB2.0}}
| <!--Ethernet-->{{yes|rtl8201BL - nforce}}
| <!--Opinion-->first total support for AROS in 2004/5 - damocles and M Schulz
|-
| <!--Name-->Biostar M7NCD
| <!--Chipset-->nForce2 Ultra 400
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->{{yes|ALC650 AC97}}
| <!--USB-->
| <!--Ethernet-->{{yes|RTL8201BL}}
| <!--Opinion-->
|-
| <!--Name-->Chaintech 7NJS Ultra Zenith
| <!--Chipset-->nForce2 Ultra 400
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->Promise PDC 20376
| <!--Gfx-->
| <!--Audio-->{{yes|CMI8738}}
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->DFI Lanparty NF2 Ultra
| <!--Chipset-->nForce2 Ultra 400
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->{{no|via ac97 VT1616}}
| <!--USB-->
| <!--Ethernet-->RTL8139C
| <!--Opinion-->
|-
| <!--Name-->ECS N2U400-A
| <!--Chipset-->nForce2 Ultra 400
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->{{no|Cmedia 9379A AC97}}
| <!--USB-->{{yes|usb2.0}}
| <!--Ethernet-->{{no|VIA VT6103L}}
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA7N400L
| <!--Chipset-->nForce2 Ultra 400
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->1 AGP 8x slot
| <!--Audio-->{{yes|AC97 ALC650}}
| <!--USB-->2 USB2.0
| <!--Ethernet-->RTL8100C
| <!--Opinion-->
|-
| <!--Name-->[http://www.gigabyte.lv/products/page/mb/ga-8siml Gigabyte 8SIML]
| <!--Chipset-->SIS 650
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->
| <!--Gfx-->{{maybe|VESA}}
| <!--Audio-->{{yes|AC'97}}
| <!--USB-->{{maybe|working}}
| <!--Ethernet-->{{no|Realtek RTL8100L LAN}}
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Matsonic [http://www.elhvb.com/mobokive/archive/matsonic/manual/index.html Manuals] MS83708E
| <!--Chipset-->SIS730
| <!--ACPI-->
| <!--IDE-->{{yes|SiS 5513}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{maybe|sis 305 no support use VESA}}
| <!--Audio-->{{no|sis7018}}
| <!--USB-->{{no|SiS 7001 USB 1.1 only}}
| <!--Ethernet-->{{yes|SIS900}}
| <!--Opinion-->little support
|-
| <!--Name-->[http://h10025.www1.hp.com/ewfrf/wc/document?docname=bph07585&lc=en&dlc=en&cc=us&dest_page=softwareCategory&os=228&tool=softwareCategory&query=Pavilion%20742n&product=89232 MSI MS-6367 HP 722n 742n (Mambo) (2001/2)]
| <!--Chipset-->Nvidia nforce 220D (2001/2)
| <!--ACPI-->
| <!--IDE-->{{Yes}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->GeForce2 AGP works 2D nouveau only
| <!--Audio-->{{Maybe|AC97 ADI 1885 no volume control on Units 0-3}}
| <!--USB-->{{Yes|4 USB1.1 ports AMD based - front 2 ports iffy}}
| <!--Ethernet-->{{No|nForce}}
| <!--Opinion-->Tested 20th Aug 2012 NB
|-
| <!--Name-->MSI K7N2 [http://us.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=546/ Delta ILSR] Delta-L
| <!--Chipset-->nForce2 (2002/3)
| <!--ACPI-->
| <!--IDE-->{{yes|Primary & Secondary ports}} IDE Tertiary port (RAID)
| <!--SATA-->2 ports (RAID)
| <!--Gfx-->{{yes|when fitted with an agp video card}}
| <!--Audio-->{{yes|ac97 ALC650}}
| <!--USB-->{{yes}}
| <!--Ethernet-->{{yes|rtl8201BL - nforce}}
| <!--Opinion-->runs AROS well. Tested with Icaros 1.2.3
|-
| <!--Name-->MSI K7N2 Delta2-LSR Platinum
| <!--Chipset-->nForce2 (2002/3)
| <!--ACPI-->
| <!--IDE-->{{yes|Primary & Secondary ports}} IDE Tertiary port (RAID)
| <!--SATA-->2 ports (RAID)
| <!--Gfx-->{{yes|when fitted with an agp video card}}
| <!--Audio-->{{No|ac97 ALC655}}
| <!--USB-->{{yes}}
| <!--Ethernet-->{{yes|rtl8201BL - nforce}}
| <!--Opinion-->runs AROS well. Tested with Icaros 1.2.3
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->[http://www.sharkyextreme.com/hardware/motherboards/article.php/2204281/Soltek-SL-75MRN-L-nForce2-Motherboard-Review.htm Soltek 75FRN-L]
| <!--Chipset-->nForce2
| <!--ACPI-->
| <!--IDE-->{{yes|2 ports}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->AGP slot
| <!--Audio-->{{yes|ALC650}}
| <!--USB-->{{yes|2 usb2.0}}
| <!--Ethernet-->{{yes|Realtek RTL8201BL}}
| <!--Opinion-->good support
|-
| <!--Name-->[http://www.3dvelocity.com/reviews/mach4nf2ultra/mach4.htm XFX Pine Mach4 nForce2 Ultra 400]
| <!--Chipset-->nForce2
| <!--ACPI-->
| <!--IDE-->{{yes|3 ports}}
| <!--SATA-->{{maybe|2 ports VIA VT6240}}
| <!--Gfx-->1 AGP 8x slot
| <!--Audio-->{{yes|ALC650}}
| <!--USB-->{{yes|2 USB2.0}}
| <!--Ethernet-->{{yes|RTL8201BL}}
| <!--Opinion-->some support
|-
| <!--Name-->ASUS A7V266
| <!--Chipset-->via KT266A + 8233
| <!--ACPI-->
| <!--IDE-->{{no|issues}}
| <!--SATA-->
| <!--Gfx-->1 AGP slot
| <!--Audio-->AC97 with AD1980 codec
| <!--USB-->via 8233
| <!--Ethernet-->VIA VT6103
| <!--Opinion-->2002 issues with booting
|-
| <!--Name-->Asus A7V8X-X
| <!--Chipset-->VIA KT400
| <!--ACPI-->
| <!--IDE-->{{unk| }}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{yes|agp}}
| <!--Audio-->{{unk|AC97 with ADI AD1980 codec}}
| <!--USB-->{{unk|VIA 8235}}
| <!--Ethernet-->{{unk|Realtek 10/100}}
| <!--Opinion-->2003 not booting for Socket A for AMD Barton/Thoroughbred/Athlon XP/Athlon/Duron 2.25+ GHz CPU - 3 x DDR DIMM Sockets Max. 3 GB -
|-
|}
=====Socket 754 (2004/5)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Abit NF8-V2
| <!--Chipset-->nForce3 250GB (2004/5)
| <!--ACPI-->
| <!--IDE-->{{yes|2 ports}}
| <!--SATA-->{{maybe|2 ports}}
| <!--Gfx-->1 AGP slot x8
| <!--Audio-->ALC658 ac97
| <!--USB-->{{yes|2 USB2.0}}
| <!--Ethernet-->{{no|RTL8201C}}
| <!--Opinion-->a little support but no Firewire VIA VT6306
|-
| <!--Name-->Biostar CK8 K8HNA Pro
| <!--Chipset-->nforce3 150
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->VT6420 thru ide legacy only
| <!--Gfx-->
| <!--Audio-->{{no|AC97 ALC655}}
| <!--USB-->
| <!--Ethernet-->Realtek RTL8110S
| <!--Opinion-->Firewire VT6307 no
|-
| <!--Name-->[http://www.extremeoverclocking.com/reviews/motherboards/Chaintech_ZNF3-150_3.html Chaintech ZNF3-150 Zenith]
| <!--Chipset-->nforce3 150
| <!--ACPI-->
| <!--IDE-->2 ports
| <!--SATA-->{{maybe|Sli3114 SATA via IDE emul}}
| <!--Gfx-->1 AGP slot
| <!--Audio-->{{no|VIA Envy24PT (VT1720) + VT1616}}
| <!--USB-->{{Maybe|2 USB2.0}}
| <!--Ethernet-->{{no|Broadcom GbE 5788}}
| <!--Opinion-->very little support needs PCI cards but no Firewire VIA VT6306
|-
| <!--Name-->DFI Lanparty UT nF3 250GB
| <!--Chipset-->nForce3 250gb
| <!--ACPI-->
| <!--IDE-->2 ports
| <!--SATA-->{{maybe|2 ports nForce3 and 2 Marvell SATA PHY}}
| <!--Gfx-->
| <!--Audio-->{{yes|AC97 ALC850}}
| <!--USB-->{{Maybe|2 USB2.0}}
| <!--Ethernet-->CK8S - Winfast NF3 250K8AA works and Marvell 88E1111 does not work
| <!--Opinion-->2005 some support but no Firewire VIA VT6307
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Gigabyte GA-K8N
| <!--Chipset-->NVIDIA nForce3 150
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->Realtek ALC658 AC97
| <!--USB-->
| <!--Ethernet-->Realtek RTL8100C
| <!--Opinion-->Firewire TI43AB23 no
|-
| <!--Name-->Gigabyte K8NNXP
| <!--Chipset-->nForce3 150
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->Sata sil3512
| <!--Gfx-->
| <!--Audio-->ALC658 AC97
| <!--USB-->
| <!--Ethernet-->RTl8110S
| <!--Opinion-->Firewire TI STB82AA2 no
|-
| <!--Name-->Gigabyte GA-K8NSNXP
| <!--Chipset-->nForce3 250GB
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->SiI 3512 CT128 Sata Sil3515
| <!--Gfx-->
| <!--Audio-->ALC850 AC97
| <!--USB-->
| <!--Ethernet-->{{No|Marvel 88E8001}}
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->MSI K8N Neo-FIS2R
| <!--Chipset-->nVIDIA NF3-250Gb
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->Realtek 7.1 AC'97 ALC850
| <!--USB-->
| <!--Ethernet-->{{No|Marvell 88E1111}}
| <!--Opinion-->
|-
| <!--Name-->[http://techreport.com/articles.x/5748/1 Shuttle AN50R]
| <!--Chipset-->nF3-150
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->Sil 3112
| <!--Gfx-->
| <!--Audio-->ALC650 AC97
| <!--USB-->
| <!--Ethernet-->Nvidia nF3 (10/100) Intel 82540EM Gigabit
| <!--Opinion-->Firewire VT6307 no
|-
| <!--Name--> Foxconn WinFast K8S755A
| <!--Chipset-->SiS755 + SiS964 (DDR333)
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio--> {{yes|AC97}}
| <!--USB-->
| <!--Ethernet--> {{yes|RTL8169}}
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket 939 (2005)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Asus A8N-LA GeForce 6150 LE
| <!--Chipset-->Geforce 6150 (MCP51) + nForce 430 (PC-3200)
| <!--ACPI-->
| <!--IDE-->{{yes|two ATA 133}}
| <!--SATA-->{{maybe|four 3.0GB/s SATAII ports}}
| <!--Gfx-->built in or PCI-E x16
| <!--Audio-->Realtek ALC883 HD Audio
| <!--USB-->6 USB2.0
| <!--Ethernet-->Realtek RTL 8201CL
| <!--Opinion-->
|-
| <!--Name-->Asus A8N-SLI Premium
| <!--Chipset-->NVidia
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{Yes|PCIe slot}}
| <!--Audio-->{{Yes|AC97}}
| <!--USB-->{{Maybe}}
| <!--Ethernet-->{{Yes|nForce LAN but not Marvell}}
| <!--Opinion-->Works well
|-
| <!--Name-->DFI nF4 Ultra-D LanParty - Diamond Flower International sold to BenQ group 2010
| <!--Chipset-->nF4
| <!--ACPI-->
| <!--IDE-->2 ports
| <!--SATA-->4 ports SATA 2
| <!--Gfx-->2 PCIe x16 slots
| <!--Audio-->AC97 with ALC850 codec
| <!--USB-->
| <!--Ethernet-->Dual Gigabit Ethernet, PCIe by Vitesse VSC8201 PHY nee Cicada 8201, PCI by Marvel 88E8001
| <!--Opinion-->2006 64bit - Four 184-pin DDR Dual-Channel Slots - 1 pci on Ultra, 2 pci on sli,
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus A8V E SE
| <!--Chipset-->VIA K8T890 +VT8237R CHIPSET ATX AMD Motherboard with Athlon 64 X2 / Athlon 64 FX / Athlon 64
| <!--ACPI-->{{N/A}}
| <!--IDE-->{{Yes}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{N/A}}
| <!--Audio-->{{Maybe}} AC97 driver using Realtek ALC850 codec
| <!--USB-->{{Yes}} USB 2.0 only
| <!--Ethernet-->{{No}} Marvell 88E8053
| <!--Opinion-->Good base but needs additional PCI cards added for better support
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->ASUS A8V Deluxe (2004)
| <!--Chipset-->VIA K8T800 Pro (DDR400)
| <!--ACPI-->
| <!--IDE-->Promise 20378 2 ports
| <!--SATA-->2 SATA2
| <!--Gfx-->
| <!--Audio-->{{no|VIA VT8233A 8235 8237 AC97}}
| <!--USB-->
| <!--Ethernet-->{{no|Marvell 88E8001 Gigabit}}
| <!--Opinion-->needs extra PCI cards
|-
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->AsRock 939Dual-SATA2
| <!--Chipset-->Ali Uli M1695 PCIe with M1567 AGP
| <!--ACPI-->
| <!--IDE-->2 ports
| <!--SATA-->1 Sata with JMicron JMB360 chip
| <!--Gfx-->1 pci-e and 1 agp
| <!--Audio-->AC97 with ALC850 codec
| <!--USB-->
| <!--Ethernet-->Realtek RTL8201CL PHY ULi 10/100
| <!--Opinion-->64bit pci-e and agp combo on board - 4 ddr slots -
|}
=====Socket AM2 (2006/8) and AM2+ (2007-2010) =====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-M61PME-S2 (rev. 2.x)
| <!--Chipset-->NVIDIA® GeForce 6100 / nForce 430 chipset
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{maybe|VESA 2d for vga}}
| <!--Audio-->{{yes|HDAudio Realtek ALC662 Audio Codec}}
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus M2N61-AR mini itx
| <!--Chipset-->NVIDIA nForce 430
| <!--ACPI-->
| <!--IDE-->1
| <!--SATA-->2
| <!--Gfx-->GeForce 6150SE via vga or 1 pci-e slot
| <!--Audio-->HD Audio with codec
| <!--USB-->Nvidia
| <!--Ethernet-->Nvidia
| <!--Opinion-->2006 32bit - 1 pci - 2 ddr2 dimm slots non-eec -
|-
| <!--Name-->asus m2n68-am se2
| <!--Chipset-->nvidia 630a 630/a MCP68SE
| <!--ACPI-->
| <!--IDE-->1 ports
| <!--SATA-->2 ports MCP61 chipset is SATA over IDE, not SATA over AHCI and reports subsystem as 0x1 IDE, not 0x6 SATA
| <!--Gfx-->{{Yes|nvidia 7025 2d and 3d thru vga}}
| <!--Audio-->{{Yes|hd audio with realtek alc662 codec}}
| <!--USB-->{{Yes| }}
| <!--Ethernet-->{{Yes|nForce chipset RTL 8201CP}}
| <!--Opinion-->2007 64bit Phenom IIX2, Athlon 64 LE X2, Sempron, and Phenom FX processors - ddr2 667Mhz ram max 4Gb -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-MA770-UD3 (rev. 1.0)
| <!--Chipset-->AMD 770 with SB700
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes| }}
| <!--Gfx-->pci-e
| <!--Audio-->{{yes|ALC888 codec }}
| <!--USB-->{{yes|USB2}}
| <!--Ethernet-->{{yes|rtl8169 8111C later 8111D}}
| <!--Opinion-->Good support for AM2+ / AM2 with 4 ddr2 ram - 4 x PCI Express x1, 2 x PCI slots - firewire T.I. TSB43AB23 chip no support -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus M3A32-MVP Deluxe
| <!--Chipset-->AMD 790FX RD790 + SB600
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->{{No|Marvell 88SE6121 SATA II}}
| <!--Gfx-->pci-e 1.1 support
| <!--Audio-->{{No|HD Audio ADI® AD1988}}
| <!--USB-->
| <!--Ethernet-->{{No|Marvell 88E8056}}
| <!--Opinion-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->ASROCK N68-S N68C-S
| <!--Chipset-->AMD based nForce 630a
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->{{yes|slimline DVD drive works}}
| <!--Gfx-->{{maybe|GF 7025 use vesa}}
| <!--Audio-->{{yes|HDAudio for VIA 1708S VT1705}}
| <!--USB-->{{Maybe|echi usb 2.0}}
| <!--Ethernet-->{{no|RTL8201EL / 8201CL - nforce}}
| <!--Opinion-->2008 unbuffered 1066Mhz ddr2 ram - N68C-S may need noacpi added to grub boot line to disable pci temporarily to run as it cannot get to [PCI] Everything OK -
|-
| <!--Name-->Asus M2N68-AM Plus
| <!--Chipset-->Athlon 64, Sempron, Athlon 64 X2, Athlon 64 FX with nvidia 630a
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->no vga, pci-e slot only
| <!--Audio-->{{yes|HD Audio with ALC662 codec}}
| <!--USB-->
| <!--Ethernet-->{{no|RTL8211CL Gigabit LAN}}
| <!--Opinion-->adding "noacpi noapic noioapic" to the GRUB options - Dual channel DDR2 1066, 800, 667 MHz -
|-
| <!--Name-->Gigabyte GA-M68M-S2 (1.0) S2P (2.3) S2L GA-M68SM-S2 (1.x)
| <!--Chipset-->nForce 630a chipset
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->NVIDIA® GeForce 7025, vga (s2 and s2p), dvi (s2l)
| <!--Audio-->ALC883 (S2), ALC888B (S2P), ALC662 (S2L),
| <!--USB-->
| <!--Ethernet-->RTL 8201CL (S2), 8211CL (S2P), 8211BL (S2L),
| <!--Opinion-->2008 64bit possible with AMD AM2+ CPU on AM2 motherboard, the system bus speed will downgrade from HT3.0(5200MHz) to HT1.0(2000 MT/s) spec
|-
| <!--Name-->ASUS M2N68-VM
| <!--Chipset-->nForce 630a (MCP68PVNT)
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Nvidia GeForce ® 7050PV hdmi, dvi and vga
| <!--Audio-->HD audio VIA 1708B codec
| <!--USB-->
| <!--Ethernet-->RTL 8211C
| <!--Opinion-->2008 64bit - ddr2 800Mhz
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket AM3 White socket (2010/11)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Gigabyte GA-MA74GM-S2 GA-MA74GM-S2H
| <!--Chipset-->740g with sb710
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes|bios IDE}}
| <!--Gfx-->Radeon 2100 and pci-e slot
| <!--Audio-->ALC888 (r1.x),ALC888b (r2.0), ALC888B (rev4.x)
| <!--USB-->USB2
| <!--Ethernet-->rtl8169 Realtek 8111C later 8111D
| <!--Opinion-->2010 64bit - 2 x 1.8V DDR2 DIMM sockets max 8 GB - Micro ATX Form Factor 24.4cm x 23.4cm -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->[http://www.vesalia.de/e_aresone2011.htm Aresone 2011]
| <!--Chipset-->760g
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Yes}}
| <!--Gfx-->{{Maybe|no Radeon HD3000 driver yet<br>vesa driver works<br>and add PCIe card}}
| <!--Audio-->{{Yes|HD Audio}}
| <!--USB-->{{Yes|USB2.0}}
| <!--Ethernet-->{{yes}}
| <!--Opinion-->Good support - 4 DDR3 memory sockets -
|-
| <!--Name-->Foxconn A76ML-K 3.0
| <!--Chipset-->AMD 760g rev3.0
| <!--ACPI-->
| <!--IDE-->{{Yes|1 }}
| <!--SATA-->{{Yes|4 in IDE mode }}
| <!--Gfx-->HD3000 with pci-e slot
| <!--Audio-->HDAudio with ALC662-GR codec
| <!--USB-->USB2
| <!--Ethernet-->rtl8169 rtl8111E
| <!--Opinion-->2011 64bit - 2 ddr3 slots - 2 pci slots -
|-
| <!--Name-->GA-MA770T-UD3P (rev. 1.0 to 1.4)
| <!--Chipset-->amd 770 with sb710
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{yes|4 sata}}
| <!--Gfx-->pci-e
| <!--Audio-->{{yes|HDAudio with Realtek ALC888 codec}}
| <!--USB-->{{yes| }}
| <!--Ethernet-->{{yes|rtl8168 rtl8111c/d}}
| <!--Opinion-->2011 64 - 4 ddr3 dimm slots -
|-
| <!--Name-->Gigabyte GA-MA770-UD3 (rev. 2.0 2.1)
| <!--Chipset-->AMD 770 with SB700
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes| }}
| <!--Gfx-->pci-e
| <!--Audio-->{{yes|ALC888 codec }}
| <!--USB-->{{yes|USB2}}
| <!--Ethernet-->{{yes|rtl8169 8111C later 8111D}}
| <!--Opinion-->Good support for AM3 with 4 ddr2 ram - 4 x PCI Express x1, 2 x PCI slots - firewire T.I. TSB43AB23 chip no support -
|-
| <!--Name-->Asus M4A785TD-M PRO
| <!--Chipset-->785G and SB710
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe|ide legacy}}
| <!--Gfx-->{{Maybe|ATI Radeon HD 4200 - use vesa}} or pci-e 2.0 slot
| <!--Audio-->{{Yes|HD Audio}}
| <!--USB-->{{Yes| }}
| <!--Ethernet-->{{Yes| }}
| <!--Opinion-->Good support with 1366 ddr3 ram -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->ASUS M4A88T-I Deluxe ITX
| <!--Chipset-->AMD 880G with AMD SB710
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->Three SATA 3Gbps
| <!--Gfx-->Radeon HD 4350 GPU with HDMI and DVI or One 16x PCI-Express 2.0
| <!--Audio-->HDAudio with Realtek ALC889
| <!--USB-->6 x USB 2, 2 x USB 3
| <!--Ethernet-->{{No|Realtek RTL8112L}}
| <!--Opinion-->2014 64bit - 2 SODIMM DDR3 slots max 8GB
|-
| <!--Name-->Asus M4A88T-M Version E5907 E5826
| <!--Chipset-->AMD 880G SB710
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Radeon 4250
| <!--Audio-->HD Audio with VIA VT 1708S codec
| <!--USB-->
| <!--Ethernet-->Realtek rtl8169 8111E
| <!--Opinion-->2010 64bit -
|-
| <!--Name-->GigaByte 890GPA-UD3H
| <!--Chipset-->AMD 890GX together with SB850
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->Yes
| <!--Gfx-->use pci-e nvidia
| <!--Audio-->Maybe - ALC892 rev. 1.0, ALC892 rev 2.1, ALC889 rev. 3.1
| <!--USB-->Yes
| <!--Ethernet-->Yes
| <!--Opinion-->works well overall
|-
| <!--Name-->Gigabyte GA-890FXA-UD7
| <!--Chipset-->AMD 890FX with SB850
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes|IDE }}
| <!--Gfx-->
| <!--Audio-->ALC889 (rev 2.x)
| <!--USB-->{{Yes|AMD USB2 but limited with NEC D720200F1 USB3}}
| <!--Ethernet-->2 x Realtek 8111D
| <!--Opinion-->2012 64bit - XL-ATX Form Factor 32.5cm x 24.4cm - 4 ddr3 slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI 890GXM-G65
| <!--Chipset-->890GX + SB750
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->{{Maybe|legacy}}
| <!--Gfx-->{{Maybe|ATI 4290 built-in (vesa)}}
| <!--Audio-->{{Maybe|ALC889 DD GR}} HD Audio crackles
| <!--USB-->{{Yes}}
| <!--Ethernet-->{{Yes|RTL 8169}}
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->ASRock N68-VS3 FX
| <!--Chipset-->NVIDIA® GeForce 7025 / nForce 630a
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 Sata2
| <!--Gfx-->Integrated NVIDIA® GeForce 7025
| <!--Audio-->HD Audio with VIA® VT1705 Codec
| <!--USB-->USB2
| <!--Ethernet-->Realtek PHY RTL8201EL
| <!--Opinion-->2010 64bit - 2 x DDR3 DIMM slots -
|-
| <!--Name-->MSI GF615M-P35 MS-7597
| <!--Chipset-->NVIDIA® nForce 430
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->GeForce 6150SE
| <!--Audio-->{{Maybe|HD Audio with Realtek® ALC888S}}
| <!--USB-->{{No|freezes}}
| <!--Ethernet-->{{No|Realtek 8211CL}}
| <!--Opinion-->2010 64bit
|-
| <!--Name-->Gigabyte GA-M68MT-S2
| <!--Chipset--> nForce 630a
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->NVIDIA® GeForce 7025 vga
| <!--Audio-->ALC888B (1.3), ACL887 (3.1),
| <!--USB-->
| <!--Ethernet-->RTL8211CL (all)
| <!--Opinion-->2010 64bit possible, AMD AM3 CPU on this motherboard, the system bus speed will downgrade from HT3.0 (5200MT/s) to HT1.0 (2000 MT/s) spec
|-
| <!--Name-->Gigabyte GA-M68MT-S2P
| <!--Chipset--> nForce 630a
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->NVIDIA® GeForce 7025 vga
| <!--Audio-->ALC888B (1.x 2.x), ALC889 (3.0), ALC888B/889 (3.1),
| <!--USB-->
| <!--Ethernet-->RTL8211CL (all)
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus M4N78 PRO
| <!--Chipset-->NVIDIA GeForce 8300
| <!--ACPI-->
| <!--IDE-->1 xUltraDMA 133/100
| <!--SATA-->6 xSATA 3 Gbit/s ports
| <!--Gfx-->Integrated NVIDIA® GeForce® 8 series GPU with 1 PCIe 2.0 slot
| <!--Audio-->HD Audio with VIA1708S 8 -Channel codec
| <!--USB-->12 USB 2.0 ports (8 ports at mid-board, 4 ports at back panel)
| <!--Ethernet-->NVIDIA Gigabit
| <!--Opinion-->4 x DIMM, Max. 16 GB, DDR2 1200(O.C.)/1066*/800/667 ECC,Non-ECC,Un-buffered Memory - ATX Form Factor 12 inch x 9.6 inch ( 30.5 cm x 24.4 cm ) -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|}
=====Socket AM3+ Black socket (2012/15)=====
*095W FX-6300 FD6300WMHKBOX (bulldozer SSE4.1 AVX) 970 mobos with FX-8320E 8core Black Editions FD832EWMHKBOX FX-8370E (Vishera/Piledriver)
*125W FX-6310 (bulldozer) 970 mobos with FX-8320 FX-8350 FX-8370 (Vishera/Piledriver)
*220W 990FX mobos with FX-9000 FX-9370 FX-9590
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->ASUS M5A78L-M LX3
| <!--Chipset-->AMD 760G with SB710
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{Yes|bios IDE mode}}
| <!--Gfx-->HD3000 with pci-e slot
| <!--Audio-->HDAudio with ALC887, V? ALC892 codecs
| <!--USB-->USB2
| <!--Ethernet-->{{No|Qualcomm Atheros 8161/8171 add realtek 8111? pci-e card}}
| <!--Opinion-->2012 64bit - uATX Form Factor 9.6 inch x 7.4 inch ( 24.4 cm x 18.8 cm ) - 2 x DIMM, Max. 16GB, DDR3 -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-78LMT-S2P
| <!--Chipset-->AMD 760G and SB710
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{yes|6 SATA2 ports}}
| <!--Gfx-->GT240 and a nv7900gs, both pci-e
| <!--Audio-->{{Maybe|ALC889 (r3.1), ALC??? (rev. 4.0), ALC887 (r5.x)}}
| <!--USB-->4 USB2
| <!--Ethernet-->{{Maybe|Realtek 8111E (r3.1), Atheros (rev4.0), Atheros (r5.x) }}
| <!--Opinion-->2012 offers very poor control over its EFI vs. BIOS booting partition features
|-
| <!--Name-->Gigabyte GA-78LMT-USB3 (r3.0), (r4.1 Blue board), (r5.0 dark board), (rev6 dark mobo)
| <!--Chipset-->AMD 760G and SB710
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes|Bios IDE mode for SATA2 on early ones}}
| <!--Gfx-->AMD HD3000, pci-e GT240 and a nv7900gs
| <!--Audio-->{{Maybe|ALC??? (r3.0), ALC887 (r4.1), VIA VT2021 (r5.0), Realtek® ALC892 codec (rev6) }}
| <!--USB-->{{yes|AMD USB2 but not VIA® VL805 USB3}}
| <!--Ethernet-->Realtek GbE
| <!--Opinion-->2013 64bit - Micro ATX Form Factor 24.4cm x 24.4cm - 4 x DDR3 DIMM sockets -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI 760GM
| <!--Chipset-->ATI 760G plus SB710
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{yes| }}
| <!--Gfx-->HD3000 Use Vesa
| <!--Audio-->{{Maybe|P33 VT1705; P34, P21 and P23 (FX) MS7641 v3.0 ALC887, E51 ALC892}}
| <!--USB-->{{yes| }}
| <!--Ethernet-->{{Yes|Realtek}}
| <!--Opinion-->P23 issues with audio ALC887 crackles thru earphones -
|-
| <!--Name-->Gigayte GA-MA770T-UD3P (rev. 3.1)
| <!--Chipset-->amd 770 with sb710
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata
| <!--Gfx-->pci-e slot
| <!--Audio-->HDaudio with Realtek ALC888/892 codec
| <!--USB-->
| <!--Ethernet-->rtl8169 rtl8111d/e
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->ASRock 890FX Deluxe5 Extreme3
| <!--Chipset-->AMD 890FX + AMD SB850 or SB950 (Extreme3)
| <!--ACPI-->
| <!--IDE-->{{Yes}}
| <!--SATA-->{{Yes}}
| <!--Gfx-->{{N/A}}
| <!--Audio-->{{Maybe|ALC892}}
| <!--USB-->{{Yes}}
| <!--Ethernet-->{{Yes|RTL8111E rtl8169}}
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus M5A97 R2.0 EVO
| <!--Chipset-->AMD 970 and SB950
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->Asmedia SATA Controller
| <!--Gfx-->n/a
| <!--Audio-->HDAudio with Realtek ALC887 (LE), ALC887 (Regular), ALC892 (EVO) codec
| <!--USB-->4 USB 2.0 and 2 Asmedia USB3.0 Controller
| <!--Ethernet-->Realtek 8111F
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-970A-D3
| <!--Chipset-->AMD 970 with SB950
| <!--ACPI-->
| <!--IDE-->{{Yes| }}
| <!--SATA-->{{Yes|IDE mode}}
| <!--Gfx-->pci-e
| <!--Audio--> ALC??? (rev. 1.0/1.1), ALC887 (rev1.2), VIA VT2021 codec (rev 1.3 1.4 and rev3.0)
| <!--USB-->{{yes|AMD USB2 but not Etron EJ168 chip (USB3)}}
| <!--Ethernet-->Realtek GbE 8111E (all revisions),
| <!--Opinion-->2015 64bit - ATX Form Factor 30.5cm x 22.4cm - 4 x 1.5V DDR3 DIMM sockets -
|-
| <!--Name-->MSI 970 Gaming
| <!--Chipset-->970FX SB950
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->Realtek® ALC1150 Codec
| <!--USB-->6 usb2 with 2 USB3 VIA VL806 Chipset
| <!--Ethernet-->Killer E2205 Gigabit LAN
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus M5A99X EVO
| <!--Chipset-->990X - RD980 with SB920
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->2 pci-e gen ?
| <!--Audio-->HDAudio with ALC892 codec
| <!--USB-->
| <!--Ethernet-->rtl8169 realtek 8111e
| <!--Opinion-->2012 64bit -
|-
| <!--Name-->Gigabyte GA-990XA-UD3
| <!--Chipset-->AMD 990 with SB950
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes| }}
| <!--Gfx-->
| <!--Audio-->ALC889 (rev 1.x, 3.0, 3.1),
| <!--USB-->{{yes|AMD USB2 not 2 x Etron EJ168 chips for USB3}}
| <!--Ethernet-->realtek rtl8169 8111e
| <!--Opinion-->2012 64bit - ATX Form Factor; 30.5cm x 24.4cm - 4 ddr3 slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====AMD Fusion (2011/14)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| 1.2GHz single Bobcat Fusion C30 + Hudson M1
| ACPI
| IDE
| SATA
| AMD 6250
| Audio
| USB
| Ethernet
| <!--Opinion-->2011 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2011 64bit does not support AVX or SSE 4.1 -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| Asus E35M1-M PRO uATX
| 1.6GHz 18W AMD Fusion E-350 dual core + Hudson M1
| ACPI
| {{N/A}}
| SATA
| AMD 6310 - no HD driver yet
| ALC887 VD2
| USB
| RTL8111E
| 2011 64bit does not support AVX or SSE 4.1 - EFI bios - pci slot -
|-
| Asus E35M1-I Deluxe miniITX
| 1.6GHz dual AMD Fusion E350 + Hudson M1 + DDR3
| ACPI
| {{N/A}}
| SATA
| AMD 6310 - no HD driver yet
| ALC892
| USB
| Realtek 8111E
| 2011 64bit does not support AVX or SSE 4.1 - no support for Atheros AR5008 on a Mini PCI-E - 1 pci slot -
|-
| ASRock E350M1 / USB3 (also version with USB3.0 added)
| 1.6GHz dual AMD Fusion E350 + Hudson M1
| ACPI
| {{N/A}}
| SATA - 4 SATA3
| {{Maybe|AMD 6310 - use vesa with hdmi and dvi}}
| {{Yes|Audio ALC892 playback but no HDMI output}}
| USB - 4 USB2.0 and 2 USB3.0
| {{Yes|rtl8169 for Realtek rtl8111E}}
| 2011 64bit does not support AVX or SSE 4.1 - 1 pci-e 2.0 x4 slot - f2 or del bios, f11 boot select -
|-
| <!--Name-->Gigabyte GA-E350N-USB3 mini-ITX
| <!--Chipset--> Hudson M1 FCH
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 SATA3
| <!--Gfx--> plus HDMI, DVI
| <!--Audio-->ALC892
| <!--USB-->2 NEC USB3.0 with 4 USB2.0
| <!--Ethernet-->rtl8169 for Realtek rtl8111E
| <!--Opinion-->2011 64bit does not support AVX or SSE 4.1 - 1 pci slot -
|-
| <!--Name-->Gigabyte GA-E350N Win8 V1.0
| <!--Chipset-->Hudson M1 FCH A45
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 SATA3
| <!--Gfx-->{{maybe|Use VESA - AMD 6310 plus HDMI, DVI}}
| <!--Audio-->{{yes|ALC887 playback through headphones but not thru hdmi}}
| <!--USB-->{{maybe|4 USB2.0 needs more testing}}
| <!--Ethernet-->{{yes|rtl8169 for Realtek 8111e}}
| <!--Opinion-->2011 64bit does not support AVX or SSE 4.1 - works well but need to test with sata hard disk
|-
| <!--Name-->MSI E350IA-E45
| <!--Chipset-->e-350 + Hudson M1 + DDR3
| <!--ACPI-->no support
| <!--IDE-->{{N/A}}
| <!--SATA-->4 Sata3 ports
| <!--Gfx-->AMD 6310 gpu
| <!--Audio-->ALC HDA
| <!--USB-->6 USB2.0 and 2 USB3.0 through NEC 720200 chipset
| <!--Ethernet-->Realtek RTL8111E
| <!--Opinion-->2011 64bit does not support AVX or SSE 4.1 -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->ASUS E45M1-M PRO
| <!--Chipset-->E450 APU with Hudson M1
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->ALC887
| <!--USB-->
| <!--Ethernet-->Realtek
| <!--Opinion-->2011 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->ASUS E45M1-I Deluxe
| <!--Chipset-->E-450 together
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->ALC892
| <!--USB-->
| <!--Ethernet-->Realtek 8111E
| <!--Opinion-->2011 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket FM1 (2011/13)=====
On board Graphic on CPU - HD6410D, HD6530D, HD6550D,
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->ASUS F1A55-M LE
| <!--Chipset--> with AMD A55 FCH (Hudson D2)
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->6 x SATA 3Gbit/s port(s), blue Support Raid 0, 1, 10, JBOD
| <!--Gfx-->PCI-e 2.0 slot or Integrated AMD Radeon™ HD 6000 in Llano APU
| <!--Audio-->Realtek® ALC887 Audio CODEC
| <!--USB-->6 USB2.0 ports
| <!--Ethernet-->Realtek 8111E rtl8169
| <!--Opinion-->2012 2011 64bit does not support AVX or SSE 4.1 - A-Series/E2- Series APUs up to 4 cores - 2 x DIMM, Max. 32GB, DDR3 2250(O.C.)/1866/1600/1333/1066 MHz Non-ECC, Un-buffered Memory Dual Channel Memory Architecture -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket FM2 White Socket (2012/13)=====
Onboard Gfx on CPU - HD6570, HD7480D, HD7540D,
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->A75 A85X
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2012 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket FM2 Plus Black socket (2013/15)=====
Onboard Gfx on CPU - HD6570, HD7480D, HD7540D,
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->A88X
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket AM1 FS1b socket (2014/1x)=====
5350 4 core Jaguar cores 2GHz with Integrated AMD Radeon R Series Graphics in the APU Kabini [Radeon HD 8400]
Later Beema APU with 2/4 core Puma (slightly updated Jaguar) cores, GCN graphics and a compute capable Radeon core, along with a brand new AMD security processor and FT3 BGA packaging (probably best avoided for long term survival).
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->ASUS AM1I-A
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HD Audio Realtek® ALC887-VD
| <!--USB-->
| <!--Ethernet-->Realtek 8111GR 8168
| <!--Opinion-->2011 64bit may support AVX or SSE 4.1 -
|-
| <!--Name-->MSI AM1I
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HD Audio ALC887
| <!--USB-->
| <!--Ethernet-->Realtek 8111G
| <!--Opinion-->
|-
| <!--Name-->MSI AM1M
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HD Audio ALC887
| <!--USB-->
| <!--Ethernet-->Realtek 8111G
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->BGA FT3 AM1x
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket AM4 FM3 Summit Ridge Zen Zen+ (2016/22)=====
Jim Keller’s group designed x86 Zen CPU - new and covering the same AM4 platform/socket for desktop
Zen will also shift from Bulldozer’s Clustered Multithreading (CMT) to Simultaneous Multithreading (SMT, aka Intel’s Hyperthreading). CMT is the basis for Bulldozer’s unusual combination of multiple integer cores sharing a single FPU within a module, so the move to SMT is a more “traditional” design for improving resource usage
Trusted Platform Module, or fTPM, that Windows 11 requires. Ryzen processors using a firmware TPM are causing stutters, even when doing mundane tasks. To enable TPM 2.0 on your AMD system please follow the steps below.
<pre>
Power on system and press DEL or F2 to get into the BIOS.
Navigate to Advanced\CPU Configuration.
Enable AMD fTPM switch.
Press F10 to save changes.
</pre>
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Asus ROG Crosshair VI Hero
| <!--Chipset-->X370
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e 3.0 (1x16 or 2x8)
| <!--Audio-->SupremeFX audio features an S1220 codec
| <!--USB-->
| <!--Ethernet-->Intel I211
| <!--Opinion-->Ryzen 7 1800X 1700X
|-
| <!--Name-->Biostar X370gtn Itx Am4
| <!--Chipset-->AMD X370
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->HDAudio with ALC892
| <!--USB-->
| <!--Ethernet-->Realtek Dragon LAN RTL8118AS
| <!--Opinion--> 2 ddr4 slots
|-
| <!--Name-->Gigabyte GA-AX370 K7
| <!--Chipset--> X370
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->HDAudio with 2 x Realtek® ALC1220 codec 0x10EC, 0x0295
| <!--USB-->
| <!--Ethernet-->1 intel and 1 E2500
| <!--Opinion--> 4 ddr4 slots
|-
| <!--Name-->MSI Xpower Gaming Titanium
| <!--Chipset--> X370
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->8-channel Realtek 1220 Codec 0x10EC, 0x0295
| <!--USB-->ASMedia® ASM2142 and amd cpu
| <!--Ethernet-->1 x Intel® I211AT Gigabit LAN
| <!--Opinion--> 2 ddr4 slots
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus Prime B350 Plus ATX
| <!--Chipset-->B350
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx--> x PCIe 3.0/2.0 x16 (x16 mode)
| <!--Audio-->Realtek® ALC887 8-Channel
| <!--USB-->
| <!--Ethernet-->Realtek® RTL8111H
| <!--Opinion-->Ryzen 5 1600x 1600 1500X 1400 - 4 x DIMM Max 64GB, DDR4 up to 2666MHz ECC and non-ECC Memory - ATX 12 inch x 9.35 inch ( 30.5 cm x 23.7 cm ) - 2 pci
|-
| <!--Name-->Asus PRIME B350M-A/CSM Micro ATX
| <!--Chipset-->AMD B350
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->HDaudio with
| <!--USB-->
| <!--Ethernet-->Realtek LAN
| <!--Opinion-->Ryzen 3 1300x 1200 1100
|-
| <!--Name-->AsRock Pro4 AB350
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->2 PCIe 3.0 x16, 4 PCIe 2.0 x1
| <!--Audio-->Realtek ALC892
| <!--USB-->
| <!--Ethernet-->Realtek
| <!--Opinion-->2017 64bit -
|-
| <!--Name-->ASRock AB350 Gaming-ITX/ac
| <!--Chipset--> B350
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->Intel LAN
| <!--Opinion-->
|-
| <!--Name-->MSI B350 Tomahawk Arctic Mortar
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->1 x PCIe 3.0 x16 (x16 mode)
| <!--Audio-->Realtek ALC892
| <!--USB-->
| <!--Ethernet-->Realtek RTL8111H
| <!--Opinion-->white and grey colours - 2 pci-e and 2 pci slots - m.2 in middle - atx 12 in by 9.6 in and matx versions -
|-
| <!--Name-->Jginyue M-ATX B350M-TI
| <!--Chipset-->B350
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Jginyue B350I-Plus ITX
| <!--Chipset-->B350
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->ASRock A320M-ITX MINI ITX Rev1.0 Rev2 Rev2.1
| <!--Chipset-->A320
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2018
|-
| <!--Name-->Asus PRIME A320M-C R2.0 rev1.1 A320M-K
| <!--Chipset-->A320 A/B300 SFF
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->PCIe 3.0
| <!--Audio-->HD audio with Realtek ALC887 alc897 CODEC
| <!--USB-->2 usb 3.1 gen 1
| <!--Ethernet-->Realtek 8111E
| <!--Opinion-->2019 64bit - 3rd/2nd/1st Gen AMD Ryzen™ / 2nd and 1st Gen AMD Ryzen™ with Radeon™ Vega
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI A320M-A PRO MicroATX
| <!--Chipset-->AMD A320
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->pci-e 3.0
| <!--Audio-->HDAudio Realtek® ALC892
| <!--USB-->USB3
| <!--Ethernet-->Realtek® 8111H
| <!--Opinion-->2019 64bit -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus ROG X399 Zenith Extreme
| <!--Chipset-->AMD X399
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio--> supremefx s1220
| <!--USB-->
| <!--Ethernet-->intel
| <!--Opinion-->Threadripper 1950X 1920X 1900X TR4 skt
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->AsRock Fatality X470 Gaming K4 mATX
| <!--Chipset-->X470
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->nvme
| <!--Gfx-->pci-e rebar possible
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->intel
| <!--Opinion-->
|-
| <!--Name-->Asrock Fatal1ty X470 Gaming-ITXac AMD AM4
| <!--Chipset-->AMD X470
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->intel
| <!--Comments-->
|-
| <!--Name-->ASUS ROG STRIX X470-I GAMING AM4 ITX Motherboard
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus B450-I Gaming
| <!--Chipset-->AMD B450
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->high VRM temps - raven ridge 14nm+ like 2200G 2400G
|-
| <!--Name-->AsRock B450 Gaming K4
| <!--Chipset-->B450
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio--> alc892
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion--> 4 ddr4 slots - low VRM thermals 3900x 3950x
|-
| <!--Name-->Gigabyte B450 I Aorus Pro Wifi
| <!--Chipset-->AMD B450
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->1 nvme pcie3 with 4 sata
| <!--Gfx-->pcie
| <!--Audio-->HDAudio with Realtek® ALC1220-VB codec
| <!--USB-->
| <!--Ethernet-->Intel LAN
| <!--Opinion-->very high vrm temps
|-
| <!--Name-->Jginyue B450i Gaming ITX
| <!--Chipset-->B450
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata3 - none nvme
| <!--Gfx-->pcie3
| <!--Audio-->HDAudio
| <!--USB-->
| <!--Ethernet-->1G
| <!--Opinion-->2021 64 2nd 3rd AMD - 2 ddr4 dimm slots
|-
| <!--Name-->MSI b450 tomahawk max
| <!--Chipset--> b450
| <!--ACPI-->
| <!--IDE-->{{n/A}}
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->HD audio with Realtek® ALC892 Codec
| <!--USB-->
| <!--Ethernet-->Realtek 8111H
| <!--Opinion-->
|-
| <!--Name-->MSI B450 Pro Carbon
| <!--Chipset-->B450
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio--> ALC codec
| <!--USB-->
| <!--Ethernet-->Intel LAN
| <!--Opinion-->
|-
| <!--Name-->MSI B450-A PRO
| <!--Chipset-->B450
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->ALC892
| <!--USB-->
| <!--Ethernet-->rtl8169 8111h
| <!--Opinion-->
|-
| <!--Name-->MSI B450I GAMING Plus AC ITX
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2019 - 2nd and 3rd gen AMD - 2 ddr4 slots -
|-
| <!--Name-->MSI B450 GAMING PLUS MAX
| <!--Chipset-->B450
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HDAudio with Realtek® ALC892/ALC897 Codec
| <!--USB-->USB3
| <!--Ethernet-->rtl8169 8111H
| <!--Opinion-->
|-
| <!--Name-->MAXSUN AMD Challenger B450M M-ATX (aka Soyo)
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->ASRock X570 PHANTOM GAMING-ITX/TB3 Mini ITX AM4
| <!--Chipset-->X570
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->nvme
| <!--Gfx-->PCIe 4.0
| <!--Audio--> ALC1200
| <!--USB-->
| <!--Ethernet-->Intel LAN
| <!--Comments-->
|-
| <!--Name-->Asus ROG Crosshair VIII Dark Hero
| <!--Chipset-->AMD X570
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio--> SupremeFX7.1 codec
| <!--USB-->
| <!--Ethernet-->Intel® I211-AT and Realtek® RTL8125-CG 2.5G LAN
| <!--Opinion-->
|-
| <!--Name-->Asus ROG Strix X570-I Gaming Mini ITX AM4 Motherboard
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI MPG X570 Gaming Plus
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio--> alc1220 codec
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus ROG Strix B550-i AM4 ITX Motherboard
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2022 -
|-
| <!--Name-->Jginyue Jingyue B550i Gaming itx
| <!--Chipset-->B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->3 with 1 nvme
| <!--Gfx-->1 pci-e 4
| <!--Audio-->HDAudio alc
| <!--USB-->
| <!--Ethernet-->1G
| <!--Comments-->2022 64bit max of Ryzen 5500 (c t), 5600, 5600g (6c12t) - 2 ddr4
|-
| <!--Name-->Asrock B550 PHANTOM GAMING ITX/AX
| <!--Chipset-->AMD B550
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx--> pci-e
| <!--Audio-->HDAudio with alc1220 codec
| <!--USB-->USB3
| <!--Ethernet-->{{no|intel 2.5G}}
| <!--Comments-->
|-
| <!--Name-->AsRock B550M-ITX/ac
| <!--Chipset-->B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HDAudio with Realtek ALC887 ALC897 Audio Codec
| <!--USB-->
| <!--Ethernet-->Realtek Gigabit LAN
| <!--Opinion-->2022 - 2 ddr4 slots
|-
| <!--Name-->AsRock ASRock B550M-HDV
| <!--Chipset-->B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->nvme and sata3
| <!--Gfx-->pci-e 4.0
| <!--Audio-->HDAudio with Realtek ALC887 or ALC897 Audio Codec unknown
| <!--USB-->usb3
| <!--Ethernet-->{{yes|rtl8169 Realtek rtl8111h Gigabit LAN}}
| <!--Opinion-->2022 - 2 ddr4 slots - 1 pcie x1 slot -
|-
| <!--Name-->Asus ROG STRIX B550-A GAMING
| <!--Chipset-->B550
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->PCIe Gen4 x4 & SATA3
| <!--Gfx-->pci-e 4
| <!--Audio--> supremefx S1220A
| <!--USB-->
| <!--Ethernet-->{{No|Intel® I225-V 2.5Gb}}
| <!--Opinion-->
|-
| <!--Name-->Gigabyte AMD B550I AORUS PRO AX Mini-ITX rev 1.0
| <!--Chipset-->AMD B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2 nvme pci-e3 with 4 sata3
| <!--Gfx-->pci-e
| <!--Audio-->Realtek® ALC1220-VB codec
| <!--USB-->
| <!--Ethernet-->{{no|Realtek® 2.5GbE LAN}}
| <!--Opinion-->2021 2 x DDR4 DIMM sockets 1Rx8/2Rx8/1Rx16 -
|-
| <!--Name-->Gigabyte B550 AORUS ELITE AX V2 ATX
| <!--Chipset-->B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->PCI-e 4.0 DP and hdmi
| <!--Audio-->HDAudio ALC1200
| <!--USB-->USB3 USB 3.2 Gen1 Type-C
| <!--Ethernet-->{{No|2.5GbE LAN}}
| <!--Opinion-->2022 64bit- finer tuning than A520's - AMD Ryzen 5000 Series/ 3rd Gen Ryzen and 3rd Gen Ryzen with Radeon Graphics CPU - Dual Channel ECC/ Non-ECC Unbuffered DDR4, 4 DIMMs -
|-
| <!--Name-->Gigabyte B550M DS3H mATX
| <!--Chipset--> B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2 NVMe
| <!--Gfx-->PCI-e 4.0
| <!--Audio-->HDaudio ALC887
| <!--USB-->USB3
| <!--Ethernet-->realtek rtl8118
| <!--Opinion-->2021 64bit - 4 ddr4 dimms -
|-
| <!--Name-->MSI MPG B550 GAMING PLUS ATX
| <!--Chipset--> B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->PCI-e 4.0
| <!--Audio-->HDAudio ALC892
| <!--USB-->USB 3
| <!--Ethernet-->rtl8169 Realtek 8111H
| <!--Opinion-->2022 64bit - 3rd Gen AMD Ryzen Processors - 4 dimm ddr4 -
|-
| <!--Name-->MSI MAG B550 TOMAHAWK ATX
| <!--Chipset--> B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe 1 x M.2, Socket 3, M Key (up to Type 22110) and 1 x M.2, Socket 3, M Key (Type 2242/2260/2280)
| <!--Gfx-->PCI-e 4.0 with dp and hdmi
| <!--Audio-->HDaudio ALC1200
| <!--USB-->USB3 1 x USB 3.1 Type-C and 1 x USB 3.1 Type-A
| <!--Ethernet-->Realtek RTL8125B and Realtek RTL8111H
| <!--Opinion-->2022 64bit - 4 Dimm slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Jginyue A520M-H mATX
| <!--Chipset-->A520
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion--> old bios with random issues with APU ryzens -
|-
| <!--Name-->Gigabyte A520M S2H mATX
| <!--Chipset-->AMD A520
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HDAudio
| <!--USB-->
| <!--Ethernet-->Realtek 1GbE
| <!--Opinion-->2022 64bit Zen3 65W and up - 2 ddr4 -
|-
| <!--Name-->Gigabyte A520I AC mITX mini-itx
| <!--Chipset-->AMD A520
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HDAudio
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2022 64bit Zen3 65W and up 5600G (6c12t) or 5700G (8c16t) - 2 ddr4 dimm slots -
|-
| <!--Name-->MSI A520M-A PRO mATX
| <!--Chipset-->A520
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe 1 x M.2, Socket 3, M Key (Type 2242/2260/2280)
| <!--Gfx-->PCI-e 3.0
| <!--Audio-->HDAudio ALC892
| <!--USB-->USB3
| <!--Ethernet-->rtl8169 rtl8111H
| <!--Opinion-->2022 64bit - 2 ddr4 dimm slots - 3rd Gen AMD Ryzen Desktop and AMD Ryzen 4000 G-Series CPU
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|}
===== (Socket AM5 LGA1718 Zen4 Zen5 Zen6 2022/27)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Asrock Steel Legend
| <!--Chipset-->x670e
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->PCI-e rnda2
| <!--Audio-->HD audio
| <!--USB-->USB3
| <!--Ethernet-->
| <!--Opinion-->2022 64bit - ddr5 ecc (10 chip) and non-ecc (8 chips) 64Gb @ 6000Mhz or 128GB @ 4800Mhz -
|-
| <!--Name-->Asrock TaiChi
| <!--Chipset-->x670e
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->PCI-e rnda2
| <!--Audio-->HD Audio
| <!--USB-->USB4 with Thunderbolt 4 equivalent
| <!--Ethernet-->{{No|Realtek killer E3000 2.5GbE}}
| <!--Opinion-->2022 64bit - ddr5 ecc (10 chip) and non-ecc (8 chips)
|-
| <!--Name-->Asus ROG Crosshair Hero
| <!--Chipset-->x670e
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe rnda2
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2022 64bit
|-
| <!--Name-->
| <!--Chipset-->x670e
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->rnda3
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2022 64bit 7950x3d 120W, 7900 7800 7600 90W
|-
| <!--Name-->
| <!--Chipset-->x670e
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->rnda3
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2022 64bit
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus B650E-I
| <!--Chipset-->B650
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->pci-e 5
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2023 - better sound with an actual AMP, PCIe 5, USB-C display outs -
|-
| <!--Name-->
| <!--Chipset-->x650 B650
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->x650 B650
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->x650 B650
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MAXSUN AMD Challenger B650M WIFI M-ATX (aka Soyo)
| <!--Chipset-->B650
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI b650i mini itx
| <!--Chipset-->B650
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->pci-e 4
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->Realtek
| <!--Opinion-->2023 - front panel connectors at the back of the board - dead rear nvme slot and a drained CMOS battery as the CMOS button being pressed during shipping -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->A620M Zen4
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->A620M
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->A620M
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->A620M
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset--> Zen5
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset--> Zen6
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name--> || <!--Chipset--> || <!--ACPI--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Opinion-->2026 FP8 Zen 6 Medusa Point 4bigC, 4 econC, 2lpC, 8coreGPU -
|-
| <!--Name--> || <!--Chipset--> || <!--ACPI--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Opinion-->2026 FP10 Zen 6 Medusa Point 4bigC, 4 econC, 2lpC, 8coreGPU -
|-
|}
===== (Zen7 AM6 2027/3x)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
===== (Zen AM 203x/3x)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
====Intel Sockets====
[[#top|...to the top]]
=====Socket 370 (2000/2)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Intel D815EEA
| <!--Chipset-->866Mhz P3 and i815 chipset
| <!--ACPI-->
| <!--IDE-->{{Yes}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{Yes|Nvidia AGPx8 6200LE added}}
| <!--Audio-->{{N/A}}
| <!--USB-->{{Yes|2 USB1.1}}
| <!--Ethernet-->{{N/A}}
| <!--Opinion-->Tested AspireOS 1.7, simple basic board with useful 5 PCI slots
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|}
=====Socket 478 (2002/4)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->[http://translate.google.co.uk/translate?hl=en&sl=zh-CN&u=http://detail.zol.com.cn/motherboard/index46381.shtml&prev=/search%3Fq%3Dc.865pe.l%2Bmotherboard%26client%3Dfirefox-a%26hs%3DsZB%26rls%3Dorg.mozilla:en-US:official Colorful Technology C.865PE-L Silver Fighter Warrior V2.3]
| <!--Chipset-->865PE
| <!--ACPI-->{{dunno| }}
| <!--IDE-->{{Yes|tested with CDROM}}
| <!--SATA-->{{dunno| }}
| <!--Gfx-->{{Maybe|AGP slot}}
| <!--Audio-->{{Yes|ALC650 AC97}}
| <!--USB-->{{Yes|USB 1.1 and 2.0}}
| <!--Ethernet-->{{Yes|RTL 8100 8139}}
| <!--Opinion-->Still testing with NB (Nightly Build) May 2013
|-
| <!--Name-->Intel 845
| <!--Chipset-->865P
| <!--ACPI-->
| <!--IDE-->{{Yes}}
| <!--SATA-->
| <!--Gfx-->{{No|intel 800}}
| <!--Audio-->{{No|AC97 AD1985}}
| <!--USB-->{{Yes|USB1.1 and USB2.0}}
| <!--Ethernet-->{{No|e1000}}
| <!--Opinion-->Tested ICAROS 1.3
|-
| <!--Name-->Intel 845
| <!--Chipset-->865GC
| <!--ACPI-->
| <!--IDE-->{{Yes}}
| <!--SATA-->
| <!--Gfx-->{{No|intel 865 Extreme Graphics 2}}
| <!--Audio-->{{No|AC97 AD1985}}
| <!--USB-->{{Yes|USB1.1 and USB2.0}}
| <!--Ethernet-->{{No|e1000}}
| <!--Opinion-->Tested ICAROS 1.3
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket LGA775 s775 (2005/8)=====
an industry standard DDR2 module could in theory contain fallback JEDEC, intel XMP and AMD EPP configuration data
Intel PC CL5 ram modules but an "AMD" CL5 ram module the BIOS cannot read the AMD EPP info on the SPD (Serial Presence Detect) but can recognize the CL5 timing info in the JEDEC data table. PC BIOS auto configures for the AMD ram module and boots normally.
an AMD PC CL6 ram modules but an "INTEL" CL6 ram module the BIOS cannot read the INTEL XMP info on the SPD but can recognize the CL6 timing info in JEDEC data table. PC BIOS auto configures for the AMD ram module and boots normally.
an INTEL PC needs CL6 ram modules but have an "AMD" CL4 ram module. INTEL BIOS cannot read the AMD EPP info on the SPD but can recognize the CL4 timing info in JEDEC data table. PC BIOS recognizes module timings as incompatible an refuses to boot.
entirely separate issue if the RAM module timing specs are incompatible.(i.e. CL4 RAM in a "CL6 only" PC)
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Abit AG8
| <!--Chipset-->P915 + ICH6R
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 ports SATA1
| <!--Gfx-->1 PCIe x16 Slot
| <!--Audio-->Realtek ALC658 AC97
| <!--USB-->4 USB2.0
| <!--Ethernet-->Realtek 8110S-32
| <!--Opinion-->2004 32bit - Firewire TI 4200R7T no
|-
| <!--Name-->MSI 915 Neo2
| <!--Chipset-->P915 + ICH6R
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 ports SATA1
| <!--Gfx-->1 PCIe x16 Slot
| <!--Audio-->CMI 9880L HD Audio
| <!--USB-->4 USB2.0
| <!--Ethernet-->{{no|Broadcomm BCM5751 PCIe}}
| <!--Opinion-->Firewire VIA VT6306 no
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus P5GC P5GC-MX
| <!--Chipset-->P945GC Lakeport-GC + ICH7R northbridge
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 SATA1 3.0 Gbit/s ports
| <!--Gfx-->1 PCIe 1.1 slot
| <!--Audio-->HD Audio with ALC662 codec
| <!--USB-->{{yes|2 usb2.0}}
| <!--Ethernet-->{{no|atheros L2}}
| <!--Opinion-->2005 32bit - 3 pci slots - 4 x 240-pin DIMM Sockets max. 4GB DDR2 667/533 non-ECC -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Foxconn PC45CM-SA 45CM-S
| <!--Chipset-->945GC with ICH7
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 sata2 ports
| <!--Gfx-->{{Yes|pcie 1.0 slot with gma950 integrated}}
| <!--Audio-->{{Yes|HD audio with aLC883 codec playback}}
| <!--USB-->{{Yes|}}
| <!--Ethernet-->{{Yes|realtek 8139 8100sc}}
| <!--Opinion-->2 dimm slots 667mhz max 4gb - can be found in Advent desktops - 2 pci-e and 2 pci - core 2 duo only e6xxx - Micro ATX (9.6” x 8.8”) -
|-
| <!--Name-->Gigabyte GA-81945GM MFY-RH
| <!--Chipset-->Intel® 945GM Express with ICH7M-DH
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->{{Yes|GMA950 VGA15 and PCI-e 1.0 slot}}
| <!--Audio-->{{Yes|HD Audio with ALC880 codec playback only rear port}}
| <!--USB-->{{Yes|4 usb 2.0}}
| <!--Ethernet-->{{No|Intel PRO1000PL 82573L Gigabit Ethernet}}
| <!--Opinion-->2006 MoDT term “Mobile on DeskTop.”, low TDP CPUs to work on desktop form-factor motherboards. mATX Micro ATX 24.4cm x 24.4cm - 2 DDR2 dimm 1.8v slots with 4Gb max - will not boot if PCI2 slot occupied -
|-
| <!--Name-->Gigabyte GA-945 GCM S2C
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->{{yes|ALC662 (1.x)}}
| <!--USB-->
| <!--Ethernet-->{{yes|8101E Rtl 8169 (1.x)}}
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA945-GCM S2L
| <!--Chipset-->945GC with ICH7
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 SATA1 ports
| <!--Gfx-->PCi-E slot
| <!--Audio-->{{Maybe|Intel HD Audio with ALC662 codec 2/4/5.1-channel (1.x)}}
| <!--USB-->{{Yes|4 USB2.0}}
| <!--Ethernet-->{{Yes|Realtek 8111c 8169 (1.x)}}
| <!--Opinion-->2 x 1.8V DDR2 DIMM 4GB DDR2 memory max - 2 PCI-e and 2 PCI - Micro ATX form factor; 24.4cm x 19.3cm -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI 945P Neo-F rev 1.0
| <!--Chipset-->P945 + ICH7
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 SATA1 ports
| <!--Gfx-->PCie 1.0 slot
| <!--Audio-->ALC662 HDA
| <!--USB-->4 USB2.0
| <!--Ethernet-->8110SC (rtl8169)
| <!--Opinion-->
|-
| <!--Name-->MSI 945P Neo2-F rev 1.2
| <!--Chipset-->P945 + ICH7
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 SATA1 ports
| <!--Gfx-->PCie 1.0 slot
| <!--Audio-->ALC850 AC97
| <!--USB-->4 USB2.0
| <!--Ethernet-->8110SC (rtl8169)
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-P31-DS3L
| <!--Chipset-->P31 with ICH7
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCI Express x16
| <!--Audio-->HD Audio with ALC888 codec
| <!--USB-->4 USB 2.0
| <!--Ethernet-->Realtek 8111B
| <!--Opinion-->DDR2 800Mhz up to 4Gb 4 x 240 pin - 3 PCI - ATX 12.0" x 8.3" -
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus P5KPL-AM /PS
| <!--Chipset-->G31 with ICH7
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->4 xSATA 3 Gbit/s ports
| <!--Gfx-->PCIe 1.1 with integrated Intel® GMA 3100
| <!--Audio-->HD Audio with VIA VT1708B with ALC662 codec
| <!--USB-->
| <!--Ethernet-->Realtek RTL8102EL 100/10 LAN with Realtek RTL8111C Gigabit LAN
| <!--Opinion-->2 x 2 GB DDR2 Non-ECC,Un-buffered DIMMs with 2 PCI - Intel Graphics Media Accelerator -
|-
| <!--Name-->Asus P5KPL/EPU
| <!--Chipset-->G31 with ICH7
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Pci-e 1.0 slot
| <!--Audio-->{{Yes|HD audio with ALC887 codec}}
| <!--USB-->
| <!--Ethernet-->{{Yes|RTL8169 Realtek 8111C}}
| <!--Opinion-->Tested - 4 240-pin DIMM, Max. 4 GB - 4 pci-e and 3 pci - ATX Form Factor 12 inch x 8.2 inch ( 30.5 cm x 20.8 cm ) -
|-
| <!--Name-->Gigabyte GA-G31M ES2L
| <!--Chipset-->G31 plus ICH7
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{Yes|Intel GMA 3100 2d}}
| <!--Audio-->{{Maybe|ALC883 (1.x), ALC883/888B (2.x)}}
| <!--USB-->
| <!--Ethernet-->{{Maybe|RTL8111C (1.x), Atheros 8131 (2.x)}}
| <!--Opinion-->reduces DRAM capacity to 4GB
|-
| <!--Name-->ASRock G31M-S r1.0 G31M-GS
| <!--Chipset-->G31 + ICH7
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->{{maybe|4 sata2}}
| <!--Gfx-->{{maybe|GMA 3100 2d not 3d}}
| <!--Audio-->{{yes|ALC662}}
| <!--USB-->{{yes|4 USB2.0}}
| <!--Ethernet-->{{partial|rtl8169 RTL8111DL 8169 (for -GS) RTL8102EL (for -S)}}
| <!--Opinion-->2007 64bit Core2 - 2 DDR2 800 max 8Gig AMI bios MicroATX -
|-
| <!--Name-->ASRock G31M-S r2.0
| <!--Chipset-->G31 + ICH7
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->{{maybe|4 sata2}}
| <!--Gfx-->{{maybe|GMA 3100 2d not 3d}}
| <!--Audio-->{{yes|ALC662}}
| <!--USB-->{{yes|4 USB2.0}}
| <!--Ethernet-->{{yes|RTL 8111DL 8169}}
| <!--Opinion-->2008 64bit core2 - 2 DDR2 800 max 8Gig MicroATX
|-
| <!--Name-->[http://www.intel.com/cd/channel/reseller/apac/eng/products/desktop/bdb/dg31pr/feature/index.htm Intel DG31PR]
| <!--Chipset-->iG31
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{maybe|3100 but can use PCIe 1.1 slot}}
| <!--Audio-->{{yes|ALC888 playback}}
| <!--USB-->
| <!--Ethernet-->{{yes|RTL8111B Rtl 8169}}
| <!--Opinion-->good support
|-
| <!--Name-->
| <!--Chipset-->Intel G33 Express Chipset with ich9 southbridge
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Intel 3100 powervr tile based
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2008 64bit - embedded on Core 2 Quad, Core 2 Duo, Pentium Dual-Core CPUS with Integrated GPU Intel GMA 3100 -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->ASUS P5G41T-M LX
| <!--Chipset-->G41 + ICH8 + DDR3
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->{{maybe}}
| <!--Gfx-->{{yes|X4500 some 2d only)}}
| <!--Audio-->ALC887
| <!--USB-->3 USB2.0
| <!--Ethernet-->{{no|Atheros L1c AR8131}}
| <!--Opinion-->reduces maximum supported memory ddr3 from 16 to 8GB 2 dimm slots non-EEC - demotes the PCIe controller mode from revision 2.0 (5.0GT/s) to revision 1.1 (2.5GT/s
|-
| <!--Name-->Gigabyte GA-G41MT S2
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->VT1708S (1.3), ALC887-VD2 (1.4), ALC887 (2.1),
| <!--USB-->
| <!--Ethernet-->Atheros AR8151 l1c (1.x 2.x),
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-G41MT S2PT
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->ALC887 (1.0), VIA (2.0), ALC887 (2.1)
| <!--USB-->
| <!--Ethernet-->RTL8111E (1.x), Atheros AR8151 l1c (2.1),
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-G41MT D3
| <!--Chipset-->G41 + ICH7
| <!--ACPI-->
| <!--IDE-->1 Port
| <!--SATA-->4 Ports
| <!--Gfx-->{{yes|GMA X4500 2d only and pci-e 1.1 slot}}
| <!--Audio-->{{yes|ALC888B}}
| <!--USB-->4 ports + headers
| <!--Ethernet-->{{yes|RTL8111 D/E}}
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-P41T D3P
| <!--Chipset-->G41 + ICH7 with Intel Core 2 Duo (E6xxx) CPU
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4ports
| <!--Gfx-->GMA X4500 2d
| <!--Audio-->ALC888 889/892
| <!--USB-->4 ports
| <!--Ethernet-->RTL 8111C or D/E
| <!--Opinion-->
|-
| <!--Name-->Intel DG41AN Classic
| <!--Chipset-->iG41 +
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 ports
| <!--Gfx-->X4500 2d
| <!--Audio-->ALC888S ALC888VC
| <!--USB-->4 ports
| <!--Ethernet-->8111E
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->AsRock P5B-DE
| <!--Chipset-->P965 + ICH8
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->{{Maybe|works ide legacy}}
|<!--Gfx-->{{Yes|with PCI-E 1.1 slot}}
| <!--Audio-->{{Yes|HD Audio via VT1708S}}
| <!--USB-->{{Yes}}
| <!--Ethernet-->{{Yes|RTL8169}}
| <!--Opinion-->2006 works well
|-
| <!--Name-->Asus P5B SE
| <!--Chipset-->965 intel
| <!--ACPI-->
| <!--IDE-->{{Yes| }}
| <!--SATA-->{{Yes| }}
| <!--Gfx-->{{N/A}}
| <!--Audio-->{{Yes|HD Audio ALC662 codec}}
| <!--USB-->{{Yes}}
| <!--Ethernet-->{{No| }}
| <!--Opinion-->works well except ethernet
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus P5W DH Deluxe P5WDG2 WS PRO
| <!--Chipset-->975X
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->2 ports
| <!--Gfx-->2 PCIe x16 slots
| <!--Audio-->ALC882 AND LATER ADI 1988B
| <!--USB-->2 USB2.0
| <!--Ethernet-->{{No|Marvell 88E8052 88E8053}}
| <!--Opinion-->Firewire TI TSB43AB22A no
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Abit IP35
| <!--Chipset-->P35 Express + ICH9R
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->6 ports
| <!--Gfx-->
| <!--Audio-->ALC888 HDA
| <!--USB-->4 USB2.0
| <!--Ethernet-->two RTL8110SC
| <!--Opinion-->Firewire Texas TSB43 AB22A no
|-
| <!--Name-->MSI P35 Neo F FL MS-7630 rev 1
| <!--Chipset-->Intel P35
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->pci-e 1.1 support
| <!--Audio-->HD Audio ALC888
| <!--USB-->
| <!--Ethernet-->Realtek
| <!--Opinion-->Base model of this range of P35 mobos
|-
| <!--Name-->GA-P35-DS3
| <!--Chipset-->P35 and ICH9
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 ports
| <!--Gfx-->
| <!--Audio-->HDAudio with Realtek ALC889A codec
| <!--USB-->
| <!--Ethernet-->rtl8169 Realtek 8111B
| <!--Opinion-->2008 - 4 x 1.8V DDR2 DIMM sockets max 8 GB -
|-
| <!--Name-->GA-EP35-DS3 (rev. 2.1)
| <!--Chipset-->Intel® P35 + ICH9 Chipset
| <!--ACPI-->
| <!--IDE-->{{unk|}}
| <!--SATA-->{{unk|4 }}
| <!--Gfx-->pci-e
| <!--Audio-->{{unk|Realtek ALC889A codec }}
| <!--USB-->{{yes | }}
| <!--Ethernet-->{{yes|rtl8169 Realtek 8111B}}
| <!--Opinion-->good
|-
| <!--Name-->Abit IX38 Quad GT
| <!--Chipset-->X38 / ICH9R Chipset
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->6 ports
| <!--Gfx-->PCI-E 2.0 slot
| <!--Audio--> HD Audio ALC888
| <!--USB-->4 USB2.0
| <!--Ethernet-->Realtek RTL 8110SC 8169SC
| <!--Opinion-->Firewire Texas TSB 43AB22A no
|-
| <!--Name-->Gigabyte X38-DQ6
| <!--Chipset-->X38 / ICH9R Chipset
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->6 ports
| <!--Gfx-->PCI-E 2.0 slot
| <!--Audio-->ALC889A HDA
| <!--USB-->4 USB2.0
| <!--Ethernet-->twin 8111B 8169
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Gigabyte GA-EP45 DS3 (2008)
| <!--Chipset-->P45 + ICH9 or ICH10
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->6 x SATA 3Gbit/s (SATAII0, SATAII1, SATAII2, SATAII3, SATAII4, SATAII5)
| <!--Gfx-->two PCI-E v2.0 x16 slots support splitting its 16 PCIe 2.0 lanes across two cards at x8 transfers
| <!--Audio-->HD Audio with ALC888 or ALC889A codec
| <!--USB-->6 USB2.0
| <!--Ethernet-->2 x Realtek 8111C chips (10/100 /1000 Mbit)
| <!--Opinion-->4 x 1.8V DDR2 DIMM sockets non-EEC
|-
| <!--Name-->MSI P45 Platinum (2008)
| <!--Chipset-->P45 + ICH9
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->6 sata2 ports
| <!--Gfx-->two PCI-E x16 v2.0 slots
| <!--Audio-->ALC888 HD Audio
| <!--USB-->6 USB2.0
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->G45 +
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->adds Intel’s GMA X4500HD graphics engine to P45 Express features
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->G43 +
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->GMA X4500 2d
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->removes HD video acceleration from the G45’s features
|-
| <!--Name-->Asus P5E Deluxe
| <!--Chipset--> X48 with ICH9
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HD Audio with ADI 1988B codec
| <!--USB-->
| <!--Ethernet-->Marvell 88E8001
| <!--Opinion-->
|-
| <!--Name-->GigaByte GA-X48 DQ6
| <!--Chipset-->X48 plus ICH9R
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->8 ports
| <!--Gfx-->two PCI-E x16 v2.0 slots
| <!--Audio-->ALC889A
| <!--USB-->8 USB2.0
| <!--Ethernet-->RTL 8111B 8169
| <!--Opinion-->Firewire TSB43AB23 no - ICH9 pairs with Intel’s 3-series (X38, P35, etc.) chipsets, in addition to the X48 Express, but excluding the G35 Express
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Gigabyte EP43-DS3L and Gigabyte GA-EP43-UD3L
| <!--Chipset-->P43 with ICH10
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->6 x SATA 3Gbit/s connectors
| <!--Gfx-->1 x PCI Express x16 slot PCI Express 2.0 standard
| <!--Audio-->HD Audio with ALC888 codec
| <!--USB-->
| <!--Ethernet-->realtek 8111C
| <!--Opinion-->4 x 1.8V DDR2 DIMM sockets - 4 pcie x1 - 2 pci - ATX Form Factor; 30.5cm x 21.0cm
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Gigabyte 73-pvm-s2h rev.1.0
| <!--Chipset-->NVIDIA GeForce 7100 nForce 630i
| <!--ACPI-->
| <!--IDE-->{{Yes|1 port}}
| <!--SATA-->{{yes|3 ports SATA2}}
| <!--Gfx-->{{Maybe|Vesa 2d GeForce 7100 (vga /hdmi/dvi), 1 PCIe x16 Slot }}
| <!--Audio-->{{Yes|Realtek ALC889A MCP73}}
| <!--USB-->{{Yes|7 USB2.0}}
| <!--Ethernet-->{{no|RTL 8211B MCP73}}
| <!--Opinion-->Firewire Not, tested with Icaros Desktop 2.0.3 MCP73 is a single chip solution in three different versions
|-
| <!--Name-->Nvidia 7150 630i
| <!--Chipset-->intel based nForce 630i (MCP73)
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->{{maybe|ide legacy}}
| <!--GFX-->GF 7150
| <!--Audio-->{{yes|HD AUDIO ALC883}}
| <!--USB-->{{yes|ohci echi}}
| <!--Ethernet-->{{no|RTL8201C}}
| <!--Opinion-->being tested
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->pci-e 2.0 x16
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion--> the MCP73PV or the GeForce 7050/nForce 630i
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->the MCP73S or the GeForce7025/nForce 630i
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->the MCP73V or the GeForce 7025/nForce 610i
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Atom SOC (2008/2x)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->D945CLF
| <!--Chipset-->N230 single core
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->
| <!--Gfx-->{{yes|GMA945}}
| <!--Audio-->{{yes|ALC662}} Skt 441
| <!--USB-->{{yes|uhci and ehci}}
| <!--Ethernet-->{{yes|rtl8169}}
| <!--Opinion-->works very well
|-
| <!--Name-->[http://www.clusteruk.com iMica D945GCKF2 mobo]
| <!--Chipset-->Intel Atom N330 Dual Core
| <!--ACPI-->wip
| <!--IDE-->{{yes|IDE}}
| <!--SATA-->{{maybe}}
| <!--Gfx-->{{yes|gma}}
| <!--Audio-->{{yes|HD AUDIO}}
| <!--USB-->{{yes|uhci ehci}}
| <!--Ethernet-->{{yes|rtl8169}}
| <!--Opinion-->
|-
| <!--Name-->D945GSEJT + Morex T1610
| <!--Chipset-->Atom 230 with 945GSE
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->{{maybe}}
| <!--Gfx-->{{yes|GMA900 vga but issues with DVI output}}
| <!--Audio-->{{yes|HDAudio with ALC662 codec}}
| <!--USB-->{{yes| }}
| <!--Ethernet-->{{yes|RTL8169 8111DL}}
| <!--Opinion-->small size, runs off 12V
|-
| <!--Name-->ASUS AT3N7A-I
| <!--Chipset-->Atom N330 Nvidia ION
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{maybe|3 ports legacy IDE}}
| <!--Gfx-->{{yes|nouveau cube cube 2 45 quake 3 }}
| <!--Audio-->{{yes|HD Audio with VIA 1708S codec playback}}
| <!--USB-->{{yes}}
| <!--Ethernet-->{{yes|RTL8169 device}}
| <!--Opinion--><ref>http://www.youtube.com/watch?v=EAiJpvu73iw</ref> good but can freeze randomly at times
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->D410PT 45nm pinetrail
| <!--Chipset-->D410 and NM10
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{maybe|ide legacy}}
| <!--Gfx-->{{maybe|GMA3150}}
| <!--Audio-->{{yes|ALC262 or ALC66x odd clicks}}
| <!--USB-->{{yes}}
| <!--Ethernet-->{{yes|RTL8111DL}}
| <!--Opinion-->some support
|-
| <!--Name-->45nm pinetrail
| <!--Chipset-->D510 and NM10 + GMA3150
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->GMA3150
| <!--Audio-->ALC888B or ALC66x
| <!--USB-->{{yes}}
| <!--Ethernet-->RTL8111DL
| <!--Opinion-->some support
|-
| <!--Name-->Gigabyte GA-D525TUD (rev. 1.0 1.2 1.5)
| <!--Chipset-->D525 NM10
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->gma 3150
| <!--Audio-->HDAudio ALC887
| <!--USB-->
| <!--Ethernet-->rtl8169 rtl8111f
| <!--Opinion-->2012 64 - 2 ddr3 dimm slots max 8g - Mini-ITX Form Factor; 17.0cm x 17.0cm -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
|}
=====Socket 1366 (2009/10)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Asus P6T DELUXE
| <!--Chipset-->x58 + ICH10 and Intel 1st gen. (Nehalem/Lynnfield) Core i7 (8xx) CPU
| <!--ACPI-->
| <!--IDE-->{{yes|1 port}}
| <!--SATA-->4 ports
| <!--Gfx-->2 PCIe x16 (r2.0) slots
| <!--Audio-->ADI AD2000B HD Audio
| <!--USB-->{{yes|4 USB2.0}}
| <!--Ethernet-->{{no|Marvell 88E8056 Gigabit}}
| <!--Opinion-->Firewire VIA VT6308 no
|-
| <!--Name-->gigabyte ex58 ds
| <!--Chipset--> x58 + ICH10
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->Realtek 8111D rtl8169
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket 1156 (2010)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Acer Aspire M3910
| <!--Chipset-->i3
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->{{unk| }}
| <!--Gfx-->{{maybe|VESA intel HD}}
| <!--Audio-->{{unk|HDAudio with Realtek ALC}}
| <!--USB-->{{yes| }}
| <!--Ethernet-->{{unk| Realtek}}
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-H55M-S2H
| <!--Chipset-->H55
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe slot
| <!--Audio-->{{Yes|ALCxxx playback}} ALC888B (Rev1.x)
| <!--USB-->{{Yes| }}
| <!--Ethernet-->{{Yes|RTL8111D}} (Rev 1.x)
| <!--Opinion-->Tested but no support for WLAN Realtek 8188su
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI H55M-E33 v1.0
| <!--Chipset-->E7636 M7636 H55 chipset so older i3/i5/i7 system
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->{{yes|HD Audio ALC889}}
| <!--USB-->
| <!--Ethernet-->{{Yes|PCI-E Realtek 8111DL}}
| <!--Opinion-->Works well
|-
| <!--Name-->Asus P7P55D
| <!--Chipset-->P55
| <!--ACPI-->
| <!--IDE-->{{unk| }}
| <!--SATA-->{{unk| }}
| <!--Gfx-->pci-e
| <!--Audio-->{{maybe | via codec}}
| <!--USB-->{{unk| }}
| <!--Ethernet-->{{maybe |rtl8169 Realtek RTL8111B/C RTL8112L }}
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket LGA 1155 H2 (2010/13)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->ASUS P8H61-I LX R2.0
| <!--Chipset-->H61
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata
| <!--Gfx-->1 pci-e slot
| <!--Audio-->{{unk|HDAudio via7018s codec}}
| <!--USB-->USB3
| <!--Ethernet-->{{yes|rtl8169 8111f}}
| <!--Opinion-->2013 64bit up to intel ivybridge cpus - 2 ddr3 dimm slots -
|-
| <!--Name-->Asus P8H61-I/RM/SI mini-itx
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2 sata
| <!--Gfx-->pci-e 2
| <!--Audio-->{{unk|HDAudio via7018s codec}}
| <!--USB-->
| <!--Ethernet-->{{yes|rtl8169 8111f}}
| <!--Opinion-->2013 64bit up to i3-2010 - OEM board from an RM machine but not ivybridge as the Asus BIOS isn't compatible with these, 0909 hacked one might work -
|-
| <!--Name-->asus p8h61-i lx r2.0/rm/si mini itx
| <!--Chipset-->h61
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e 2.0
| <!--Audio-->HDaudio with VIA codec
| <!--USB-->
| <!--Ethernet-->rtl8169 rtl8111e
| <!--Opinion-->2012 sandy and ivy - oem from rm machine 2 x 240-Pin DDR3 DIMM sockets max DDR3 1333MHz -
|-
| <!--Name-->Bewinner 63q9c7omvs V301 ITX
| <!--Chipset-->H61
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata with nvme
| <!--Gfx-->pci-e 4
| <!--Audio-->HDAudio
| <!--USB-->
| <!--Ethernet-->Realtek 8106E 100M Network Card
| <!--Opinion-->2022 64
|-
| <!--Name-->Biostar H61 H61MHV2 H61MHV3 Ver. 7.0
| <!--Chipset-->H61 with Intel Pentium G 2xxx series CPU
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e
| <!--Audio-->Realtek ALC662 later ALC897
| <!--USB-->4 usb2
| <!--Ethernet-->rtl8169 Realtek RTL8111H
| <!--Opinion-->2014 - 2 ddr3 dimm slots -
|-
| <!--Name-->Gigabyte GA-H61M-D2-B3
| <!--Chipset-->H61 + Sandybridge
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 ports sata2
| <!--Gfx-->
| <!--Audio-->ALC889
| <!--USB-->2 ports
| <!--Ethernet-->Realtek RTL8111E
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-H61MA-D3V
| <!--Chipset-->H61 +
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 ports sata2
| <!--Gfx-->
| <!--Audio-->Maybe HDAudio with Realtek ALC887 (Rev 2.0) ALC887 (Rev2.1)
| <!--USB-->2 USB 2.0/1.1 ports
| <!--Ethernet-->Realtek RTL8111E
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-H61N-D2V
| <!--Chipset-->H61 +
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata2 and maybe 4 sata3
| <!--Gfx-->pci-e 2.0 slot wit 1 x DVI-I port
| <!--Audio-->{{unk|HDAudio with Realtek ALC887 (Rev 1.0)}}
| <!--USB-->2 USB 2.0/1.1 ports
| <!--Ethernet-->Realtek RTL8111E
| <!--Opinion-->2013 64bit- 2 x 1.5V DDR3 DIMM sockets up to 16 GB -
|-
| <!--Name-->GA-H61M-S2PV
| <!--Chipset-->H61 with 2400k 2500k 2600k 2700k
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->pci-e 2.0 slot
| <!--Audio-->ALC887 (rev 1.0 2.0 2.1 2.2 2.3)
| <!--USB-->4 USB 2.0
| <!--Ethernet-->Rtl811E (1.0) 8151 (2.0) Rtl8111F (2.1 2.2 2.3)
| <!--Opinion-->Micro ATX Form Factor; 24.4cm x 20cm with 2 pci-e and 2 pci -
|-
| <!--Name-->Intel Classic Series DH61CR Desktop
| <!--Chipset-->H61 +
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 ports
| <!--Gfx-->
| <!--Audio-->Intel HD with ALC892
| <!--USB-->4 ports
| <!--Ethernet-->{{no|Intel 82579V}}
| <!--Opinion-->
|-
| <!--Name-->MSI H61M-P20 (G3) MS-7788
*retail MSI board
*OEM Advent, etc
| <!--Chipset-->H61
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{yes|four SATAII ports}}
| <!--Gfx-->1 PCI Express gen3 (retail) gen2 (oem) x16 slot
| <!--Audio-->{{yes|HDAudio ALC887 codec}}
| <!--USB-->{{yes|}}
| <!--Ethernet-->{{yes|Realtek 8105E 100M Network Card}}
| <!--Opinion-->2012 64bit - 2 ddr3 slots - 22.6cm(L) x 17.3cm(W) M-ATX Form Factor - BIOS - [https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1149&rowstart=140&pid=6009#post_6007 works well],
|-
| <!--Name-->MSI H61I-E35 (B3) MS-7677 Ver.1.2
| <!--Chipset-->H61
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata2 3gbps
| <!--Gfx-->{{maybe|VESA 2d for hdmi and 1 pcie 2.0 x1 slot}}
| <!--Audio-->{{yes|https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1149&rowstart=140&pid=5861#post_5861 works}}
| <!--USB-->USB3 and USB2
| <!--Ethernet-->{{yes|rtl8169 rtl8111e}}
| <!--Opinion-->2012 64bit - 2 ddr3 slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus P8H67-M
| <!--Chipset-->H67 +
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2 sata3 - 4 sata2
| <!--Gfx-->
| <!--Audio-->Intel HD with ALC887
| <!--USB-->6 USB2.0
| <!--Ethernet-->Realtek® 8111E
| <!--Opinion-->
|-
| <!--Name-->Asus P8P67
| <!--Chipset-->P67 with sandybridge and ivybridge cpus
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->{{unk|HDAudio with ALC codec}}
| <!--USB-->
| <!--Ethernet-->{{unk|rtl8169 realtek rtl8111}}
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus P8Z68-V LX
| <!--Chipset-->Z68 + Intel 2nd generation (Sandy Bridge) CPU and possibly ivybridge
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{yes|2 sata3 - 4 sata2}}
| <!--Gfx-->pci-e slot
| <!--Audio-->{{yes|HDAudio Intel HD with ALC887 codec}}
| <!--USB-->{{yes|2 USB3.0 - 4 USB2.0}}
| <!--Ethernet-->{{yes|rtl8169 Realtek® 8111E}}
| <!--Opinion-->2011 64bit SSE 4.1 and AVX - EFI bios - 4 ddr3 dimm slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte Z68AP-D3 (B3)
| <!--Chipset-->Z68 + Ivybridge
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2 sata3 - 4 sata2
| <!--Gfx-->
| <!--Audio-->Intel HD with ALC889
| <!--USB-->2 USB3.0 - 4 USB2.0
| <!--Ethernet-->Realtek® 8111E
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus B75M-A
| <!--Chipset-->B75
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes| }}
| <!--Gfx-->pci-e
| <!--Audio-->{{maybe|HDAudio with Realtek ® ALC887-VD codec}}
| <!--USB-->{{maybe| }}
| <!--Ethernet-->{{yes|rtl8169 Realtek ® 8111F-VB-CG }}
| <!--Opinion-->2013 64bit - 2 ddr3 slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->H77
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-H77-D3H 1.0 1.1
| <!--Chipset-->H77
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata 3.0
| <!--Gfx-->pci-e
| <!--Audio-->{{No|HDAudio VIA VT2021 codec}}
| <!--USB-->
| <!--Ethernet-->{{No|Atheros GbE LAN chip}}
| <!--Opinion-->2013 64bit i5 3550 7 3770 - 4 DDR3 slots - 2 full pci-e 2 pci slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Gigabyte GA Z77 D3H with i3 3225 dual
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e
| <!--Audio-->{{No|HDAudio VIA VT2021 codec}}
| <!--USB-->
| <!--Ethernet-->{{No|Atheros GbE LAN chip}}
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket LGA 1150 H3 (2013/2016)=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->[https://theretroweb.com/motherboards/s/asus-b85m-e-rev-1-02 Asus B85M-E]
| <!--Chipset-->B85
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes| }}
| <!--Gfx-->pci-e
| <!--Audio-->{{maybe|HDAudio with Realtek ® ALC887-VD2 codec}}
| <!--USB-->{{no| }}
| <!--Ethernet-->{{yes|rtl8169 Realtek 8111F}}
| <!--Opinion-->2014 64bit - 4 ddr3 slots -
|-
| <!--Name-->Gigabyte GA-H87N-WIFI mITX
| <!--Chipset-->H87 and Intel 4th generation (Haswell) Core i5 (4xxx) CPU
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->Intel HD with ALC892
| <!--USB-->
| <!--Ethernet-->Intel Atheros
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->ASUS H81I-PLUS Mini ITX
| <!--Chipset-->H81 with intel 4590t 4690t
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata3 6gbps
| <!--Gfx-->pci-e 3.0 x4 slot
| <!--Audio-->{{yes|HDAudio 6.34 with ALC8878 codec playback only}}
| <!--USB-->{{yes|USB3 USB2}}
| <!--Ethernet-->{{yes|rtl8169 rtl8111g}}
| <!--Opinion-->2014 64bit - 2 ddr3 dimm slots max 16gb - f2 or DEL bios and f8 boot select -
|-
| <!--Name-->Asus H81M-C H81M-P-SI
| <!--Chipset-->H81 with 4th generation (Haswell) Core i7 (4xxx) CPU
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2x3g 2x6g
| <!--Gfx-->pci-e slot
| <!--Audio-->hdaudio alc887 vd
| <!--USB-->
| <!--Ethernet-->realtek 8111gr
| <!--Opinion-->2013 skt 1150 - 2 ddr3 max 16g - mini atx -
|-
| <!--Name-->Asus H81T
| <!--Chipset-->H81
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2 sata
| <!--Gfx-->HD4000 igpu only
| <!--Audio-->HDAudio ALC887-VD
| <!--USB-->Intel USB3
| <!--Ethernet-->rtl8169 realtek 8111G
| <!--Opinion-->2013 64bit intel 4th gen mini itx - external dc brick with 19v rare barrel pin 7.4MM x 5.0MM - 2 ddr3 laptop sodimm slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-H81M-S2V
| <!--Chipset-->H81
| <!--ACPI-->
| <!--IDE-->{{N/A|}}
| <!--SATA-->
| <!--Gfx-->pci-e
| <!--Audio-->HDAudio ALC887
| <!--USB-->USB3
| <!--Ethernet-->Realtek® GbE LAN chip
| <!--Opinion-->2014 64bit up to i7 4790K - 2 DDR3 slots -
|-
| <!--Name-->Gigabyte GA-H81M-D3V (rev. 1.0)
| <!--Chipset-->H81
| <!--ACPI-->
| <!--IDE-->{{N/A| }}
| <!--SATA-->{{yes|2 sata2 2 sata3 }}
| <!--Gfx-->pci-e
| <!--Audio-->{{unk| HDAudio Realtek® ALC887 codec}}
| <!--USB-->{{unk|intel and VIA® VL805}}
| <!--Ethernet-->{{unk|rtl8169 Realtek }}
| <!--Opinion-->
|-
| <!--Name-->MSI H81M-E34 (MS-7817)
| <!--Chipset-->H81
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->{{yes| }}
| <!--Gfx-->PCIe 2.0 x16
| <!--Audio-->HDAudio with ALC887 codec
| <!--USB-->USB3
| <!--Ethernet-->{{yes|rtl8169 RTL8111G}}
| <!--Opinion-->2013 64bit -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus Z87-K
| <!--Chipset-->Z87 with 4th generation (Haswell) Core i7 4c8t i5 4c4t CPU
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e
| <!--Audio-->Intel HD with ALC
| <!--USB-->
| <!--Ethernet-->Realtek lan
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-Z87X-UD3H
| <!--Chipset-->Z87 Express
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e
| <!--Audio-->Intel HD with Realtek® ALC898 codec
| <!--USB-->
| <!--Ethernet-->intel
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA H97M D3H r1.0 r1.1 with i3 4360 or 4370 dual
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e
| <!--Audio-->Intel HD with ALC892
| <!--USB-->
| <!--Ethernet-->Realtek lan
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus Z97 A with i7 4790K
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->750, 960, 970 and 980 nvidia GTX cards
| <!--Audio-->Intel HD with ALC
| <!--USB-->
| <!--Ethernet-->intel lan ethernet
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA Z97X UD3H rev1.0 1.1 1.2
| <!--Chipset-->Z97 with i5 4690K
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HDaudio with ALC1150
| <!--USB-->
| <!--Ethernet-->intel lan
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI GAMING 5 Z97
| <!--Chipset-->Z97 with 4th generation (Haswell) Core i7 4c8t CPU
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->ASUS Q87M-E
| <!--Chipset-->Q87
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2014 64bit - 4 DDR3 slots -
|-
| <!--Name-->
| <!--Chipset-->H99
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket LGA2011V2 s2011-2 (2012/15)=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->x79
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2013 Xeon e5-???? W TDP, e5-2667V2 W TDP, e5-????V2 W TDP, Sandybridge and Ivybridge V2
|-
| <!--Name-->Asus
| <!--Chipset-->X79
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket LGA2011V3 s2011-3 (2015/18)=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->x99
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2016 Xeon e5-1620v3 130W TDP, e5-1650V3 (i7-5930K) 140W TDP, e5-2640V3 90W TDP, Haswell-EP
|-
| <!--Name-->Asus
| <!--Chipset-->X99
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->most cheap Ryzens are better nowadays
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Huananzhi X99-CD4
| <!--Chipset-->Intel C612 and X99
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata 3 connectors and 1 m.2 nvme slot
| <!--Gfx-->pcie slot
| <!--Audio-->HDaudio with ALC897 codec
| <!--USB-->{{No|USB3}}
| <!--Ethernet-->{{maybe|rtl8169}}
| <!--Opinion-->2024 quality might not be great outside of a simple setup - 2 ddr4 dimms -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Keyiyou X99 XD4
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Machinist MR9A Pro
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2023
|-
| <!--Name-->Machinist MR9A Pro
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2023
|-
| <!--Name-->Mogul
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Qiyida X99 H9S
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2023
|-
| <!--Name-->Soyo
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket LGA 1151 Socket H4 (2015/2018)=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->Skylake CPUs have TPM 2.0 embedded
|-
| <!--Name-->Asus H110 Plus H110M-A/DP
| <!--Chipset--> with 6th Gen Core and 7th with bios update
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->Sunrise Point-H SATA [AHCI mode] [8086 a102]
| <!--Gfx-->{{No|Skylake Integrated HD Graphics use PIC-E slot}}
| <!--Audio-->Intel HD Audio with Realtek ALC887 Audio CODEC
| <!--USB-->Sunrise Point-H USB 3.0 xHCI [8086: a12f] no usb2.0 fallback
| <!--Ethernet-->{{Yes|Realtek 8111GR or 8111H RTL8111 8168 8411}}
| <!--Opinion-->ATX with 3 pci-e and 2 DDR4 slots - uatx version smaller - turn off TLSF as it was causing AHI driver to corrupt. Turned off ACPI for errors but works fine once booted -
|-
| <!--Name-->ASUS H110M-R M-ATX
| <!--Chipset-->H110 6th Gen Skylake Core™ i7 Core™ 6950X i7-6970HQ i7-6700K 4c8t hyperthreading, i5/Core™ i5-6600K 4c4t i3/Pentium® / Celeron®
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 x SATA 6Gb/s
| <!--Gfx-->pci-e
| <!--Audio-->HDAudio with Realtek® ALC887 codec
| <!--USB-->Intel USB3
| <!--Ethernet-->Realtek® RTL8111H
| <!--Opinion-->2016 64bit - 2 DDR4 DIMMS Max 32GB 2133MHz - 1 full pci-e and 2 pci-e 1 -
|-
| <!--Name-->Asus H110T
| <!--Chipset-->H110
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2 sata
| <!--Gfx-->intel igpu only
| <!--Audio-->HDaudio
| <!--USB-->
| <!--Ethernet-->Dual Intel/Realtek GbE languard
| <!--Opinion-->2016 - mini itx 12v / 19v laptop type rare barrel pin 7.4MM x 5.0MM - 2 sodimm ddr4 slots - no pci-e slot -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-H110M-S2H MATX Rev1.0
| <!--Chipset-->H110
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata
| <!--Gfx-->pci-e 3.0
| <!--Audio-->Realtek® ALC887 codec
| <!--USB-->2 (USB 3.1 Gen 1) ports with 4 us2
| <!--Ethernet-->Realtek® GbE LAN
| <!--Opinion--> 2 ddr4 slots
|-
| <!--Name-->Gigabyte ga-h110n
| <!--Chipset-->H110
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Yes| sata}}
| <!--Gfx-->{{maybe|Vesa 2d for Intel or PCI-e slot}}
| <!--Audio-->{{Maybe|HDaudio for ALC887 codec}}
| <!--USB-->{{Maybe| }}
| <!--Ethernet-->{{maybe|RTL8169}}
| <!--Opinion-->2016 mini-itx 6th gen
|-
| <!--Name-->Msi H110M-PRO-VH
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 x SATA 6Gb/s
| <!--Gfx-->pci-e 3.0
| <!--Audio--> Realtek® ALC887 Codec
| <!--USB-->
| <!--Ethernet-->rtl8169 rtl8111h
| <!--Opinion--> 6th gen intel - 2 ddr4 slots
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus H170 Pro Gaming
| <!--Chipset-->H170
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata
| <!--Gfx-->pci-e
| <!--Audio-->HDAudio
| <!--USB-->Asmedia USB3.1/3.0
| <!--Ethernet-->intel lan
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI Z170A TOMAHAWK
| <!--Chipset-->Z170
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sara, 1 x 2280 Key M(PCIe Gen3 x4/SATA), 1 x 2230 Key E(Wi-Fi)
| <!--Gfx-->pci-e
| <!--Audio-->HDAudio
| <!--USB-->
| <!--Ethernet-->intel lan
| <!--Opinion-->2016 64bit up to i7 7700k - 2 DDR4 -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->GIGABYTE GA-B250M-DS3H HD3P D3H D2V
| <!--Chipset-->B250
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2018 coffee lake intel 8th gen
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus
| <!--Chipset--> with Kaby Lake X Intel 7th Gen
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion--> up to 16 pcie lanes
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus
| <!--Chipset--> Z390 with Kaby Lake X
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion--> up to 16 pcie lanes
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset--> Q370M
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset--> H370M
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset--> B360M
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus Rampage
| <!--Chipset-->x299 with i9
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion--> - up to 24 to 44 pcie lanes
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte
| <!--Chipset--X299 >
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|}
=====Socket LGA 1200 (2020/2022)=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->MSI H510M-A PRO (MS-7D22)
| <!--Chipset--> with 10th gen Comet Lake X
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2021 64bit - up to 16 pcie lanes rebar possible
|-
| <!--Name-->Asus PRIME H410M-E
Asrock H470M-HDV/M.2
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus
| <!--Chipset--> with 11th gen Rocket Lake X
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion--> up to 16 pcie lanes
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|}
=====Socket LGA 1700 (2023/ )=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->Alder Lake / 14th gen Raptor Lake
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2021 2022 64bit - QoS work to 2 level cpus, P down to E cores -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->Meteor Lake ultra 5 7 1xxH series 1
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2023 2024 64bit 10nm - 3 level cpus, Low Power Island (SOC tile) to E onto P cores -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset--> 15th gen Arrow Lake
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->Lunar lake ultra 5 7 2xxV series 2
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2025 64bit 7nm -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->Nova Lake
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2026 64bit -
|-
| <!--Name-->
| <!--Chipset-->Panther Lake
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2026 64bit - either 44, 484, or 448 tiled cores 18A process - core ultra x9 288h, x7 358H, -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket LGA 1954 (2027/ )=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->Nova Lake-S
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->Serpent Lake, Titan Lake, and Razer Lake
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2027
|-
|}
=====Socket LGA (203x/203x)=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->MSI
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|}
===Chromebooks===
For most (EOL) cromebooks, the recommended UEFI path forward is to:
*put the device into Developer Mode
*disable firmware write protection
*flash MrChromebox's UEFI Full ROM firmware
*install ChromeOS Flex, Linux, etc
See [https://mrchromebox.tech/#home MrChrome], [https://mrchromebox.tech MrChrome] and the [https://www.reddit.com/r/chrultrabook/ chrultrabook subreddit] for more info
ChromeOS has several different boot modes, which are important to understand in the context of modifying your device to run an alternate OS:
*Normal/Verified Boot Mode
Can only boot Google-signed ChromeOS images
Full verification of firmware and OS kernel
No root access to the system, no ability to run Linux or boot other OSes
Automatically enters Recovery Mode if any step of Verified Boot fails
Default / out-of-the-box setting for all ChromeOS devices
*Recovery Mode
User presented with Recovery Mode boot screen (white screen with 'ChromeOS is missing or damaged')
Boots only USB/SD with signed Google recovery image
Automatically entered when Verified Boot Mode fails
Can be manually invoked:
On Chromebooks, via keystroke: [ESC+Refresh+Power]
On Chromeboxes, by pressing a physical recovery button at power-on
On Convertibles/Tablets, by holding the Power, Vol+, and Vol- buttons for 10s and then release
Allows for transition from Verified Boot Mode to Developer Mode
On Chromebooks/Chromeboxes, via keystroke: [CTRL+D]
On Convertibles/Tablets, via button press: Vol+/Vol- simultaneously
Booting recovery media on USB/SD will repartition/reformat internal storage and reload ChromeOS
Note: The ChromeOS recovery process does not reset the firmware boot flags (GBB Flags), so if those are changed from the default, they will still need to be reset for factory default post-recovery.
*Developer Mode
"Jailbreak" mode built-in to every ChromeOS device
Loosened security restrictions, allows root/shell access, ability to run Linux via crouton
Verified Boot (signature checking) disabled by default, but can be re-enabled
Enabled via [CTRL+D] on the Recovery Mode boot screen
Boots to the developer mode boot screen (white screen with 'OS verification is off' text),
The user can select via keystroke
<pre>
ChromeOS (in developer mode) on internal storage ( [CTRL+D] )
ChromeOS/ChromiumOS on USB ( [CTRL+U] )
Legacy Boot Mode ( [CTRL+L] )
</pre>
Boot screen displays the ChromeOS device/board name in the hardware ID string (eg, PANTHER F5U-C92, which is useful to know in the context of device recovery, firmware support, or in determining what steps are required to install a given alternate OS on the device.
*Legacy Boot Mode
Unsupported method for booting alternate OSes (Linux, Windows) via the SeaBIOS RW_LEGACY firmware
Accessed via [CTRL+L] on the developer mode boot screen
Requires explicit enabling in Developer Mode via command line: sudo crossystem dev_boot_legacy=1
Most ChromeOS devices require a RW_LEGACY firmware update first
Boots to the (black) SeaBIOS splash screen; if multiple boot devices are available, prompt shows the boot menu
Note: If you hear two beeps after pressing [CTRL+L], then either your device doesn't have a valid Legacy Boot Mode / RW_LEGACY firmware installed, or legacy boot capability has not been been enabled via crossystem.
https://www.howtogeek.com/278953/how-to-install-windows-on-a-chromebook/
Chromebooks don’t officially support other OSs. You normally can’t even install as Chromebooks ship with a special type of BIOS designed for Chrome OS. But there are ways to install, if you’re willing to get your hands dirty and potentially ruin everything
[https://mrchromebox.tech/#devices Firmware Compatibility]
[https://wiki.galliumos.org/Hardware_Compatibility Here is the list of hardware that the GalliumOS supports and information on getting Gallium OS on to those devices]
Development on GalliumOS has been discontinued, and for most users, GalliumOS is not the best option for running Linux due to lack of hardware support or a kernel that's out of date and lacking important security fixes.
Meet Eupnea and Depthboot, the successors to Galliumos and Breath [https://eupnea-linux.github.io This is the bleeding edge]
Most older Chromebooks need the write-protect screw removed in order to install MrChromebox's firmware that allows you to install other operating systems. Most newer Chromebooks don't work in the same way as there is no write-protect screw on them.
Very rough guide to '''total''' (i.e. all cores / threads) processor performance (AROS usually uses only the [https://gmplib.org/gmpbench one core])
[[#top|...to the top]]
<pre>
060000 AMD Ryzen 9 7900X (AM5 170W),
056000 AMD Ryzen 9 5950X,
055000 AMD Ryzen 9 5900X3D,
053000 AMD Ryzen 9 5900X (AM4 105W), AMD Ryzen 9 3950X (105W),
044000 AMD Ryzen 7 5800X3D,
042000 AMD Ryzen 9 6900HX, AMD Ryzen 5 5600X3D (AM4 95W), AMD Ryzen 7 PRO 5750GE (AM4 35W),
039000 AMD Ryzen 9 5900HS, Intel Core i7-12700T, AMD Ryzen 7 7735HS (8c16t 45W), AMD 8840U,
038000 AMD Ryzen 7 5800H (FP6 45W), AMD Ryzen 7 6800U, Intel Core i5-12490F, Intel Core i5-12500E,
037000 AMD Ryzen 7 5800HS (FP6 35W), AMD Ryzen 5 8500G 8600GE (AM5 6c12t 35W), AMD Ryzen Z2 (8c16t),
036500 AMD Ryzen 7 5700G (AM4 8c16t 65W), AMD Ryzen 9 6900HS, Intel Core i7-12800H,
036200 AMD Ryzen 7 5700GE (AM4 8c16t 35W), AMD Ryzen Z1 Extreme (top TDP), AMD Ryzen 5 8600G (AM5 65W),
036000 AMD Ryzen 5 3600X (Am4 95W), AMD Ryzen 5 5500 (AM4 65W), AMD Ryzen 5 5600 (65W),
035000 AMD Ryzen 5 6600H, Intel Core i5-12400F,
031000 AMD Ryzen™ 9 8945HS, Ryzen™ 7 8845HS, AMD Ryzen 7 7840U,
030000 AMD Ryzen 7 4800U, AMD Ryzen 4800H, Intel Core i5-11400F, Intel Zeon E5-2697A V4,
029500 AMD Ryzen 5 4500 (AM4 65W), AMD Ryzen 5 3600 (65W), Apple M3 Pro 12c, AMD Ryzen 5 5600G,
028500 AMD Ryzen 5 PRO 5675U, AMD Ryzen 7 1700 (AM4 65W), AMD Ryzen 7 2700 (65W), Ryzen 3 7540U,
028000 AMD Ryzen 5 PRO 5650U, 5 5560U (FP6 25W 6c12t Zen3), Intel Core i5-13500H, AMD Ryzen 7 4800HS,
027700 AMD Ryzen 9 PRO 7940HS (FP8 65W), AMD 8745HS, AMD Ryzen H255 AI, AMD Ryzen 3 7545U,
027500 AMD Ryzen 3 7736U, AMD Ryzen 5 7640U,
027400 AMD Ryzen 5 8540U, AMD Ryzen 5 PRO 5650GE (AM4 6c12t 35W), AMD Ryzen 5 PRO 4650G (AM4 45W),
027300 AMD Ryzen 7 PRO 4750GE, AMD Ryzen 5 5600H, AMD Ryzen 7 5825U (FP6 8c16t 15W),
027200 AMD Ryzen 5 6600U, AMD Ryzen 7 2700X, AMD Ryzen 5 5600GE (AM4 35W), AMD Ryzen Z1,
027100 AMD Ryzen 7 7730U (FP6 15W 8c16t), AMD Ryzen 7 5800U (FP6 25W 8c16t), Ryzen 9 4900H,
027000 AMD Ryzen 7 PRO 4750U (8c16t), Ryzen 5 7430U (FP6 6c12t), Ryzen 5 PRO 6650U, Intel 10500H,
026500 AMD Ryzen 7 PRO 7840HS (FP7 65W), AMD Ryzen 7 8840HS, AMD Ryzen Z2 Extreme,
025000 AMD Ryzen 5 4600HS (FP6 35W 6c12t), Apple M1 Pro, AMD Ryzen 5 5625U (FP6 15W 6c12t),
024500 AMD Ryzen 5 5600U (FP6 25W hot 6c12t Zen3), AMD Ryzen 5 2600 (65W), Ryzen 5 7530U,
024000 AMD Ryzen 5 4600G (AM4 65W), AMD Ryzen 5 PRO 4650GE (AM4 35W), AMD Ryzen 7 PRO 1700X (AM4 95W),
023700 AMD Ryzen 3 PRO 5350GE (AM4 35W), AMD Ryzen 5 3500X (AM4 95W), Intel Core i7-9700,
023500 AMD Ryzen 5 1600X (95W), AMD Ryzen 3 5300GE (AM4 4c8t 35W), AMD Ryzen 7 5700U (FP6 25W 8c16t Zen2),
023200 AMD Ryzen 3 7330U (FP6 15W 4c8t), AMD Ryzen 7 4700U (FP6 25W 8c8t), AMD Ryzen 5 4400G,
023000 Intel Core i7-1255U, Intel Core i7 13700H, Ryzen 7640HS,
022000 AMD Ryzen Z2 Go (4c8t), AMD Ryzen 5 5500U (FP6 25W 6c12t Zen2), Snapdragon 8 Elite,
020500 AMD Ryzen 3 4300G (AM4 65W), AMD Ryzen 3 5450U 5425U, AMD Ryzen 5 PRO 4650U (6c12t),
019500 Intel Core i5-1135G7, AMD Ryzen 5 5500H, AMD Ryzen 5 4600U (FP6 25W 6c), AMD Ryzen 5 2600 (65W),
019250 Intel Core i5-1145G7,
019000 AMD Ryzen 5 3400G (AM4 65W), AMD Ryzen 5 2500X, AMD Ryzen 5 7520U, AMD Ryzen V3C18I (? 15W),
017750 AMD Ryzen 5 3400GE (AM4 35W), Intel Core i5-8400, AMD Ryzen 5 1500X (AM4 65W), Xbox One Series X,
017500 Intel Core i7-6700K, Intel i5-10400, AMD Ryzen 5 4500U (FP6 25W 6c6t), AMD Ryzen 3 5400U,
017000 AMD Ryzen 3 PRO 4350GE (AM4 35W), AMD Ryzen 3 5300U (FP6 25W 4c8t), Intel Core i5-11300H,
016500 AMD Ryzen 7 3750H, AMD Ryzen Embedded V1756B (FP5 45W), AMD Ryzen 3 PRO 4200GE, SD G3 Gen3,
016250 Intel Core i5-1035G7, intel core i5 7600 (4c4t 65W),
016000 AMD Ryzen 5 2400G (AM4 65W), AMD Ryzen 5 3550H, Ryzen 5 PRO 3350GE (4c 8t), Intel Core i5-8500T,
015500 AMD Ryzen Embedded R2544,
015000 AMD Ryzen 3 7320U, Ryzen 7 3700U, Ryzen 3200G (AM4 65W), Intel Core i7-8550U, Intel Core i5-1035G1,
014000 AMD Ryzen 5 2400GE (AM4 35W), Intel Core i7-6700T, AMD Ryzen 5 3550U,
013500 AMD Ryzen 5 3500U (FP5 15W 4c8t), AMD Ryzen 3 4300U, AMD Athlon Gold 4150GE, AMD Ryzen 5 3450U,
013250 AMD Ryzen 3 3200GE (AM4 45W), AMD Ryzen 3 1300X (65W), AMD Ryzen 3 2200G, Xbox One Series S,
013000 AMD Ryzen Embedded V1605B (FP5 25W), AMD Ryzen 2700U, AMD Ryzen R2514, Apple A18,
012500 AMD Ryzen 5 2500U (FP5 25W 4c8t), Intel Core i3-8300T, Intel Xeon X5680, Intel i3-1115G4 (2c4t),
012300 Intel Core i7-8565U, Intel Core i5-8350U, Intel Core i7-8700, Allwinner A733 (2 A76, 6 A55),
012200 ARM Cortex-X3 Prime Snapdragon SD8G2 Gen2 4nm 64-bit Kryo CPU, i5-8250U (4c8t),
012000 AMD Ryzen 3 2200GE, AMD Ryzen 3 1200 (65W), AMD Ryzen 5 3500C,
011500 AMD Ryzen 3 3300U, Intel Core i3-8100T, Intel Core i5-8265U, Intel i5-10210U, CORE i5-10310U,
010500 AMD Ryzen 3 2300U (FP5 25W 4c4t), Allwinner A527 (8 A55), Intel i5 4690K,
010300 Intel Core i7-3630QM, Intel Core i5-6600T, Intel Core i5-4670K,
010200 Intel Core i5-6440HQ, Intel Core i7-3610QM, Snapdragon SD865,
010000 AMD FX-8320E (AM3+ 125W 8c8t), Intel Core i5-7500T, Intel Core i5-4690, Intel i5 4690T,
009000 Spectrum Unisoc Tiger T7280 (T620), Cortex-X2, MediaTek Dimensity 1300 (4 A78, 4 A55),
008700 AMD FX-6130 (AM3+ 90W 6c6t), Intel Core i5-7400T, Intel Core i5-4590T,
008500 Intel Core i5-6500T, AMD Athlon 300GE (AM4, 35W), AMD Athlon Gold 7220U,
008000 AMD Ryzen R1606G (FP5 15W), AMD FX-6300 (AM3 65W 6c6t), Intel Core i5-2500K,
007500 AMD Ryzen 3 3200U, AMD Ryzen 3 3250U, Intel Alderlake ULX N100 / N95,
007200 AMD Ryzen 3 2200U (FP5 25W 2c4t), Intel Core i3-7100T, Intel Twinlakes N150 N200, Xbox(TM) One S,
007100 AMD Ryzen R1505G (FP5, 15W), RK3576 4 A72, 4 A53, Snapdragon XR2 Gen 1, Intel i7-6600U and 7600U,
006600 Qualcomm Snapdragon 888 5G, AMD Athlon 300U (FP5 2c4t 15W), Intel Core i7-7500U, AMD V1202B,
006500 Intel Core i7-6500U, AMD Athlon Gold 3150U, Intel Celeron N5105 (FCBGA1338 15W), SD 685,
006300 Intel Core i3-8130U (15W), Intel Celeron N5095 (FCBGA1338 15W), Intel Core i3-6100T,
006100 Intel Core i5-6300U, Intel Core i5-7200U (2c4t), Intel i7-5500U, Intel Core i7-6600U (2c4t),
006000 Intel Core i5-6200U (2c4t), Intel Core i3-7130U, Intel i7-4500U, Qualcomm Snapdragon 888 4G,
005950 Intel Core i5-4570T, Intel Core i5-5257U, Rockchip RK3588 (4 A76, 4 A55), Snapdragon 7325,
005900 Intel Xeon X5550, Intel Core i5-4300M, MediaTek Dimensity 1200 (4 A78, 4 A55), Unisoc 7255 (T616),
005800 Intel Celeron J4125 J4105 (FCBGA1090 15W), Intel Core i5-3470T, AMD A8-6600K APU, AMD 3015E (2c4t),
005600 Intel Core i5-3360M, Intel Core i7-3520M, Intel Core i5-4210M, Intel Pentium G4600T,
005400 MediaTek Dimensity 900 (2 A78, 6 A55), AMD Athlon Silver 7120U, Snapdragon 860,
005300 AMD PRO A12-9800B 7th Gen APU (FP4 15W), AMD FX-4300 4c4t, AMD Ryzen R1305G,
005250 Intel Core i5-3230M, AMD FX-7600P, Intel Pentium G4400, Unisoc T7200 (Unisoc T606 2 A76, 6 A55),
005200 AMD PRO A10-8770E, AMD A10-9700E, AMD PRO A10-9700B (FP4 15W), Intel Core i3-4130T,
005100 AMD RX-427BB (FP3 15W), AMD A10-9620P, AMD A12-9720P, Intel Core i3-8145U, AMD A12-9830B,
005050 AMD A8-5500 (FM2 65W), AMD A10 PRO-7800B APU, Intel Pentium Silver N5000, Intel Core i7-5500U,
005000 Intel Core i5-5300U, Intel Core i5-3320M (2c4t), Intel Core i5-5350U, Unisoc T618 (2 A73 6 A53),
004900 Intel Core i5-4300U, Intel Core i5-5200U, Intel Core i3-4100M, Snapdragon 662 (SM6115),
004860 Intel Core i7-2620M, Intel Core i7-2640M, AMD Athlon Silver 3050U 3050e, Intel i3-7020U,
004650 Intel Core i5-2520M (2c4t), Intel Core i5-3210M, AMD A10-9600P (FP4 4c 15W), Pentium 4415U,
004625 Intel Core i3-7100U (FCBGA1356 15W), ARM A76 RK3588S, AMD A10-6800B APU,
004600 AMD PRO A8-9600B, AMD PRO A12-8830B, AMD PRO A10-8730B, AMD A12-9700P, Intel Core i3-6100U,
004200 AMD A10-8700P A8-8600P, Intel Core i5-4200U, Intel Core i5-2540M, Intel i3-6006U, Intel i3-4150T,
004000 Intel Core i5-2430M, AMD PRO A8-8600B, AMD 3020e, Mediatek MT6797 Helio X20,
003850 Intel Core i5-2410M (2c4t), Intel Core i3-2120 (LGA1155 65W), Mediatek MT8786,
003800 AMD A10-4600M APU, AMD A10 PRO-7350B APU, AMD A10-5750M APU, Rockchip RK3399,
003600 AMD A8-6500T APU, AMD A8-7410 APU, AMD PRO A6-8550B, AMD A8-5550M (4c4t),
003500 AMD GX-424CC SOC (FT3b 25W 4c4t), ARM A75 Unisoc Tiger T610 (Spreadtrum) (8c 5W), intel i5-5250u,
003400 AMD A10-7300 APU, AMD A6-7310 APU, AMD A8-6410, AMD A10-5745M APU, Intel Core i3-4000M,
003350 Intel Pentium G2020, Intel Core i3-3120M (G2 2c4t), AMD R-464L APU, Intel® Core m5-6Y57 (2c4t),
003300 AMD GX-420CA SOC (FT3 BGA769 25W), AMD A6-9500E, Intel Celeron N4200, AMD A6-5200 ( 25W 2c2t),
003200 AMD A6-6310 APU, AMD A6-6400B APU, AMD A6-8570E, AMD A8-4500M APU, AMD A6-7400K APU,
003000 AMD A8-7150B, AMD A9-9410, A9-9420, A9-9425, AMD A6-8500B (FP4 15W), AMD A8-7100, Intel 5010u,
002900 AMD PRO A6-8530B, AMD A6-8500P, AMD A8-3500M APU, Intel Core i3-2120T, Intel i5-4250u,
002700 AMD Embedded GX-420GI (FP4 15W), AMD PRO A6-9500B, AMD GX-415GA, AMD A4-6210 APU, Intel i3-5005U,
002600 AMD A6-9225, AMD A8-4555M APU, AMD A4-5000 APU (FT3 15W), AMD A6-9220, AMD A6-3420M APU,
002450 Intel Celeron 2950M, Intel Pentium N3700, Intel Core i3-2350M, Allwinner A523 (8 A55),
002400 Intel Celeron N3150, Intel Core i3-2330M, Intel Xeon W3505, AMD A6-9210, Allwinner H618 (4 A53),
002300 Intel Celeron N3350, AMD A4-9120, AMD A4-9125, Intel Core i3-2310M, Intel Celeron 3865U,
002200 AMD A9-9420e, AMD A6-5350M APU, AMD E2-6110 APU, AMD E2-9000e, Celeron N4500, Intel N3710,
002000 AMD GX-412HC, AMD A4-4300M APU, AMD A6 PRO-7050B APU, AMD A6-4400M APU, AMD A6-7000,
001925 Intel Core2 Duo E6700, Intel Pentium Extreme Edition 965, Intel Core i3-370M, Celeron N4020,
001750 Intel Core i3-2365M 2375M, AMD A4-9120C, Intel Core2 Duo T8300, Qualcomm MSM8939,
001600 AMD GX-222GC (BGA769 FT3b 15W), AMD A4-9120e, AMD Embedded GX-215JJ, AMD A4-4355M APU,
001550 Intel Core2 Duo SL9400 T7600 T6600, AMD E2-3200, AMD A6-9220e, Mediatek MT8783, AMD E2-3800,
001520 Intel Celeron N4000,
001500 AMD GX-218GL SOC, AMD A6-4455M, AMD A4-5150M APU, ARM A55 RK3566 (4c 3W), Intel Core2 Duo T8100,
001400 AMD GX-217GA SOC, ARM Cortex-A53 4c4t H700, AMD A4-3300M APU, Allwinner A133P A64 (4 A53),
001300 AMD Turion 64 X2 Mobile TL-64 TL-62, Intel Core2 Duo T7300, Intel Core2 Duo T5600, AMD RX-216TD,
001250 AMD GX-412TC SOC, AMD A4-3320M APU, AMD Athlon 64 X2 QL-66, Intel Core2 Duo T7200
001200 AMD Athlon 64 X2 2c TK-57, AMD Turion 64 X2 Mobile TL-60 RM-74, AMD E1-2500, AMD E2-7015,
001150 Intel Core2 Duo T5550, Intel Core2 Duo L7500, AMD E2-3000M APU, ARM A35 RK3266, AMD E2-7110,
001100 Intel Core2 Duo T5300, AMD Athlon 64 X2 3800, Intel Core2 Duo E4300, Mediatek MT8127,
001050 AMD E1-6010 APU, Intel Pentium T4300, Intel Celeron N2840,
001050 AMD Athlon 64 FX-57, AMD Athlon 64 X2 Dual-Core TK-55, AMD Turion 64 X2 Mobile TL-52
001000 Intel Core2 Duo T5500, Intel Core2 Duo L7300, Intel Core2 Duo SU9400,
000950 AMD G-T56N, AMD Athlon 64 3100+, AMD E2-2000 APU,
000950 AMD Turion 64 X2 Mobile TL-50, AMD E1-2200 APU, Intel Celeron U3400,
000925 AMD TurionX2 Dual Core Mobile RM-72, AMD Sempron 140
000920 Intel Celeron SU2300, Intel Core2 Duo T5200, AMD Turion 64 X2 Mobile TL-56
000890 AMD E2-1800 APU, AMD Turion 64 X2 Mobile TL-58
000880 AMD G-T56E, AMD G-T48E,
000860 AMD E-450 APU, AMD E-350 APU, AMD Athlon LE-1620
000820 AMD A4-1250 APU, AMD Athlon LE-1600,
000810 AMD E1-2100 APU, Intel Core Duo T2500,
000810 Intel Atom D510, Intel Core2 Duo U7500,
000800 AMD Geode NX 2400+, AMD Turion 64 Mobile ML-42, AMD Athlon II Neo K325,
000760 AMD V140, AMD E1-1200 APU, AMD Athlon 64 3300+,
000730 Intel Core Duo T2400, AMD Turion 64 Mobile MK-38, AMD Sempron 3600+,
000700 Intel Core2 Duo U7600 U7700, AMD Sempron LE-1200, AMD V120
000680 AMD GX-212JC SOC, AMD E-300 APU, AMD A4-1200 APU,
000670 AMD Turion 64 Mobile MK-36 ML-37 ML-40, Mobile AMD Sempron 3800+
000640 Intel Atom N2600, Intel Atom N570, Mobile AMD Athlon 64 3200+
000640 Intel Core Duo T2300, Intel Core Duo T2050,
000630 VIA Eden X2 U4200, AMD Sempron LE-1100, AMD Sempron 3100+ 3600+,
000620 AMD C-70 C70 APU, Intel Atom 330, AMD G-T40N, AMD Athlon Neo MV-40,
000610 Intel Core2 Duo U7300, AMD Athlon II Neo K125 K145,
000600 Intel Atom N550, Intel Pentium 4, AMD Athlon 64 2800+,
000580 AMD C-60 C60, AMD G-T40E, AMD Sempron LE-1250
000530 AMD C-50 C50, Intel Celeron M 723, AMD Sempron 210U,
000490 AMD GX-210JA SOC, PowerPC 970 G5 IBM's 970 server CPU (2c),
000470 Mobile AMD Sempron 3500+, Mobile AMD Athlon XP-M 2200+,
000460 AMD Athlon XP 2500+, AMD Sempron 3500+, Mobile Intel Pentium 4,
000440 Intel Atom D425, Intel Atom N470, POWER 4 PPC,
000410 Intel Pentium M, Intel Celeron M, AMD Sempron 2300+
000400 Intel Atom N450, AMD Sempron 2400+,
000340 Intel Atom D410, AMD G-T52R, AMD C-30, AMD Sempron 2200+
000330 Intel Atom N455, Intel Atom N280, Intel Atom N270 (1c1t 2W), Intel P3,
000320 Freescale NXP QorIQ P1022
000310 PowerPC G4 7447 1Ghz (1c1t 15W), PPC440 core,
000230 PowerPC PPC G3/PPC 750,
000160 Pentium II, Motorola 68060
000080 Intel 80486, Motorola 68030,
000040 Intel 80386,
000030 Motorola 68020
000008 Motorola 68000
</pre>
=== Recommended hardware (32-bit) ===
[[#top|...to the top]]
Recommended hardware is hardware that has been tested with latest release of AROS and is relatively easy to purchase second hand (ie. ebay). This hardware also comes with commitment that compatibility will be maintained with each future release.
If in future decision will be made to drop any of the recommended hardware from the list (for example due to it no longer being available for purchase), such hardware will move to list of legacy supported systems and will have an indicated end of life date so that users have time to switch to other hardware.
{| class="wikitable sortable" width="100%"
| <!--OK-->{{Yes|'''Works well'''}} || <!--Not working-->{{No|'''Does not work'''}} || <!--Not applicable-->{{N/A|'''N/A not applicable'''}}
|-
|}
==== Virtual Hardware ====
{| class="wikitable" width="100%"
! width="20%" |Name
! width="5%" |Storage
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |Ethernet
! width="5%" |Wireless
! width="10%" |Additional hardware
! width="45%" |Comments
|-
| VirtualBox 7.x (Other/Unknown template) || {{Yes|IDE<br/>SATA(AHCI)}} || {{Yes|VMWARESVGA}} || {{Yes|HDAudio}} || {{Yes|PCNET32<br/>E1000}} || NOT APPLICABLE || NOT APPLICABLE || <!--Comments-->
|-
| VMware 16+ (Other32 template) || {{Yes|IDE<br/>SATA(AHCI)}} || {{Yes|VMWARESVGA}} || {{Yes|SB128}} || {{Yes|PCNET32}} || NOT APPLICABLE || NOT APPLICABLE || <!--Comments-->
|-
| QEMU 8.x ("pc" and "q35" machines) || {{Yes|IDE<br/>SATA(AHCI)}} || {{Yes|VESA}} || {{Yes|SB128}} || {{Yes|PCNET32}} || NOT APPLICABLE || NOT APPLICABLE || <!--Comments-->
|-
|}
==== Laptops ====
{| class="wikitable" width="100%"
! width="20%" |Name
! width="5%" |Storage
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |Ethernet
! width="5%" |Wireless
! width="10%" |Additional hardware
! width="45%" |Comments
|-
| ACER Aspire One ZG5 || {{Yes|IDE<br/>SATA(IDE)}} || {{Yes|GMA}} || {{Yes|HDAudio}} || {{Yes|RTL8169}} || {{Yes|ATHEROS}} || NOT APPLICABLE || <!--Comments-->
|-
| Dell Latitude D520 || {{Yes|IDE}} || {{Yes|GMA}} || {{Yes|HDAudio}} || {{Yes|BCM4400}} || {{No|}} || {{Yes|Atheros AR5BXB63}} || * select Intel Core 2 64-bit version, not Celeron 32-bit version <br/> * replace WiFi card to get wireless working
|-
|}
==== Desktop Systems ====
{| class="wikitable" width="100%"
! width="20%" |Name
! width="5%" |Storage
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |Ethernet
! width="5%" |Wireless
! width="10%" |Additional hardware
! width="45%" |Comments
|-
| Fujitsu Futro S720 || {{Yes|SATA(AHCI)}} || {{Yes|VESA}} || {{Yes|HDAudio}} || {{Yes|RTL8169}} || NOT APPLICABLE || NOT APPLICABLE || * no 2D/3D acceleration<br/> * use USB ports at back
|-
|}
==== Motherboards ====
{| class="wikitable" width="100%"
! width="20%" |Name
! width="5%" |Storage
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |Ethernet
! width="5%" |Wireless
! width="10%" |Additional hardware
! width="45%" |Comments
|-
| ASUS P8Z68V LX || {{Yes|SATA(AHCI)}} || {{Yes|VESA}} || {{Yes|HDAudio}}|| {{Yes|RTL8169}} || NOT APPLICABLE || {{Yes|GeForce 8xxx/9xxx}} || * add external PCIe video card for better performance
|-
| Gigabyte GA-MA770T UD3/UD3P || {{Yes|IDE<br/>SATA(AHCI)}} || NOT APPLICABLE || {{Yes|HDAudio}}|| {{Yes|RTL8169}} || NOT APPLICABLE || {{Yes|GeForce 8xxx/9xxx}} || * requires external PCIe video card
|-
| ASUS M2N68-AM SE2 || {{Yes|IDE}} || {{Yes|NVIDIA}} || {{Yes|HDAudio}}|| {{Yes|NVNET}} || NOT APPLICABLE || {{Yes|GeForce 8xxx/9xxx}} || * connecting a disk via SATA connector is not supported at this time <br/> * add external PCIe video card for better performance
|-
| Gigabyte GA-H55M-S2H || {{Yes|IDE<br/>SATA(AHCI)}} || {{Yes|VESA}} || {{Yes|HDAudio}}|| {{Yes|RTL8169}} || NOT APPLICABLE || {{Yes|GeForce 8xxx/9xxx}} || * add external PCIe video card for better performance
|-
|}
==== Legacy supported hardware ====
{| class="wikitable" width="100%"
! width="20%" |Name
! width="5%" |Storage
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |Ethernet
! width="5%" |Wireless
! width="10%" |Additional hardware
! width="10%" |EOL
! width="35%" |Comments
|-
| iMica || {{Yes|IDE}} || {{Yes|GMA}} || {{Yes|HDAudio}}|| {{Yes|RTL8169}} || NOT APPLICABLE || NOT APPLICABLE || 2026-12-31 ||
|-
| Gigabyte GA-MA770 UD3 || {{Yes|IDE<br/>SATA(IDE)}} || NOT APPLICABLE || {{Yes|HDAudio}}|| {{Yes|RTL8169}} || NOT APPLICABLE || {{Yes|GeForce 8xxx/9xxx}} || 2026-12-31 || * requires external PCIe video card
|-
|}
=== Recommended hardware (64-bit) ===
[[#top|...to the top]]
Recommended hardware is hardware that has been tested with latest release of AROS and is relatively easy to purchase second hand (ie. ebay). This hardware also comes with commitment that compatibility will be maintained with each future release.
==== Virtual Hardware ====
{| class="wikitable" width="100%"
! width="20%" |Name
! width="5%" |Storage
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |Ethernet
! width="5%" |Wireless
! width="10%" |Additional hardware
! width="45%" |Comments
|-
| VirtualBox 7.x (Other/Unknown (64-bit) template) || {{Yes|IDE<br/>SATA(AHCI)}} || {{Yes|VMWARESVGA}} || {{Yes|HDAudio}} || {{Yes|PCNET32<br/>E1000}} || NOT APPLICABLE || NOT APPLICABLE || * No accelerated 3D support
|-
| VMware 16+ (Other64 template) || {{Yes|IDE<br/>SATA(AHCI)}} || {{Yes|VMWARESVGA}} || {{Yes|SB128}} || {{Yes|E1000}} || NOT APPLICABLE || NOT APPLICABLE || * No accelerated 3D support
|-
| QEMU 8.x ("pc" and "q35" machines) || {{Yes|IDE<br/>SATA(AHCI)}} || {{Yes|VMWARESVGA}} || {{Yes|SB128}} || {{Yes|PCNET32}} || NOT APPLICABLE || NOT APPLICABLE || * No accelerated 3D support
|-
|}
==== Motherboards ====
{| class="wikitable" width="100%"
! width="20%" |Name
! width="5%" |Storage
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |Ethernet
! width="5%" |Wireless
! width="10%" |Additional hardware
! width="45%" |Comments
|-
| ASUS P8Z68V LX || {{Yes|SATA(AHCI)}} || {{Yes|VESA}} || {{Yes|HDAudio}}|| {{Yes|RTL8169}} || NOT APPLICABLE || {{Yes|GeForce GTX 7xx/9xx}} || * add external PCIe video card for better performance
|-
|}
==References==
[[#top|...to the top]]
{{reflist}}
{{BookCat}}
n4ds0f5mw24koj6exghk0cc2rdjocuo
4656264
4656263
2026-08-04T13:46:46Z
Jeff1138
301139
4656264
wikitext
text/x-wiki
{{ArosNav}}
==Introduction==
This a list of computer hardware tested with mostly native AROS installs and, in the recommended sections, of virtual machines
With 64bit support it is recommended 8Gb ram is needed and that SSE 4.1 and AVX are supported in the CPU i.e. from year 2012 for Intel CPUs and 2013 for AMD CPUs. They are x86-64 instruction sets designed to perform the same operations on multiple data items simultaneously, a technique known as Single Instruction, Multiple Data (SIMD). This allows for increased performance in tasks involving parallel computation. SSE 4.1 is a 128-bit SIMD instruction set, while AVX introduced 256-bit SIMD, further enhancing performance. Some apps require these features to run well, like 3D, multimedia decoding or JIT (javascript) in Odyssey web browser. If not the apps may work slower or might fail.
If you have encountered differently (i.e. problems, incompatibilities, faults, annoyances, environment, errors, review of setup etc) please update this information.
Please bear in mind that AROS has only a few hardware driver developers, whilst Linux counts in the tens and Windows in the hundreds.
[[#Laptops]]
[[#Netbook]]
[[#Desktop Systems]]
[[#AMD Sockets]]
[[#Intel Sockets]]
[[#Recommended hardware (32-bit)]]
[[#Recommended hardware (64-bit)]]
=== Laptops ===
[[#top|...to the top]]
* 2006/2007 Dell Latitude D-series laptops - business class machines, good support in Aros, easy to replace wifi card
* 2006 some [https://www.techradar.com/reviews/pc-mac/laptops-portable-pcs/laptops-and-netbooks/toshiba-satellite-pro-a200-28550/review Satellite Pro A200]
* 2008 For the tiny carry anywhere, the early run of Acer Aspire netbooks
Rough estimate from taking a random laptop notebook what you can expect from a Native install of AROS
{| class="wikitable sortable" width="100%"
! width="10%" |Date
! width="5%" |Overall
! width="5%" |Gfx VESA
! width="5%" |Gfx 2D Acceleration
! width="10%" |Gfx 3D Acceleration
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="10%" |Wireless
! width="20%" |Comments
|-
| Before 2002 || Poor to OK || VESA 90% || 2D 10% || {{N/A}} || Audio 10% || 40% || Wired 70% || 2% || Max RAM 512MB
|-
| 2002-2005 || OK || VESA 95% || 2D 10% || 3D 0% || Audio 30% || 70% || Wired 50% || 10% || Max RAM 2GB (for 32bit)
|-
| 2005-2012 || Good || VESA 98% || 2D 60% || 3D 30% || Audio 40% || 80% || Wired 30% || 10% || Max RAM 3Gb (32bit) to 8GB (64bit)
|-
| 2013-2017 || OK || VESA 98% || 2D 30% || 3D 0% || Audio 30% || 60% once usb3 completed || Wired 20% || 0% || Max RAM 8GB / 16GB better to go Intel / AMD Ryzen over AMD A series
|-
| 2018-2024 || OK || VESA 98% || 2D 20% || 3D 0% || Audio 40% || 40% once usb3 completed || Wired 30% || 0% || Max RAM 32GB better 64bit options if has an internal dvd drive and working ethernet
|-
| 2025-202x || Poor || VESA 95% || 2D 0% || 3D 0% || Audio 0% || 0% || Wired 10% || 0% || Max RAM 64GB AI disruption of previous hardware
|-
|}
3D tests now conducted with apps found in Demos/AROS/Mesa and run at default size (may need to View As -> Show All to see them.
Any laptop with Windows 7(TM) 64bit or higher install, the bios and hard drive set in uefi/gpt mode (install of AROS incompatible)
Most vendor suppliers get OEM (original equipment manufacturers) to make their laptops. These brand name companies purchase their laptops from
*80% ODM (Original Design Manufacturer) such as Quanta, Compal, Wistron, Inventec, Foxconn (Hon Hai), Flextronics and Asus (now Pegatron)
*20% MiTAC, FIC, Arima, Uniwill, ECS, Tonfang Origin and Clevo
{| class="wikitable sortable" width="100%"
| <!--OK-->{{Yes|'''Works well'''}} || <!--May work-->{{Maybe|'''Works a little'''}} || <!--Not working-->{{No|'''Does not work'''}} || <!--Not applicable-->{{N/A|'''N/A not applicable'''}}
|-
|}
====Acer/Gateway/Emachines====
Company founded under the name of Multitech in Taiwan in 1976, renamed to Acer or Acer Group in 1987
Order of build quality (Lowest to highest)
<pre >
Packard Bell
Aspire
Extensa
TimeLine
Travelmate
</pre >
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="2%" |Ethernet
! width="5%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Travelmate 505 506 507 508 Series || <!--Chipset-->P2 Celeron 466Mhz || <!--IDE-->{{Yes|boots}} || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA Neo Magic Magic Graph 128XD (NM2160)}} || <!--Audio-->{{No|AC97 Crystal CS}} || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->1998 minimal support but no audio etc - 506T, 506DX, 507T, 507DX, 508T
|-
| <!--Name-->TravelMate 340 342 343 345 347 || <!--Chipset-->ALi M1621 with piii || <!--IDE--> || <!--SATA--> || <!--Gfx-->Trident Cyber 9525 || <!--Audio-->{{No|ESS ES1969 Solo-1}} || <!--USB-->2 ALi OHCI USB 1.1 || <!--Ethernet-->a few have Intel e100 || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->2000 32bit - 340T, 341T, 342T, 342TV, 343TV, 345T, 347TV
|-
| <!--Name-->TravelMate 350 351 352 353 || <!--Chipset-->Ali with piii || <!--IDE-->{{Yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->Trident Cyber Blade DSTN/Ai1 || <!--Audio-->{{No|ali5451}} || <!--USB-->2 USB 1.1 Ali M5237 OHCI || <!--Ethernet-->e100 || <!--Wireless-->Acer InviLink IEEE 802.11b || <!--Test Distro--> || <!--Comments-->2001 32bit very limited support but no support for PCMCIA O2 Micro OZ6933 - 350T, 351TEV, 352TEV, 353TEV
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->TravelMate 610 series 611 612 613 614 || <!--Chipset-->815 P3 || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->Intel 82815 cgc || <!--Audio-->AC97 || <!--USB-->USB 1.1 || <!--Ethernet-->Intel e100 pro || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->2001 32bit - 610TXVi 610T 611TXV 612TX 613TXC
|-
| Aspire 3003LM || SIS AMD 3000 1.8GHz || {{yes}} || {{N/A}} || {{maybe|SIS AGP M760GX (VESA only)}} || {{yes|AC97 SIS codec}} || 3 USB 2.0 || {{yes|SIS900}} || {{no|Broadcom BCM4318 AirForce One 54g}} || Icaros 1.2.4 || 2003 sempron
|-
| Travelmate 2310 Series ZL6 || Intel Celeron M 360 1.4GHz with SiS 661MX || {{yes}} || {{N/A}} || {{maybe|SiS Mirage M661MX (VESA only)}} || {{yes|SIS SI7012 AC97 with realtek ALC203 codec speakers only}} || || {{yes|SIS900}} || {{N/A|LM version has pci card slot but no antenna}} || 2017 Icaros 2.1.1 || 2004 32bit - No USB boot option but boot from DVD - reports of wifi losing connection (isolate/remove the metallic grounding foil ends of the antennas) - 2312LM_L -
|-
| <!--Name-->Aspire 3000 3002LMi 3500 5000 || <!--Chipset-->AMD CPU W-with SIS M760 || <!--IDE--> || <!--SATA--> || <!--Gfx-->SIS 760 || <!--Audio-->SIS || <!--USB--> || <!--Ethernet-->SIS 900 || <!--Wireless-->{{No|Broadcom BCM4318 swap for Atheros}} || <!--Test Distro--> || <!--Comments-->2005 32bit
|-
| <!--Name-->Aspire 3050 5020 5050 || <!--Chipset-->AMD Single and Turion MK-36 Dual and RS480 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Use VESA - RS482M Xpress 1100 or RS485M Xpress 1150 || <!--Audio-->HD Audio Realtek ALC883 || <!--USB--> || <!--Ethernet-->8139 || <!--Wireless-->Atheros 5006G or Broadcom BCM 4318 || <!--Test Distro--> || <!--Comments-->2005 32bit MK36 gets very hot
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->TravelMate 2410 2420 2430 series || <!--Chipset-->915GM || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel Mobile 915GMS 910GML || <!--Audio-->Intel AC97 ICH6 with ALC203 codec || <!--USB-->4 USB2.0 || <!--Ethernet-->Realtek RTL-8139 || <!--Wireless-->Atheros 5005GS || <!--Test Distro--> || <!--Comments-->2005 32bit 2428AWXMi -
|-
| <!--Name-->Acer Aspire 3610 - WISTRON MORAR 3614WLMI || <!--Chipset-->Intel 915 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Yes|Intel GMA 2D and 3D}} || <!--Audio-->{{yes|[http://www.amiga.org/forums/showpost.php?p=644066&postcount=13 AC97]}} || <!--USB--> || <!--Ethernet-->{{yes|RTL 8139 8139C+}} || <!--Wireless-->{{Maybe|Atheros AR5001X+, AR5BMB5 or Broadcom 4318}} || <!--Test Distro--> Icaros 1.2.4 || <!--Comments-->2005 32bit with good support [http://ubuntuforums.org/showthread.php?p=6205188#post6205188 wifi issues]
|-
| <!--Name-->TravelMate 2480 series 2483 WXMi (HannStar J MV4 94V) 2483NWXCi Aspire 3680, 3690 || <!--Chipset-->940GML i943 with Celeron 430 1.77GHz - 14.1" || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes| }} || <!--Gfx-->{{Yes|2D and 3D openGL 1.x - Tunnel 181 gearbox 104 scores}} || <!--Audio-->{{Yes|HD Audio with ALC883 codec playback}} || <!--USB-->{{Yes|3 USB 2.0}} || <!--Ethernet-->{{No|Marvell 88E8038 yukon sky2}} || <!--Wireless-->{{No|Atheros 5k AR5005G AR5BMB5 mini pci}} suspect laptop hardware issues || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2006 Works well shame about the internet options - noisy fan - poor battery life - no boot option for TI based mass storage sd card - Max 2GB memory - LCD Inverter Board IV12090/T-LF -
|-
| <!--Name-->TravelMate 2490 series 2492WXMi || <!--Chipset-->940GML || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Yes|Intel 945 2D and 3D tunnel 164 gearbox 105}} || <!--Audio-->{{Yes|HD Audio}} || <!--USB--> || <!--Ethernet-->{{Maybe|Broadcom BCM4401}} || <!--Wireless-->{{No|Atheros AR5005GS suspect hardware issue}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2006 32bit - 15inch screen - strange curved up at ends keyboard style - overall plastic construction - Atheros AR5005G(s) -
|-
| <!--Name-->Gateway ML6227B MA7 || <!--Chipset-->Celeron M 520 1.6Ghz with 945GM || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{Yes|945GM 2D and 3D tunnel 169 gearbox 132}} || <!--Audio-->{{No|HDA Intel with STAC9250 codec}} || <!--USB--> || <!--Ethernet-->{{No|Marvell 88E8038}} || <!--Wireless-->{{No|8187L but swap ath5k mini pcie}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2006 15.4 ultrabrite widescreen - Wifi Switch on side Fn/F2 -
|-
| <!--Name-->Acer Aspire 5630-6796 6288 BL50 || <!--Chipset-->T5200 T5500 Intel® Core™2 Duo T7200 T7400 T7600 || <!--IDE-->{{Yes| }} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Yes|Intel® GMA 950 with S-Video out with 2D and 3D}} || <!--Audio-->{{Yes|HDAudio with ALC883? codec}} || <!--USB-->{{Yes|4 USB}} || <!--Ethernet-->{{yes|Broadcom BCM4401}} || <!--Wireless-->{{No|Intel 3945abg swap for Atheros 5K}} || <!--Test Distro-->Tiny AROS || <!--Comments-->2006 - 64bit 39.1 cm (15.4" 1280 x 800) - 2 DDR2-SDRAM slots max 4GB - green mobo?? -
|-
| <!--Name-->Acer Aspire 5633WMLI BL51 || <!--Chipset-->T5500 with Intel® 945PM/GM Express || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE mode}} || <!--Gfx-->{{Yes|Nvidia Go 7300 with 2D and 3D}} || <!--Audio-->{{Yes|HD Audio with Realtek codec}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{yes|Broadcom 440x}} || <!--Wireless-->{{No|Intel 3945 swap for Atheros 5k}} || <!--Test Distro-->Tiny Aros || <!--Comments-->2007 64 bit dual core2 - 15.4 WXGA screen - ddr2 max 4gb - OrbiCam no support - ENE chipset SD card - blue mobo?? -
|-
| <!--Name-->Acer Aspire 9410 9420 || <!--Chipset-->Intel Core Duo with 945PM Express || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes| }} || <!--Gfx-->{{Yes|2D NVIDIA GeForce Go 7300 - 128 MB VRAM G72M}} || <!--Audio-->{{Yes|Intel HD audio with codec}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{Yes|rtl8169 8111 }} || <!--Wireless-->{{No|Intel 3945ABG but could swap with atheros 5k}} || <!--Test Distro-->Icaros 2.3 || <!--Comments-->2007 32bit - 17in TFT 1,440 x 900 WXGA+ - 2 ddr2 sodimm slots max 4gb -
|-
| <!--Name-->eMachines E510 series KAL10 || <!--Chipset-->Intel Celeron M 560 2.13Ghz with PM965 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel x3100 || <!--Audio-->{{Yes|Intel with codec}} || <!--USB-->Intel || <!--Ethernet-->{{No|Broadcom BCM5906M}} || <!--Wireless-->{{No|Atheros G AR5BXB63 bios issue??}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2007 32bit very budget machine with InsydeH20 bios and F10 boot menu
|-
| <!--Name-->ACER Aspire 5920 [http://tim.id.au/laptops/acer/aspire%205920g.pdf 5920G] || <!--Chipset-->Santa Rosa Core 2 Duo T7300 T7500 later T9300 with GM965 and PM965(G) Express || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|use VESA for X3100M or 8600M GS (rev a1) 9500M GT 256MB vram (G) but some AMD/ATI RV635 M86 HD 3650}} || <!--Audio-->{{No|HD Audio with realtek alc268, [https://forums.opensuse.org/t/no-sound-on-acer-aspire-5920g/32392 ALC883] or Realtek ALC1200 / alc888s codec ICH8}} || <!--USB-->{{Yes|USB2 }} || <!--Ethernet-->{{No|Broadcom BCM5787M}} || <!--Wireless-->{{unk|Intel 3945ABG 4965 or Atheros 9k AR9285}} || <!--Test Distro-->Deadwood test iso 2023-01 2023-11 || <!--Comments-->2008 64bit boot with 'noacpi' or 'noioapic' - 15.4in 1280 x 800 pixels 16:10 - BMW Designworks ‘Gemstone’ design - over 3.0kg with options for 8-cell or 6-cell batteries - 2 SODIMM DDR2 667MT/s max 4GB - synaptics touchpad -
|-
| <!--Name-->Acer A0521 Ao721 || Athlon II Neo K125 + AMD M880G || {{N/A}} || {{maybe| }} || {{maybe|ATI Radeon HD 4225 (VESA only)}} || {{No|Conexant}} || {{Maybe| }} || {{no|AR8152 l1c}} || {{unk|AR9285 ath9k}} || AspireOS 1.7 || 2006 64bit possible
|-
| <!--Name--> Extensa 5630Z || <!--Chipset-->T6600 with Intel GL40 Express || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe|IDE mode}} || <!--Gfx--> {{Yes|Intel GMA 4500M HD (2D)}} || <!--Audio--> {{Yes|HD Audio}} || <!--USB--> {{Yes|USB 2.0}} || <!--Ethernet--> {{No|Broadcom BCM 5764M}} || <!--Wireless--> {{No|RaLink RT2860}} || <!--Test Distro--> || <!--Comments-->2008 64bit
|-
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Aspire 5250 series 5253 BZ400 BZ602 || <!--Chipset-->E350 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{no|VESA 2D for AMD HD6310}} || <!--Audio-->{{yes|HDaudio for codec Conexant CX20584}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no|Atheros AR8151}} || <!--Wireless-->{{no|Atheros 9k AR5B97}} || <!--Test Distro--> || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->Aspire V5 V5-121 V5121 AO725 One 725 || <!--Chipset-->AMD C-70 C70 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{no|VESA for AMD 6290G}} || <!--Audio-->{{no|Realtek ALC269 codec}} || <!--USB-->{{yes|2 x USB2}} || <!--Ethernet-->{{no|Broadcom}} || <!--Wireless-->{{no|Broadcom}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->Aspire V5-122P MS2377 || <!--Chipset-->C-70 C70 with M55, AMD A4-1250 or A6 1450 up to 1.4Ghz || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->AMD 8210 || <!--Audio-->{{unk|HDaudio with codec}} || <!--USB-->{{maybe|FCH USB EHCI OHCI}} || <!--Ethernet-->{{Maybe|rtl8169 but LAN/VGA Combo Port Cable (AK.LAVGCA 001) or MiniCP port to Acer Converter Cable (Mini CP to VGA/LAN/USB) (NP.OTH11 00C) needed}} || <!--Wireless-->{{unk|Atheros 9k AR9565}} || <!--Test Distro-->Aros One || <!--Comments-->2012 64bit but no sse4 or avx - 26w battery internal, extension possible - 11.6in 1366 x 768 ips touchscreen - 7mm hd ssd - 2gb ddr3l soldered with 1 slot free max 4GB - bios hacking needed for virtualisation -
|-
| <!--Name-->Packard Bell EasyNote TE69 TE69KB 522 || <!--Chipset-->slow E1-2500, E2-3800 2c2t Dual or A4-5000 4c4t Quad both soldered BGA769 (FT3) on Hudson-2 FCH || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe|Use IDE mode}} setting AHCI to IDE mode - boots if UEFI set to Legacy || <!--Gfx-->{{Maybe|VESA 2D for ATI Radeon 8120 8240, 8320, 8330 or 8280 islands}} || <!--Audio-->{{Yes|HDAudio with ALC282 0x10ec, 0x0282 codec but not HDMI}} || <!--USB-->{{Yes|Bios, Boot, set Boot mode to Legacy, nothing from USB3}} || <!--Ethernet-->{{No|Atheros AR8171 AR8175 or Broadcom BCM57780}} || <!--Wireless-->{{unk|Atheros AR9565 0x1969 0x10a1}} || <!--Test Distro-->Aspire OS Xenon and AROS One 1.6 usb || <!--Comments-->2013 64bit with sse4.1 and AVX - 15.6in washed out screen big netbook - Boots with noacpi after using F2 to enter EFI firmware and f12 boot device - 2 ddr3 sodimm slots max 16Gb -
|-
| <!--Name-->ASPIRE Acer Aspire ES1-520 521 522 Series N15C4 ES1-523 || <!--Chipset-->AMD AMD E1-7010, A8-7410 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{partial|VESA for RADEON R5}} || <!--Audio-->{{no|Realtek ALC 233 or CX20752 HD AUDIO CODEC}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{no|Atheros AR8151 Gigabit or Broadcom 590x}} || <!--Wireless-->{{no|Realtek RTL8187 or 8812BU}} || <!--Test Distro-->Aros One || <!--Comments-->2015 64bit with sse4.1 and AVX - 2 ddr3l slots - keyboard connected to top case -
|-
| <!--Name-->Acer Aspire V15 NITRO Black edition || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->GTX 860M || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2015 64bit
|-
| <!--Name-->Predator 15 (G9-591-) (G9-593-72VT) || <!--Chipset-->Intel i7-6700HQ || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->GTX 960M to 980M, GTX 1060 || <!--Audio-->{{unk|HDAudio with Realtek ALC255 @ Intel Sunrise Point PCH High Definition Audio Controller}} || <!--USB-->USB3 || <!--Ethernet-->{{no| }} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2015 64bit -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Nitro 5 an515-42 || <!--Chipset-->Ryzen 2500u || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->AMD rx560x || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2018 64bit -
|-
| <!--Name-->aspire 3 A315-41 || <!--Chipset-->Ryzen 2500u || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->AMD Vega || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2018 64bit -
|-
| <!--Name-->swift 3 sf315-41 || <!--Chipset-->Ryzen 2500u || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->AMD Vega || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2018 64bit -
|-
| <!--Name-->Acer Aspire 3 A315-23 || <!--Chipset-->AMD Ryzen 3020e, r3 3200u || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD || <!--Audio-->{{unk|HDAudio with codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe| }} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2019 64bit -
|-
| <!--Name-->Aspire 3, 5 A515-44-R0ZN || <!--Chipset-->AMD Ryzen 5 4500u || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{unk|HDAudio with ALC codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2020 64bit - 14in or 15.6" 1080p - 19v round charging - [https://www.youtube.com/watch?v=vr0tC3QJWxk repair], 4gb soldered with 1 ddr4 sodimm slot -
|-
| <!--Name-->Swift 3 SF314-42 series N19C4 , Swift SF315-4 || <!--Chipset-->Ryzen 5 4500U, 7 4700U|| <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD || <!--Audio-->{{unk|HDAudio with codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2020 64bit 1080p - small round ac 19v 3.42A or usb-c - mobo FH4FR LA-J731P -
|-
| <!--Name-->Acer Swift 3 SF314-43, Swift SF315-41 || <!--Chipset-->Ryzen 7 5700U || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD || <!--Audio-->{{unk|HDAudio with codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2021 64bit 1080p - small round ac or usb-c -
|-
| <!--Name-->Aspire 5 A515-45 || <!--Chipset-->r7 5700U || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->AMD || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2021 64bit - 15.6in 1080p - asus round ac -
|-
| <!--Name-->Aspire 5 A515-47 || <!--Chipset-->ryzen 5 5625U, || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->AMD || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2021 64bit - 15.6in 1080p - asus round ac -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Asus====
[[#top|...to the top]]
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Asus L8400-K Medion MD9467 || <!--Chipset-->Intel desktop 850MHz || <!--IDE--> || <!--SATA--> || <!--Gfx-->S3 Savage MX || <!--Audio-->{{No|ESS allegro 1988}} || <!--USB--> || <!--Ethernet-->Realtek 8139 || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2001 32bit
|-
| <!--Name-->Asus L2000 L2400 L2D Series Medion 9675 || <!--Chipset-->Athlon 4 mobile || <!--IDE--> || <!--SATA--> || <!--Gfx-->use vesa sis630 || <!--Audio-->{{No|sis7018}} || <!--USB--> || <!--Ethernet-->sis900 || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2002 32bit
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->x51R X51RL || <!--Chipset-->Duo T2250 T2330 with RS480 || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->{{Maybe|use VESA RC410 [Radeon Xpress 200M]}} || <!--Audio-->{{Yes|HD with codec}} || <!--USB-->{{Maybe|boots and detects}} || <!--Ethernet-->{{Yes|RTL-8139}} || <!--Wireless-->{{No|Atheros AR5006EG AR5111 ath5k AzureWave AW-GE780 - could be ATI Chipset}} || <!--Test Distro-->Icaros 2.2, deadwood 2021, || <!--Comments-->2003 32bit 15.4 WXGA - 19v barrel - ESC boot select - F2 bios -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Asus R2H Ultra Mobile PC UMPC || <!--Chipset-->Celeron 900Mhz 910GML || <!--IDE--> || <!--SATA--> || <!--Gfx-->GMA900 || <!--Audio-->Ac97 ALC880 || <!--USB--> || <!--Ethernet-->realtek 8169 8101e || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2004 32bit [https://www.youtube.com/watch?v=Jm4fOrqyj3g boots]
|-
| <!--Name-->Asus A3 series A3F Ergo Ensis 211 RM || <!--Chipset-->P-M 1.6GHz to Core Duo with 950 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 945 || <!--Audio-->Ac97 ALC655 || <!--USB--> || <!--Ethernet-->Realtek 8100CL 10/100 || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2004 32bit only
|-
| <!--Name-->Z33 || <!--Chipset-->915 || <!--IDE--> || <!--SATA--> || <!--Gfx-->915GM || <!--Audio-->HD Audio ALC880 || <!--USB--> || <!--Ethernet-->Realtek 8139 || <!--Wireless-->Intel 2915ABG || <!--Test Distro--> || <!--Comments-->2005 32bit Z33A Z33AE N5M N5A
|-
| Z70A Z70V Z70Va M6A z7000 z7000a || i915 + ICH6 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{yes|mobile 915GML}} || <!--Audio-->{{no|ICH6 HD Audio}} || <!--USB-->{{yes|USB2.0}} || <!--Ethernet-->{{no|Marvell 88E8001}} || {{no|Intel PRO 2200BG Fn / F2}} || Icaros 1.3 || 2005 32bit
|-
| [http://www.progweb.com/en/2010/09/linux-sur-un-portable-asus-a6jm/ A6jm] A6JC || 945GM || IDE || SATA || {{yes|nVidia GeForce Go 7600 G70}} || {{no|HD Audio}} || {{yes|USB}} || {{yes|RTL8111 8168B}} || {{no|Intel 3945 ABG}} || Icaros 1.2.4 || 2006 32bit only
|-
| <!--Name-->F3Jc || <!--Chipset-->945PM || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->G72M Quadro NVS 110M, GeForce Go 7300 || <!--Audio-->D audio || <!--USB--> || <!--Ethernet-->realtek 8169 8111 || <!--Wireless-->Intel 3945 || <!--Test Distro--> || <!--Comments-->2007 32bit -
|-
| <!--Name-->X50GL F5GL || <!--Chipset-->T5800 with 965 || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe}} || <!--Gfx-->{{Maybe|use VESA 2d - Nvidia 8200M G84 runs hot}} || <!--Audio-->{{No|HD Audio MCP79 with codec}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|MCP79}} || <!--Wireless-->{{No|Atheros AR5B91 AW-NE77}} || <!--Test Distro-->Icaros 2.2 || <!--Comments-->2008 64bit not much support no display with nouveau - 19v barrel - ddr2 max 4gb -
|-
| <!--Name-->ASUS G50 & G51 series G50V G50Vt G51V G51VX G51J G51Jx G50VT X1 X5 ROG || <!--Chipset-->AMD64 with MCP71 || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes}} || <!--Gfx-->nVidia GeForce 9800M GS (G94M) up to GT200 [GeForce GTX 260M] (G92M) || <!--Audio-->Nvidia HD Audio with codec || <!--USB--> || <!--Ethernet-->{{No|Atheros L1C atl1c}} || <!--Wireless-->Atheros G or Intel || <!--Test Distro-->Icaros 2.3 || <!--Comments-->2009 64bit not all GPUs are failing but a much higher % failing early, 8x00 and 9x00 G84, G86, G92, G94, and G96 series chips dying - ddr2 max 4gb -
|-
| <!--Name-->M50V M50 series || <!--Chipset-->Intel Core 2 Duo P8400 or T9400 with Intel PM45 ICH9 || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|BIOS set to compatibility IDE mode}} || <!--Gfx-->NVIDIA GeForce 9600M GS or 9650M GT || <!--Audio-->HDAudio with Realtek ALC663 || <!--USB-->USB2 || <!--Ethernet-->{{Yes|rtl8169 realtek 8169 8111C}} || <!--Wireless-->{{unk|Intel 5100 or Atheros AR928X}}|| <!--Test Distro-->AROS One 2.0 USB || <!--Comments-->2009 64bit - 15.40 inch 16:10, 1680 x 1050 glossy - the "Infusion" design - heavy 3kg - ddr2 ram max 4gb -
|-
| <!--Name-->Series F9 F9E F9dc F9f F9j F9s || <!--Chipset-->965GM || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{maybe|Vesa}} || <!--Audio-->{{yes|HD Audio ALC660 playback}} || <!--USB-->{{yes|works}} || <!--Ethernet-->{{yes|RTL8169 }} || <!--Wireless-->{{no|intel 3495 not working}} || <!--Test Distro-->Icaros 1.41 || <!--Comments-->2009 64bit - ddr2 max 4gb -
|-
| P52F SO006X || i3-370M || IDE || SATA || {{yes|nVidia G92 [GeForce 9800 GT] (2D)}} || {{no|Intel HD Audio}} || {{yes|2 USB2.0}} || {{no|Atheros AR8121 AR8113 AR8114 (l1e)}} || {{dunno}} || Icaros 1.3 || 2010 64bit - ddr3 slot -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Asus
* X53U MB Ver K53U or K52U Asus K53U MB Ver K53U
* A53U XT2 X53B MB ver: K53BY (compal)
|| <!--Chipset-->Slow atom like speed E-350 (2011), E-450 (2011) on AMD M780G, much slower C-50 C50 (2012), C-60 C60 on the AMD A50M dark brown plastic build || <!--IDE-->{{N/A|}} || <!--SATA-->{{yes|Set IN Bios IDE MODE}} || <!--Gfx-->{{Maybe|use VESA ATi 6310M, 6320M later 6250M or 6290M}} || <!--Audio-->{{Yes|HD audio with alc269 codec Altec Lansing® Speakers}} || <!--USB-->{{Yes|3 x USB2}} || <!--Ethernet-->{{Unk|rtl8169 with RTL8111 phy}} || <!--Wireless-->{{unk|Atheros half height ar9285}} || <!--Test Distro-->2016 Icaros 2.1.2 and 2018 AROS One 1.6 USB || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 - 15.6in 1368 x 768 dull 50% srgb screen - f2 bios setup, esc boot drive - 5200 or 7800 mAh battery covers ASUS K53S K53E X54C X53S K84L X53SV X54HR K53F X53U laptops - 2 DDR3L slots max 8Gb - 19v barrel 5.5 / 2.5 mm -
|-
| <!--Name-->Asus K53T, Asus A53Z X53Z
|| <!--Chipset-->AMD A4-3305M on AMD M780G, A6-3420M dark brown plastic build || <!--IDE-->{{N/A|}} || <!--SATA-->{{yes|Set IN Bios IDE MODE}} || <!--Gfx-->{{Maybe|VESA 2D for AMD 6520G, 7670M}} || <!--Audio-->{{Yes|HD audio with codec}} || <!--USB-->{{Yes|3 x USB2}} || <!--Ethernet-->{{Yes|rtl8169 with RTL8111 phy}} || <!--Wireless-->{{No|Atheros half height}} || <!--Test Distro-->AROS One USB || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - 15.6in 1368 x 768 dull 50% srgb screen - f2 bios setup, esc boot drive - 2 DDR3L slots max 8Gb - 19v barrel 5.5 / 2.5 mm - Altec Lansing® Speakers -
|-
| <!--Name-->X55U X401U X501U 1225B || <!--Chipset-->slow C-60 C60, C-70 C70 or E1 1200 E2 1800 || <!--IDE--> || <!--SATA--> || <!--Gfx-->6290G || <!--Audio-->{{No| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->Realtek 8111 8169 || <!--Wireless-->{{unk| Atheros AR9485}} || <!--Test Distro--> || <!--Comments-->2013 64bit does not support AVX or SSE 4.1 - 11.6" display - ram soldered -
|-
| <!--Name-->Asus A43TA A53TA K53TA XE2 A73T || <!--Chipset-->AMD A4-3300M, A6 3400M (laptop chip) || <!--IDE-->{{N/A|}} || <!--SATA-->{{yes|Set IN Bios IDE MODE}} || <!--Gfx-->{{Maybe|use VESA AMD Radeon HD 6520G Integrated + HD 6470M (1GB GDDR3)}} || <!--Audio-->{{yes| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{Unk|}} || <!--Wireless-->{{No|Atheros}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - f2 bios setup, esc boot drive -
|-
| <!--Name-->X102BA || <!--Chipset-->Llano E1 1200 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes|ide bios setting}} || <!--Gfx-->Radeon HD 8180 || <!--Audio-->{{No| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->RTL8101E RTL8102E || <!--Wireless-->{{unk| Qualcomm Atheros AR9485}} || <!--Test Distro--> || <!--Comments-->2013 64bit does not support AVX or SSE 4.1 - 10.1” Touchscreen - special asus 45w ac adapter -
|-
| <!--Name-->K55N, K75DE || <!--Chipset-->AMD a6 4400M A8 4500M || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->AMD 7640G || <!--Audio-->HD Audio with ALC codec none through ATi Trinity HDMI || <!--USB-->{{maybe| }} || <!--Ethernet-->rtl8169 || <!--Wireless-->{{unk| Atheros AR9485}} || <!--Test Distro--> || <!--Comments-->2013 64bit does support AVX or SSE 4.1 - 17.3-inch -
|-
| <!--Name-->X452EA X552EA F552E || <!--Chipset-->AMD E1 2100 or A4 5000M A8 4500M A10 4600M with A || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA for AMD ATI Sun XT Radeon HD 8330 8670A 8670M 8690M}} || <!--Audio-->{{Yes|AMD FCH Azalia rev 02 with ALC898 codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{{Yes|Realtek RTL8111 8168 8411}} || <!--Wireless-->{{unk|Atheros AR9485}} || <!--Test Distro-->2016 Icaros 2.1 || <!--Comments-->2013 64bit may support avx kabini trinity -
|-
| <!--Name-->Asus ROG G751GY || <!--Chipset-->Intel i7-4720HQ || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->GTX 980M || <!--Audio-->HDAudio || <!--USB-->USB3 || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2014 64bit -
|-
| <!--Name-->Asus ROG G752VY || <!--Chipset-->Intel i7-6700HQ || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->GTX 980M || <!--Audio-->HDAudio || <!--USB-->USB3 || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2015 64bit -
|-
| <!--Name-->Asus X555Y || <!--Chipset-->AMD A6-7210 A8-7410 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|2.5" and mSATA form factors using SATA Rev 3.0 interface }} || <!--Gfx-->{{Maybe|VESA 2D for AMD R5}} || <!--Audio-->{{unk|HD Audio codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{Maybe|rtl8169 Realtek}} || <!--Wireless-->{{no| }}Realtek || <!--Test Distro--> || <!--Comments-->2015 64bit does support AVX or SSE 4.1 - 4gb soldered with 1 ddr3 slot - silver-colored plastic - internal battery -
|-
| <!--Name-->Asus X555B X555DG X555S X555U X555YI X555LAB || <!--Chipset-->Intel Core i5-4210U to || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|2.5" and mSATA form factors using SATA Rev 3.0 interface }} || <!--Gfx-->{{Maybe|VESA 2D for Intel}} || <!--Audio-->{{No|HDAudio with coxenant and realtek alc codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{Maybe|Realtek}} || <!--Wireless-->{{no| }}Realtek || <!--Test Distro--> || <!--Comments-->2015 64bit does support AVX or SSE 4.1 - 4gb soldered with 1 ddr3 slot - silver-colored plastic - internal battery -
|-
| <!--Name-->Asus X555D || <!--Chipset-->AMD A10-8700P || <!--IDE-->{{N/A}} || <!--SATA-->{{unk|2.5" and mSATA form factors using SATA Rev 3.0 interface }} || <!--Gfx-->{{Maybe|VESA 2D for AMD R6}} || <!--Audio-->{{unk|HD Audio codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|Realtek}} || <!--Wireless-->{{No|Realtek}} || <!--Test Distro--> || <!--Comments-->2016 64bit - 15.6in 1366 x 768 - 4gb soldered with 1 ddr3 slot - silver-coloured plastic - internal battery - keyboard swap problematic -
|-
| <!--Name-->ASUS X555Q || <!--Chipset-->AMD® Bristol Ridge A10-9600P 7th Gen, A12-9720p || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|2.5" and mSATA form factors using SATA Rev 3.0 interface}} || <!--Gfx-->{{Maybe|R5 + Radeon™ R6 M435DX Dual Graphics with VRAM GCN 3}} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no|Realtek 8821AE}} || <!--Test Distro--> || <!--Comments-->2017 64bit - FHD 15.6 1920x1080 - 37W battery internal - 4gb soldered with 1 ddr3 slot - internal battery -
|-
| <!--Name-->ASUS M509ba || <!--Chipset-->AMD A9-9425 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|2.5" and mSATA form factors using SATA Rev 3.0 interface}} || <!--Gfx-->{{Maybe|Vesa 2d for RADEON R5}} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2020 64bit - 15.6in 1366 x 768 - 1 ddr4 sodimm slot max 16Gb - 19VDC 2.37A Max 45W 4.0mm x 1.35mm - keyboard swap problematic -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->ExpertBook P1410, ASUS ExpertBook P1 P1510CD, Expertbook Y1511CD || <!--Chipset-->Ryzen 3 3200U, Ryzen 5 3500U || <!--IDE-->{{N/A}} || <!--SATA-->Nvme || <!--Gfx-->{{Maybe|Vesa 2d for AMD}} || <!--Audio-->{{unk|HDaudio with codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2019 64bit 14in or 15.6in 768p to 1080p - keyboard swap problematic - 19V 3.42A asus barrel connector 4.0MM X 1.35MM 4phi -
|-
| <!--Name-->ASUSTeK ASUS EXPERTBOOK L1 L1400CDA, L1500CDA - 19v 3.42a 4.5phi Barrel with centre pin Outer 4.5mm Inner 3mm asus special untested EXA1203XH, EXA1203YH, EXA1208UH, PA-1650-30, PA-1650-78, PA-1650-93, ADP-65GD B, ADP-65DW B (Euro) || <!--Chipset-->'''tested''' Ryzen 5 3500U - '''untested''' Ryzen 3 3200U, 3250U || <!--IDE-->{{N/A}} || <!--SATA-->{{no|1 Nvme m.2 slot will not boot with sata3 m.2, optional 1 sata hdd with ribbon cable, no dvd drive}} || <!--Gfx-->{{Maybe|Vesa 2d for AMD vega 3, 8}} || <!--Audio-->{{unk|HDaudio 0x15de 0x15e3 with ALC256 codec 0x10ec 0x0256}} || <!--USB-->{{maybe|USB3 1 usb-c and 3 usb-a }} || <!--Ethernet-->{{maybe|rtl8169 Realtek RTL8111HSH-CG }} || <!--Wireless-->{{No| }} || <!--Test Distro-->3500U with AROS One 64bit 1.2 usb installed to m.2 sata on another machine || <!--Comments-->2019 64bit 14in or 15.6in 1080p - keyboard swap problematic - up to 8Gb ddr4 sodimm soldered on board and 1 slot - micro sd card slot on some models - 42Whr B31N1915 C31N1915 C31N2204 - hold down F2 and press power for bios setup -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
==== Dell ====
[[#top|...to the top]]
Order of build quality (Lowest to highest)
<pre >
Studio
Inspiron
Vostro
XPS
Alienware
Precision
Latitude
</pre >
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="10%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="5%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Latitude CP 233GT, CPi d233xt d266xt D300XT a366xt, CPt S400GT S500GT S550GT S600GT S700ST, CPt C333GT C400GT || <!--Chipset-->Neo Magic || <!--IDE--> || <!--SATA--> || <!--Gfx-->Use VESA - Neo magic Magic Media 2160 2360 256ZX || <!--Audio-->{{No|crystal pnp 4237b or magic media 256zx sound nm2360}} || <!--USB-->USB 1.1 || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->1998 32bit Low-Density 16-chip 144p 144-pin 32Mx64 3.3V SODIMM -
|-
| <!--Name-->Dell Latitude CPx H450GT H500GT H Series, CPt V433GT V466GT V600, Inspiron 5000 || <!--Chipset-->Intel 440BX with Pentium 3M (CPx) or Celeron (CPt) || <!--IDE-->{{{Yes| }} || <!--SATA-->{{N/A| }} || <!--Gfx-->{{Maybe|Use Vesa - ATi Rage Pro Mobility M1}} || <!--Audio-->{{No|ESS ES1978 Maestro 2E Canyon 3D}} || <!--USB-->{{Yes|1 slot 1.1 only}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{N/A| }} || <!--Test Distro-->NB May 2013 || <!--Comments-->1998 32bit - 3 pin PA-6 PA6 power adapter plug - CDROM DVD Cxxx family media bay accessories untested
|-
| <!--Name-->Latitude C500 C600 (Quanta TM6) Inspiron 4000 7500, CPx J Series || <!--Chipset-->440BX ZX/DX || <!--IDE-->{{yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{partial|ATI Rage 128Pro Mobility M3 (VESA only)}} || <!--Audio-->{{no|ES1983S Maestro 3i}} || <!--USB-->{{yes|USB 1.1 only}} || <!--Ethernet-->{{N/A|some models had mini pci e100}}|| <!--Wireless-->{{N/A|a few came with internal antenna wiring}} || <!--Test Distro--> || <!--Opinion-->1999 square 3 pin charger PA9 PA-9 - C/Dock II untested - C/Port untested - Parallel to Floppy cable untested - CPx J600GT J650GT J700GT J750GT J800GT J850GT
|-
| <!--Name-->Latitude C510 C610 Insprion 4100 PP01L 2600 || <!--Chipset-->i830 and 1GHz+ P3-M || <!--IDE-->{{yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{partial|use VESA - ATI Radeon Mobility M6}} || <!--Audio-->{{No|AC97 CS4205}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{yes|3Com Etherlink}} || <!--Wireless-->{{Maybe|internal antenna wiring for an Atheros mini pci card}} || <!--Test Distro--> || <!--Opinion-->2000 poor build quality - hard to find in good working order
|-
| <!--Name-->Latitude C400 || <!--Chipset-->Intel 830 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA Intel 830 CGC}} || <!--Audio-->{{No|ac97 Crystal 4205}} || <!--USB--> || <!--Ethernet-->{{Yes|3Com 3c905C TX/TX-M}} || <!--Wireless-->{{N/A| }} || <!--Test Distro--> || <!--Comments-->2000 Slim for the time - no media bays
|-
| <!--Name-->Latitude C640 (Quanta TM8) C840 Inspiron 8k2 8200 i8200 precision m50 || <!--Chipset-->P4M with 845EP || <!--IDE--> || <!--SATA--> || <!--Gfx-->use VESA if ATi - use nouveau if 64mb Nvidia Gforce 4 440 Go || <!--Audio-->AC97 CS4205 || <!--USB--> || <!--Ethernet-->3com 905c || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2001 C640 had one fan so was noisy and hot - C840 had 2 fans and ran slightly cooler but fan noise louder
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| Latitude D400 || P-M 82845 || {{yes|82801 ide}} || {{N/A}} || {{partial|VESA only}} || {{yes|AC97 Audio playback only}} || {{maybe|USB 2.0}} || {{maybe|PRO 100 VM (KM)}} || {{no|BCM4318 AirForce one 54g replace with atheros 5k mini pci}} || <!--Test Distro--> Icaros 1.2.4 || 2003 32bit might boot from USB stick but won't boot from USB-DVD - no sd card slot - power plug style -
|-
| Latitude D500 / D505 PP10L, Inspiron 510m
|| 855GME
* revA00
* revA03
* revA06
| {{yes|IDE but needs the Dell adapter}} || {{N/A}} || {{partial|855GM Gfx (VESA only)}} || {{Yes|Intel AC97 with IDT STAC 9750 codec playback head phones only}} || {{maybe| }} || {{yes|Intel PRO 100 VE}} || {{no|Broadcom BCM4306 but exchange with atheros g in panel on laptop bottom}} || <!--Test Distro-->2016 Icaros 2.1.1 || 2003 - 14 / 15 inch XGA 4:3 screen - plastic build - no sd card slot - boots from bay optical drive - not powering on/off with ac adapter is a [http://www.geekzone.co.nz/forums.asp?forumid=37&topicid=30585 mobo fault of PC13 SMT 1206 ceramic cap hot] suggest [http://www.die4laser.com/D505fix/ 0.1uF 50V instead] - pc2700 333Mhz ram 1Gb max -
|-
| Latitude D505 (some) || VIA VT8237 VX700 || {{yes|IDE}} || || {{partial|VESA 2d on ATI RV350 Radeon 9550}} || {{no|VIA AC97 with codec}} || {{maybe|VIA USB glitchy}} || {{yes|VIA VT6102 Rhine-II}} || {{no|Intel 2200g Calexico2}} || <!--Test Distro--> || 2003 32bit little support - diagnostics pressing holding the Fn key, press the Power ON button (battery removed). Check the LEDs pattern - cmos battery behind flap in laptop battery slot -
|-
| <!--Name-->Inspiron 1000 || <!--Chipset-->SIS || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->{{maybe|use VESA SIS}} || <!--Audio-->{{Yes|AC97 SIS with AD1981B codec playback}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{Yes|SIS 900 but}} || <!--Wireless-->{{N/A}} || <!--Test Distro-->2016 Icaros 2.1 || <!--Comments-->2004 32bit [https://forum.level1techs.com/t/my-time-with-icaros-desktop-and-what-i-am-doing-as-a-dev-contributor-also-some-other-shit/113358 aremis using it]
|-
| <!--Name-->Inspiron 1100 PP07L || <!--Chipset-->845 || <!--IDE-->{{Yes| }} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Maybe|use VESA Intel 845G}} || <!--Audio-->{{Yes|AC'97 playback}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{Maybe|Broadcom 4401}} || <!--Wireless--> || <!--Test Distro-->Icaros 1.5 || <!--Comments-->2004
|-
| <!--Name-->Inspiron 8500 5150 || <!--Chipset-->P4 855GM || <!--IDE-->{{Yes| }} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Yes|Nvidia 5200 Go - VESA if intel gfx}} || <!--Audio-->{{Yes|MCP AC97 with SigmaTel 9750}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{Yes|Broadcom 440x}} || <!--Wireless-->{{No|Broadcom 4306 rev 02 use Atheros Mini PCI}} || <!--Test Distro-->Icaros 2.3 || <!--Comments-->2004 32bit P4 runs well but hot
|-
| Latitude X300 PP04S small, slim and light case
|| 855GME
* revA00 Intel ULV 1.2 Ghz
* revA01 Intel ULV 1.4Ghz
| {{yes|IDE internal and will boot cd/dvd through dock PR04S}} || {{N/A}} || {{partial|855GM Gfx (VESA only)}} || {{Yes|Intel AC97 with STAC 97xx codec but no audio out of the dock}} || {{maybe|works but dock usb ports and usb DVD PD01S not detected}} || {{No|Broadcom BCM5705M gigabit}} || {{no|Broadcom BCM4306 later intel - replace with atheros in the underside}} || <!--Test Distro-->2016 Icaros 2.1.1, 2020 AROS One 1.6 usb, || 2003 12.1" 1024 x 768 - 19.5v PA-10 or PA-12 dell - ACPI works but bad s3 ram suspend sleep - no sd card boot - 1Gb max sodimm ddr 2700
|-
| <!--Name-->Latitude D600 (Quanta JM2) PP05L - 600m
|| <!--Chipset-->82855 PM i855
* reva00
* revA01
* revA02
* revA03
* revA04
| <!--IDE--> {{yes}} || <!--SATA--> {{N/A}} || <!--Gfx-->{{Maybe|Use VESA - ATI Radeon RV250 Mobility FireGL 9000}} || <!--Audio-->{{Yes|AC97 - STAC 9750}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no|Broadcom BCM5705}} || <!--Wireless-->{{no|Intel 2100 or Broadcom BCM4306 - swap for Atheros panel in base}} || <!--Test Distro-->2011 Icaros 1.3 and [http://www.amiga.org/forums/archive/index.php/t-62187.html 1.4.1 and 2016 2.1.1] || <!--Opinion-->2003 32bit 14inch using pc2100 memory with Caps light blinking is usually a memory error - Dell D505 D600 power up pressing the case docking port -
|-
| <!--Name-->Latitude D600 (Quanta JM2) || <!--Chipset-->82855 PM i855 || <!--IDE--> {{yes}} || <!--SATA--> {{N/A}} || <!--Gfx-->{{Yes|2D only vidia NV28 GeForce4 Ti 4200 Go 5200 Go 5650 Go}} || <!--Audio-->{{Yes|AC97 - STAC 9750}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no|Broadcom BCM5705}} || <!--Wireless-->{{no|Broadcom BCM4306 mini pci - swap for Atheros}} || <!--Test Distro--> Icaros 1.3 and [http://www.amiga.org/forums/archive/index.php/t-62187.html 1.4.1] || <!--Opinion-->2003 32bit 14" - solder joints on the bios chip (press down f7/f8 keys) - RAM clean with eraser - memory cover plate maybe apply some pressure -
|-
| <!--Name-->D800 (Compal LA-1901) || <!--Chipset-->Intel 855 || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio-->AC97 || <!--USB-->{{maybe| }} || <!--Ethernet-->Broadcom 570x || <!--Wireless-->Broadcom 4309 || <!--Test Distro--> || <!--Comments-->2004 32bit - trackpoint type pointing device -
|-
| <!--Name-->D800 || <!--Chipset-->Intel 855 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{No|Nvidia }} || <!--Audio-->AC97 || <!--USB-->{{maybe| }} || <!--Ethernet-->Broadcom 570x || <!--Wireless-->Broadcom 4309 || <!--Test Distro--> || <!--Comments-->2004 32bit 15inch 39cm
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Inspiron 1200 2200 PP10S Latitude 110L m350 1.3Ghz || <!--Chipset-->Intel 915GM || <!--IDE--> {{yes|UDMA boots cd or DVD and installs to HDisk}} || <!--SATA--> {{N/A}}|| <!--Gfx-->{{yes|Intel GMA900 (2D and 3D openGL 1.x) Gearbox 56}} || <!--Audio-->{{yes|Intel AC97 playback only}} || <!--USB-->{{maybe|USB 2.0}} || <!--Ethernet-->{{yes|Intel PRO 100 VE}} || <!--Wireless-->{{no|BroadCom BCM4318 - swap for Atheros mini PCI in base panel}} || <!--Test Distro-->Icaros 1.4.5 || <!--Comments-->2005 single core 32bit 14" 4:3 1024 768 XGA screen - heavy 6 lbs - PA16 barrel 19V 3.16A AC adapter - battery life 4cell 29WHr lasts 2 hours - 256mb soldered with 1 ddr pc2100 sodimm 1gb max -
|-
| <!--Name-->Inspiron 1300 business B130 home PP21L Latitude 120L B120 by Compal - Inspiron 630m || <!--Chipset-->Intel Celeron M360 1.4GHz, M370 1.50 GHz, M380 1.73GHz || <!--IDE-->{{Yes|boots cd or DVD and installs to HDisk}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Yes|GMA 915 2D and 3D openGL 1.x tunnel 172 gearbox 70}} || <!--Audio-->{{Yes|HD Audio playback ear phones only}} || <!--USB-->{{maybe|works but waiting boot fail with AROS One usb version}} || <!--Ethernet-->{{Yes|Broadcom 440x}} || <!--Wireless-->{{No|intel 2200 or BCM4318 swap for Atheros mini pci underside - one antenna lead for main wifi}} || <!--Test Distro-->2016 Icaros 2.1.2, 2020 AROS One 1.6 usb, || <!--Comments-->2005 32bit single core - 14.1″ XGA 4:3 or 15.4" WXGA wide 1280 x 800 matte - ddr2 sodimm ram 2gb max - PA-16 19v psu tip 7.4mm * 5mm - f10 boot select f1 f2 bios
|-
| Latitude X1 PP05S || PP-M GMA915 rev A00 1.1GHz non-pae || {{yes|ide 1.8in zif/ce under keyboard}} || {{N/A}} || {{Maybe|Vesa for Intel 915GM}} || {{yes|AC97 6.6 playback only with STAC codec}} || {{maybe|USB 2.0 but partial boot to blank screen}} || {{No|Broadcom 5751}} || {{no|Intel 2200BG - swap for Atheros mini pci under keyboard palm rest - disassembly of all laptop}} || <!--Test Distro-->Icaros 2.3 dvd iso image virtualbox'd onto usb, Aros One 1.5 and 1.8 usb (2022) || 2005 32bit 12.1" 4:3 1024 x 768 - sd slot not bootable - 256mb soldered to board and 1 sodimm max 1GB ddr2 under keyboard - F12 bios boot F2 - pa-17 pa17 19v octagonal psu port
|-
| Latitude D410 PP06S
*rev A00
*A01, A02
*A03
|| GMA915 1.6GHz Pentium® M 730, 1.7GHz, 750 1.86GHz & 760 2.0GHz, 770 2.13GHz || {{yes|caddy and adapter needed 2.5" - remove hdd and write}} || {{N/A}} || {{Yes|Intel 915GM 2D and 3D OpenGL 1.3 tunnel 170 and gearbox 75}} || {{yes|AC97 playback only with STAC 9751 codec}} || {{maybe|works but will not boot from USB-DVD or AROS One 1.5 usb version}} || {{No|Broadcom 5751}} || {{no|Intel 2915ABG or later 2200BG - swap for Atheros mini pci under keyboard}} || <!--Test Distro-->2015 Icaros 1.4, 2016 2.1.1 and AROS One 1.5 usb, || 2005 32bit 12.1" 4:3 1024 x 768 - no sd card slot - PR06S dock base
|-
| <!--Name-->Latitude D510 (Quanta DM1) || <!--Chipset-->915GM socket 479 || <!--IDE--> {{N/A}} || <!--SATA--> {{partial|IDE mode}}|| <!--Gfx-->{{yes|Intel GMA 915 2D and 3D}} || <!--Audio-->{{Yes|AC97 STAC 975x}} || <!--USB--> {{maybe|USB 2.0}} || <!--Ethernet-->{{no|Broadcom BCM5751}} || <!--Wireless-->{{no|Intel PRO Wireless 2200BG swap Atheros mini pci in base}} || <!--Test Distro--> || <!--Comments-->2005 14.1" 32bit single core Intel Celeron M 1.6GHz Pentium M 730 1.73Ghz - squarish 3:2 - issues with 3rd party battery 4 quick flashes of red led with 1 final green
|-
| <!--Name-->Latitude D610 (Quanta JM5B) PP11L
|| <!--Chipset-->910GML 915GM with mobile 1.6 to 2.26ghz
* Rev A0x
* Rev A0x
* Rev A07 1.73Ghz
| <!--IDE--> {{N/A}} || <!--SATA--> {{partial|IDE mode}}|| <!--Gfx-->{{yes|Intel GMA 915 2D and 3D tunnel 174 gearbox 74}} || <!--Audio-->{{yes|Intel AC97 speaker head phones playback only with stac codec}} || <!--USB--> {{maybe|USB 2.0}} || <!--Ethernet-->{{no|Broadcom BCM5751}} || <!--Wireless-->{{no|Intel 2200BG or Broadcom mini pci under keyboard, swap wifi card for atheros 5k}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2005 32bit 14" 1024 x 768 - very noisy clicky trackpad buttons - one dimm slot under keyboard and other in underside 2GB 533Mhz 667Mhz DDR2 max -
|-
| <!--Name-->Latitude D610 (Quanta JM5B) 0C4717 REV A05, 0K3879 REV.A00 || <!--Chipset-->915GM || <!--IDE--> {{N/A}} || <!--SATA--> {{partial|IDE mode}}|| <!--Gfx-->{{Maybe|Use VESA 2d - Ati X300 no radeon 2d}} || <!--Audio-->{{yes|Intel AC97}} || <!--USB--> {{maybe|USB 2.0}} || <!--Ethernet-->{{no|Broadcom NetXtreme 57xx Gigabit replace with Atheros 5k}} || <!--Wireless-->{{no|Intel PRO Wireless 2200BG mini pci use Atheros 5k}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2005 32bit 14" 1024 x 768 - very noisy clicky trackpad buttons - 19.5v psu
|-
| <!--Name-->Latitude D810 (Quanta ) || <!--Chipset-->915GM || <!--IDE-->{{Yes| }} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Maybe|Use VESA 2d - Ati X300 RV370 M22 later x600}} || <!--Audio-->{{yes|Intel AC97 stereo playback only idt 9751 codec}} || <!--USB--> {{maybe|USB 2.0 but no boot from usb on 1.5}} || <!--Ethernet-->{{no|Broadcom NetXtreme 57xx Gigabit}} || <!--Wireless-->{{no|Intel PRO Wireless 2200BG mini pci replace with Atheros 5k}} || <!--Test Distro-->2017 Icaros 2.1.1, aros one 1.5 || <!--Comments-->2005 32bit 15.4" F12 one time boot menu - 19.5v 90w psu ideal - battery not same as later dx20 ones -
|-
| <!--Name-->Inspiron 6000 6400, E1505 PP20L
*A00 Pentium M
*A0? Core Duo
|| <!--Chipset-->GM945 with PM 1.73Ghz, T2050 or T2060 || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe|}} || <!--Gfx-->{{Maybe|vesa 2d - Ati 9700, x1300 RV515 M52, x1400 or nvidia go 7300 on mxm board}} || <!--Audio-->{{yes|HD Audio IDT 9200}} || <!--USB-->{{Yes|usb boot }} || <!--Ethernet-->{{Yes|Broadcom BCM4401 B0}} || <!--Wireless-->{{No|Intel 2200 3945 - swap for Atheros 5k}} || <!--Test Distro-->2016 Icaros 2.1, AROS One 1.6 || <!--Comments-->2006 mostly 32bit - 15.4 inch glossy - 2 ddr2 sodimm slots - broadcom bcm92045 bluetooth detected but no support - 19.5v dell psu socket - f2 bios setup, f12 boot order -
|-
| <!--Name-->Inspirion E1705 9200 9300 9400 PP12L PP14L || <!--Chipset-->945GM || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->proprietary Dell card/socket format Nvidia 6800, ati X300 or nVidia 7900GS gpu 3d corrupt || <!--Audio-->{{Maybe| }} || <!--USB-->{{Maybe| }} || <!--Ethernet-->{{Maybe|Broadcom BCM4401}} || <!--Wireless-->Intel 3945 swap with Atheros 5k mini pcie || <!--Test Distro--> || <!--Comments-->2006 [http://amigaworld.net/modules/news/article.php?mode=flat&order=0&item_id=6481 increasing vertical lines issues] 32bit -
|-
| <!--Name-->Studio XPS M1210 || <!--Chipset-->GM945 with Core Duo to intel C2D T5500, T7400 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->nVidia G72M 7300 7400m || <!--Audio-->HD Audio IDT 92xx || <!--USB-->{{Maybe| }} || <!--Ethernet-->{{Maybe|Broadcom BCM4401 B0}} || <!--Wireless-->{{No|Broadcom BCM4311 - swap for Atheros 5k mini pci-e}} || <!--Test Distro--> || <!--Comments-->2006 64bit - 2 ddr2 slots max 4Gb -
|-
| <!--Name-->Inspiron 1501 PP23LA Latitude 131L || <!--Chipset-->AMD Sempron 1.8GHz Turion MK-36 or X2 1.6Ghz TL-50 or TL-56 on ATI RS480 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|Use VESA 2d - ATI 1150 (x300) RS482M Mobility Radeon Xpress 200}} || <!--Audio-->{{Yes|HD audio with stac 92xx codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{Maybe|Broadcom bcm 4401}} || <!--Wireless-->{{No|Broadcom bcm4311 replace with Atheros 5k}} || <!--Test Distro-->Icaros 1.5 || <!--Comments-->2006 64bit 15.4 inch matt 16:10 1280x800 WXGA -
|-
| <!--Name-->Inspiron 6400 (Quanta FM1)
*A00 Pentium M
*A0? Core Duo
*A08 Core2 Duo
|| <!--Chipset-->GM945 with BGA479 (socket M) T2050 1.6Ghz, T2060 1.60Ghz, T2080 1.73Ghz much later T5500 1.66Ghz || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{Yes|GMA 2D and 3D}} || <!--Audio-->{{Yes|HD Audio with IDT 92xx codec}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{Yes|Broadcom BCM4401 B0}} || <!--Wireless-->{{No|Broadcom BCM4311 swap for Atheros 5k mini pci-e under keyboard}} || <!--Test Distro-->deadwood 2019-04-16 iso || <!--Comments-->2006 mostly 32bit - 15.4" glossy - sd card - front multimedia keys - dvd rw - generic dell keyboard - coin cr2032 bios battery under keyboard -
|-
| <!--Name-->Inspiron 640m PP19L XPS M140 e1405 || <!--Chipset-->Core Solo T2050, T2300 Duo 1.83GHz T2400 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel GMA 950 || <!--Audio-->HD Audio IDT || <!--USB--> || <!--Ethernet-->Broadcom BCM4401-B0 100Base || <!--Wireless-->{{No|Intel 3945 or Broadcom 43xx, swap for Atheros 5k - Wireless Internet ON or OFF press the Function key + F2}} || <!--Test Distro--> || <!--Comments-->2006 32 bit - 12.1 LCD CCFL WXGA 1280x800 up to 14.1 inch 16:10 1440x900 pixel, WXGA+ UltraSharp - supports also SSE3 on duos -
|-
| <!--Name-->Latitude D420 (Compal LA-3071P) PP09S
|| <!--Chipset-->945
* revA00 Solo 1.2Ghz ULV U1400
* revA01 Duo 1.06Ghz u2500
* revA02 Duo 1.2Ghz
| <!--IDE-->{{yes|ZIF/CE 1.8" slow under battery, ribbon cable}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{yes|Intel GMA950 - 2D and 3D opengl tunnel 138 gearbox 103}} || <!--Audio-->{{yes|HD Audio with STAC 92xx playback speakers head phones only)}} || <!--USB-->{{yes|2 and external usb optical drive works}} || <!--Ethernet-->{{no|Broadcom BCM5752}} || <!--Wireless-->{{No|Intel 3945 mini pcie - swap Atheros 5k in base panel}} || <!--Test Distro-->Icaros Desktop 1.4 || <!--Opinion-->2006 32bit only - 12.1" 1280x800 - PR09S dock base rev02 DVD-RW usb boots - 1GB DDR2 2Rx16 max in base panel - f2 setup f5 diagnostics f12 boot list -
|-
| <!--Name-->Latitude D520 PP17L
|| <!--Chipset-->
* 64bit rev A01, A02 945GM Core2 Duo 1.83Ghz to 2.3Ghz
* 32bit rev A00, A01 940GML Solo later Duo T2400
| <!--IDE-->{{yes| Philips SDR089, Philips CDD5263, TEAC DW224EV, Optiarc AD-5540A, HL-DL-ST GSAT21N, TSSTcorp TS-L632D}} || {{Yes|bios sata set to ide mode}} || {{Yes|Intel GMA 900 series 2D and OpenGL1 3D tunnel 210 gearbox 153 teapot 27}} || {{Yes|HD audio with STAC 9200 codec}} || {{Yes|Boots and detects USB2.0}} || {{Yes|Broadcom 4400}} || {{No|Broadcom BCM4312 BCM4321 Dell 1390 / 1490 mini pcie - easy to replace with atheros 5k in base panel}} || <!--Test Distro-->Icaros 1.4 and 2.2 and both AROS One 1.8 and AROS One x64 1.1 USB boot || 2006 mostly 64bit 4:3 aspect ratio 14.1 (XGA 1024x768) or later 15 inches (XGA+ 1400 by 1050) - F2 enter bios F12 choose boot - 19.5v dell tip pa-12 charger - bios coin cell cr2032 battery socketed in base panel -
|-
| <!--Name-->Latitude D620 (Compal LA-2792) PP18L
|| <!--Chipset-->945GMS
* rev A00 all Core Duo's 32 bit
* rev A0x all Core 2 Duo's 64 bit
| <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Intel GMA 950 (2D and 3D tunnel gearbox opengl1 || <!--Audio-->{{yes|HD Audio playback}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no|Broadcom BCM5752}} || <!--Wireless-->{{no|Intel 3945 mini pcie swap with Atheros 5k}} || <!--Test Distro-->AspireOS Xenon || <!--Opinion-->2006 64bit AROS capable with later revisions - 14" 1280 x 800
|-
| <!--Name-->Latitude D620
|| <!--Chipset-->Intel i945
* revA00 all Core Duo's 32 bit
* revA01 all Core 2 Duo's 64 bit
| <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Nvidia 7300, 7600 NVS 110M G72 || <!--Audio-->{{dunno|HD Audio with STAC 9200 codec}} || <!--USB--> || <!--Ethernet-->{{No|Broadcom BCM5752}} || <!--Wireless--> {{dunno}} || <!--Test Distro--> || <!--Opinion-->2007 1440x900 screen - LA-2792P Rev.2.0 - DT785 UC218 Fan/ Heatsink (64bit) -
|-
| <!--Name-->Latitude D820 (Quanta JM6)
|| <!--Chipset-->945GMS 940GML
* rev A00
* rev A01
| <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Yes|Intel GMA 2D and 3D tunnel 195 - 100? gearbox 156}} || <!--Audio-->{{Yes|HD Audio with STAC 9200 playback}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|Broadcom BCM5752}} || <!--Wireless-->{{No|BCM4310 replace with mini pcie atheros 5k}} || <!--Test Distro-->2016 Icaros 2.1.2 || <!--Opinion-->2007 widescreen 15 inch 1280 x 800 matte - -
|-
| <!--Name-->Latitude D820 (Quanta JM)
|| <!--Chipset-->945GMS 940GML
* revA00
* revA01
| <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|Nvidia NVS 110M 120M G72}} || <!--Audio-->{{Yes|HD Audio STAC 9200}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|Broadcom BCM5752}} || <!--Wireless-->{{No|BCM4310 swap with Atheros 5k mini pcie}} || <!--Test Distro--> || <!--Opinion-->2007 64bit 15.4 1650x1050 WXGA or WSXGA+ or 1920x1200 WUXGA -
|-
| <!--Name-->Dell Latitude D531 15" || <!--Chipset-->AMD Turion X2 TL56 or TL60 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{Maybe|Use VESA - ATi xpress X1270}} || <!--Audio-->HD Audio with IDT codec || <!--USB-->{{Maybe| }} || <!--Ethernet-->{{No|Broadcom 57xx}} || <!--Wireless-->Intel 3945 or Dell Wireless 1390, 1505 or BCM4311 mini pcie || <!--Test Distro--> || <!--Comments-->2007 64bit possible - no trackpoint - fails and goes wrong often -
|-
| <!--Name-->Latitude D430 PP09S
|| <!--Chipset-->945 with Core2 Duo C2D U7500 1.06GHz U7600 1.2GHz U7700 1.33GHz
* rev A00
* rev A01
* rev A02
| <!--IDE-->ZIF PATA IDE 1.8inch under battery and ribbon cable - slow use USB instead || <!--SATA-->{{N/A}} || <!--Gfx-->{{yes|945GML 2D and 3D opengl 1.x 171 tunnel 105 gearbox}} || <!--Audio-->{{yes|STAC 92xx HD Audio speaker and ear phone - mono speaker}} || <!--USB-->{{yes|3 }} || <!--Ethernet-->{{no|Broadcom BCM5752}} || <!--Wireless-->{{no|Intel 4965 AGN or 3945 ABG mini pci-e underside with Atheros 5k mini pci-e}} || <!--Test Distro-->Aspire 1.8 || <!--Comments-->2007 64bit capable - sd card not supported - 19.5v PA12 power adapter - 12.1" 1280x800 matte - f2 setup f5 diagnostics f12 boot list -
|-
| <!--Name-->Latitude D530 || <!--Chipset-->GM965 + ICH8 || <!--IDE-->{{N/A}} || <!--SATA-->{{partial|IDE mode}}|| <!--Gfx-->{{partial|nVidia Quadro NVS 135M 2D 3d glitches G86}} || <!--Audio-->{{partial|HD Audio with STAC 9205 head phones only}} || <!--USB-->{{yes|USB 2.0}}|| <!--Ethernet-->{{no|Broadcom BCM5755M}} || <!--Wireless-->{{no|Intel PRO Wireless 3945ABG swap with Atheros 5k}} || <!--Test Distro-->Icaros 1.4.5 || <!--Comments-->2007 [http://amigaworld.net/modules/news/article.php?mode=flat&order=0&item_id=6481 ] cool air intake from underneath needed with pa-10 or pa-3e 90w psu required - standard 4:3 ratio aspect screen -
|-
| <!--Name-->Latitude D630 (Compal LA-3301P) PP18L
|| <!--Chipset-->GM965 + ICH8 T7250 2.0Ghz T7300
* revA00
* revA01
| <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{yes|Intel GMA X3100 (2D only, no external monitor)}} || <!--Audio-->{{yes|HD Audio STAC 9205 but speaker and head phones}} || <!--USB-->{{yes|4 USB 2.0}}|| <!--Ethernet-->{{no|Broadcom BCM5755M}} || <!--Wireless-->{{no|Broadcom BCM4312 swap with pci-e Atheros 5k under keyboard}} || <!--Test Distro--> || <!--Comments-->2007 64bit possible - F12 to choose boot option - 2 ddr2 sodimm max 4G - 4400mah 48Wh battery lasts 2 hours - 6600mah 73Wh lasts 3 hours - two wire cr2032 cmos -
|-
| <!--Name-->Latitude D630
|| <!--Chipset-->GM965 + ICH8
* revA00 [http://amigaworld.net/modules/news/article.php?mode=flat&order=0&item_id=6481 ] GPU heatpad, no copper
* revA01 0DT785 heatsink
| <!--IDE-->{{N/A}} || <!--SATA-->{{partial|IDE mode}}|| <!--Gfx-->{{partial|use VESA as nVidia NVS 135M 3d corrupts 0.7 tunnel 0.25 gearbox G86}} || <!--Audio-->{{partial|HD Audio with STAC 9205 head phones only}} || <!--USB-->{{yes|USB 2.0}}|| <!--Ethernet-->{{no|Broadcom BCM5755M}} || <!--Wireless-->{{no|Intel PRO Wireless 3945ABG swap with Atheros 5k mini pcie}} || <!--Test Distro-->Icaros 1.4.5 || <!--Comments-->2007 64bit
|-
| <!--Name-->Latitude D830
|| <!--Chipset-->965GM with Core2
* revA00
* revA01
| <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{Yes|GM965 crestline 2d and 3d tunnel 115}} || <!--Audio-->{{Yes| }} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No| }} || <!--Wireless-->{{Maybe|replace with Atheros 5k mini pcie}} || <!--Test Distro-->Icaros || <!--Comments-->2007 15 inch 1280 x 900 but updating the LCD to WXGA or WSXGA+ could be better - 2 ddr2 sodimm -
|-
| <!--Name-->Latitude D830 || <!--Chipset-->ICH8, Core2 DUO T7800 @ 2.60GHz || <!--IDE-->{{N/A}} || <!--SATA-->Intel ICH8M Serial ATA || <!--Gfx-->nVidia Quadro NVS 140M G86 || <!--Audio-->{{yes|HD Audio with STAC 92XX codec}} || <!--USB-->{{yes|USB 2.0}} || <!--Ethernet-->Broadcom NetXtreme 57xx Gigabit || <!--Wireless-->Intel Wireless 4965AGN swap with Atheros 5k || <!--Test Distro-->Icaros 2.03 || <!--Comments-->2007 64bit 15." - FN,F2 or FN,F8 or FN,F12
|-
| <!--Name-->XPS M1710 || <!--Chipset-->945PM with T2400 T2600 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->proprietary Dell card socket format GTX 7950 || <!--Audio-->HD Audio with STAC 92XX codec || <!--USB--> || <!--Ethernet-->Intel 1000 or Broadcom BCM5752 || <!--Wireless-->Intel swap with Atheros 5k || <!--Test Distro-->Aros One 64bit || <!--Comments-->2007 64bit 17.3" workstation type WXGA+ screen 1920x1200 - 2 ddr-2 667Mhz sodimm slots,
|-
| <!--Name-->XPS M1730 || <!--Chipset-->965 with T7200 T7600 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->GTX 7950 || <!--Audio-->HD Audio with STAC 92XX codec || <!--USB--> || <!--Ethernet-->Intel 1000 || <!--Wireless-->Intel swap with Atheros 5k || <!--Test Distro--> || <!--Comments-->2008 64bit 17" workstation type WXGA+ screen manufactured by AU Optronics poor viewing angles, unevenly lit, light leakage, 2 ddr-2 800Mhz slots,
|-
| <!--Name-->Latitude E6410 P27LA, E6510 PP30LA, E6310 || <!--Chipset-->Intel Core i5-520M to i7-620M i7 820QM but no sse4.1 or AVX || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|NVidia NVS 3100M GT218 2D but 3D through external monitor}} || <!--Audio-->{{Maybe|HD Audio IDT 92HD81}} || <!--USB-->{{Yes|USB2 }} || <!--Ethernet-->{{No|Intel}} || <!--Wireless-->{{No|Broadcom or Intel 6200AGN or Link 6300}} || <!--Test Distro-->Icaros 1.3 || <!--Comments-->2010 64 bit - 14.1” WXGA+ up to 15.6in 15.6” FHD 1080p - 2 ddr3l 1333Mhz max 8Gb - 90w dell charger - 3pin cmos -
|-
| <!--Name-->Inspiron M5030 || <!--Chipset-->rev A01 AMD V120, V140 rev A0? V160 M880G || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE}} || <!--Gfx-->{{Maybe|VESA RS880M Radeon HD 4225, 4250}} || <!--Audio-->{{Yes|HD audio with ALC269q codec}} || <!--USB--> || <!--Ethernet-->{{No|Atheros AR8152 v2}} || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro--> || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 - DDR3 sodimm -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->E6420 E6520 ATG semi ruggized XFR || <!--Chipset-->sandy bridge i5 2520M 2540M or duo I7 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|set to Bios UEFI mode AHCI}} || <!--Gfx-->{{Maybe|Intel HD 3000 with optional fermi Nvidia NVS 4200M GF119}} || <!--Audio-->{{Maybe|HD Audio with IDT 92HD90 BXX codec but not HDMI codec}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|Intel}} || <!--Wireless-->{{No|Intel 6205}} || <!--Test Distro-->Icaros 2.03 || <!--Comments-->2011 64bit 15.6in - fan exhausts a lot of hot air when cpu taxed - VGA if Bios ATA set and Vesa only with Bios ACHI set -
|-
| <!--Name-->Inspiron M5040 || <!--Chipset-->slow amd E450, later C-50 C50 or C-60 C60 with A50M chipset || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|non efi sata in IDE mode but base plastic difficult to remove for access}} || <!--Gfx-->{{Maybe|use VESA AMD Radeon 6320, 6250 or 6290}} || <!--Audio-->{{Yes|HD Audio IDT}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{Yes|rtl8169 Realtek RTL8105E VB 10/100}} || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro-->2016 icaros 2.1.1 and AROS USB 1.6 || <!--Comments-->2012 64bit 15INCH 1388 X 768 - f2 bios setup, f12 boot order - under removable keyboard via 4 top spring loaded catches is 1 ddr3l sodimm max 8gb and wifi -
|-
| Latitude e6230 E6330 E6430 || i3 3320M 3350M 2.8 GHz i5 3360M i7 3520M || {{N/A}} || {{partial|non RAID mode}} || {{partial|Intel HD 4000 (VESA only)}} || {{no|HD Audio}} || {{partial|Intel USB 3.0 (USB 1.1 2.0 only)}} || {{No|Intel 82579LM Gigabit}} || {{No|Broadcom BCM4313}} || <!--Test Distro-->Nightly Build 2014 09-27 || 2013 64bit Ivy Bridge - 12.5-inch 13.3-inch 14-inch screen - not great support, better under hosted -
|-
| <!--Name-->Dell Latitude 3330 || <!--Chipset-->Core i3 – 2375M to i5 – 3337U, Intel® Core i3 – 3227U, Celeron 1007U on HM77 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{maybe|VESA 2d for intel Hd 2000 3000 vga hdmi}} || <!--Audio-->{{maybe|HDAudio with IDT 92HD93 Controller codec }} || <!--USB-->{{maybe|USB 3.0 (2), USB 2.0 PowerShare capable }} || <!--Ethernet-->{{no|Intel }} || <!--Wireless-->{{no|Intel }} || <!--Test Distro-->Deadwood usb3 test iso || <!--Comments-->2013 64bit, 13.3” HD 1366X768 16:9, 2 ddr3l slots max 8Gb, 720p HD video webcam,
|-
| <!--Name-->Inspiron 15 5565 5567 AMD versions, Inspiron 3595 || <!--Chipset-->AMD A6-9200u A9-9400 9425 A12-9700P Bristol Ridge || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->Radeon R5 R8 GCN 3 || <!--Audio-->{{No| }} || <!--USB-->{{partial| }} || <!--Ethernet-->{{maybe|Realtek 1GbE}} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2017 64bit AVX2 - 15.6in 768p or 900p - there are intel versions avoid -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Latitude 5495, Inspiron 15 3585 || <!--Chipset-->Ryzen 2300U 2500U 2700U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|NVMe or optional 2.5in sata if caddy and ribbon cable}} || <!--Gfx-->Radeon Vega 3 or 7 || <!--Audio-->{{No|HDAudio with Realtek ALC3246 aka ALC295 0x10ec, 0x0295 or ALC3263 aka ALC 0x10ec, 0x0 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|Realtek}} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2018 64bit - 14.0" FHD WVA 1080p (16:9) 220 nits or HD 768p - 2 ddr4 sodimm slots max 32gb - 68whr battery with 2pin cmos bios coin - DC 19.5V 4.62A (90W) or 19.5V 3.34W (65W) 5.0mm x 7.4mm PA12 charging adapter -
|-
| <!--Name-->Inspiron 3505, Vostro 3515 || <!--Chipset-->athlon 300u, Ryzen 3250u (2c4t) 3450u 3500u 3700u (4c8t), Athlon Silver (2c2t) Gold (2c4t) || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|up to 2 nvme with optional 2.5in sata ribbon connector}} || <!--Gfx-->{{Maybe|VESA 2D for Vega 8, 10}} || <!--Audio-->{{No|Realtek ALC3204, Cirrus Logic CS8409 (CS42L42 and SN005825)}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{No|RTL 8106E}} || <!--Wireless-->{{No|Realtek RTL8723DE}} || <!--Test Distro--> || <!--Comments-->2019 64-bit - 15.6inch - 2 ddr4 sodimm max 16G - avoid knocking usb-c charging whilst in use -
|-
| <!--Name-->Inspiron 5485 2-in-1 || <!--Chipset-->athlon 300u, Ryzen 3250u (2c4t) 3450u 3500u 3700u (4c8t), Athlon Silver (2c2t) Gold (2c4t) || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|nvme}} || <!--Gfx-->{{Maybe|VESA 2D for Vega 8, 10}} || <!--Audio-->{{No|Realtek ALC3204}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No|Realtek RTL8723DE}} || <!--Test Distro--> || <!--Comments-->2019 64-bit - 14inch - 2 ddr4 sodimm max 16G - avoid knocking usb-c charging whilst in use -
|-
| <!--Name-->Latitude 3500, 3310, 3410, 3510, || <!--Chipset-->Intel Celeron-4205U, Pentium-5405U, Core i5 (8th Gen) i3-8145U, 8265U, i5-8365U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|nvme}} || <!--Gfx-->{{Maybe|Vesa 2D for Intel UHD Graphics 610 or 620 hdmi}} || <!--Audio-->{{no|HDAudio with Realtek ALC}} || <!--USB-->{{maybe|USB3 usb-c usb-a}} || <!--Ethernet-->{{Maybe|rtl8169 RTL8111H}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2019 64bit - 14in or 15.6in 768p to 1080p 220nits - 65w - 2 ddr4 sodimm slots - rtc cr2032 cmos 2 pin -
|-
| <!--Name-->Inspiron 5405 || <!--Chipset-->AMD Ryzen 5 4500U || <!--IDE-->{{N/A}} || <!--SATA-->One M.2 2230/2280 nvme || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{No|HDAudio with Realtek ALC3204 codec}} || <!--USB-->{{maybe|USB3 }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2020 64bit - 14" 1080p - dell round ac 19.50 VDC 4.50 mm x 2.90 mm 65W(19.5V-3.34A) round 4.5mm tip -
|-
| <!--Name-->Inspiron 5415, Inspiron 5515 || <!--Chipset-->AMD Ryzen 3 5300U, Ryzen 5 5500U, Ryzen 7 5700U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|nvme}} || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{No|HDaudio with realtek ALC3254 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2021 64bit 14" or 15.6in - avoid knocking usb-c charging whilst in use or use dell round ac 65W 4.5MM x 3.0MM - replacing keyboard not easy - 1 ddr4 sodimm -
|-
| <!--Name-->Vostro 3425, Vostro 3525, Vostro 5625 || <!--Chipset-->AMD Ryzen 3 5425U, Ryzen 5 5625U || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{no|HDAudio with codec}} || <!--USB-->{{maybe|USB4}} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2021 64bit - 14in 15.6" to 16" FHD 1080p - dell round ac 65w 4.5MM x 3.0MM or avoid knocking usb-c charging whilst in use -
|-
| <!--Name-->Dell Inspiron 15 Model 3535, Inspiron 14 7435 || <!--Chipset-->AMD Ryzen 5 7520U, AMD Ryzen 5 7530U, 7 7730U || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->{{No| hdmi 1.4 but no gpmi}} || <!--Audio-->{{No|HDaudio with codec }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2024 64bit - 14.0" or 15.6" 1080p - dell round ac 65w 4.5MM x 3.0MM or usb-c charging - full sd card slot -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|}
====Fujitsu-Siemens====
[[#top|...to the top]]
Order of build quality (Lowest to highest)
<pre >
Amilo
Esprimo
Lifebook
</pre >
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="5%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Fujitsu [http://www.labri.fr/perso/fleury/index.php?page=bug_transmeta FMV-Biblo Loox S73A (Japan P1100) LifeBook P1120 Biblo Loox T93C (Japan P2120) P2020] || <!--Chipset-->Transmeta Crusoe CPU TM5600 633MHz with Ali M1535 chipset || <!--IDE-->{{Yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->ATI Rage Mobility M with 4MB SDRAM || <!--Audio-->{{No|AC97 Ali M1535 + STAC9723 Codec}} || <!--USB-->USB 1.1 only || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->1999 32bit 10" 1280 x 600 matte LCD - QuickPoint IV mouse - metal chassis with palm rest plastic - 15GB 2.5 inch drive and SR 8175 8X DVD-ROM drive -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Lifebook S7000 S7010 S7010D S2020 || <!--Chipset-->Pentium M 1.6 or 1.7GHz || <!--IDE-->{{Yes| }} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Maybe|use VESA - Intel 855}} || <!--Audio-->{{maybe|AC97 with STAC 9751T or 9767 codec}} || <!--USB--> || <!--Ethernet-->{{No|Broadcom}} || <!--Wireless-->{{No|Atheros, Broadcom or Intel 2200BG - FN,F10}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2002 32bit 14.1 inch with minimal support
|-
| <!--Name-->Lifebook e8010 || <!--Chipset--> || <!--IDE-->{{Yes| }} || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA Intel 855GM}} || <!--Audio-->AC97 STAC9767 or ALC203 codec || <!--USB--> || <!--Ethernet-->{{No|Broadcom NetXtreme BCM5705M}} || <!--Wireless-->Intel PRO Wireless 2200BG || <!--Test Distro-->Icaros 1.3.1 || <!--Comments-->2002 32bit 15.1 inch
|-
| <!--Name-->Stylistic ST5000 ST5010 ST5011 ST5012 ST5020 ST5021 ST5022 || <!--Chipset-->1.0GHz P-M and later 1.1GHz on Intel 855GME || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->Intel 800 use VESA || <!--Audio-->Intel AC97 || <!--USB--> || <!--Ethernet-->Broadcom BCM5788 tg3 || <!--Wireless-->{{No|Intel 2200BG}} || <!--Test Distro--> || <!--Comments-->2003 32bit charged via a proprietary port power connector 16V 3.75A with wacom serial pen interface - indoor Screen transmissive 10.1 and later 12.1 XGA TFT -
|-
| <!--Name-->Amilo Pro V2010 || <!--Chipset-->VIA CN400 PM880 || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->{{No|S3 unichrome use VESA}} || <!--Audio-->{{No|VIA AC97 VT8237 with codec}} || <!--USB--> || <!--Ethernet-->Rhine 6102 6103 || <!--Wireless-->RaLink RT2500 || <!--Test Distro-->2017 Icaros 2.1.2 || <!--Comments-->2003 32bit boot mount - unknown bootstrap error then crashes
|-
| <!--Name-->Amilo Li 1705 CN896 || <!--Chipset--> with VIA P4M900 || <!--IDE--> || <!--SATA-->{{Maybe|IDE}} || <!--Gfx-->ATi || <!--Audio-->{{No|VIA VT8237 HD Audio with codec}} || <!--USB-->VT82xx 62xx || <!--Ethernet-->{{Yes|VIA Rhine}} || <!--Wireless-->{{No|Atheros G}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2005 32bit random freezes
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> Esprimo Mobile V5535 Skt mPGA 478MN
| <!--Chipset-->
| <!--IDE--> {{yes|IDE and EIDE}}
| <!--SATA--> {{maybe|IDE mode with SIS 5513}}
| <!--Gfx--> {{maybe|SiS 771 / 671 (VESA only)}}
| <!--Audio--> {{yes|HD Audio SIS968 SIS966 SI7012 with ALC268 codec}}
| <!--USB--> {{no|USB 1.1 and 2.0 issues}}
| <!--Ethernet--> {{no|SiS 191 gigabit}}
| <!--Wireless--> {{yes|Atheros AR5001 mini pci express}}
| <!--Test Distro-->aros one 1.5 usb
| <!--Comments-->2005 32bit 20v barrel - f2 setup f12 multi boot - random freezing short time after booting - chipset SIS 671MX -
|-
| <!--Name-->Amilo SI 1520 1521p || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Yes|GMA 2D}} || <!--Audio-->{{No|HD Audio Conexant codec}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{Yes|Intel Pro 100}} || <!--Wireless--> || <!--Test Distro-->Icaros 1.4.2 || <!--Comments-->2005 32bit - Set Bios option ATA Control Mode to Compatible
|-
| <!--Name-->Lifebook S7020 S7020D || <!--Chipset--> Pentium M 740 1.73MHz || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 915 || <!--Audio-->HD Audio ALC260 codec || <!--USB-->{{Yes| }} || <!--Ethernet-->Broadcom BCM5751M Gigabit || <!--Wireless-->Intel PRO Wireless 2200BG or Atheros 5k || <!--Test Distro--> || <!--Comments-->2006 32bit
|-
| <!--Name-->Stylistic ST5030 ST5031 ST5032 || <!--Chipset-->1 to 1.2GHx Pentium M with 915GM || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->Intel 900 || <!--Audio--> || <!--USB-->{{Yes| }} || <!--Ethernet-->Marvell || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2006 32bit charged via a proprietary port power connector 6.0 x 4.4 mm round - 200 pin ddr2 ram
|-
| <!--Name-->Stylistic ST5110 ST5111 ST5112 || <!--Chipset-->945GM with 1.2GHz Core Duo and Core2 Duo || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Intel 900 || <!--Audio-->HD audio with STAC9228 codec || <!--USB-->{{No| }} || <!--Ethernet--> || <!--Wireless-->Intel 3945 ABG or optional atheros || <!--Test Distro--> || <!--Comments-->2006 either 32 or 64 bit - charged via a proprietary port power connector 6.0 x 4.4 mm round - SigmaTel® touchscreen -
|-
| <!--Name-->E8110 S7110 E8210 || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Yes|945GM}} || <!--Audio-->{{Yes|HD Audio with ALC262 codec playback}} || <!--USB-->{{Yes}} || <!--Ethernet-->{{No|Marvell 88E8055 Gigabit}} || <!--Wireless-->{{No|Intel PRO Wireless 3945ABG}} || <!--Test Distro-->Icaros 2.0 || <!--Comments-->2006 32bit Core Duo
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || CHIPSET || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Lifebook PH521 || <!--Chipset-->AMD E-350 E-450 1.65GHz || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->HD 6310M 6320M || <!--Audio-->Realtek ALC269 || <!--USB-->{{No| }} || <!--Ethernet-->Realtek || <!--Wireless-->{{No|Atheros 802.11 bgn}} || <!--Test Distro--> || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 - 11.6 inch 1366x768 pixels - DDR3 1066MHz -
|-
| <!--Name-->LIFEBOOK E752/E782/S752/S782 || <!--Chipset--> with Intel Core i3-2328M to i3-3110M || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{Maybe| }} || <!--Audio-->{{yes| }} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no|Intel 82579V 1000 }} || <!--Wireless-->{{no|Intel Wireless 6205 may be able to swap for Atheros 5k }} || <!--Test Distro-->Aros One 64bit || <!--Comments-->2012 64bit
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====HP Compaq====
[[#top|...to the top]]
Build quality (Lowest to highest)
<pre >
Presario
Pavilion
Omnibook
ProBook
Armada
Elitebook
</pre >
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->1c00 series Compaq Presario [http://users.utu.fi/sjsepp/linuxcompaqarmada100s.html Armada 100S made by Mitac], 1247 || <!--Chipset-->K6-II with PE133 MVP-4 || <!--IDE--> || <!--SATA--> || <!--Gfx-->use VESA - Trident Blade3D AGP sp16953 || <!--Audio-->VIA ac'97 audio [rev20] with AD1881A codec || <!--USB-->{{Maybe|usual VIA issues [rev10]}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->1998 32bit 192MB max - PCcard Texas PC1211 no support - 1200 XL1 1200-XL1xx, XL101, XL103 XL105 XL106 XL109 XL110 XL111 XL116 XL118 XL119 XL125
|-
| <!--Name-->1c01 series Armada 110, Evo N150 || <!--Chipset-->Intel with VIA PLE133 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Use VESA - Trident Cyber Blade i1 chipset || <!--Audio-->VIA 686 rev20 82xxx 686a || <!--USB--> || <!--Ethernet-->Intel 82557 Pro 100 || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->1998 32bit max 192mb sodimm 100Mhz 133Mhz ram memory - 1200-XL405A 12XL405A XL502A 12XL502A 1600XL
|-
| Armada M300 M700 E500 || 440BX || {{Yes| }} || {{N/A}} || {{maybe|ATI Rage LT M1 Mobility (VESA only)}} || {{no|AC97 ESS Maestro 2E M2E ES1987 sound}} || {{yes|USB1.1 only}} || {{No|[http://perho.org/stuff/m300/index_en.html Intel PRO 100+ Mini PCI]}} || {{N/A}} || Aspire OS 2012, Nightly 30-01 2013 and 04-05 2013 || 1999 32bit - F10 bios options and Fn+F11 reset CMOS with 64mb ram already on board
|-
| <!--Name-->HP Omnibook XE3 || <!--Chipset-->Intel BX 600Mhz GC model 256mb or AMD GD 500Mhz || <!--IDE--> || <!--SATA--> || <!--Gfx-->Use VESA - S3 Inc. 86C270 294 Savage IX-MV (rev 11) || <!--Audio-->{{No|ESS ES1988 Allegro 1 (rev 12)}} || <!--USB-->Intel 82371AB PIIX4 USB (rev 01) || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->2002 32bit no cardbus pcmcia support - no audio from Polk Audio Speakers -
|-
| <!--Name-->HP Omnibook XE3 || <!--Chipset-->82830 ICH3 P3-M 750MHz 800Mhz 900MHz || <!--IDE-->{{Yes| }} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Maybe|use VESA - CGC 830MG}} || <!--Audio-->{{No|ESS ES1988 Maestro 3i}} || <!--USB-->{{Yes|only one 1.1 port}} || <!--Ethernet-->{{Yes|e100 82557}} || <!--Wireless-->{{N/A|}} || <!--Test Distro-->Icaros 1.51 || <!--Comments-->2002 32bit Boots USB Stick via Plop boot floppy - Memory for GF 256-512mb, GS up 1GB
|-
| <!--Name-->TC1000 TC-1000 Tablet PC || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->NVIDIA NV11 [GeForce2 Go] (rev b2) || <!--Audio-->VIA AC97 Audio (rev 50) || <!--USB-->OHCI NEC USB 2.0 (rev 02) || <!--Ethernet-->Intel 82551 QM (rev 10) || <!--Wireless-->Atmel at76c506 802.11b || <!--Test Distro--> || <!--Comments-->2002 32bit Transmeta LongRun (rev 03) with VT82C686 - Texas Instruments TI PCI1520 PC card Cardbus
|-
| <!--Name-->HP Compaq R3000 ZV5000 (Compal LA-1851) || <!--Chipset-->Nvidia nForce 3 with AMD CPU || <!--IDE--> || <!--SATA--> || <!--Gfx-->Nvidia NV17 [GeForce4 420 Go 32M] || <!--Audio-->Nvidia || <!--USB--> || <!--Ethernet-->Broadcom or Realtek RTL8139 || <!--Wireless-->{{Maybe|Broadcom BCM4303 BCM4306 or Atheros bios locked}} || <!--Test Distro--> || <!--Comments-->2003 32bit - HPs have a setting to automatically disable wireless if a wired connection is detected
|-
| <!--Name-->Compaq [http://www.walterswebsite.us/drivers.htm Presario 700 series] || <!--Chipset-->VT8363 VT8365 [Apollo Pro KT133 KM133] || <!--IDE-->{{yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{maybe|VT8636A (S3 Savage TwisterK) (VESA only)}} || <!--Audio-->{{Maybe|VIA AC97 [rev50] with AD1886 codec}} || <!--USB-->{{maybe|VIA UHCI USB 1.1 [rev1a]}} || <!--Ethernet-->{{yes|RealTek RTL8139}} || <!--Wireless-->{{no|Broadcom BCM4306}} || <!--Test Distro--> || <!--Comments-->2003 32bit poor consumer grade level construction - jbl audio pro speakers - no support for cardbus pcmcia TI PCI1410 - 700A EA LA UK US Z 701AP EA BR FR 701Z 702US 703US AP JP audio sp18895 Sp19472
|-
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| N400c || P3-M 82845 || {{yes|82801 CAM IDE U100}} || {{N/A}} || {{maybe|Rage Mobility 128 (VESA only)}} || {{No|Maestro 3 allegro 1}} || {{yes|USB1.1}} || {{yes|Intel PRO 100 VM (KM)}} || {{N/A}} || Icaros 1.2.4 || 2003 32bit Has no optical disc drive
|-
| N410c || P3-M 82845 || {{yes|82801 CAM IDE U100}} || {{N/A}} || {{maybe|Radeon Mobility M7 LW 7500 (VESA only)}} || {{yes|Intel AC97 with AD1886 codec}} || {{yes|USB1.1}} || {{yes|Intel PRO 100 VM (KM)}} || {{N/A}} || Icaros 1.2.4 || 2003 32bit Has no optical disc drive
|-
| Evo N600c || Pentium 4 || {{yes|IDE}} || {{N/A}} || {{partial|ATI Radeon Mobility M7 (VESA only)}} || {{No|ESS ES1968 Maestro 2}} || {{yes|USB}} || {{yes|Intel PRO 100}} || {{dunno}} || Icaros 1.3 || 2003 32bit
|-
| Evo N610c || Pentium 4 || {{yes|IDE}} || {{N/A}} || {{partial|ATI Radeon Mobility M7 (VESA only)}} || {{yes|Intel ICH AC97 with AD1886 codec}} || {{yes|USB}} || {{yes|Intel PRO 100}} || {{dunno}} || Icaros 1.2.4 ||
|-
| N800c || P4 || {{Yes|IDE}} || {{N/A}} || {{partial|ATI Radeon Mobility 7500 (VESA only)}} || {{yes|AC97}} || {{yes|USB}} || {{yes|Intel PRO 100}} || {{N/A}} || Icaros 1.2.4 || 2003 32bit P4M CPU can get very warm
|-
| <!--Name-->NX7010 || <!--Chipset-->Intel || <!--IDE-->{{yes|IDE}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{partial|ATI mobility 7500 or 9000 Radeon 9200 64MB (VESA only)}} || <!--Audio-->{{yes|AC97 ADI codec}} || <!--USB-->{{yes|uhci (1.1) and ehci (2.0)}} || <!--Ethernet-->{{yes|Realtek 8139}} || <!--Wireless-->{{No|Intel 2200b bios locked}} || <!--Test Distro--> || <!--Comments-->2003 32bit
|-
| <!--Name-->Compaq Preasrio V5000 (Compal LA-2771) || <!--Chipset-->AMD Sempron 3000+ or Turion ML with SB400 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA - Ati RS480M Xpress 200}} || <!--Audio-->{{No|AC97 ATI with Conexant CX 20468 codec}} || <!--USB--> || <!--Ethernet-->{{Yes|Realtek 8100 8101L 8139}} || <!--Wireless-->{{No|bcm4318 bios locked}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2004 64bit single core machine V5001 V5002 V5002EA V5003
|-
| <!--Name-->TC1100 TC-1100 Tablet PC || <!--Chipset-->855PM || <!--IDE--> || <!--SATA--> || <!--Gfx-->Nvidia Geforce4 Go || <!--Audio-->AC97 || <!--USB--> || <!--Ethernet-->{{Maybe|BCM 4400}} || <!--Wireless-->{{Maybe|Atheros wlan W400 W500 or ? bios locked}} || <!--Test Distro--> || <!--Comments-->2004 32bit
|-
| <!--Name-->NC6000 NC8000 NW8000 || <!--Chipset-->855PM with Pentium M 1.5 1.6 1.8GHz 2.0GHz || <!--IDE-->max 160 GB for NW 8000 || <!--SATA--> || <!--Gfx-->{{Maybe|Ati RV350 mobility 9600 M10 Fire GL T2 ISV use VESA 2D as no laptop display}} || <!--Audio-->{{Yes|Intel AC97 with ADI codec playback only}} || <!--USB-->{{Yes|2 ports}} || <!--Ethernet-->{{No|Broadcom BCM 5705M}} || <!--Wireless-->{{Maybe|mini pci Atheros 5212 BG W400 W500 or Intel - all bios locked}} || <!--Test Distro--> || <!--Comments-->2005 based [http://amigaworld.net/modules/newbb/viewtopic.php?topic_id=41916&forum=47 works] - Firewire TI TSB43AB22/A - 8 pound 2.5 kg travel weight - an SD slot as well as two PC Card slots - 15-inch UXGA screen (1,600 x 1,200) or 15" SXGA+ (1400 x 1050) (4:3 ratio)
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Compaq NC6110 NX6110 NC6120 NC6220 NC4200 NC8200 TC4200 || <!--Chipset-->GMA 915GML || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Yes|2D GMA 900}} || <!--Audio-->{{Yes|AC97 with ADI AD1981B playback}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{Unk|440x or BCM 5705M or 5751M}} || <!--Wireless-->{{No|Intel IPW 2200 bios locked}} || <!--Test Distro-->Icaros 1.5.2 || <!--Comments-->2005 32bit Sonoma based - Wifi with Atheros AR5007eg if apply hacked bios RISKY else use USB one - (INVENTEC ASPEN UMA MV) (INVENTEC ASPEN DIS PV) -
|-
| <!--Name-->Compaq C500 CTO aka HP G7000 || <!--Chipset-->Intel 945GM || <!--IDE--> || <!--SATA--> || <!--Gfx-->GMA 950 || <!--Audio-->HD Audio with realtek ALC262 codec || <!--USB--> || <!--Ethernet-->Realtek 8139 || <!--Wireless-->Broadcom BCM 4311 bios locked || <!--Test Distro--> || <!--Comments-->2005 32bit
|-
| <!--Name-->HP DV6000 || <!--Chipset-->945GMS || <!--IDE--> || <!--SATA--> || <!--Gfx-->GMA 950 || <!--Audio-->HD Audio IDT 92HD 91B || <!--USB--> || <!--Ethernet-->Intel PRO 100 VE || <!--Wireless-->{{No|Intel 3945 bios locked}} || <!--Test Distro--> || <!--Comments-->2006 32 bit only - Mosfet FDS6679 common cause of shorts giving no power to the tip. To reset adapter, unplug from AC (mains) and wait 15-30 sec. Then plug in again -
|-
| Presario F700 series, HP G6000 f730us F750 F750us F755US F756NR F765em || AMD Turion Mono MK-36 2.0Ghz NForce 560m or Twin X2 TK-55 with nForce 610m MCP67 || {{N/A| }} || {{Yes|but needs special sata adapt bit and caddy}} || {{Yes|GF Go 7000m 2D and 3D 640x350 to 1280x800 - ball solder issues due to poor cooling}} || {{Maybe| }} || {{Maybe|uhci and ehci boots}} || {{No|Nvidia }} || {{Yes|Atheros AR5007 bios locked}} || Icaros 1.3.1 and Aros One 1.6 USB || 2006 64bit - f9 boot device f10 bios setup - random freezes after a minutes use means internal ventilation maintenance needed each year essential - No sd card and overall limited phoenix bios options -
|-
| <!--Name-->Presario v6604au v6608au V3500 || <!--Chipset-->NVIDIA MCP67M with AMD Athlon64 X2 TK 55 amd 1.8ghz || <!--IDE--> || <!--SATA-->{{Yes|SATA 150}} || <!--Gfx-->NVIDIA GeForce Go 7150M 630i or C67 630M MCP67 || <!--Audio-->conexant codec || <!--USB--> || <!--Ethernet-->Nvidia or Realtek 10/100 || <!--Wireless-->{{No|Broadcom 4311 bios locked}} || <!--Test Distro--> || <!--Comments-->2006 64bit Altec Lansing Stereo Speakers - ball solder issues -
|-
| <!--Name-->Compaq presario v6610 v6615eo v6620us || <!--Chipset-->Turion 64 X2 mobile TK-55 / 1.8 GHz to athlon 64x2 @ 2.4ghz || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|SATA 150}} || <!--Gfx-->{{Yes|geforce 7150 or 7300m 2d and 3d}} || <!--Audio-->{{Yes|AMD HD Audio with IDT codec stereo playback only}} || <!--USB-->3 OHCI EHCI || <!--Ethernet-->{{Maybe| }} || <!--Wireless-->{{No|Broadcom bios locked}} || <!--Test Distro-->Icaros 1.3 - || <!--Comments-->2007 [http://amigaworld.net/modules/newbb/viewtopic.php?topic_id=40956&forum=48 works well] - 1 x ExpressCard/54 - SD Card slot - AO4407 test voltage of the Drain side (pins 5-8) with AC adapter and no battery, see 0 volts, connect the battery you should have 10-14v -
|-
| <!--Name-->v6630em v6642em || <!--Chipset-->nForce 630M with AMD Turion 64 X2 Mobile TL-58 || <!--IDE--> || <!--SATA--> || <!--Gfx-->NVIDIA GeForce 6150M or 7150M || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless-->{{No|Broadcom bios locked}} || <!--Test Distro--> || <!--Comments-->2007 64bit 15.4 in 1280 x 800 ( WXGA ) -
|-
| <!--Name-->HP Compaq NC6400 || <!--Chipset-->945GM Core Duo || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|GMA 950 2D issues and no 3d}} || <!--Audio-->{{No|HD Audio AD1981HD}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|BCM }} || <!--Wireless-->{{No|Broadcom locked}} || <!--Test Distro-->Icaros || <!--Comments-->2007 - replaced with Atheros AR5007eg if apply hacked bios RISKY else use USB g -
* 32bit Core Duo T2400
* 64bit Core 2 Duo T5600 T7600
|-
| <!--Name-->HP Compaq NV NC6400 || <!--Chipset-->Core Duo + 945PM || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|use VESA Radeon x1300M (2D)}} || <!--Audio-->{{Maybe|HD Audio with ADI1981 low volume}} || <!--USB-->{{yes}} || <!--Ethernet-->{{no|BCM 5753M}} || <!--Wireless-->{{No|Intel 3945 ABG bios locked}} || <!--Test Distro--> Icaros 1.4.2 || <!--Opinion-->2007 Harmon Kardon speakers
|-
| <!--Name-->HP Compaq NC6320 || <!--Chipset-->945GM with
* 32bit Core Duo 1.83GHz T2400
* 64bit Core2 Duo 1.83GHz T5600
|| <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Yes|GMA 950 2D with a little 3D tunnel 213}} || <!--Audio-->{{Maybe|Intel HD Audio with AD1981HD codec}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|BCM 5788}} || <!--Wireless-->{{No|Intel 3945 bios locked}} || <!--Test Distro-->Icaros 2 || <!--Comments-->2007 replaced with Atheros AR5007eg if applying hacked wifi bios RISKY!! else use USB - 14.1" or 15 inch XGA 1024x768 - noisy cpu fan for core2 - trackpad rhs acts as window scroller -
|-
| <!--Name-->HP NC4400 TC4400 Tablet || <!--Chipset-->Core Duo with 82945 chipset || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|bios F.07 limits to 100GB 120GB}} || <!--Gfx-->{{yes|2D and 3D 282 tunnel and gearbox 150}} || <!--Audio-->{{Yes|HD Audio with ADI 1981HD codec via ear phones}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{No|BCM 5753M}} || <!--Wireless-->{{No|Intel 3945 or BCM 4306 - Whitelist BIOS F.0C needed but risky}} || <!--Test Distro-->2017 Icaros 2.1.2 || <!--Comments-->2008 64 bit possible with Core2 - TI SD card reader non bootable - wacom serial digitiser pen not working -
* 32bit 1.86GHz core duo
* 64bit 2Ghz T7200, 2.16Ghz Core 2 Duo T7600 2.33GHz
|-
| <!--Name-->HP Pavilion DV2000 CTO || <!--Chipset-->945GMS || <!--IDE--> || <!--SATA--> || <!--Gfx-->GMA 950, X3100, Nvidia 8400M || <!--Audio-->HD Audio Conexant CX 20549 Venice || <!--USB--> || <!--Ethernet-->Nvidia MCP51 || <!--Wireless-->{{No|Broadcom BCM 4311 or Intel 3945 4965 ABG bios locked}} || <!--Test Distro--> || <!--Comments-->2008 Atheros AR5007eg if apply hacked bios RISKY
|-
| <!--Name-->Compaq Presario C700 || <!--Chipset-->GMA960 || <!--IDE--> || <!--SATA--> || <!--Gfx-->X3100 || <!--Audio-->HD Audio || <!--USB--> || <!--Ethernet-->RTL 8139 || <!--Wireless-->{{Maybe|Atheros AR5007 AR5001 AR242x}} || <!--Test Distro--> || <!--Comments-->2008
|-
| <!--Name-->Compaq 2510p 6510b 6710b 6910b || <!--Chipset-->GMA 965GM GL960 || <!--IDE-->{{yes| }} || <!--SATA--> || <!--Gfx-->{{yes|X3100 some 2d but slow software 3d only}} || <!--Audio-->{{maybe|HD Audio ADI AD1981 HD low volume on head phones}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no|Intel 82566 or Broadcom BCM 5787M}} || <!--Wireless-->{{No|Intel 3945ABG or 4965ABG bios locked}} || <!--Test Distro-->Aspire OS Xenon 2014 || <!--Comments-->2008 no sd card boot support - F9 to choose boot option - [http://forums.mydigitallife.info/threads/7681-This-is-no-request-thread!-HP-COMPAQ-bioses-how-to-modify-the-bios/page111?p=333358#post333358 whitelist removal (risky) bios block for wifi card swap]
|-
| <!--Name-->CQ40 CQ41 || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|VESA Intel}} || <!--Audio-->HD Audio || <!--USB--> || <!--Ethernet-->Realtek RTL8101E || <!--Wireless-->{{No|Broadcom BC4310 bios locked}} || <!--Test Distro--> || <!--Comments-->2008
|-
| <!--Name-->Compaq Presario CQ35 CQ36 || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|VESA }} || <!--Audio--> || <!--USB--> || <!--Ethernet-->Realtek RTL8101E RTL8102E || <!--Wireless-->{{No|Broadcom BCM4312 bios locked}} || <!--Test Distro--> || <!--Comments-->2008 Compal LA-4743P -
|-
| <!--Name-->HP Compaq CQ42 CQ43 CQ45 || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|VESA }} || <!--Audio-->HD Audio with Coxenant codec || <!--USB--> || <!--Ethernet-->Realtek || <!--Wireless-->{{No|Realtek RTL8191SE, Realtek 8188CE}} || <!--Test Distro--> || <!--Comments-->2008 (Quanta AX1)
|-
| <!--Name-->Compaq Presario CQ50 CQ56 || <!--Chipset-->Nvidia MCP78S || <!--IDE--> || <!--SATA--> || <!--Gfx-->Geforce 8200M || <!--Audio-->nVidia HD Audio with codec || <!--USB--> || <!--Ethernet-->nvidia MCP77 || <!--Wireless-->{{unk|Atheros AR928X bios locked}} || <!--Test Distro--> || <!--Comments-->2008 [http://donovan6000.blogspot.co.uk/2013/06/insyde-bios-modding-wifi-and-wwan-whitelists.html bios modding risky] MCP72XE MCP72P MCP78U MCP78S
|-
| <!--Name-->CQ60 || <!--Chipset-->Single core Sempron to dual turion || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|VESA for Nvidia 8200M}} || <!--Audio-->{{yes|HD Audio}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{No| bios locked}} || <!--Test Distro--> || <!--Comments-->2008
|-
| <!--Name-->HP DV6700 || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{no|Vesa for Nvidia 8400M}} || <!--Audio-->{{no| }} || <!--USB-->{{no| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{No|Intel }} || <!--Test Distro--> || <!--Comments-->2008 64bit -
|-
| <!--Name-->CQ60 || <!--Chipset-->Intel C2D || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|VESA for Nvidia 9200M}} || <!--Audio-->{{yes|HD Audio}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{No| bios locked}} || <!--Test Distro--> || <!--Comments-->2009 64bit -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->CQ57z || <!--Chipset-->AMD slow E-300 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{Maybe|VESA ATi HD 6310 wrestler}} || <!--Audio-->{{unk| }} || <!--USB-->{{yes| }} || <!--Ethernet-->{{maybe|Realtek RTL8101 RTL8102}} || <!--Wireless-->{{No|RaLink RT5390}} || <!--Test Distro--> || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->HP CQ58z 103SA E5K15EA || <!--Chipset-->AMD slow Dual-Core E1-1500 APU with A68M FCH || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{Maybe|VESA 2D for Radeon HD 7310}} || <!--Audio-->Realtek idt codec || <!--USB-->{{yes| }} || <!--Ethernet-->{{yes|Realtek 10/100 BASE-T}} || <!--Wireless-->{{No|Broadcom}} || <!--Test Distro--> || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 - 39.6 cm (15.6") HD BrightView LED-backlit (1366 x 768)
|-
| <!--Name-->HP 635 DM1 || <!--Chipset-->AMD slow E-300, E-450 later E2-1800 on SB7x0 SB8x0 SB9x0 || <!--IDE-->{{N/A}} || <!--SATA-->ATI non efi SATA AHCI - IDE mode || <!--Gfx-->{{Maybe|use VESA 2D - AMD HD6310, 6320 to HD7340}} || <!--Audio-->{{Yes|Realtek ALC270A GR but not Wrestler HDMI Audio}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{Yes|rtl8169 driver covers Realtek RTL8101E RTL8102E}} || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - 14" 1366 x 768 - f9 f10 - external battery - 2 stacked ddr3l sodimm slots max 16Gb under one base plate - removable keyboard -
|-
| <!--Name-->HP G6 2000-2b10NR 2000-2d10SX 2000-2d80NR || <!--Chipset-->AMD very slow E1-2000 E2-3000M on A50M (soldered) A4-3305A on A60M (socket) || <!--IDE-->{{N/A}} || <!--SATA-->2.5in || <!--Gfx-->{{Maybe|VESA AMD Radeon 6320, 6620G, 6520G, 6480G, 6380G}} || <!--Audio-->{{No| }} || <!--USB-->{{No| }} || <!--Ethernet-->{{maybe|Realtek 100 1000}} || <!--Wireless-->{{No|Realtek}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - 39.6-cm (15.6-in) HD LED BrightView (1366×768) - 1 or 2 ddr3l max 8G - 19VDC 3.42A Max 65W Tip 7.4mm x 5.0mm -
|-
| <!--Name-->HP ProBook 6465B || <!--Chipset-->AMD massively slow A6-3310MX or A6-3410MX with A60M || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA AMD 6480G or 6520G}} || <!--Audio-->{{No|IDT 92HD81B1X}} || <!--USB-->{{No| }} || <!--Ethernet-->{{maybe|rtl8169 Realtek 8111}} || <!--Wireless-->{{No|Intel AC 6205 or broadcom 4313 bios locked}} || <!--Test Distro--> || <!--Comments-->2013 64bit does not support AVX or SSE 4.1 - 13-inch or 14-inch runs hot -
|-
| <!--Name-->HP Elitebook 8470p 8570p || <!--Chipset-->Intel Quad i7-3840QM, i7-3610QM, i7-3520M, i5-3210M, i3-3130M, i3-2370M on Intel QM77 chipset || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|set the bios boot options to not fastboot and drive mode IDE rather than AHCI }} || <!--Gfx-->{{Maybe|Vesa 2d for HD4000 with some having switchable Radeon M2000 or 7570M}} || <!--Audio-->{{yes|HDAudio for IDT codec}} || <!--USB-->{{yes|USB2}} || <!--Ethernet-->{{No|Intel 82579LM }} || <!--Wireless-->{{No|Intel, Broadcom, Atheros}} || <!--Test Distro-->64 bit boots from CD* if safe mode 2 is used, although it is possible to remove the 'nodma' and 'debug' entries and boot || <!--Comments-->2013 64bit with SSE4.1 and AVX - 14in 1600 x 900 to 1366 x 768 - 2 DDR3L sodimm slots max 16Gb - TPM 1.2 - dual boot 32/64 bit is working fine -
|-
| <!--Name-->HP ProBook 6475b, Probook 4445s 4545s, HP Pavilion 15-b115sa, [https://support.hp.com/gb-en/document/c04015674#AbT6 HP mt41 Mobile Thin Client PC] || <!--Chipset-->AMD very slow A4 4300M, A6 4400M 4455M or A8 4500M with AMD A70M A76M FCH || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA 7420 7520G 7640G 7660G}} || <!--Audio-->{{no|HD Audio with idt or realtek codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{No|Realtek RTL8151FH-CG}} || <!--Wireless-->{{No|Intel 6205 or Broadcom BCM 43228 bios locked}} || <!--Test Distro--> || <!--Comments-->2014 64bit does support AVX or SSE 4.1 - 15.6-inch -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->HP ENVY 15-k112nl K1Y78EA || <!--Chipset-->Intel® Core™ i7 i7-4510U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe| }} || <!--Gfx-->Intel HD4400 and/without NVIDIA® GeForce® GTX 850M || <!--Audio-->{{maybe| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{no| }} || <!--Test Distro-->Deadwood usb3 test iso || <!--Comments-->2014 64bit - 15.6" 768p to 1080p - 19.5V 3.33A/4.62A/6.15A 65W/90W/120W AC -
|-
| <!--Name-->HP Pavilion Gaming Laptop 15-ak002na || <!--Chipset-->Intel 4 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->GTX 950 || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2015 64bit -
|-
| <!--Name-->HP ProBook 255 G1, 455 G1 F2P93UT#ABA, 645 G1, Envy 15-j151ea G7V80EA, Envy m6-1310sa (E4R01EA#ABU) || <!--Chipset-->AMD very slow Dual-Core E1-1500, or AMD Quad A4-4300M A8-4500M A10-4600M A4-5150M A6-5350M 2.9Ghz A10-5750M || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA 2D for 7310, 7420G 7520G 7640G 7660G 8350G 8450G or 8550G, 8650G, 8750G }} || <!--Audio-->{{No|HD Audio IDT 92HD91 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|realtek}} || <!--Wireless-->{{No|Atheros}} || <!--Test Distro--> || <!--Comments-->2015 64bit does support AVX or SSE 4.1 - 14in and 15in 1366 x 768 - external battery - 2 ddr3l sodimm slots - 19.5v / 4.62A psu runs hot -
|-
| <!--Name-->HP ProBook 245 G4, 255 G2, 455 G2, 255 G3, 455 G3, 255 G4 80CB, 255 G5 82F6, 355 G2, HP Pavilion 15-p038na 15-g092sa 15-p091sa 15-G094S 15-p144na 15-p142na, 15-Af156sa || <!--Chipset-->AMD very slow A4-5000 A6-5200, E2-6110, E1-6010 E2-2000, E1-2100 E2-3800, A4-6210 A6-6310 A8-6410, E2-7110, A6-7310 A8-7410 APU on A68M || <!--IDE-->{{N/A}} || <!--SATA-->sata some with cdrw dvdrw || <!--Gfx-->{{Maybe|VESA Radeon R2 R4 R5}} || <!--Audio-->{{no|HD Audio ALC3201-GR}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 RTL8102E or Atheros 1GbE}} || <!--Wireless-->{{unk|Qualcomm Atheros AR9565}} || <!--Test Distro--> || <!--Comments-->2015 64bit most have SSE4 AVX but E2-2000 does not - 15.6-inch (1366 x 768) - 2 ddr3l sodimm slots - small 31Whr or 41Whr external battery covers 240 G4, 245 G4, 250 G4, 255 G4, 256 G4, 14G, 15G - keyboard repair swap requires removal of all components -
|-
| <!--Name-->HP Elitebook 725 G2, 745 G2, 755 G2 || <!--Chipset-->Amd Quad very slow A6-7050B A8-7150B 1.9GHz A10-7350B || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA on AMD R4 R5 Radeon R6 with DP and vga}} || <!--Audio-->{{No|HD audio with IDT 92HD91}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 PCIe GBE}} || <!--Wireless-->{{no|Broadcom or Atheros}} || <!--Test Distro--> || <!--Comments-->2016 64bit - 12.5-inch, 14" or 15.6in (all 1366 x 768) - 19.5V 65w 45W AC adapter - internal pull up tab battery under base which slides off - 2 ddr3l sodimm slots - keyboard swap requires removal of all components -
|-
| <!--Name-->HP ProBook 645 g2, Probook 445 G2, Probook 245 G2 most have cmos rtc battery || <!--Chipset-->AMD very slow A6-8600 A8-8700 a10- || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA 2D for Radeon R5 R6}} || <!--Audio-->{{No|HD Audio }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{No|Intel I219V 100/1000}} || <!--Wireless-->{{No|Intel or Qualcomm Atheros}} || <!--Test Distro--> || <!--Comments-->2016 64bit - 14in and 15.6-inch HD (1366 x 768) or FHD 1080p - 2 ddr3l sodimm slots max 16GB - internal battery - hp ac psu tip -
|-
| <!--Name-->HP Probook 455 G3 should have a cmos battery || <!--Chipset-->AMD slow A10-8700P || <!--IDE-->{{N/A}} || <!--SATA-->1 2.5in sata and most should have 9.5mm dvd-rw || <!--Gfx-->{{Maybe|VESA 2D for Radeon R5}} || <!--Audio-->{{No|HDAudio with Conexant CX7501 codec }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 Realtek RTL8111HSH-CG}} || <!--Wireless-->{{no|RTL8188EE }} || <!--Test Distro--> || <!--Comments-->2016 64bit - 2 ddr3l sodimm slots - keyboard swap problematic -
|-
| <!--Name-->HP Elitebook 725 G3, 745 G3, 755 G3, 725 G4, 745 G4, 755 G4, HP mt43 || <!--Chipset-->Amd slow A8-8600B, A10-8700B, A12-8800B to Quad A8 Pro 9600B to A10 9800 || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA on AMD R5 R6 R7 with DP and vga but screen is low res, dull colours, and blurry}} || <!--Audio-->{{No|HD audio with IDT codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{No|Broadcom 5762 PCIe GBE}} || <!--Wireless-->{{no|Realtek RTL8723BE-VB}} || <!--Test Distro--> || <!--Comments-->2016 64bit - 12.5-inch (1366 x 768) to 14" and 15.6in - 2 sodimm ddr3 - 19.5V 45W AC slim 4.5mm hp adapter - randomly shuts down and the noisy fans constantly on - keyboard swap problematic -
|-
| <!--Name-->HP ProBook 645 G3, 655 G3 should have a cmos rtc battery underside of mb || <!--Chipset-->AMD 8th Gen slow A10-8730B, A8-9600B (4c4t) A6-8530B (2c2t) || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA 2d for AMD R5}} || <!--Audio-->{{No|HD Audio}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 RTL8111HSH}} || <!--Wireless-->{{No|Intel or Realtek}} || <!--Test Distro--> || <!--Comments-->2016 64bit - 15.6in - 2 ddr4 sodimm slots - keyboard repair swap requires removal of all components -
|-
| <!--Name-->HP ProBook 250 G5 easy cmos and external main battery || <!--Chipset-->Intel i7-6500U, i5-6200U, i3-6100U to slow i3-6006U, N3710 all sse4.1 and avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe| }} || <!--Gfx-->{{maybe|VESA 2D for iGPU Intel HD405 to HD520 dGPU or AMD Radeon R5 430M}} || <!--Audio-->{{unk|HDAudio with Realtek ALC3227 (or ALC282) codec 0x0282 }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 rtl8111HSH}} || <!--Wireless-->{{no| }} || <!--Test Distro-->Deadwoods' latest usb3 test iso with noacpi || <!--Comments-->2016 64bit - 15.6 inch 768p - HP ac psu - 2 ddr4 sodimm slots -
|-
| <!--Name-->HP ProBook 250 G6 SL52 LA-E801P - easy cmos battery and external battery || <!--Chipset-->Intel tested '''7200U''' untested 7500U to slow N3060 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|ahci on M.2 sata or 2.5in whichever installed with 1 m.2 permanent and internal dvdrw}} || <!--Gfx-->{{Maybe|VESA 2D for Intel Intel HD Graphics 620 or AMD Radeon 520}} || <!--Audio-->{{yes|HDAudio 0x8086, 0xa170 or 0x8086, 0x9dc8 with ALC3227 aka ALC282 codec 0x10EC, x0282}} || <!--USB-->{{maybe|intel sunrise point-lp USB3.0 xHCI}} || <!--Ethernet-->{{yes|rtl8169 Realtek RTL8111}} || <!--Wireless-->{{No|RTL8821CE or Intel wifi}} || <!--Test Distro-->Deadwoods' latest usb3 test iso with noacpi || <!--Comments-->2017 64bit 768p or 1080p - 19.5V 65W - 2 DDR4 sodimm slots max 16Gb - keyboard swap problematic - synaptics touchpad - poor hinges -
|-
| <!--Name-->HP Pavilion 14-BS, HP 15-BS LA-E802P cmos battery and external battery || <!--Chipset-->Intel i3-7200U to slow Celeron || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata 2.5in (possibly requires the drive cable and M.2 sata3, most have no cdrw dvdrw}} || <!--Gfx-->{{Maybe|VESA 2d for Intel}} || <!--Audio-->{{No|HDAudio 0x8086, 0x9d70 with ALC codec 0x10EC, x0}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|Realtek rtl8169}} || <!--Wireless-->{{No|RTL8188CTV, RTL8821CE or Intel Dual Band Wireless-AC 3168}} || <!--Test Distro-->Deadwoods' latest usb3 test iso || <!--Comments-->2017 64bit 768p all - 19.5V 65W - DDR4 slot max 8Gb - keyboard swap problematic - synaptics touchpad -
|-
| <!--Name-->HP 14-bw022na - cmos coin battery and external battery || <!--Chipset-->AMD very slow A6-9120 APU || <!--IDE-->{{N/A}} || <!--SATA-->m.2 sata || <!--Gfx-->{{Maybe|VESA 2D for R3}} || <!--Audio-->{{no|HDAudio VOID with conexant CX7501 codec}} || <!--USB-->{{maybe|USB3 not working but port on the right works}} || <!--Ethernet-->{{yes|Realtek GbE}} || <!--Wireless-->{{No|Realtek}} || <!--Test Distro-->Deadwoods' latest usb3 test iso with noacpi || <!--Comments-->2017 64bit 768p to 900p - keyboard swap problematic -
|-
| <!--Name-->HP Probook 455 G4, Probook 455 G5, cmos battery on underside of mb take off back cover and below wifi card || <!--Chipset-->AMD very slow A10-9600P APU, A9-9410, A6-9210 APU || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->{{Maybe|VESA Radeon R4, R5 or R6}} || <!--Audio-->{{No|HD }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|realtek 1GbE}} || <!--Wireless-->{{no|realtek or intel Wireless-AC 7265}} || <!--Test Distro--> || <!--Comments-->2017 64bit 15.6in 768p - 2 ddr4 sodimm slots - keyboard swap problematic - rr03xl battery -
|-
| <!--Name-->HP ProBook 255 G6 (), easy cmos and external battery || <!--Chipset-->AMD very slow E2-9000e, A9-9420, 9220P, A4-9125 (all 2c) AMD A6-9225 AMD A9-9425 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata 2.5in (possibly requires the drive cable and M.2 sata3 and internal cdrw dvdrw}} || <!--Gfx-->{{Maybe|VESA 2d for R2 R3 R4}} || <!--Audio-->{{No|HDAudio 0x1022, 0x157a or 0x1002, 0x15b3 with ALC codec 0x10EC, x0}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|Realtek rtl8169}} || <!--Wireless-->{{No|RTL8188CTV, RTL8821CE or Intel Dual Band Wireless-AC 3168}} || <!--Test Distro--> || <!--Comments-->2017 64bit 768p all - 19.5V 65W - DDR4 slot max 8Gb - keyboard swap problematic - synaptics touchpad -
|-
| <!--Name-->HP ProBook 255 G7 (la-g078p) - no cmos battery so needs internal battery || <!--Chipset-->AMD very slow E2-9000e, A9-9420, 9220P, A4-9125 (all 2c) AMD A6-9225 AMD A9-9425 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata 2.5in (possibly requires the drive cable and M.2 sata3, most have no internal cdrw dvdrw}} || <!--Gfx-->{{Maybe|VESA 2d for R2 R3 R4}} || <!--Audio-->{{No|HDAudio 0x1022, 0x157a or 0x1002, 0x15b3 with ALC codec 0x10EC, x0}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|Realtek rtl8169}} || <!--Wireless-->{{No|RTL8188CTV, RTL8821CE or Intel Dual Band Wireless-AC 3168}} || <!--Test Distro--> || <!--Comments-->2017 64bit 768p all - 19.5V 65W - DDR4 slot max 8Gb - keyboard swap problematic - synaptics touchpad -
|-
| <!--Name-->ProBook 245 g8 - no cmos rtc coin battery but uses internal battery || <!--Chipset-->AMD very slow A6-9225, A4-9125, A6-8350B, A4-5350B APU || <!--IDE-->{{N/A}} || <!--SATA-->m.2 sata || <!--Gfx-->{{Maybe|VESA R4 R6}} || <!--Audio-->{{no|HDAudio}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|Realtek GbE}} || <!--Wireless-->{{No|Realtek}} || <!--Test Distro-->Deadwoods' latest usb3 test iso || <!--Comments-->2017 64bit 768p - many later variants - keyboard swap problematic -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Probook 255 G7 84AE 7DE72EA 7DE73EA (epv51 la-g076p) - CMOS Error (502) replace main internal battery HT03XL to have bios remember settings || <!--Chipset-->Ryzen 3 2200U 2300U (2c4t), R5 2500U, R7 2700U (4c8t) Raven Ridge || <!--IDE-->{{N/A}} || <!--SATA-->{{no|M.2 (Sata or NVMe) and very optional 2.5in sata, most have mini sata port}} || <!--Gfx-->{{Maybe|VESA 2d 640p to 768p for AMD Vega 3, 6, or 8}} || <!--Audio-->{{unk|HDAudio 0x1022, 0x15e3 with ALC236 0x10ec, 0x0236 codec}} || <!--USB-->{{maybe|USB3 }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no|Realtek RTL8821CE, 8822BE or Intel AC 8265}} || <!--Test Distro-->AROS x64 deadwoods' iso does not boot with cd/dvd and installed to 2.5in ssd, boots to grub choice, select but no further and reboots || <!--Comments-->2017 64bit - 12.5 to 15.6in 768p mostly to 1080p - 1 on smaller laptops or 2 ddr4 2400mhz sodimm slots on larger laptops max 16Gb - hp 4.5mm blue tip charging - keyboard swap problematic - esc boot options f9 boot order f10 bios - synaptics touchpad -
|-
| <!--Name-->HP EliteBook 725 G5, 735 G5, 745 G5, 755 G5, Probook 455 G6, ProBook 645 G6 || <!--Chipset-->Ryzen 3 2200U 2300U (2c4t), R5 2500U, R7 2700U (4c8t) Raven Ridge || <!--IDE-->{{N/A}} || <!--SATA-->{{no|M.2 (Sata or NVMe) and very optional 2.5in sata, some have mini sata port but no cdrw dvdrw}} || <!--Gfx-->{{Maybe|VESA 2d 640p to 768p for AMD Vega 3, 6, or 8}} || <!--Audio-->{{No|HDAudio 0x1022, 0x15e3 with ALC 0x10ec, 0x0 codec}} || <!--USB-->{{maybe|USB3 }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no|Realtek RTL8821CE, 8822BE or Intel AC 8265}} || <!--Test Distro-->Deadwoods' latest usb3 test iso does not boot software error || <!--Comments-->2017 64bit - 12.5 to 15.6in 768p mostly to 1080p - 1 on smaller laptops or 2 ddr4 2400mhz sodimm slots on larger laptops max 16Gb - hp 4.5mm blue tip charging - keyboard swap problematic - esc boot options f9 boot order f10 bios - synaptics touchpad -
|-
| <!--Name-->HP 14-cm, 15-bw0, HP 15-db0043na, HP 15-db0996na, HP 15-db0997na, 17-ca0007na, 17-ca1, ProBook 645 G4 - no cmos battery || <!--Chipset-->Ryzen 2200U (2c 4t) 2500U (4c 8t) with AMD Carrizo FCH 51 || <!--IDE-->{{N/A}} || <!--SATA-->{{no|1 M.2 and 1 2.5in on some larger models and hdd port }} || <!--Gfx-->{{Maybe|VESA Radeon R5 and later Vega 3 or 7}} || <!--Audio-->{{No|HDaudio 0x1002, 0x103c or 0x1022, 0x157a with Realtek ALC3227 0x10ec, 0x0282 but ATI HDMI}} || <!--USB-->{{Maybe|USB3 USB boot drive stuck on kitty's eyes}} || <!--Ethernet-->rtl8169 RTL8111E || <!--Wireless-->{{No|RTL 8723DE 8821 bios locked}} || <!--Test Distro-->2020 Icaros 2.3 USB, Deadwoods' latest usb3 test iso does not boot software error || <!--Comments-->2018 64bit 2kg - screen is dim 14in, 15.6in or 17.3" 768p or 1080p - 65W 19.5V ac adapter - internal 3-cell 41 Wh Li-ion battery does not last long - 2 ddr4 sodimm slots - no DVD-Writer - keyboard swap problematic -
|-
| <!--Name-->HP ProBook 250 G7, 250 G8 - no cmos battery so needs internal battery and needs usb3 boot due to garbage bios boot options || <!--Chipset-->Intel 8235U 8265U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|M.2 nvme not working, optional sata 2.5in requires LS-G072P and ribbon cable, if internal cdrw dvdrw partial boot}} || <!--Gfx-->{{Maybe|VESA 2D for Intel WhiskeyLake-U 620 GT2 UHD}} || <!--Audio-->{{No|HDAudio 0x8086, 0xa170 or 0x8086, 0x9dc8 with ALC236 codec 0x10EC, x0236}} || <!--USB-->{{maybe|Cannon Point-LP USB3.1 xHCI}} || <!--Ethernet-->{{maybe|rtl8169 Realtek RTL8111}} || <!--Wireless-->{{No|RTL8821CE or Intel Dual Band Wireless-AC 3168}} || <!--Test Distro-->Deadwoods' latest usb3 test iso does not boot stuck on kittys eyes || <!--Comments-->2018 64bit 1080p all - 19.5V 65W - DDR4 slot max 16Gb - keyboard swap problematic - synaptics touchpad -
|-
| <!--Name-->HP 255 G7 7DC73EA 2D200EA 87CE (fpp55 la-g07jp), - CMOS Error (502) replace 41.04Wh ht03xl hto3xl dynapack suzhou main battery to have bios remember settings || <!--Chipset-->'''tested''' R5 3500U (4c8t) '''untested''' mostly dual cores - AMD Athlon Gold 3150U (2c2t), Silver 3050U APU (2c2t), Ryzen 3 Pro 3145U APU, 3200U (2c4t) || <!--IDE-->{{N/A}} || <!--SATA-->{{no|1 m.2 NVMe or sata3 up to 2280, optional 2.5in sata, many have mini-sata slimline 6+7 internal port but no physical 9mm drive}} || <!--Gfx-->{{Maybe|VESA 2D from 640p to 1080p for AMD Vega 3, 6 or 8 with up to 2gb ram taken}} || <!--Audio-->{{unk|HDAudio 0x1022, 0x15e3 with realtek ALC236 codec 0x10ec, 0x0236}} || <!--USB-->{{maybe|USB3 but no usb-c}} || <!--Ethernet-->{{maybe|rtl8169 Realtek GbE RTL8111HSH}} || <!--Wireless-->{{No|Realtek 8822BE}} || <!--Test Distro-->2025 Aros One 32bit and 64bit burnt iso does not fully boot (stuck on kitty's eyes) and installed onto 2.5in on another compatible computer, sometimes has dosboot bootstrap error -6 || <!--Comments-->2018 64bit - 14in / 15.6in dim tn panel 768p or 1080p - 2 ddr4 sodimm slots max 16gb - hp 19.5V 45W 65W AC blue tip round 4.5 mm - keyboard swap problematic - synaptics touchpad - caps lock blinking 3 times then 2 quick pulses means ram or bios issue - f9 boot order f10 uefi - laptop needs usb3 to boot and use so avoid until usb3 arrives
|-
| <!--Name-->HP ProBook 450 G5 needs main battery for bios settings saved || <!--Chipset-->Intel i7-8550U, i5-8250U, i3-8130U, i7-7500U, i5-7200U, i3-7100U, i3-7020, i3-6006U all sse4.1 and avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe| }} || <!--Gfx-->{{maybe|VESA 2D for Intel UHD}} || <!--Audio-->{{unk|HDAudio with codec }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 rtl8111HSH}} || <!--Wireless-->{{no| }} || <!--Test Distro-->Deadwoods' latest usb3 test iso with noacpi || <!--Comments-->2018 64bit - 15.6 inch 768p or 1080p - HP ac psu, 1 ddr4 sodimm slot -
|-
| <!--Name-->[https://support.hp.com/gb-en/document/c06955717 ProBook 245 g8], Probook 445R G6, 455R G6, HP14-dk0599sa, pavilion 15-cw1511na 15-cw1507sa, HP 15s-eq1516sa no cmos battery || <!--Chipset-->AMD Athlon Gold 3150U (2c2t), Silver 3050U APU (2c2t), Ryzen 3 Pro 3145U APU, 3200U (2c4t) and 3500U (4c8t) || <!--IDE-->{{N/A}} || <!--SATA-->{{no|1 m.2 (NVMe or sata3 up to 2280), optional 2.5in sata but resets}} || <!--Gfx-->{{Maybe|VESA 2D from 640p to 1080p for AMD Vega 3, 6 or 8 with up to 2gb ram taken}} || <!--Audio-->{{unk|HDAudio 0x1022, 0x15e3 with realtek ALC codec 0x10ec, 0x0}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 Realtek GbE RTL8111HSH}} || <!--Wireless-->{{No|Realtek 8822BE}} || <!--Test Distro-->Aros || <!--Comments-->2018 64bit - 14in / 15.6in dim tn panel 768p or 1080p - 2 ddr4 sodimm slots max 16gb - hp 19.5V 45W 65W AC blue tip round 4.5 mm - keyboard swap problematic - synaptics touchpad - f9 boot order f10 uefi
|-
| <!--Name-->HP ProBook 450 G6 needs main battery for bios settings saved || <!--Chipset-->Intel i7-8565U, i5-8265U, i3-8165U all sse4.1 and avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe| }} || <!--Gfx-->{{maybe|VESA 2D for Intel UHD 620}} || <!--Audio-->{{unk|HDAudio with Realtek ALC3246 aka ALC295 codec }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 rtl8111HSH}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2019 64bit - 15.6 inch 768p or 1080p - 45W 19.5V HP ac psu - 2 ddr4 sodimm slots -
|-
| <!--Name-->Elitebook 735 G6 5VA23AV, Elitebook 745 G6, 255 g8, HP 15s-dy - no cmos battery || <!--Chipset-->AMD® Ryzen™ 5-3500U Ryzen 3-3300U AMD Ryzen 3-3250U AMD Athlon® Gold 3150U AMD Athlon Silver 3050U AMD 3020e || <!--IDE-->{{N/A}} || <!--SATA-->{{no|m.2 2280 nvme in legacy - hp sure start and secure boot disabled but still issues with gpt installs - LS-H323P LS-K201P}} || <!--Gfx-->{{Maybe|VESA for Vega 8, 5 or 3}} || <!--Audio-->{{No|HDAudio 6.34 ahi with realtek ALC codec 0x10EC, 0x0295}} || <!--USB-->{{maybe|USB3 type-A port boots stick partially to kitty eyes}} || <!--Ethernet-->{{Maybe|rtl8169 realtek RTL8111E or 8111H}} || <!--Wireless-->{{No|realtek or intel}} || <!--Test Distro-->2020 Icaros 2.3 onto USB and AROS One 1.8 USB, Deadwoods' latest usb3 test iso with noacpi || <!--Comments-->2019 64bit - 15.6in 1366x768 to 1920x1080 - 2 3200MHz DDR4 sodimms - 19.5V 2.31A or 20V 2.25 45W 4.5X3.0MM hp - esc bios setup, f9 boot device select - low travel keyboard - poor hw03xl or battery life - plastic hooked base with retained screws - touchpad? -
|-
| <!--Name-->HP ProBook 445 G7, 455 G7 || <!--Chipset-->Ryzen 3 4300U 5 4500U 4700U || <!--IDE-->{{N/A}} || <!--SATA-->1 sata and 1 nvme || <!--Gfx-->{{Maybe|VESA Vega 3}} || <!--Audio-->{{unk|HDAudio with realtek alc236 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|realtek rtl8111ep}} || <!--Wireless-->{{No|realtek RTL8822CE or intel AC 9260 or Wi-Fi 6 AX200}} || <!--Test Distro-->Deadwoods' latest usb3 test iso || <!--Comments-->2020 64bit - 14 inch 768p or 1080p - 2 ddr4 sodimm slots - smart 45w 65w hp or usb-c charging - keyboard swap problematic - RE03XL battery -
|-
| <!--Name-->HP ProBook 450 G7 || <!--Chipset-->Intel || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe| }} || <!--Gfx-->{{maybe|VESA 2D for Intel UHD}} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 rtl8111EP}} || <!--Wireless-->{{no| }} || <!--Test Distro-->Deadwoods' latest usb3 test iso with noacpi || <!--Comments-->2020 15.6 inch 768p or 1080p - 1 ddr4 sodimm slot -
|-
| <!--Name-->HP EliteBook 745 G7, 845 G7, HP 15-EH0006NA || <!--Chipset-->AMD Ryzen 3 4300U, 5 4500U, PRO 4650U || <!--IDE-->{{N/A}} || <!--SATA-->SSD M.2 || <!--Gfx-->{{Maybe|VESA AMD Radeon Vega 8}} || <!--Audio-->{{unk|Hdaudio with codec 0x10EC, 0x0257}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2020 64bit - 15.6in 1080p - 1 ddr4 sodimm slot - Bang & Olufsen speakers - keyboard swap problematic -
|-
| <!--Name-->HP ProBook 255 G8, HP 245 G9, ProBook 255 G9 816C2EA#ABE, - no cmos battery only internal battery || <!--Chipset-->AMD RYZEN 3 5300u, 5425U, 5 5500U 5625U, 7 5700u || <!--IDE-->{{N/A}} || <!--SATA-->{{no|NVMe}} || <!--Gfx-->{{Maybe|VESA AMD Vega 6 or 8 hdmi 1.4B}} || <!--Audio-->{{unk|HDAudio}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 Realtek RTL8111HSH-CG GbE}} || <!--Wireless-->{{No|Realtek RTL8822CE or Intel}} || <!--Test Distro--> || <!--Comments-->2021 64bit - 14" to 15.6in 768p to 1080p poor gamut - 45 or 65w hp psu - 2 ddr4 sodimm slots max 16GB - keyboard swap problematic -
|-
| <!--Name-->HP ProBook 450 G9 || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe| }} || <!--Gfx-->{{maybe|VESA 2D for Intel Iris Xe}} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 rtl8111H}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2020 15.6 inch - 1 ddr4 sodimm slot -
|-
| <!--Name-->HP EliteBook 645 g7, 835 G8, 845 g8, HP ENVY x360 13 15, HP 17-cp0021na || <!--Chipset-->AMD Ryzen 5 5650U, 7 5800U, R7 Pro 5850U || <!--IDE-->{{N/A}} || <!--SATA-->NVMe || <!--Gfx-->{{Maybe|VESA 2D for AMD Radeon}} || <!--Audio-->{{unk|HDAudio 0x, 0x with ALC3247 aka ALC236 codec 0x10ec, 0x0236}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{Maybe|Realtek 1Gbe on 645 only}} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2021 64bit - 13.3" or 14" 1080p - poor screens low nits and srgb score - 845 gets hot ue to poor cooling - slim round hp ac - keyboard swap problematic -
|-
| <!--Name-->HP Dev One, HP ProBook 455 G8 || <!--Chipset-->AMD Ryzen 7 5800U, R7 5850U || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|VESA }} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2021 64bit 15.6" 1080p - 2 internal sodimm slots - hp barrel charging -
|-
| <!--Name-->Elitebook 655 g9 669y1ut#aba, || <!--Chipset-->AMD Ryzen 5 PRO 5675U || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|VESA }} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2021 64bit 15.6" 1080p - 1 or 2 internal sodimm slots - usb-c charging -
|-
| <!--Name-->HP probook 635 Aero G8 || <!--Chipset-->AMD Ryzen 5 5600U || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2921 64bit - 14in 1080p - 2 ddr4 slots - ec chip nuvoton NPCX797HA1B - bios winbond 250256JYEN -
|-
| <!--Name-->HP PROBOOK X360 435 G8 cmos battery || <!--Chipset-->RYZEN 5 5600U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe| }} || <!--Gfx-->{{maybe|Vesa 2D }} || <!--Audio-->{{maybe|HDaudio with ALC236 codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|RTL8822CE or Intel AX200}} || <!--Test Distro--> || <!--Comments-->2021 64bit - hp round ac plug -
|-
| <!--Name-->HP Elitebook 845 g9 || <!--Chipset-->AMD 6000 series 6850u || <!--IDE-->{{N/A}} || <!--SATA-->M.2 NVMe || <!--Gfx-->{{Maybe|VESA 2D for Vega 8}} || <!--Audio-->{{unk|HDaudio with codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| }}Qualcomm Atheros || <!--Test Distro--> || <!--Comments-->2022 64bit aluminum case - 14in 1080p to 2140p 16:10 poor screen again - 2 internal ddr5 sodimm slots - usb-c ac charging avoid any knocks - keyboard swap problematic -
|-
| <!--Name-->HP ProBook 445 G10, 455 G10 || <!--Chipset-->AMD Ryzen 5 7530U || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD Vega 7 || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2023 64bit - 15.6in - hp round ac -
|-
| <!--Name-->Hp 455 G11 || <!--Chipset-->AMD Ryzen 3 7335U (4c8t), 5 7535U (6c12t), 7 7735U (8c16t) || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD Vega 7 || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 RTL8111HSH}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2023 64bit - 35.6 cm (14.0 in) 1920x1200 or 2560x1600 - usb-c 45w or 65w ac - 2 ddr5 sodimm slots max 32gb -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|}
====IBM/Lenovo====
[[#top|...to the top]]
Build quality (Lowest to highest)
<pre >
iSeries
Edge
Ideapad
Thinkpad - good cases and construction but electronic internals same as anyone else
</pre >
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Thinkpad 390X 390E (2626) || <!--Chipset-->Neo Magic MM2200 with C400 P2-266 to P3 500MHz || <!--IDE--> || <!--SATA--> || <!--Gfx-->use VESA || <!--Audio-->{{No|256AV or ESS Solo-1}} || <!--USB--> || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->1998 32bit
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Thinkpad 600x || <!--Chipset-->Intel 440BX || <!--IDE-->{{Maybe| }} || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA Neomagic NM2360 MagicMedia 256ZX}} || <!--Audio-->{{No|Crystal CS4297A codec}} || <!--USB--> || <!--Ethernet-->{{N/A| }} || <!--Wireless-->{{N/A| }} || <!--Test Distro-->Icaros 1.3.1 || <!--Comments-->1998 32bit a little support - earlier 600 and 600e were Pentium 2 based
|-
| <!--Name-->Thinkpad X20 (2662-32U) X21 || <!--Chipset-->Intel 440 BX ZX DX || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio-->{{no|AC97 with Cirrus Logic Crystal cs4281}} || <!--USB-->1.1 || <!--Ethernet-->no mini pci intel e100 || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2002 32bit
|-
| Thinkpad T20 (2647) T21 (26) T22 || 440BX || {{Maybe| }} || {{N/A}} || {{partial|Savage IX-MV (VESA only)}} || {{no|Cirrus Logic CS 4614/22/ 24/30}} || {{yes|USB 1.1}} || {{yes|Intel PRO 100}} || {{N/A}} || Icaros 1.2.4 || 2002 32bit
|-
| <!--Name-->A21e (2628, 2655) A22e || <!--Chipset-->440MX || <!--IDE--> || <!--SATA--> || <!--Gfx-->Ati rage mobility || <!--Audio-->{{no|AC97 Cs4299 CS4229}} || <!--USB--> || <!--Ethernet-->intel e100 || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2002
|-
| Thinkpad T23 (2647) || i810 || {{yes|IDE}} || {{N/A}} || {{maybe|S3 Super Savage IX/C SDR (VESA only)}} || {{maybe|AC'97 CS4299}} || {{yes|USB 1.1}} || {{yes|Intel ICH3 PRO 100 VE}} || {{no|Realtek RTL8180L others with bios hacking risky}} || || 2003 32bit with some support
|-
| <!--Name-->Thinkpad X22 X23 X24 || <!--Chipset-->830 || <!--IDE--> || <!--SATA--> || <!--Gfx-->ATi Mobility M6 LY || <!--Audio-->Ac97 CS4299 || <!--USB-->2 x 1.1 || <!--Ethernet-->Intel Pro 100 || <!--Wireless-->Actiontec Harris Semi Intersil Prism 2.5 (X23 and X24 only) || <!--Test Distro--> || <!--Comments-->2003 32bit with slice Ultrabase X2 -
|-
| <!--Name-->A30 A30p || <!--Chipset-->830 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Ati Radeon M6 || <!--Audio-->AC97 CS 4299 || <!--USB--> || <!--Ethernet-->Intel Pro 100 ve || <!--Wireless-->{{No|Intel 2200 bios locked}} || <!--Test Distro--> || <!--Comments-->2003 32bit
|-
| <!--Name-->A31 A31p R31 R32 T30 || <!--Chipset-->830 || <!--IDE-->{{yes| }} || <!--SATA-->{{N/A| }} || <!--Gfx-->Ati Radeon 7500 or FireGL || <!--Audio-->{{yes|AC97 Intel with AD1881A codec}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{yes| Intel Pro 100 ve}} || <!--Wireless-->{{No|Intel bios locked}} || <!--Test Distro-->[https://forums.lenovo.com/t5/Android-Ecosystem-Developers/AROS-An-operation-system-inside-Android/td-p/1441741 Icaros 1.5.2] || <!--Comments-->2003 32bit Also tested with Icaros 2.0.3.
|-
| Thinkpad X30 (2673) X31 (2884-xx2) X31t || i830 || {{yes}} || {{N/A}} || {{maybe|VESA only Radeon M6 Mobility}} || {{yes|AC97 - AD1981B codec}} || {{yes|USB 1.1}} || {{yes|Intel PRO 100}} || {{no|Cisco Aironet or Intel 2915 but atheros with bios hacking}} || Icaros 1.4 || 2004 32bit sound bit distorted
|-
| <!--Name-->R50e R51 || <!--Chipset-->855M || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|Intel 855M use VESA}} || <!--Audio-->intel AC97 with AD1981B codec || <!--USB--> || <!--Ethernet-->{{Yes|Intel 100 VE}} || <!--Wireless-->{{No|Intel PRO Wireless 2200BG bios locked}} || <!--Test Distro--> || <!--Comments-->2004 32bit -
|-
| IBM Thinkpad T40 (2373) T41 T41p (2379) T42 T42p T43 T43p || Intel 8xx || {{partial|PIO}} || {{N/A}} || {{partial|ATI mobility 7500 9000 (VESA only)}} || {{yes|AC97 playback}} || {{yes|uhci 1.1 and ehci 2.0}} || {{no|e1000}} || {{Maybe|Intel 2200bg bios locked but possible AR5BMB-44 AR5212 FRU 39T0081 mini PCI}} || Icaros 1.2.4 || 2004 32bit 16v IBM plug - Centrino Needs ATA=nodma option - issues with the inner chip of the SMT BGA graphics chip
|-
| Thinkpad X32 || i855 || {{yes|40, 60 or 80GB 2.5" PATA HDD}} || {{N/A}} || {{maybe|VESA only ATI Mobility Radeon 7000 with 16MB}} || {{maybe| Intel AC'97 Audio with a AD1981B codec}} || {{yes|USB}} || {{no|Intel 1000}} || {{no|Intel 2200 but atheros with bios hacking}} || 2016 Icaros 2.1 || 2004 32bit - 12.1" TFT display with 1024x768 resolution; 256 or 512MB PC2700 memory standard (2GB max)
|-
| <!--Name-->Thinkpad X40 X40t by Quanta || <!--Chipset--> || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->{{maybe|Intel 800 (VESA only)}} || <!--Audio-->{{yes|AC97 AD1981B}} || <!--USB-->{{yes}} || <!--Ethernet-->{{no|Intel e1000}} || <!--Wireless-->{{Maybe|Intel but most atheros with bios hacking - difficult though}} || <!--Test Distro--> || <!--Comments-->2004 32bit last IBM design
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Thinkpad X41 (IBM) MT 1864 1865 2525 2526 2527 2528 x41t (Lenovo) MT 1866 1867 || <!--Chipset-->Intel with single core 1.5 1.6 and tablet 1.2GHz || <!--IDE-->{{yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Yes|Intel 915GML 2D}} || <!--Audio-->{{yes|AC97 AD1981B}} || <!--USB-->{{yes}} || <!--Ethernet-->{{no|Broadcom BCM5751M tg3}} || <!--Wireless-->{{Maybe|Intel or MiniPCI Wi-Fi Atheros AR5BMB FRU 39T0081 but ordinary atheros 54meg needs risky bios hacking}} || <!--Test Distro--> || <!--Comments-->2005 32bit - amongst first Lenovo design - 3pin cmos -
|-
| <!--Name-->R52 (most 18xx) || <!--Chipset-->Intel 915 || <!--IDE-->{{Yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Yes|Intel 915GML 2D}} || <!--Audio-->{{yes|AC97 AD1981B}} || <!--USB-->{{yes}} || <!--Ethernet-->{{no|Broadcom}} || <!--Wireless-->{{no|Broadcom bios locked}} || <!--Test Distro--> || <!--Comments-->2005 32bit
|-
| <!--Name-->R52 1846, 1847, 1848, 1849, 1850, 1870 || <!--Chipset-->ATi 200m || <!--IDE-->{{Yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{No|ATI}} || <!--Audio-->{{yes|AC97 AD1981B}} || <!--USB-->{{yes}} || <!--Ethernet-->{{no|Broadcom BCM5751M tg3}} || <!--Wireless-->{{no|Broadcom bios locked}} || <!--Test Distro--> || <!--Comments-->2005 32bit
|-
| <!--Name-->Thinkpad T60 T60P
* 64bit - 6 or 8 is 16:10 on T60/p, eg. 8742-CTO 15.4"
* 32bit - 1 and 2 are 14", 15" 4:3, like 2007-YM3 or 1952-CTO
|| <!--Chipset-->*any* T60/p will take a Core 2 Duo CPU with newer BIOS || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->Intel GMA (2D) with "p" graphics card (ATi V5200 or V5250) || <!--Audio-->{{no|HD Audio}} || <!--USB-->{{yes}} || {{no|e1000e 82573L}} || <!--Wireless-->{{No|Intel ipw3945 ABG but atheros with Middleton's or Zender BIOS hacking risky}} || Icaros 1.4 || <!--Comments-->2006 -
|-
| <!--Name-->X60 x60s x60t tablet || <!--Chipset-->945GMS 940GML || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{yes|Intel GMA (2D)}} || <!--Audio-->{{no|AD1981 HD Audio}} || <!--USB-->{{yes}} || <!--Ethernet-->{{no|Intel}} || <!--Wireless-->{{no|Intel 3945 ABG or fru 39T5578 Atheros 5K AR5BXB6 ar5007eg with bios hacking}} || <!--Comments-->Icaros 1.4 || 2006 32bit - perhaps needs a zendered bios update but risky
|-
| <!--Name-->R60 R60e || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->intel 950 with optional radeon x1300 x1400 || <!--Audio-->HD Audio with 1981HD codec || <!--USB--> || <!--Ethernet-->Intel or Broadcom || <!--Wireless-->{{Maybe|Intel 3945 or atheros fru 39T5578 bios locked}} || <!--Test Distro--> || <!--Comments-->2006 32bit
|-
| Thinkpad T61 T61p without Middleton's or Zender BIOS || Core 2 Duo CPU T7300 T8300 || {{N/A}} || <!--SATA-->{{yes| }} || Intel GMA (2D), NVS 140m or Quadro FX 570M () || {{maybe|HD Audio with Analog Devices AD1984 or AD1984A HD Audio Codec routed to the line output}} || <!--USB-->{{yes}} || {{no|intel e1000e 82573L}} || {{No|Intel but atheros with bios hacking risky}} || Icaros 1.6, AROS One || 2007 64bit
|-
| <!--Name-->X61 x61s X61T Tablet || <!--Chipset-->Core Duo T8100 on i965 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{yes|Intel GMA 3100 (2D) slow 3D}} || <!--Audio-->{{no|AD1984 HD Audio}} || <!--USB-->{{yes|USB 2.0}} || <!--Ethernet-->{{no|Intel 82566DM}} || <!--Wireless-->{{maybe|Atheros AR5212 (some revisions use Intel WLAN runs very hot) bios locked}} || <!--Test Distro--> || <!--Opinion-->2007 64bit ultrabook running very hot - ddr2 max 4gb - 3pin cmos -
|-
| <!--Name-->R61 R61i || <!--Chipset-->Intel 965 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->intel 965 || <!--Audio-->HD Audio with conexant codec || <!--USB--> || <!--Ethernet-->Broadcom BCM5787M || <!--Wireless-->{{No|Intel 3945 bios locked}} || <!--Test Distro--> || <!--Comments-->2008 64bit
|-
| Lenovo 3000 N200 || <!--Chipset-->Santa Rosa || {{N/A}} || <!--SATA-->{{maybe| }} || {{yes|Geforce 7300 (2D)}} || {{yes|ALC262 HD Audio}} || <!--USB-->{{yes}} || {{no|Broadcom}} || {{no|Intel 3945 bios locked}} || Icaros 1.4 || 2007 64bit 3D graphics parts are supported but buggy.
|-
| Lenovo 3000 N200 / V200 || GM965 ICH9-M with Intel Mobile Core 2 Duo T5450 || {{N/A}} || <!--SATA-->{{maybe| }} || {{yes|X3100 (2D)}} || {{Maybe|HD Audio ALC269VB or CX20549}} || {{yes| }} || {{no|BCM5906M}} || {{no|Intel 3965 / 4965AGN bios locked}} || Icaros 1.4.1 2.1 || 2007 64bits of laptop works
|-
| <!--Name-->X300 || <!--Chipset-->Core 2 Duo Merom SL7100 1.2GHz || <!--IDE-->{{N/A}} || <!--SATA-->1.8 inch || <!--Gfx-->{{maybe|Intel X3100}} || <!--Audio-->HD Audio AD1984A || <!--USB--> || <!--Ethernet-->Intel || <!--Wireless-->{{No|Intel 4965 bios locked}} || <!--Test Distro--> || <!--Comments-->2007 64bit 13.3" TFT 1440x900 (WXGA+) with LED backlight
|-
| <!--Name-->Thinkpad Edge 11″ AMD K325 || <!--Chipset-->M880G || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{maybe|VESA for ATI HD4200}} || <!--Audio-->{{maybe| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 8111}} || <!--Wireless-->{{no|8192CE (Realtek 8176) bios locked}} || <!--Test Distro--> || <!--Comments-->2007 little support
|-
| <!--Name-->Thinkpad X301 || <!--Chipset-->Core 2 Duo Penryn SU9400 Su9600 with GM45 chipset || <!--IDE-->{{N/A}} || <!--SATA-->1.8 inch micro SATA (uSATA) || <!--Gfx-->{{maybe|Intel X4500}} || <!--Audio-->AD1984A || <!--USB--> || <!--Ethernet-->Intel || <!--Wireless-->{{No|Intel 5xxx WiFi link 5100, 5150, 5300 and 5350 (WiMAX) bios locked}} || <!--Test Distro--> || <!--Comments-->2009 WXGA+ (1440×900) LED backlight display - 2774 or 4057 Alps and 2776 Synaptics touchpad - optical bay interface is Legacy IDE (PATA) - Addonics ADMS18SA, Lycom ST-170m
|-
| <!--Name-->X100e || <!--Chipset-->AMD Athlon Neo Single-Core (MV-40) and dual cores || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|2.5in tray in ide mode in bios}} || <!--Gfx-->{{Maybe|Vesa ATI HD3200}} || <!--Audio-->{{yes|HD Audio with CX20582 codec playback}} || <!--USB-->{{Maybe| }} || <!--Ethernet-->{{Yes|Realtek 8111}} || <!--Wireless-->{{no|Realtek r8192se bios locked}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2009 64bit 11.6in 1366 x 768 - 20v 65W round barrel - enter f1 setup f11 diagnostics f12 boot list - runs very warm -
|-
| <!--Name-->SL400 SL500 || Intel || {{N/A}} || {{Yes|IDE mode}} || {{Maybe|Nvidia 9400M}} || {{Maybe|ALC269}} || {{yes|USB 2.0}} || {{Maybe|RTL8169}} || {{Maybe| bios locked}} || ||
|-
| <!--Name-->SL410 SL510 || 965 || {{N/A}} || {{maybe|IDE mode}} || {{maybe|Intel GMA X4500M (some 2D)}} || {{yes|HD Audio with ALC269 codec - speaker and ear phones}} || {{yes|USB 2.0}} || {{yes|RTL8169}} || {{Maybe| bios locked}} || [http://www.amiga.org/forums/showpost.php?p=645774&postcount=28 Icaros 1.3] || 2009 64bit SL-410
|-
| <!--Name-->T400 ODM Wistron || <!--Chipset-->i || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS}} || <!--Gfx-->{{Maybe|Intel 4500MHD works limited 2d no 3d - optional switchable Nvidia or ATi HD3470 untested}} || <!--Audio-->{{Yes|HD Audio with Codec CX20561 (T400)}} || <!--USB--> || <!--Ethernet-->{{no|Intel e1000e}} || <!--Wireless-->{{No|Intel Wifi Link 5100 (AGN) half height card with FRU 43Y6493 or 5300 bios locked}} || <!--Test Distro--> || <!--Comments-->2009 64bit 20v lenovo plug - non-free firmware required iwlwifi
|-
| <!--Name-->T400s || <!--Chipset-->i || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS}} || <!--Gfx-->{{Maybe|VSEA for Intel 4500MHD works limited 2d no 3d}} || <!--Audio-->{{Maybe|HD Audio with CX20585}} || <!--USB--> || <!--Ethernet-->{{no|Intel e1000e}} || <!--Wireless-->{{No|Intel Wifi Link 5100 (AGN) half height card with FRU 43Y6493 or 5300 bios locked}} || <!--Test Distro--> || <!--Comments-->2009 64bit non-free firmware required iwlwifi
|-
| <!--Name-->Lenovo T500 T510 || <!--Chipset-->i || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS}} || <!--Gfx-->{{maybe|VESA for switchable Intel / AMD HD 3640}} || <!--Audio-->{{maybe|Intel HD Audio with a CX20561 (t500) and CX20585 (T510) codec}} || <!--USB--> || <!--Ethernet-->{{no|Intel }} || <!--Wireless-->{{no|Intel or Lenovo branded unit Atheros AR5007EG AR5BHB63 bios locked}} || <!--Test Distro--> || <!--Comments-->2009 64bit
|-
| <!--Name-->X200 ODM Wistron [http://itgen.blogspot.co.uk/2008/12/installing-arch-linux-on-lenovo.html X200s] and x200t tablet model without [http://fsfe.soup.io/post/590865884/the-unconventionals-blog-English-Flashing-Libreboot-on Risky flash of the Libreboot BIOS] || <!--Chipset-->GM45 GS45 with slow Celeron, SU or faster SL Core 2 Duos CPUs || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS}} || <!--Gfx-->{{maybe||Intel GMA 4500 MHD 2D but slow software 3D tunnel 10 gearbox 8 tests}} || <!--Audio-->{{yes|Intel HD Audio with Conexant CX20561 codec playback}} || <!--USB-->{{{Yes|USB 2.0 USB SD card reads and writes}} || <!--Ethernet-->{{no|Intel 82567LM Gigabit}} || <!--Wireless-->{{no|Intel Pro 5100 5150 5300 5350 AGN due to whitelist prevention bios locked}} || <!--Test Distro-->Icaros 2.0.1 || <!--Comments-->2009 64bit 12.1" CCFL (webcam version) or LED backlit (no webcam). no support for 54mm express cards or Authentec 2810 fingerprint reader - thinkpoint only no trackpad - 3pin cmos -
|-
| <!--Name-->Lenovo T410 T410s T410si || <!--Chipset-->qm57 with i5 m || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS}} || <!--Gfx-->{{maybe|use vesa Intel 5700MHD (Ironlake) core processor igp with optional Nvidia Quadro NVS 3100M}} || <!--Audio-->{{yes|HD Audio Conexant CX20585 codec playback}} || <!--USB-->{{Yes|2.0}} || <!--Ethernet-->{{no|Intel 82577lm gigabit}} || <!--Wireless-->{{unk|Intel n 6200 or Atheros AR9280 AR5BHB92 half size minipcie bios locked}} || <!--Test Distro-->Icaros 2.2 xmas || <!--Comments-->2009 64bit battery life much lower with Nvidia graphics version - no support firewire ricoh r5c832 - ricoh sd card - series 5 3400
|-
| <!--Name-->X201 X201s x201t || <!--Chipset-->QM57 Core i3 370m, i5 M520 2.4GHz or i7 620LM 2.0GHz || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS}} || <!--Gfx-->{{Maybe|vesa 2d on Intel GMA HD}} || <!--Audio-->{{yes|Intel HD with [https://ae.amigalife.org/index.php?topic=94.0 Conexant 20585] codec}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no|Intel}} || <!--Wireless-->{{No|bios locked}} || <!--Test Distro--> || <!--Comments-->2010 X201 arrandale power consumption limits battery life to 3-4 hours for 48Whr though to 6 on 72Whr - 12.5" WXGA - 3pin cmos -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Ideapad B470, B570, V370, V470, V570 || <!--Chipset-->Intel® Core™ i5 i5-2430M, i5-2450M, || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->Vesa 2d for Intel || <!--Audio-->HDaudio 0x8086, 0x1c20 with codec || <!--USB-->USB3 || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no|whitelisted}} || <!--Test Distro--> || <!--Comments-->2011 64bit - 14in or 15.6in 768p -
|-
| <!--Name-->T420 type 4180 4236, t420s , T520 4239 L520 || <!--Chipset-->i5 2540, 2520 or i7 2860QM 2620 has sse4.1 avx || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS but not AHCI}} || <!--Gfx-->{{Maybe|Vesa 136 x 768 - Intel HD 3000 with optional NVS 4200M Nvidia optimus or Radeon HD 565v }} || <!--Audio-->{{Yes|HD Audio playback ear phones only with Conexant CX20672 codec - AHI 6.27}} || <!--USB-->{{Maybe| }} || <!--Ethernet-->{{No|Intel PRO 1000 82579LM}} || <!--Wireless-->{{No|Realtek 1x1, Intel Ultimate-N 6205 6250 2x2 6300 3x3 all bios locked}} || <!--Test Distro-->Icaros 2.2.2 add noacpi to grub boot options || <!--Comments-->2011 64bit - screen 1600x900 or 1366x768 - 2 ddr3l sodimm slots max 16gb -
|-
| <!--Name-->Thinkpad W520 || <!--Chipset--> has sse4.1 avx || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS}} || <!--Gfx-->{{Maybe|VESA Intel HD 3000 with nvidia quadro 1000m 2000m optimus issues with Nvidia Intel hybrids}} || <!--Audio-->{{Maybe|Intel Hd with CX 20585 codec}} || <!--USB--> || <!--Ethernet-->{{No|Intel 82579 Lm}} || <!--Wireless-->{{No|Intel 6000s}} || <!--Test Distro--> || <!--Comments-->2011 64bit - 15.6" TFT display with 1366x768 (HD), 1600x900 (HD+) or 1920x1080 (FHD) resolution with LED backlight
|-
| <!--Name-->X220 x220t || <!--Chipset-->QM67 express, dual i5 2520M or i7 dual 2620M sse4.1 avx support || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|IDE in BIOS but not AHCI}} || <!--Gfx-->{{Maybe|VESA 2D 1024 x 768 for Intel HD Graphics 3000}} || <!--Audio-->{{Yes|Intel HD playback with Conexant 20672 codec ear phones and speaker - AHI 6.27 6.34}} || <!--USB-->{{Yes|USB 2.0}} || <!--Ethernet-->{{No|Intel 82579LM}} || <!--Wireless-->{{No|Intel Centrino Advanced-N 6205 Wi-Fi bios locked}} || <!--Test Distro-->Icaros 2.3, Aros One USB 1.6 || <!--Comments-->2011 64bit possible - uses slimmer 7 mm storage sata devices - NEC USB 3.0 on i7's - unwanted trackpad gestures when palms rests on it - 2 ddr3 sodimm slots - external battery -
|-
| <!--Name-->Thinkpad X120e, x121e Quanta FL8A DAFL8AMB8D0 Rev D || <!--Chipset-->Hudson M1 with slow AMD E350 has no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA ATI 0x9802}} || <!--Audio-->{{Maybe|ATI SBx00 Azalia HD Audio}} || <!--USB-->USB 2.0 || <!--Ethernet-->RTL8169 RTL8111 || <!--Wireless-->{{no|Broadcom 0x0576 bios locked}} || <!--Test Distro--> || <!--Comments-->2011 64bit 11.6 inch screen - 1 inch think - chiclet keyboard
|-
| <!--Name-->Ideapad S205 G575 G585, Edge 11 E325 || <!--Chipset-->Slow E-350 later E-450 with A75 or AMD Athlon II Neo has no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA HD6310}} || <!--Audio-->{{Yes| }} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|Atheros}} || <!--Wireless-->{{No|Broadcom}} || <!--Test Distro--> || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 - removeable and plug in battery - 2pin CR2032 CMOS battery -
|-
| <!--Name-->Ideapad S206 || <!--Chipset-->AMD E300 1.3GHZ Dual has no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA }} || <!--Audio-->{{Maybe|Intel HD Audio with CX20672 codec}} || <!--USB-->{{Maybe|3.0}} || <!--Ethernet-->Broadcom 10/100 || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - 11.6" and integrated battery - Conexant®
|-
| <!--Name-->Lenovo x130e or x131e edu || <!--Chipset-->Slow AMD E-300 or E-450 has no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA Radeon HD 6310 or 6320 }} || <!--Audio-->{{Maybe|HD Audio Realtek ALC269VC / ALC3202 codec}} || <!--USB-->{{Maybe|USB 30 and USB 20}} || <!--Ethernet-->{{maybe|Realtek RTL8111 RTL8168B}} || <!--Wireless-->{{No|Realtek RTL8188CE or Broadcom BCM43228 bios locked}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - rubber edged bumper for K12 education market - 2pin CR2032 CMOS battery -
|-
| <!--Name-->Thinkpad Edge E135 E335 || <!--Chipset-->amd dual E-300, E2-1800 or E2-2000 slow atom like A68M FCH has no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|SATA 3.0Gb/s 2.5" wide 7mm high}} || <!--Gfx-->{{Maybe|VESA radeon 6310 or 7340 vga or hdmi}} || <!--Audio-->{{Maybe|HDAudio with Realtek ALC3202 codec}} || <!--USB-->{{maybe|2 usb3, 1 powered usb2}} || <!--Ethernet-->{{maybe|rtl8169 8111f}} || <!--Wireless-->{{no|Realtek WLAN whitelist bios locked}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - 11.6 inch to 13.3in 1366x768 - Acrylonitrile-Butadiene-Styrene (ABS) plastic case - external battery - 20v 65w lenovo barrel ac - 2 ddr3 sodimm 8Gb max -
|-
| <!--Name-->ThinkPad Edge E525 E535 LENOVO IDEAPAD Z575 || <!--Chipset-->AMD A6-3420M A8-3500M later A8-4500M has no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA AMD 6620G later 7640G}} || <!--Audio-->{{No|HDAudio with Conexant codec}} || <!--USB-->{{Maybe|USB2 but not usb3}} || <!--Ethernet-->{{maybe|rtl8169 Realtek 8111}} || <!--Wireless-->{{No|Broadcom bios locked}} || <!--Test Distro--> || <!--Comments-->2013 64bit does not support AVX or SSE 4.1 - 15.6in 1368 x 768 matt - 65W 20v lenovo round psu - thick desktop replacement - ThinkPad Edge E520 E520S E525 E530 E545 E535 E530C Laptop Keyboard swap -
|-
| <!--Name-->T430 t430i T530 || <!--Chipset-->ivy bridge i5 3320 3230m on Intel QM77 has sse4.1 and avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA 1366 x 768 for Intel HD 4000 with optional Nvidia 5400M}} || <!--Audio-->{{Maybe|Intel HD with Realtek ALC3202 aka ALC269VC codec playback ear head phones - HDA 6.27}} || <!--USB-->{{Yes|USB 2 ports and usb2.0 devices thru usb 3.0 ports}} || <!--Ethernet-->{{No|Intel e1000}} || <!--Wireless-->{{unk|Intel or Atheros AR9285 bios locked}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2013 64bit fan noise and chiclet keyboard, synaptics trackpad - HD+ 768p -
|-
| <!--Name-->Thinkpad X230 x230t || <!--Chipset-->Intel QM67 express i5 has sse4.1 and avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA }} || <!--Audio-->{{Maybe|Intel HD with ALC269 aka ALC3202}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no|Intel }} || <!--Wireless-->{{No|I}} || <!--Test Distro--> || <!--Comments-->2013 64bit - 12.2 in 1366 x 768 - 2 ddr3 sodimm slots - external battery -
|-
| <!--Name-->Thinkpad T440 t440s t440p T540 L440 L540 || <!--Chipset-->intel haswell 8 series Core i3 to i7 has sse4.1 and avx || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata}} || <!--Gfx-->{{Maybe|VESA - Intel 4600 or Nvidia}} || <!--Audio-->Intel HD with Realtek ALC3232 alc269 codec or ALC292 || <!--USB-->{{maybe| }} || <!--Ethernet-->{{No|Intel}} || <!--Wireless-->{{No|Intel AC 7260 bios locked}} || <!--Test Distro--> || <!--Comments-->2014 64bit - 14 and 15" models with glitchy trackpad and no physical buttons - keyboard repair not easy as well as 4 variants of key caps - 2pin CR2032 CMOS battery -
|-
| <!--Name-->Thinkpad X240 x240t ultrabook TN (20AL0081GE), HD IPS display without touch (20AL007NGE) and touch (20AL0076GE) but all 65% sRGB || <!--Chipset-->haswell i7-4600U i5 4200U 4210U 4300U i3-4100U - two batteries, one internal 3cell 45N1110 (45N1111) or 45N1112 (FRU 45N1113) and external 3 / 6cell 45N1126 (FRU 45N1127) || <!--IDE-->{{N/A}} || <!--SATA-->2.5in 7mm sata (torq t7), m.2 2242 in WWAN slot (m and b key NGFF Sata) || <!--Gfx-->{{Maybe|use VESA for Intel 4400 for vga or mini-dp}} || <!--Audio-->{{No|HDAudio 0x8086, 0x0a0c 0x8086, 0x9c20 with Realtek ALC3232 aka ALC292 0x10ec, 0x0292}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{no|Intel® 82577LM Gigabit (Hanksville) }} || <!--Wireless-->{{no|Realtek or Intel 7260n I218-V or I218-LM bios locked}} || <!--Test Distro-->AROS One USB || <!--Comments-->2014 64bit - 12.2in 1366 x 768 or 1080p - 1 ddr3l sodimm slot - no keyboard spill drainage and at least 2 variants of key caps - lenovo rectangle pwr ac - TPM 1.2 - Bluetooth 4.0 no support - bottom panel with 8 retained screws - 2pin CR2032 CMOS battery -
|-
| <!--Name-->ThinkPad Edge E545
* key cap swap with E440 E531 E540 L440 L450 T431S T440S T440P T540
* Keyboard swap L540 T540p W540 Edge E531 E540 W541 T550 W550S L560 P50S T560
|| <!--Chipset-->AMD Socket FS1r2 A6-5350M (2c2t) or A8-4500M, A8-5550M, A10-5750M (4c4t) with A76M FCH has sse4.1 and avx || <!--IDE-->{{N/A}} || <!--SATA-->2.5in 9.5mm - enter UEFI bios with Enter or ESC, config section, sata into compatibility and security, secure boot disabled - mini sata DVD burner PLSD DS8A9SH || <!--Gfx-->{{Maybe|VESA 2D for AMD 7640G, 8450G, 8550G, 8650G ?? Islands}} || <!--Audio-->{{no|VOID for HDAudio 6.34 0x1022, 0x780d with Conexant CX20590 Analog 0x14f1, 0x506e CX20671 codec 0x14f1, 0x5069 or audio over Trinity HDMI}} || <!--USB-->{{maybe|boots pen drives from yellow usb port but not from blue USB3 ones, issues with AMD usb3 hardware quirks}} || <!--Ethernet-->{{yes|rtl8169 1GbE 8111F}} || <!--Wireless-->{{No|Broadcom BCM43142 bios locked}} || <!--Test Distro-->AROS One 2.3 USB works with noacpi added to end of grub2 boot line but not booting on AROS One 64bit 1.1 via usb2 stick or iso burnt to dvd || <!--Comments-->2015 64bit - 15.6in 1366 x 768 matt - 20v 65w 90w round lenovo plug psu - 2 DDR3 SODIMM slots 16GB Max - external 6 Cell Li-Ion Battery 48Wh l11s6y01 45n1043 - 2pin CR2032 CMOS battery in wifi area jp1202 - amd v(tm) virtualization not working -
|-
|<!--Name-->Y50-70 || <!--Chipset-->Intel 4 || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->GTX 860M or GTX 960M || <!--Audio-->HDAudio || <!--USB-->USB3 || <!--Ethernet-->{{maybe|rtl8169 rtl8111}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2015 64bit -
|-
|<!--Name-->AMD platform codes
*Beema: ABM,
*Carizzo-L: ACL,
*Carizzo: ACZ,
*Godavari: AGR,
*Kaveri: AKV,
*Stoney Ridge: ASR,
*Stoney Ridge: AST (NB),
|| <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
*Summit Ridge: ASU,
*Bristol Ridge-L: ABL,
*Bristol Ridge: ABR,
*Raven Ridge: ARR,
*Picasso: API
|-
|<!--Name-->Lenovo ThinkPad P50 || <!--Chipset-->Intel i7-6820HQ || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->Quadro M2000M || <!--Audio-->HDAudio || <!--USB-->USB3 || <!--Ethernet-->{{no|Intel}} || <!--Wireless-->{{no|Intel }} || <!--Test Distro--> || <!--Comments-->2015 64bit -
|-
| <!--Name-->[https://www.laptop-schematics.com/db/78/V%20series%20laptops%20(Lenovo)/ V110-14AST (14in) V110-15AST, V110-14ISK V110-15ISK 80TL (15")], || <!--Chipset-->AMD E1-9000, A6-9210 to A9-9410 all dual core and intel 6006u, 6100u, 6200u || <!--IDE-->{{N/A}} || <!--SATA-->1 2.5in sata most 7mm some 9.5mm || <!--Gfx-->{{Maybe|VESA 2D for AMD R2, R3, R5 or R6 or Intel Gfx}} || <!--Audio-->{{No|HDAudio with codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2016 64bit - 14in to 15.6in mostly 768p 220 nits - 20v 45W or 65W lenovo slim rectangle end ac - keyboard swap hard - integrated 24WHr battery - 4gb ddr4 ram soldered and 1 2133Mhz ddr4 slot max 12Gb - abs plastic -
|-
|<!--Name-->
*ThinkPad A275 12in (1 ddr4 1866MHz sodimm)
*Thinkpad A475 14in (2 ddr4 1866MHz sodimm) - both internal (main) and external (secondary) battery
|| <!--Chipset-->A10-8730B A10-9700B 2.500Ghz later A12-8830B A12-9800B all 4c4t (AVX2 on 9000s) || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe|7mm 2.5in sata with mbr and not gpt, setup in another machine - secure boot disabled, bios startup boot set to legacy then uefi - WWAN slot cannot use M.2 2242 sata with M and B key}} || <!--Gfx-->{{Maybe|VESA 2D for AMD R5 or R7}} || <!--Audio-->{{No|HDAudio 6.34 ahi 0x1022, 0x157a with ALC3268 aka ALC298 codec 0x10ec, 0x0298 - VOID even with QUERY / QUERYD added}} || <!--USB-->{{no|USB3 error on boot suspect AMD usb3 quirk}} || <!--Ethernet-->{{Yes|rtl8169 RTL8111EPV}} || <!--Wireless-->{{No|Realtek RTL8822BE WLAN whitelist locked cannot swap}} || <!--Test Distro-->{{maybe|AROSOne USB 32bit 1.8 with noacpi noapic noioapic added to grub2 boot line but Aros One 64bit 1.2 USB has krnPanic }} || <!--Comments-->2016 64bit 12 or 14in 768p - 45W or 65w lenovo rectangle ac adapter - F1 enter bios and F12 boot order - 6 retained screws and snap on base - 2100 error message no solution except using only efi/gpt bios option -
|-
|<!--Name-->320S-15AST, 320S-15ABR, ideapad Slim 1-11AST-05 81VR || <!--Chipset-->AMD A6-9220e, AMD A6-9225, A9-9425, A10-9600P 7th Gen || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata 2.5in}} || <!--Gfx-->{{maybe| Vesa 2D for AMD}} || <!--Audio-->{{No| }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No|Qualcomm Atheros QCA9377 or Realtek RTL8821CE}} || <!--Test Distro--> || <!--Comments-->2018 64bit AVX2 - 14in or 15.6" 768p - 1 ddr4 sodimm slot - keyboard swap problematic -
|-
|<!--Name-->Lenovo Ideapad S145-14AST S145-15AST 81N3 || <!--Chipset-->AMD A6-9225, A9-9425, A10-9600P 7th Gen, AMD A12-9720P Mobo 5B20P11110 NMB341 Bristol Ridge || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata 2.5in}} || <!--Gfx-->{{Maybe|VESA Radeon 8670A 8670M 8690M GCN 3}} || <!--Audio-->{{No| }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No|Qualcomm Atheros QCA9377 or Realtek RTL8821CE}} || <!--Test Distro--> || <!--Comments-->2018 64bit AVX2 - 14in or 15.6" 768p or 1080p - 1 ddr4 sodimm slot -
|-
|<!--Name-->Lenovo Ideapad V145-14AST V145-15AST, 81mt, Ideapad 310, Ideapad 320-15ABR, Ideapad 330-14AST 330-15AST 330-17AST || <!--Chipset-->AMD A6-9225, A9-9425 (2c2t), A10-9600P 7th Gen, AMD A12-9720P Mobo 5B20P11110 NMB341 Bristol Ridge || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|sata 2.5in with optional dvd}} || <!--Gfx-->{{Maybe|VESA Radeon 8670A 8670M 8690M GCN 3}} || <!--Audio-->{{unk|HDaudio with ALC3240-va3-cg aka ALC236? codec 0x10de, 0x0236}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{no|rtl8169 8106E 10/100 only}} || <!--Wireless-->{{No|Qualcomm Atheros QCA9377 or Realtek RTL8821CE}} || <!--Test Distro--> || <!--Comments-->2017 64bit AVX2 - 14in or 15.6" 768p or 1080p - 1 ddr4 sodimm slot - 45w 65w slim ac adapter -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
|<!--Name-->Lenovo V330-14ARR 81B1, V330-15ARR 81, 330-14ARR 81 330-15ARR 81D2 - battery internal about 30whr || <!--Chipset-->AMD Ryzen R3 2200U, 2300U or R5 2500U Raven Ridge || <!--IDE-->{{N/A}} || <!--SATA-->M.2 nvme/sata, optional 2.5in sata but no dvd || <!--Gfx-->{{Maybe|VESA Vega 3, 6 or 8 up to 1Gb of soldered ram memory taken}} || <!--Audio-->{{No|HDAudio 0x1002, 0x15de with Realtek® ALC5682I-VD codec 0x10de, 0x or coxenant CX11802 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|Realtek 1GbE}} || <!--Wireless-->{{no|Realtek}} || <!--Test Distro--> || <!--Comments-->2018 64bit - 14" 768p 20mm thick 1.8kg - 20v 2.25a 45w ac round barrel - chiclet keyboard - 4Gb soldered and 1 ddr4 sodimm - TPM 2.0 in bios - 4GB soldered -
|-
|<!--Name-->Ideapad 330s-14ARR, 330s-15ARR, ideapad 330S-14IKB, 330S-15IKB, - battery internal about 30whr || <!--Chipset-->AMD Ryzen R3 2200U, 2300U or R5 2500U Raven Ridge || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|nvme}} || <!--Gfx-->{{Maybe|VESA 2D for AMD or Intel 610, 620 up to 1Gb of soldered ram memory taken}} || <!--Audio-->{{No|HD Audio with codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|Realtek}} || <!--Test Distro--> || <!--Comments-->2018 64bit - 14" 20mm thick 1.8kg - 20v 2.25a 45w ac round barrel - chiclet keyboard - 4Gb soldered and 1 ddr4 sodimm - TPM 2.0 in bios - 4GB soldered -
|-
|<!--Name-->Thinkpad Edge E485 E585 - internal battery only || <!--Chipset-->AMD Ryzen R3 2300U R5 2500U R7 2700U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|m.2 nvme optional 1 2.5in sata}} || <!--Gfx-->{{Maybe|VESA for Vega 3, 8 or 10}} || <!--Audio-->{{No|HDAudio with CX11852 codec }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 rtl8111GUS}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2018 64bit - 14in or 15.6in 768p or 1080p - USB-C 20V 2.25A 3.25A avoid knocking charging port as damages easily - 2 ddr4 sodimm slot max 2400Mhz 32GB - TPM 2.0 software -
|-
|<!--Name-->Thinkpad A285 - internal and external battery || <!--Chipset-->AMD Ryzen PRO 3 2200U 5 2500U || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|m.2 nvme/sata}} || <!--Gfx-->{{Maybe|VESA Vega up to 2Gb of soldered ram memory taken}} || <!--Audio-->{{unk|HD Audio with ALC ALC3287 codec aka ALC257 }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{No|Mini-Ethernet/Docking}} || <!--Wireless-->{{no|Realtek or Qualcomm - WLAN whitelist no more??}} || <!--Test Distro--> || <!--Comments-->2018 64bit - 12.5in 1080p - avoid usb-c port being lifted/moved whilst in use as damages laptop easily - soldered ram 8gb or 16gb - WWAN whitelist - keyboard swap problematic -
|-
|<!--Name-->Thinkpad A485 bios setting [https://github.com/PSPReverse/PSPTool AMD PSP Platform Security Processor Key] - internal and external battery || <!--Chipset-->AMD Ryzen PRO 5 2500U || <!--IDE-->{{N/A}} || <!--SATA-->sata port and m.2 nvme port || <!--Gfx-->{{Maybe|VESA Vega }} || <!--Audio-->{{unk|HD Audio with ALC ALC3287 codec aka ALC 257 }} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 RTL8111GUL}} || <!--Wireless-->{{no|Realtek or Qualcomm wifi - WLAN whitelist no more??}} || <!--Test Distro--> || <!--Comments-->2018 64bit - 14in 768p, 1080p or 1440p - avoid usb-c port being lifted/moved whilst in use as damages laptop easily - 2 ddr4 sodimm slots max 32gb - WWAN whitelist - keyboard swap problematic -
|-
|<!--Name-->[https://www.diy-laptoprepair.com/forum/fix-Lenovo-V155-15-repair-guide-schematics.php Lenovo v155-15api 81V5] V155 (15" AMD) budget all plastic build - MS new protocol, HID over I2C so [https://askubuntu.com/questions/1033033/elantech-touchpad-does-not-work-i2c-hid i2c] [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/input/mouse/elantech.c?h=v6.17 i2c] [https://www.kernel.org/doc/html/v4.16/input/devices/elantech.html PS2 hybrid trackpad] [https://cgit.freebsd.org/src/tree/sys/dev/atkbdc/psm.c?h=releng/14.3 elantech] [https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/dev/pckbc/?only_with_tag=OPENBSD_7_8_BASE i2c-hid] 04F3:3140 touchpad not working - internal sunwoda battery L18D3PF1, L18L3PF1, L18C3PF2 35Whr most dead after 5 years || <!--Chipset-->'''tested''' Ryzen 5 3500U and Ryzen 3 3200U - '''untested''' AMD Athlon 300U with bios winbond 25q64fwsiq soic 1.8v bios near nvme || <!--IDE-->{{N/A}} || <!--SATA-->1 M.2 nvme and usually 2.5in 7mm sata - install on mbr not gpt 2.5in in another compatible machine - mini sata dvd/cd da-8aesh11b will boot cd or dvd aros || <!--Gfx-->{{Maybe|VESA 2D to 1080p work for Vega 3 or 8 with up to 2Gb of soldered ram memory taken but hdmi 1.4b no output}} || <!--Audio-->{{Yes|HDAudio add 0x1022, 0x15E3 with ALC3287 aka Realtek ALC257 codec 0x10ec, 0x0257 with 32bit on external speaker and most of the time works on 64bit}} || <!--USB-->{{no|2 USB3.0 usb-a, on left hand side, detected but not working}} || <!--Ethernet-->{{yes|rtl8169 RTL8111GUS works well with 32bit and 64bit}} || <!--Wireless-->{{no|Realtek or Intel wifi}} || <!--Test Distro-->2025 AROS One 2.8 DVD 32bit and AROS One x64 1.1 and 1.2 iso DVD burnt but not USB boot || <!--Comments-->2019 64bit - 15.6in 768p or 1080p 200nits tn panel - 4Gb ddr4 2400MHz soldered with 1 dimm slot max 20Gb - round ac 20V 65W psu 4.0mm x 1.7mm - Fn+F2 to enter bios and F12 boot order - no sd card slot - 2pin cr2032 cmos coin battery -
|-
|<!--Name-->V15-ADA 82C700E4UK- elan touchpad not working - internal battery 34whr L16M2PB2 l16l2pb3 || <!--Chipset-->AMD r5 3500U || <!--IDE-->{{N/A}} || <!--SATA-->1x 2.5" HDD + 1x M.2 SSD NVMe near fan, no cd dvd || <!--Gfx-->{{Maybe|VESA 2D for Vega 3, 8 with up to 1080p with 2Gb of soldered ram memory taken}} || <!--Audio-->{{Yes|HD Audio 6.36 0x1022, 0x15E3 with R155189 ALC236 codec 0x10ec, 0x0236 on 32bit and on 64bit}} || <!--USB-->{{maybe|3 USB3, on left hand side,}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|Realtek or Qualcomm wifi}} || <!--Test Distro-->2025 3500U with Aros One 32bit 2.8 installed to 2.5in drive on another machine and same for 64bit || <!--Comments-->2019 64bit - 14 or 15.6in 768p on low spec machines to 1080p - 4GB soldered with 1 ddr4 sodimm slot - 2pin cr2032 cmos coin battery - sd card slot - noisy fan -
|-
|<!--Name-->V15-ADA 82C7 - elan touchpad not working - internal battery 34whr L16M2PB2 l16l2pb3 || <!--Chipset-->AMD Athlon Silver 3020e, Ryzen 3 3050U, 3150U, 3250U || <!--IDE-->{{N/A}} || <!--SATA-->1x 2.5" HDD + 1x M.2 SSD NVme near fan, no cd dvd || <!--Gfx-->{{Maybe|VESA 2D for Vega 3, 8 with up to 1080p with 2Gb of soldered ram memory taken}} || <!--Audio-->{{No|HD Audio 6.36 0x1022, 0x15E3 with RTS5119 R155119 ALC230 codec}} || <!--USB-->{{maybe|3 USB3.0, on left hand side,}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|Realtek or Qualcomm wifi}} || <!--Test Distro-->2025 Aros One 32bit 2.8 and 64bit || <!--Comments-->2019 64bit - 14 or 15.6in 768p on low spec machines to 1080p - 4GB soldered with 1 ddr4 sodimm slot - 2pin cr2032 cmos coin battery - sd card slot - for this mbd bios ram disable doesn't work - noisy fan -
|-
|<!--Name-->Lenovo V14-ADA 82C6, - elan touchpad not working - if blank black display, bios bug going from uefi->legacy so reset bios rhs push in with pin, then Down, ent, Right x3, ent, up, ent, right, ent x2 - internal battery 34whr L16M2PB2 l16l2pb3 || <!--Chipset-->'''tested''' 3250U - '''untested''' AMD Athlon Silver 3020e, Ryzen 3 3050U, 3150U - for this mbd GV451&GV551 NM-D151 bios ram disable doesn't work || <!--IDE-->{{N/A}} || <!--SATA-->1x 2.5" HDD if cbl + 1x M.2 SSD NVMe near fan, no cd dvd || <!--Gfx-->{{Maybe|VESA 2D for Vega 3 up to 1080p with 2Gb of soldered ram memory taken}} || <!--Audio-->{{no|HD Audio 6.36 0x1022, 0x15E3 with Realtek ALC3223 RTS5119 R185199 aka ALC230 codec 0x10ec, 0x0230 on 32bit and on 64bit}} || <!--USB-->{{maybe|3 USB3, on left hand side,}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|Realtek or Qualcomm wifi}} || <!--Test Distro-->2025 AMD 3250U with Aros One 32bit 2.8 installed to 2.5in drive on another machine and same for 64bit || <!--Comments-->2019 64bit - 14 or 15.6in 768p on low spec machines to 1080p - 4GB soldered with 1 ddr4 sodimm slot - 2pin cr2032 cmos coin battery - sd card slot - F2 bios F12 select -
|-
|<!--Name-->IdeaPad 1 14ADA5 (low spec cpus) ideaPad 3 14ADA05, IdeaPad 3 15ADA05 81W100QVUK, IdeaPad 3 17ADA05 - elan touchpad not working - internal battery 34whr L16M2PB2 l16l2pb3 || <!--Chipset-->AMD Athlon Silver 3020e, Ryzen 3 3050U, 3150U, 3250U, Ryzen 5 3500U on mobo NM-C821 REV 0.2 1.0 || <!--IDE-->{{N/A}} || <!--SATA-->1x 2.5" HDD if cbl + 1x M.2 SSD NVMe near fan, no cd dvd || <!--Gfx-->{{Maybe|VESA 2D for Vega 3, 8 up to 1080p with 2Gb of soldered ram memory taken}} || <!--Audio-->{{no|HD Audio 6.36 0x1022, 0x15E3 with ALC230 codec 0x10ec, 0x0230 on 32bit and on 64bit}} || <!--USB-->{{maybe|3 USB3, on left hand side,}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|Realtek or Qualcomm wifi}} || <!--Test Distro-->2025 Aros One 32bit 2.8 installed to 2.5in drive on another machine and same for 64bit || <!--Comments-->2019 64bit - 14 or 15.6in 768p on low spec machines to 1080p - 4GB soldered with 1 ddr4 sodimm slot - 2pin cr2032 cmos coin battery - sd card slot - F2 bios F12 boot select -
|-
|<!--Name-->Lenovo IdeaPad L340-15API 81LW001CUS L340-17API - elan trackpad not functioning - internal battery L18M3PF2 || <!--Chipset-->AMD Athlon 300U, Ryzen 3 3200U r5 3500U || <!--IDE-->{{N/A}} || <!--SATA-->1 M.2 nvme and usually 2.5in sata if ribbon cable present - mini sata dvd/cd da-8aesh11b || <!--Gfx-->{{Maybe|VESA 2D for Vega 3 or 8 with up to 2Gb of soldered ram memory taken - hdmi 1.4b}} || <!--Audio-->{{unk|HDAudio add 0x1022, 0x15E3 with Realtek ALC236 0x10ec, 0x0236}} || <!--USB-->{{maybe|USB3 not detected}} || <!--Ethernet-->{{maybe|rtl8169 RTL8111GUS}} || <!--Wireless-->{{no|Realtek or Intel wifi}} || <!--Test Distro-->AROS One 2.8 USB - install on mbr not gpt 2.5in in another compatible machine || <!--Comments-->2019 64bit - 15.6in 768p or 1080p 200nits - 4Gb ddr4 2400MHz soldered with 1 dimm slot max 20Gb - round ac 20V 65W psu 4.0mm x 1.7mm - Return or F1 to enter bios and F12 boot order - no sd card slot -
|-
|<!--Name-->[https://www.laptop-schematics.com/db/78/T%20series%20laptops%20(ThinkPad)/ ThinkPad T295 T495] || <!--Chipset-->Ryzen 3 3300U, R5 Pro 3500U or R7 3700U || <!--IDE-->{{N/A}} || <!--SATA-->1 NVMe up to 2280 || <!--Gfx-->{{Maybe|VESA Vega 6, 8 or 10 up to 2Gb of soldered ram memory taken}} || <!--Audio-->{{unk|HD Audio with Realtek® ALC3287 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 Realtek RTL8111EPV}} || <!--Wireless-->{{No|Realtek RTL8822BE or Intel AC 9260}} || <!--Test Distro--> || <!--Comments-->2019 64bit - 14in 768p but mostly FHD 1080p 250 nits - internal battery - ram 8gb or 16gb 2400Mhz soldered with 1 ddr4 slot on T495 only - TPM 2.0 - usb-c charging avoid knock whilst in use - keyboard swap problematic -
|-
|<!--Name-->ThinkPad T495s (14in) X395 (13in) || <!--Chipset-->Ryzen 3 3300U, R5 Pro 3500U or R7 3700U || <!--IDE-->{{N/A}} || <!--SATA-->1 NVMe up to 2280 || <!--Gfx-->{{Maybe|VESA Vega 6, 8 or 10 up to 2Gb of soldered ram memory taken}} || <!--Audio-->{{unk|HD Audio with Realtek® ALC3287 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{unk| needs Lenovo ThinkPad Ethernet Adapter Gen 2 SC10P42352 or SC10P42354}} || <!--Wireless-->{{No|Realtek RTL8822BE or Intel AC 9260 wifi}} || <!--Test Distro--> || <!--Comments-->2019 64bit - 13in or 14in 768p but mostly FHD 1080p 250 nits - internal battery - ram 8gb or 16gb 2400Mhz soldered - TPM 2.0 - usb-c charging avoid knock whilst in use - keyboard swap problematic -
|-
|<!--Name-->ThinkPad E14 Gen2, E15 Gen 2 (AMD) 20T8, - lenovo has a mobile phone PC Diagnostic App for error/beep codes || <!--Chipset-->AMD Ryzen 3 4300U, 5 4500U, 7 4700U || <!--IDE-->{{N/A}} || <!--SATA-->2 m.2 nvme, 1 2242 and 1 2280 || <!--Gfx-->{{Maybe|VESA 2D for AMD Radeon up to 2Gb of soldered ram memory taken}} || <!--Audio-->{{unk|HD Audio with ALC ALC3287 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 RTL8111GUS}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2020 15.6in 1080p 220 nits - TPM 2.0 - usb-c charging of internal 45Whr battery - 4gb ddr4 3200Mhz soldered and 1 ddr4 sodimm slot max 20Gb - keyboard swap problematic - plastic bendy case -
|-
|<!--Name-->Lenovo ThinkPad T14 Gen 1, ThinkPad P14s Gen 1 (AMD) || <!--Chipset-->AMD Ryzen 3 4300u, 5 4500U, Ryzen 5 Pro 4650U, Ryzen 7 Pro 4750U || <!--IDE-->{{N/A}} || <!--SATA-->1 NVMe || <!--Gfx-->{{Maybe|VESA 2D for AMD Vega }} || <!--Audio-->{{unk|HDAudio with Realtek® ALC3287 0x10EC, 0x0257}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 RTL8111EPV (DASH models) or RTL8111HN}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2020 64bit - USB-C charging avoid moving whilst in use - 14" or 15" 1080p - keyboard swap problematic - 8gb or 16gb 3200MHz soldered with 1 ddr4 sodimm slot - sd card slot -
|-
|<!--Name-->Thinkpad L14 Gen 1, L15 Gen 1, || <!--Chipset-->AMD Ryzen 3 4300u, 5 4500U, Ryzen 5 Pro 4650U, Ryzen 7 Pro 4750U || <!--IDE-->{{N/A}} || <!--SATA-->1 NVMe || <!--Gfx-->{{Maybe|VESA 2D for AMD Vega }} || <!--Audio-->{{unk|HDAudio with Realtek® ALC3287 0x10EC, 0x0257}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{no|rtl8169 needs dongle RTL8111EPV (DASH models) or RTL8111HN}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2020 64bit - USB-C charger avoid moving whilst in use - 14" or 15" 1080p - keyboard swap problematic - 8gb or 16gb 3200MHz soldered with 1 ddr4 sodimm slot - sd card slot -
|-
|<!--Name-->Lenovo ThinkPad X13 Gen1 AMD, || <!--Chipset-->AMD RYZEN 3 4450U, 5 4650U or 7 4750U || <!--IDE-->{{N/A}} || <!--SATA-->One drive, up to 512GB M.2 2242 SSD or 1TB M.2 2280 SSD NVMe || <!--Gfx-->{{partial|VESA Radeon up to 2Gb of soldered ram memory taken}} || <!--Audio-->{{unk|HDAudio with Realtek® ALC3287 codec}} || <!--USB-->{{maybe| but USB-C ports can fail}} || <!--Ethernet-->{{no|Realtek RTL8111EPV, mini RJ-45 to RJ-45 via optional ThinkPad Ethernet Extension Adapter Gen 2}} || <!--Wireless-->{{no|Realtek Wi-Fi 6 RTL8852AE}} || <!--Test Distro--> || <!--Comments-->2020 13.3" HD 1366x768 to 1080p - USB-C port care needed as damages easily - Memory soldered to systemboard, no slots, dual-channel DDR4-3200 -
|-
|<!--Name-->Lenovo ThinkBook 14 G2, 15 G2 Are || <!--Chipset-->Ryzen 5 4500u, 7 4700U || <!--IDE-->{{N/A}} || <!--SATA-->14in has 2 m.2 nvme but 15in has 1 nvme and might have 2.5in sata metal caddy if smaller battery version || <!--Gfx-->VESA 2d for AMD Radeon up to 2Gb of soldered ram memory taken || <!--Audio-->{{unk|HDAudio with ALC???? codec 0x10EC, 0x0}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 }} || <!--Wireless-->{{No| wifi}} || <!--Test Distro--> || <!--Comments-->2020 64bit - 14in or 15in 1080p - usb-c charging but high failure rate on the charging port - 4gb or 8gb soldered with 1 ddr4 sodimm slot 3200mhz - hinge(s) issues -
|-
|<!--Name-->IdeaPad 5 14ARE05 (81YM), Ideapad 5 15ARE05 (), IdeaPad 3 17ARE05 (model 81W5) - elan touchpad MSFT0004:00 06CB:CD98 not working || <!--Chipset-->'''tested''' 4500u - '''untested''' AMD 3 4300U (4c4t), 4600U (6c12t), 7 4700u (8c16t) on AMD Promontory Bixby FCH || <!--IDE-->{{N/A}} || <!--SATA-->{{no|1x M.2 2242 slot and 1x M.2 2280 NVMe which will take sata m.2 will boot to grub then laptop reset after choice}} || <!--Gfx-->{{Maybe|VESA 2D for Vega 6 via hdmi output up to 2Gb of soldered ram memory taken}} || <!--Audio-->{{unk|HDAudio 6.36 0x1637 0x15e3 with Realtek ALC3287 aka ALC257 codec 0x10ec 0x0257}} || <!--USB-->{{maybe|USB 3.1 or 3.2 gen 1}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|Intel ax200 wifi 6}} || <!--Test Distro-->4500u with AROS One 64bit 1.2 usb installed to m.2 sata on another machine || <!--Comments-->2020 64bit 14inch 768p or 1080p - round lenovo ac - 4gb, 8gb, or 16gb ddr4 3200Mhz ram soldered with 1 slot - keyboard swap problematic - integrated battery -
|-
|<!--Name-->Ideapad Flex 5 81X2, Lenovo Yoga 6 13ALC6 || <!--Chipset-->AMD R5 4500u, R7 4800U, R3 5300 R5 5500U || <!--IDE-->{{N/A}} || <!--SATA-->M.2 NVMe ssd || <!--Gfx-->{{Maybe|VESA AMD Vega up to 2Gb of soldered ram memory taken}} || <!--Audio-->{{unk|HD Audio with ALC? codec}} || <!--USB-->{{maybe|USB3.1 gen 1}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|realtek ac wifi}} || <!--Test Distro--> || <!--Comments-->2020 64bit abs plastic case 14in convertible 1080p touch low nits - 65w usb-c psu ac - possible wacom esr note taking pen supplied - ram soldered DDR4 - keyboard swap problematic -
|-
|<!--Name-->ThinkPad T14 Gen 2, P14s Gen 2 || <!--Chipset-->AMD 5850U || <!--IDE-->{{N/A}} || <!--SATA-->NVme || <!--Gfx-->VESA 2D || <!--Audio-->{{unk|HDaudio with ALC3287-CG codec 0x10EC, 0x0}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{Maybe| }} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2021 - usb-c power 90% failure rate on the charging port -
|-
|<!--Name-->Lenovo ThinkBook 14 G3, 15 G3 ACL, || <!--Chipset-->Ryzen 5 5500U || <!--IDE-->{{N/A}} || <!--SATA-->m.2 nvme || <!--Gfx-->VESA 2d for AMD Radeon || <!--Audio-->{{unk|HDAudio with ALC codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 }} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2021 64bit - 14in or 15in 1080p - usb-c charging powered -
|-
|<!--Name-->ThinkPad E14 G3, E15 Gen 3 (AMD) || <!--Chipset-->AMD 5300U 5500U 5650U 5700U 5800U || <!--IDE-->{{N/A}} || <!--SATA-->up to 2 m.2 nvme || <!--Gfx-->{{Maybe|VESA }} || <!--Audio-->{{unk|HDaudio with Realtek® ALC3287 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 RTL8111GUS}} || <!--Wireless-->{{no|realtek or intel }} || <!--Test Distro--> || <!--Comments-->2021 64bit - 15.6in 1080p - - usb-c charging issues - keyboard swap problematic - 4gb or 8gb soldered with 1 ddr4 3200Mhz sodimm slot - plastic bendy case -
|-
|<!--Name-->V14 Gen 2 (82KA, 82KC)
*ALO
*ALC 82KD
|| <!--Chipset-->Ryzen 3 5300U, 5 5500U, 7 5700U || <!--IDE-->{{N/A}} || <!--SATA-->1 nvme 2280 and optional 2.5in sata after sourcing ribbon cable and connector, no dvd || <!--Gfx-->VESA 2D for AMD radeon || <!--Audio-->{{unk|HDAudio with Realtek® ALC3287 codec}} || <!--USB-->{{maybe|USB3 }} || <!--Ethernet-->{{maybe|rtl8169 Realtek RTL8111H-CG}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2022 64bit - 15.6" FHD 1080p - 4gb or 8gb soldered with 1 ddr4 sodimm slot - 65w round ac adaptor -
|-
|<!--Name-->V15 G2 Gen2 (82KB, 82KD)
*ALO
*ALC 82KD
|| <!--Chipset-->Ryzen 3 5300U, 5 5500U, 7 5700U || <!--IDE-->{{N/A}} || <!--SATA-->1 nvme 2280 and optional 2.5in sata after sourcing ribbon cable and connector, no dvd || <!--Gfx-->VESA 2D for AMD radeon || <!--Audio-->{{unk|HDAudio with Realtek® ALC3287 codec}} || <!--USB-->{{maybe|USB3 }} || <!--Ethernet-->{{maybe|rtl8169 Realtek RTL8111H-CG}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2022 64bit - 15.6" FHD 1080p - 4gb or 8gb soldered with 1 ddr4 sodimm slot - 65w round ac adaptor -
|-
|<!--Name-->ThinkPad L15 Gen 2 (15″, AMD) || <!--Chipset-->AMD 5000 series AMD Ryzen 3 5400U (4c8t), 5 5600U, 5 5650U (6c12t), 7 PRO 5850U (8c16t) || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{unk|HDAudio with Realtek® ALC3287}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{no|rtl8169 needs dongle RTL8111EPV (DASH models) or RTL8111HN}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2022 64bit - 15.6in 768p or 1080p - usb-c charging - 4gb soldered with 1 ddr4 3200Mhz sodimm slot -
|-
|<!--Name-->ThinkPad E14 Gen 4, E15 Gen 4 (15″, AMD) || <!--Chipset-->AMD 3 5425u, 5 5625U, 7 5825u || <!--IDE-->{{N/A}} || <!--SATA-->1 (14") or 2 (15") nvme || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{unk|HDAudio with ALC3287 codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe|rtl8169 }} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit - 15.6in 1080p - usb-c charging - 4gb or 8gb soldered with 1 ddr4 3200Mhz sodimm slot - L19M3PDA 45Whr battery - U24 TPS65994 and QB6 QB5 mosfet issues - plastic bendy case -
|-
|<!--Name-->ThinkPad T14 Gen 3 Machine types MT 21AH 21AJ 21CF and 21CG, P14s Gen 3 || <!--Chipset-->AMD 6850U || <!--IDE-->{{n/a}} || <!--SATA-->NVme || <!--Gfx-->VESA 2d || <!--Audio-->{{unk| ALC3287-VA2-CG codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{Maybe|rtl8169 }} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2022 64bit - 14in
|-
|<!--Name-->ThinkPad T14s Gen 3 || <!--Chipset-->AMD 6500U || <!--IDE-->{{n/a}} || <!--SATA-->NVme || <!--Gfx-->VESA 2d || <!--Audio-->{{unk| ALC3287-VA2-CG codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no|Ethernet support via optional Lenovo® USB-C® to Ethernet Adapter}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2022 64bit - 14in
|-
|<!--Name-->V14 G3, V15 G3 Gen3 ALC || <!--Chipset-->Ryzen 5 6500U || <!--IDE-->{{N/A}} || <!--SATA-->nvme and optional 2.5in sata if smaller 38Wh battery and after sourcing ribbon cable and connector, no dvd || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 }} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit - 15"FHD - battery BYD L20B2PFO -
|-
|<!--Name-->ThinkPad L15 Gen 3 (15″, AMD) || <!--Chipset-->AMD 6000 series || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{No| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no|rtl8169 needs dongle}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2023 64bit- 15.6in 1080p -
|-
|<!--Name-->Lenovo Yoga 7 14ARB7 || <!--Chipset-->AMD Ryzen 5, 6600U, 7 6800U || <!--IDE-->{{N/A}} || <!--SATA-->1 nvme || <!--Gfx-->AMD 660M or 680M || <!--Audio-->{{No|HDaudio with ALC3306 aka alc287 codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2022 64bit - 14in 1800p ips 300 nits - usb-c ac charging 71whr integrated battery - sd card slot - digital pen input - 8gb, 6gb or 32gb soldered ddr5 ram -
|-
|<!--Name-->ThinkPad T14 Gen 4, P14s Gen 4 || <!--Chipset-->AMD Ryzen Pro 5 7540U, Ryzen Pro 7 7840U (AI NPU) || <!--IDE-->{{n/a}} || <!--SATA-->NVme || <!--Gfx-->VESA 2D for AMD 740M 780M|| <!--Audio-->{{unk|HDAudio ALC3287 codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 }} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit - 14in 1920x1200 - 8gb, 16gb or 32gb lpddr5 soldered - usb-c charging -
|-
|<!--Name-->ThinkPad E14 g5, E15 Gen 5 (15″, AMD) || <!--Chipset-->AMD 7000 series Ryzen 5-7530U, 7-7730U || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{unk|HDAudio with codec}} || <!--USB-->{{maybe|USB3}} || <!--Ethernet-->{{maybe| }} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit- 15.6in 1080p -
|-
|<!--Name-->Thinkbook 14 G6 ABP IRL, ThinkBook 16 G6ABP (21KK001CUK) || <!--Chipset-->AMD Ryzen 7530U 7730U || <!--IDE-->{{N/A}} || <!--SATA-->m.2 nvme || <!--Gfx-->VESA 2d for AMD Radeon || <!--Audio-->{{unk|HDaudio with codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 untested}} || <!--Wireless-->{{No| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit - 14in 1200p or 1440p - 100W USB-C AC power adapter -
|-
|<!--Name-->IdeaPad Slim 5 Light 14ABR8 Laptop || <!--Chipset-->AMD Ryzen 3 7330U (4c8t) 5 7530U (6c12t) 7 7730U (8c16t) || <!--IDE-->{{N/A}} || <!--SATA-->2 m.2 nvme slot - 1 2242, 1 2280 || <!--Gfx-->VESA 2d for AMD Radeon || <!--Audio-->{{unk|HDaudio with Realtek® ALC3287 codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{No| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit - 14in 1080p - 8Gb or 16Gb soldered ram - usb-c charging only -
|-
|<!--Name-->ThinkPad X13 Gen 4 (13" AMD) || <!--Chipset-->AMD 7480U 7040U || <!--IDE-->{{N/A}} || <!--SATA-->NVMe || <!--Gfx-->{{partial|VESA}} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2023 - avoid usb-c port damage -
|-
|<!--Name-->ThinkPad L14 (Gen4), L15 Gen 4 (15" AMD) || <!--Chipset-->MD Ryzen 5 PRO 7530U, 7480U 7040U || <!--IDE-->{{N/A}} || <!--SATA-->NVMe || <!--Gfx-->{{partial|VESA}} || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no|rtl8169 needs dongle}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit - elan trackpad -
|-
|<!--Name-->Lenovo Gen 4 V14 (82YT, 82YV, 83A0, 83A1, 83CC, 83FR, 82YX, 83FG), V15 (82YU, 82YW, 83FS, 82YY, 83CR), V17 (83A2), || <!--Chipset-->AMD AMD Athlon™ Gold 7220U (2c4t), AMD Athlon™ Silver 7120U (2c2t), AMD Ryzen™ 3 7320U (4c8t), AMD Ryzen™ 5 7520U (4c8t) || <!--IDE-->{{N/A}} || <!--SATA-->nvme and 2.5in sata if smaller 38Wh battery, no dvd || <!--Gfx-->{{Maybe|VESA 2d for AMD 610M HDMI® and USB-C}} || <!--Audio-->{{unk|HDaudio with ALC3287 codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no|Gigabit Ethernet, 1x RJ-45}} || <!--Wireless-->{{no|wifi 6}} || <!--Test Distro--> || <!--Comments-->2023 64bit - 15.6" FHD 1080p - 8 or 16Gb soldered - 65W round tip (3-pin) AC adapter or USB-C -
|-
|<!--Name-->ThinkPad e14 G6, e15 Gen 6 (15″, AMD) || <!--Chipset-->AMD 7000 series AMD Ryzen™ 7 7735HS || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D for AMD Radeon || <!--Audio-->{{unk|HDAudio codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe| }} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2023 64bit- 15.6in 1080p -
|-
|<!--Name-->ThinkPad L16 (16" AMD), || <!--Chipset-->AMD 8000 || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->VESA 2D || <!--Audio-->{{unk|HDAudio with codec}} || <!--USB-->{{maybe|USB4}} || <!--Ethernet-->{{no|rtl8169 needs dongle}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2025 64bit
|-
|<!--Name-->ThinkPad T14 Gen 5, P14s Gen 5 || <!--Chipset-->AMD Ryzen 7 PRO 8840U, AMD Ryzen™ 5 PRO 8540U || <!--IDE-->{{N/A}} || <!--SATA-->NVME || <!--Gfx-->VESA 2d || <!--Audio-->{{unk| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{maybe|rtl8169 }} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2025 64bit - 14inch 1920 x 1200 -
|-
|<!--Name--> Lenovo WinBook 300e SKU: 82GKS00000 || <!--Chipset-->AMD 3015E || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2023 64bit 4GB 64GB SSD 11.6 Inch Touchscreen Windows 10 Pro Laptop
|-
|<!--Name-->ThinkPad || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
|<!--Name-->Lenovo Yoga Slim 7a || <!--Chipset-->AMD Ryzen AI 7350 || <!--IDE-->{{N/A}} || <!--SATA-->1 nvme || <!--Gfx-->AMD 860M || <!--Audio-->{{No|HDaudio with ALC3306 aka alc287 codec}} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| wifi}} || <!--Test Distro--> || <!--Comments-->2025 64bit - 14in 1800p ips 300 nits - usb-c ac charging 71whr integrated battery - sd card slot - digital pen input - 8gb, 6gb or 32gb soldered ddr5 ram -
|-
|<!--Name-->ThinkPad || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Samsung====
[[#top|...to the top]]
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="2%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->NP-Q1 Q1 || <!--Chipset-->Celeron-M 353 ULV 600Mhz || <!--IDE-->{{Yes|1.8" SFF HDD 20 / 60 GB }} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Yes|GMA 915 2D and 3D opengl1 tunnel 95 gearbox 68}} || <!--Audio-->{{Yes|HD Audio with codec - head phones only}} || <!--USB-->{{Yes}} || <!--Ethernet-->{{No|Marvell}} || <!--Wireless-->{{Yes|Atheros 5006EX}} || <!--Test Distro-->2016 Icaros 2.1 || <!--Comments-->2005 32bit old style tablet UltraMobile PC UMPC - Wacom serial resistive pen or finger no support - 1 sodimm ddr2 max 1Gb - LCD 7" WVGA (800 x 480) - CompactFlash port Type II -
|-
| <!--Name-->NP Q1U Ultra Mobile PC UMPC Q1F NP-Q1-F000 || <!--Chipset-->Intel A100 600 / A110 Stealey 800 MHz CPU || <!--IDE-->{{Yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Maybe|GMA 950 2D and 3D opengl1}} || <!--Audio-->{{No|HD Audio 1986}} || <!--USB--> || <!--Ethernet-->Intel || <!--Wireless-->{{Maybe|Atheros 5006EX}} || <!--Test Distro-->2016 Icaros 2.1 || <!--Comments-->2006 32bit 1024×600 - sd card slot -
|-
| <!--Name-->NP P500 family P500Y || <!--Chipset-->AMD with SB600 || <!--IDE-->{{N/A| }} || <!--SATA-->{{Yes| }} || <!--Gfx-->{{Maybe|use VESA Ati x1250}} || <!--Audio-->{{Yes| Audio with codec }} || <!--USB--> || <!--Ethernet-->{{No|Marvell 88E8039 yukon}} || <!--Wireless-->{{yes|Atheros G}} || <!--Test Distro-->2017 Icaros 2.1.2 || <!--Comments-->64bit possible - 15.4 tft display - cheap plastic okay build - 19v propriety end -
|-
| <!--Name-->R505 R510 || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless-->Atheros G || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->R520 R522 R610H R620 || <!--Chipset-->Intel Mobile Core i3 Intel PM45 82801M ICH9-M|| <!--IDE--> || <!--SATA--> || <!--Gfx-->ATI Mobility Radeon HD 4650 (RV730) || <!--Audio-->Intel HD Audio with Realtek ALC272 || <!--USB--> || <!--Ethernet-->Marvell Yukon 88E8057 || <!--Wireless-->Atheros AR5007EG || <!--Test Distro--> || <!--Comments-->2010 64 bit possible
|-
| NP-R530 || || {{N/A}} || {{partial|IDE mode}} || {{yes|Intel GMA (2D)}} || {{partial|HD Audio playback}} || {{yes|USB 2.0}} || {{no|Marvell}} || {{unk|Atheros AR9285}} || Icaros 1.5.2 || <!--Comments-->
|-
| <!--Name-->Samsung R730 17.3 Essential Notebook NP-R730-JA02UK, NP-R730-JA01SE, R730-JT06 || <!--Chipset-->Intel HM55 Dual Core T4300 i3-370M || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA for Intel 4500MHD and GeForce G 310M with 1 VGA, 1 HDMI}} || <!--Audio-->{{Yes|HDAudio ALC??? codec Realtek}} || <!--USB-->{{yes|USB2}} || <!--Ethernet-->{{No|Marvell Yukon 88E8059 PCI-E}} || <!--Wireless-->{{unk|Broadcom, Intel or Atheros 9k AR9285}} || <!--Test Distro-->Deadwoods ISO 2023-11 || <!--Comments-->2010 64bit - 17.3in HD 1280 x 720 pixels low contrast or some 1600x900 - 2 DDR3 sodimm slots - 2.84 kg 6.26 lbs -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->[http://www.notebookcheck.net/Review-Samsung-305U1A-A01DE-Subnotebook.68246.0.html Series 3 Samsung 305u1a] || <!--Chipset-->AMD Zacate E350 or E450 || <!--IDE--> || <!--SATA--> || <!--Gfx-->AMD Radeon 6320 || <!--Audio-->ALC ACL 269 || <!--USB--> || <!--Ethernet-->Realtek 8111 8169 || <!--Wireless-->Broadcom 4313 || <!--Comments-->2011 64bit
|-
| <!--Name-->NP-RV415 NP-RV515 || <!--Chipset-->E350 or E450 plus A50M chipset || <!--IDE--> || <!--SATA--> || <!--Gfx-->AMD Radeon HD 6470 || <!--Audio-->HD Audio Realtek || <!--USB--> || <!--Ethernet-->{{unk|RTL8169 Realtek RTL8111 8168B}} || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro--> || <!--Comments-->2012 64bit slow -
|-
| <!--Name-->Series 5 NP535U3C || <!--Chipset-->A6-4455M || <!--IDE-->{{N/A}} || <!--SATA-->2.5in || <!--Gfx-->radeon || <!--Audio-->HDAudio || <!--USB-->USB2 || <!--Ethernet-->Realtek GbE || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2012 64bit slow - 13.3in 1368 x 768 - plastic build - 65w 19v psu -
|-
| <!--Name-->series 3 NP355V5C || <!--Chipset-->A6-4400M, A8-4500M, A10-4600M || <!--IDE-->{{N/A}} || <!--SATA-->2.5in || <!--Gfx-->7640M || <!--Audio-->HDAudio || <!--USB-->USB2 || <!--Ethernet-->Realtek GbE || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2012 64bit - 15.4in 1368 x 768 - plastic build - 65w 19v psu -
|-
| <!--Name-->Samsung ATIV Book 9 Lite NP905S3G || <!--Chipset-->AMD A6-1450 quad 1GHz Temash atom like || <!--IDE--> || <!--SATA-->128gb || <!--Gfx-->AMD 8250 || <!--Audio-->HD Audio || <!--USB--> || <!--Ethernet-->{{Maybe|Realtek rtl8169 but only with mini LAN AA-AE2N12B Ethernet Adapter RJ45 dongle}} || <!--Wireless-->{{unk|Atheros AR9565}} || <!--Test Distro--> || <!--Comments-->2014 64bit - 13.3 TN glossy 1366 x 768 200nits 60% srgb - plastic case - 26W battery built in with 4hr life - 19V 2.1A 3.0*1.0mm psu - 1 ddr3l slot max 4gb - 720p webcam - mini hdmi out - 1w speakers -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Toshiba====
[[#top|...to the top]]
Order of Build Quality (Lowest to highest)
<pre >
Equium
Satellite (Pro)
Libretto
Portege
Tecra
</pre >
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| Tecra 8100 8200 9000 || 440BX || {{yes|IDE}} || {{N/A}} || {{maybe|S3 Savage MX 3D (VESA only)}} || {{no|Yamaha DS-XG ymf744 ymf-754}} || {{yes|USB1.1 only}} || {{N/A}} || {{N/A}} || Icaros 1.5 || little support
|-
| <!--Name-->Tecra 9100 || <!--Chipset-->810 || <!--IDE-->{{Yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{maybe|S3 Savage IX}} || <!--Audio-->{{no|ymf754}} || <!--USB-->USB 1.1 || <!--Ethernet-->eeee pro100 || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->PSU Adapter For Toshiba Tecra 9000 9100 A1 A10 A11 A3 A3X A4 A5 A7 M1 M2 M3 M4 M5 M7 M9 R10 S1 series 75 Watt 15V 5A
|-
| [http://tuxmobil.org/toshiba_sp4600.html Satellite Pro 4600] || i810 || IDE || {{N/A}} || {{maybe|Trident Cyber Blade XP (VESA only)}} || {{no|YAMAHA DS-XG AC97 ymf754}} || {{yes|USB}} || {{yes|Intel e100}} || {{no|Agere (internal PCMCIA)}} || || little support
|-
| Satellite 2805 S603 || Intel 815 || {{yes|IDE}} || {{N/A}} || {{maybe|nVidia GeForce2 Go}} || {{no|Yamaha Corp YMF 754}} || {{yes|USB}} || {{yes|Intel PRO/100}} || {{dunno}} || || little support
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Satellite A10 S167 S1291 - A15 A20 A25 || <!--Chipset-->P4M || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 852GM or Radeon || <!--Audio--> || <!--USB--> || <!--Ethernet-->RTL 8139 || <!--Wireless-->{{Maybe|Intel 2100, Agere or Atheros PA3399U 1MPC minipci}} || <!--Test Distro--> || <!--Comments-->a few models came with antenna leads
|-
| Satellite [http://eu.computers.toshiba-europe.com/innovation/jsp/SUPPORTSECTION/discontinuedProductPage.do?service=EU&com.broadvision.session.new=Yes&PRODUCT_ID=76230 A30-714] || P4-M / 82845 i845 || {{yes|82801}} || {{N/A}} || {{maybe|VESA}} || {{yes|AC97}} || {{yes}} || {{yes|RTL8139}} || {{N/A}} || Icaros 1.2.4 || nice laptop, drawbacks: heavy, really hot (P4-3.06 GHz!!) - A30 (EU) A33 (Australian) A35 (USA) -
|-
| <!--Name-->Satellite A40 A45 || <!--Chipset-->P4M or Celeron M with Intel 845 865 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 852GME or Radeon 7000 Mobility || <!--Audio-->AC97 Realtek || <!--USB-->USB2.0 || <!--Ethernet--> || <!--Wireless-->Atheros 5002G 5004G - PA3299U mini pci || <!--Test Distro--> || <!--Comments-->2003 32bit - A40 S161 A40-S1611 A40-2701, A45-S120 A45-S1201 S130 S1301 S1501 -
|-
| <!--Name-->Satellite a50 A55 a60-s156 Equium A60 PSA67E A65 || <!--Chipset-->P4M or Celeron M with Intel 845 865 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 852GME or Radeon 7000 Mobility || <!--Audio-->AC97 Realtek || <!--USB-->USB2.0 || <!--Ethernet--> || <!--Wireless-->Atheros 5002G 5004G - PA3299U mini-pci || <!--Test Distro--> || <!--Comments-->2003 32bit -
|-
| <!--Name-->Satellite A70 A75-S206 A80 A85-S107 || <!--Chipset-->P4M or Celeron-M with Intel 845 865 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 852GME or Radeon 7000 Mobility || <!--Audio-->AC97 Realtek || <!--USB-->USB2.0 || <!--Ethernet--> || <!--Wireless-->Atheros 5002G 5004G - PA3299U mini-pci || <!--Test Distro-->Icaros 1.5.1 || <!--Comments-->2003 32bit -
|-
| Toshiba Satellite Pro M30 || intel 855 || {{yes|boots with ATA=nodma option}} || {{N/A}} || {{maybe|VESA}} || {{yes|AC97}} || {{yes|USB2.0}} || {{yes|Intel PRO/100 VE}} || {{dunno}} || Icaros 1.5 || nice laptop with some support
|-
| <!--Name-->Portege M300 - M200 tablet || <!--Chipset-->855GM with 1.2GHz Pentium M 753 || <!--IDE-->{{yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{maybe|VESA 2d only - tablet with nvidia 5200 go}} || <!--Audio-->{{no|AC97 STAC 9750}} || <!--USB-->{{yes}} || <!--Ethernet-->{{yes|Intel PRO 100}} || <!--Wireless-->{{no|Intel PRO Wireless 2200BG}} || <!--Test Distro--> || <!--Comments-->little support
|-
| <!--Name-->Tecra M2 M2-S || <!--Chipset-->Intel 855P Pentium-M || <!--IDE--> || <!--SATA-->{{N/A}} || <!--Gfx-->nvidia fx go5200 32mb or 64mb agp || <!--Audio-->AC97 1981B || <!--USB--> || <!--Ethernet--> || <!--Wireless-->Intel Pro || <!--Test Distro--> || <!--Comments-->2003 32bit - PSU 15V 5A -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Satellite Pro L20 267 (PSL2YE PSL2XE) PSL25E L30 || <!--Chipset-->Celeron M 370 1.4 1.5GHz, 1.73Ghz with RC410M SB400 || <!--IDE-->{{N/A| }} || <!--SATA-->{{yes|IDE mode}} || <!--Gfx-->{{Maybe|use VESA - Ati x200}} || <!--Audio-->{{No|[https://forums.gentoo.org/viewtopic-t-490297-start-0.html ALC861]}} || <!--USB-->{{Maybe|Boots usb sticks}} || <!--Ethernet-->{{yes|rtl8139 Realtek 8139}} || <!--Wireless-->{{No|Atheros mini-pci should work maybe not working with ATi chipset or need to swap??}} || <!--Test Distro-->2016 Icaros 2.1.1 || <!--Comments-->2004 32bit 14" pioneer dvd-rw - 19v
|-
| <!--Name-->Satellite L30 PSL30E L33 PSL33E || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 800 or ATi RC410 x200 || <!--Audio-->AC97 AD1981B or HD Audio ALC861 || <!--USB--> || <!--Ethernet-->realtek 8139 || <!--Wireless-->Atheros or Intel || <!--Test Distro--> || <!--Comments-->L30 PSL30L 101 PSL33E 113 115 134 00M019 -
|-
| Satellite Pro M40 313 psm44e || AMD with Ati || {{yes|boots with ATA=nodma}} || {{N/A}} || {{maybe|VESA}} || {{yes|AC97}} || {{yes|USB2.0}} || {{yes|}} || {{maybe|atheros askey ar5bmb5 mini pci}} || || 2005 32bit - nice laptop with some support
|-
| <!--Name-->Satellite L40 PSL40E PSL40L, PSL43E || <!--Chipset-->945GM with U7700 1.3GHz ULV || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 945 || <!--Audio-->{{No|Intel HD with AD1986A codec}} || <!--USB-->2 USB2.0 || <!--Ethernet-->realtek 8139 || <!--Wireless-->Atheros AR24xx Askey || <!--Test Distro-->Icaros 2.0.3 || <!--Comments-->2006 32bit only - - 12X 13G 139 14B 143 15J 19O -
|-
| <!--Name-->Satellite L45 PSL40U S7409 S2416 || <!--Chipset-->945GM with Celeron M 440 1.86 GHz || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 945 || <!--Audio-->{{No|Intel HD with AD1986A codec}} || <!--USB-->2 USB2.0 || <!--Ethernet-->realtek 8139 || <!--Wireless-->Atheros AR24xx Askey || <!--Test Distro-->Icaros 2.0.3 || <!--Comments-->2006 32bit only -
|-
| <!--Name-->Satellite Pro A100 || <!--Chipset-->940G || <!--IDE--> || <!--SATA--> || <!--Gfx-->Nvidia G72M Quadro NVS 110M GeForce Go 7300 / Ati (PSAA3E)|| <!--Audio-->HD Audio with ALC861 codec || <!--USB--> || <!--Ethernet-->Intel 100 || <!--Wireless-->Intel 3945 swap with atheros || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Satellite A110 159 (PSAB0), Equium A110 (PSAB2E), Satellite A110 233 (PSAB6), || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio-->ALC861 || <!--USB--> || <!--Ethernet-->Realtek 8136 || <!--Wireless-->Atheros || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Satellite Pro A120 PSAC0 PSAC1 PSAC1E || <!--Chipset-->Core Solo GMA 950 to T2300 || <!--IDE--> || <!--SATA--> || <!--Gfx-->GMA 945 || <!--Audio-->ALC262 or AC97 AD1981B || <!--USB-->UHCI EHCI || <!--Ethernet--> || <!--Wireless-->Atheros Ar5001 or Intel or Broadcom || <!--Test Distro--> || <!--Comments-->15V 4A charger -
|-
| <!--Name-->Satellite Pro A120 || <!--Chipset-->Core Duo ATi RS480 + SB450 || <!--IDE--> || <!--SATA--> || <!--Gfx-->use VESA - ATI RC410 Radeon Xpress 200M || <!--Audio-->ALC262 || <!--USB-->OCHI UHCI || <!--Ethernet-->RTL 8139 || <!--Wireless-->Intel 3945 or Atheros Ar5001 || <!--Test Distro--> || <!--Comments-->15v 5a proprietary charger needed
|-
| <!--Name-->Satelite A130 PSAD6U || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet-->Realtek 8101E || <!--Wireless-->Atheros or Intel || <!--Test Distro--> || <!--Comments-->ST1311 s1311 ST1312 S2276 S2386 -
|-
| <!--Name-->Satellite A135 S2686 (Compal LA 3391P) || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet-->Realtek 8101E || <!--Wireless-->Atheros or Intel || <!--Test Distro--> || <!--Comments-->S2246 S2346 S2256 S4477 S4666 S4827 -
|-
| <!--Name-->Satellite A200 PSAE1E (Inventec MW10M) || <!--Chipset-->Pentium M with 945GM Express Celeron M 520 1.6Ghz or Pentium® Core Duo T2130 1.86 GHz || <!--IDE--> {{N/A}}|| <!--SATA--> {{Maybe|SATA}}|| <!--Gfx--> {{Yes|Intel GMA 950 (2D and 3D)}}|| <!--Audio--> {{Yes|HD Audio ALC862}}|| <!--USB--> {{Yes| }}|| <!--Ethernet--> {{yes|RTL8101E rtl8139}}|| <!--Wireless--> {{yes|Atheros 5000 - FN,F5 or FN,F8 or switch}} || <!--Test Distro-->2016 AspireOS 1.8 || <!--Comments-->2006 Excellent 32 bit support! - make sure that your WLAN card is enabled, do this using the hardware switch and FN+F8 key combination
|-
| <!--Name--> A210, Satellite A215 AMD (Inventec 10A) S5808 || <!--Chipset--> Ati with SB690 || <!--IDE--> {{N/A}}|| <!--SATA-->{{Maybe|SATA}}|| <!--Gfx-->{{Maybe|use VESA HD2600 Mobility M76}} || <!--Audio-->HD Audio ALC268 || <!--USB--> {{Yes| }}|| <!--Ethernet-->{{yes|RTL8101E}}|| <!--Wireless--> {{yes|Atheros 5000}}|| <!--Test Distro-->2018 AspireOS 1.8 || <!--Comments-->A215-S7422 A215-S7472 A215-S4697 (USA) -
|-
| <!--Name--> [http://www.amiga.org/forums/showthread.php?t=62036 A215 S4757] || <!--Chipset--> Ati X1200 with SB600 || <!--IDE--> {{N/A}}|| <!--SATA-->{{Maybe|SATA}}|| <!--Gfx-->{{Maybe}} || <!--Audio-->HD Audio || <!--USB--> {{Yes| }}|| <!--Ethernet-->{{yes|RTL8101E}}|| <!--Wireless--> {{yes|Atheros 5000}}|| <!--Test Distro-->2017 AspireOS 1.8 || <!--Comments-->
|-
| <!--Name-->Qosmio G30 (PQG31C-HD202E) || <!--Chipset-->945 with Duo T2500 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{yes|Nouveau Nvidia Go 7600 2d and 3d}} || <!--Audio-->{{yes| }} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2006 32bit - 17" UXGA 1920x1200,
|-
| <!--Name-->Tecra A10 || <!--Chipset--> || <!--IDE--> {{N/A}} || <!--SATA--> {{Maybe|IDE mode}} || <!--Gfx--> {{Maybe|Intel GMA 4500M (2D)}} || <!--Audio--> {{Yes|HD Audio}} || <!--USB--> {{Yes|USB 2.0}} || <!--Ethernet-->{{No|Intel PRO 1000}} || <!--Wireless-->{{No|Intel WiFi Link 5100}} || <!--Test Distro--> || <!--Comments-->64 bit possible
|-
| <!--Name-->L35 - L40 PSL48E - L45 S7423 || <!--Chipset-->GL960 with Intel Celeron || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|X3100 some 2D but software 3d tunnel 9 gearbox 4}} || <!--Audio-->{{Yes|HD Audio with ALC660 codec playback}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{Yes|REALTEK 8139}} || <!--Wireless-->{{No|Realtek 8187b replace with Atheros 5k}} || <!--Test Distro-->2017 Icaros 2.1.2 || <!--Comments-->1,73Ghz M 520 or M 540 or Dual T2310 (1.46 GHz) T2330 (1.6 GHz) - 14H 14N 15B 17H 17K 17R 17S 18Z -
|-
| <!--Name-->Satellite a300 - inventec potomac 10s pt10s A300D 21H || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->ATI Mobility Radeon HD 3650 || <!--Audio-->HD Audio - Realtek || <!--USB--> || <!--Ethernet-->Realtek 8102E || <!--Wireless-->Atheros 5005 || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->satellite L300D-224 PSLC8E PSLC9E, l305 (inventec ps10s) || <!--Chipset-->AMD M780 with Turion RM70 or QL-64 || <!--IDE--> {{yes|IDE}} || <!--SATA--> {{yes|SATA}} || <!--Gfx--> {{Maybe|use VESA for Radeon 3100}} || <!--Audio-->{{maybe|HD Audio with Realtek ALC268}} || <!--USB--> {{yes|USB 2.0}} || <!--Ethernet--> {{no|rtl8169 Realtek RTL8101E RTL8102E}} || <!--Wireless-->{{no|Atheros G XB63L or Intel or Realtek}} || <!--Test Distro--> Icaros Desktop Live 2.3 AROS One 2.3 || <!--Comments--> Wireless-handler crashing when using Atheros-Wireless-Card
|-
| <!--Name-->Satellite P300 (PSPC0C-01D01C) || <!--Chipset-->945GM with Intel Core 2 Duo T5750 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{maybe| }} || <!--Audio-->{{No| codec}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{No| swap with Atheros 5k }} || <!--Test Distro-->AROS One 64bit || <!--Comments-->2007
|-
| <!--Name-->satellite l300-1bw PSLBDE-005005AR, L300-148 PSLB0E, l300-20D PSLB8E-06Q007EN, l300-294 L300-23L PSLB9E || <!--Chipset-->Intel GM45 + PGA478 socket Celeron 900, Pentium T1600, T2390, T3400 (Socket P) to Core2 Duo T6400 T6670 || <!--IDE--> {{unk|IDE}} || <!--SATA--> {{unk|SATA}} || <!--Gfx--> {{Maybe|use VESA for Intel gma 4500M}} || <!--Audio-->{{maybe|HD Audio with Realtek ALC???}} || <!--USB--> {{unk|USB 2.0}} || <!--Ethernet--> {{unk|rtl8169 Realtek 810xE}} || <!--Wireless-->{{no|Intel or Realtek}} || <!--Test Distro--> || <!--Comments-->2009 64-bit - new unfamiliar Bios called insyde H20 -
|-
| <!--Name-->satellite l350d || <!--Chipset-->AMD Athlon (tm) X2 QL-60 + RS780M || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Radeon HD 3100 || <!--Audio-->HD Audio with Realtek || <!--USB--> || <!--Ethernet-->Realtek || <!--Wireless-->Realtek 8187b || <!--Test Distro--> || <!--Comments-->2009 64bit
|-
| <!--Name-->Satellite L450 12 13 14 || <!--Chipset-->AMD Sempron, 2.1GHz with AMD RS780M || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Radeon HD 3200 (based on HD 2400) || <!--Audio--> || <!--USB--> || <!--Ethernet-->Realtek RTL8101E RTL8102E || <!--Wireless-->Realtek 8172 || <!--Test Distro--> || <!--Comments-->2009 64bit - 12X 13P 13X 14V PSLY6E00C006EN
|-
| <!--Name-->Satellite Pro L450 (Compal LA-5821P) 179 || <!--Chipset-->intel celeron 900 2.20 Ghz no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->intel 4500m || <!--Audio-->HD Audio with codec || <!--USB--> || <!--Ethernet-->RTL8101 /2 /6E PCI Express Gigabit || <!--Wireless-->RTL8191 SEvB || <!--Test Distro--> || <!--Comments-->2009 64bit - 39.6cm (15.6”) Toshiba TruBrite® HD TFT 16:9 768p
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Toshiba Satellite P775, P775-S7320 and P775-10K || <!--Chipset-->Intel Core i5 (2nd Gen) 2430M i7-2630QM || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Maybe|Vesa 2D for Intel}} || <!--Audio-->{{maybe| }} || <!--USB-->{{maybe| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2011 17.3" - 1600 x 900 (HD+) - 2 DDR3 sodimm max 16Gb -
|-
|<!--Name-->Toshiba Satellite C660D-19X || <!--Chipset-->AMD E-300 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{maybe|Vesa 2D for ATi}} || <!--Audio-->{{no|HD Audio with Realtek codec}} || <!--USB-->{{no| }} || <!--Ethernet-->{{Maybe|r8169 rtl8101e}} || <!--Wireless-->{{no|Realtek RTL8188 8192ce rtl8192ce}} || <!--Test Distro--> || <!--Comments-->2011 64bit -
|-
| <!--Name-->L755D (E-350) L750D (E-450) || <!--Chipset-->AMD E350 E450 no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Radeon HD 6310 6320 || <!--Audio-->HDAudio conexant codec || <!--USB--> || <!--Ethernet--> || <!--Wireless-->Realtek || <!--Test Distro--> || <!--Comments-->2012 64bit
|-
| <!--Name-->Satellite Pro SP C640 C660D-15X (PSC1YE) C670D- () || <!--Chipset-->AMD E350 no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->6310G || <!--Audio-->HD Realtek ALC259 || <!--USB-->USB2 || <!--Ethernet-->Realtek || <!--Wireless-->Broadcom || <!--Test Distro--> || <!--Comments-->2012 64bit
|-
| <!--Name-->C70D-A C75D-A || <!--Chipset-->E1-1200 no sse4.1 or avx || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{maybe|AMD HD8330}} || <!--Audio-->{{no|HA Audio CX20751 11Z}} || <!--USB-->{{no| }} || <!--Ethernet-->{{no|Atheros AR8162 alx}} || <!--Wireless-->{{no|Realtek 8188e}} || <!--Test Distro--> || <!--Comments-->2013 64bit -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
|}
====Misc====
[[#top|...to the top]]
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Time 500 Packard Bell EasyOne 1450 1550 || <!--Chipset-->K6-3 500Mhz + VIA MVP4 vt82c686a || <!--IDE-->{{N/A|Issues}} || <!--SATA-->{{N/A}} || <!--Gfx-->Use VESA || <!--Audio-->{{No|VIA AC97 3058 with wolfson codec WM9703 WM9704 WM9707 WM9708 or WM9717}} || <!--USB-->via 3038 2 ports USB 1.1 untested || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{N/A}} || <!--Test Distro-->NB May 2013 || <!--Comments-->2001 32bit grub runs but stalls around [PCI] Everything OK
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Sony Vaio PCG FX201/FX202 FX210/FX215 FX401/FX402 FX404/FX405 972M, FX501/FX502 FX504/FX505 || <!--Chipset-->VIA KT133A KM133 Duron 800Mhz Athlon 1.3Ghz || <!--IDE-->{{partial|boot issue with 2013 kernel VIA [rev 06]}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{partial|ATI Rage Mobility Pro (VESA only)}} || <!--Audio-->{{Yes|VIA AC97 686b [rev 50] AD1881A Ear phone and Mic}} || <!--USB-->{{Maybe|issues}} || <!--Ethernet-->{{Yes|RTL 8139}} || <!--Wireless-->{{N/A}} || <!--Comments-->Nightly 1st March 2013 || <!--Comments-->booting usb pendrive from Plop Boot Loader floppy (no bios USB boot). Can freeze coz hardware issue or a ram slot problem - no support for iLink firewire VT8363/8365 pci - vt82c686b
|-
| <!--Name-->Sony Vaio PCG FX601/FX602, FX604/FX605 FXA53(US), FX701/FX702, FX704/FX705, FX801/FX802 FX804/FX805 || <!--Chipset-->VIA KT133A KM133 Duron 800Mhz Athlon 1.3Ghz || <!--IDE-->{{partial|boot issue with 2013 kernel VIA [rev 06]}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{partial|ATI Rage Mobility Pro (VESA only)}} || <!--Audio-->{{Yes|VIA AC97 686b [rev 50] AD1881A Ear phone and Mic}} || <!--USB-->{{Maybe|issues}} || <!--Ethernet-->{{Yes|RTL 8139}} || <!--Wireless-->{{N/A}} || <!--Comments-->Nightly 1st March 2013 || <!--Comments-->booting usb pendrive somes works
|-
| <!--Name-->Sony Vaio PCG FX100 R505LE || <!--Chipset-->Intel i815 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Use VESA Intel 82815 CGC || <!--Audio-->Intel ICH AC97 with ADI AD1881A codec || <!--USB--> || <!--Ethernet-->Intel e100 || <!--Wireless-->{{N/A}} || <!--Test Distro--> || <!--Comments-->PCG-FX105 FX105K PCG-FX108 FX108K PCG-FX109 FX109K FX200 FX203/FX203K FX205 FX205K FX209 FX209K FX220 [http://juljas.net/linux/vaiofx240/ FX240] FX250 FX270 FX290 FX301 FX302 FX340 FX370 FX390 FX403 FX503 FX950
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| Sony VAIO VGN X505VP || Pentium M ULV and Intel 855GM || {{yes}} || {{N/A}} || {{maybe|Intel 855 (VESA only)}} || {{yes|AC97}} || {{yes|USB}} || {{yes|Intel PRO 100 VE}} || {{N/A}} || || 2004 32bit - 0.38 inches at its thinnest point - first laptop to feature a "chiclet" keyboard resemble Chiclets gum -
|-
| <!--Name-->Sony Z505LE Z505JE || <!--Chipset-->P3 || <!--IDE--> || <!--SATA-->n/a || <!--Gfx-->Rage Mobility M1 AGP mach64 || <!--Audio-->no Yamaha DS-XG PCI YMF744 || <!--USB--> || <!--Ethernet-->Intel 8255x based PCI e100 || <!--Wireless-->n/a || <!--Test Distro--> || <!--Comments-->2004 32bit -
|-
| <!--Name-->Panasonic Toughbook CF-18 || <!--Chipset-->Core || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{yes|gma for i915}} || <!--Audio-->{{yes|AC97 SigmaTel}} || <!--USB-->{{yes|usb2 }} || <!--Ethernet-->{{yes|RTL 8139C}} || <!--Wireless-->{{no|Intel swap for atheros 5k}} || <!--Test Distro-->Deadwoods' D02 test || <!--Comments-->2003 32bit
|-
| <!--Name-->Panasonic Toughbook CF-29 CF-30 || <!--Chipset-->Core || <!--IDE--> || <!--SATA--> || <!--Gfx-->use VESA || <!--Audio-->AC97 SigmaTel || <!--USB--> || <!--Ethernet-->RTL 8139C || <!--Wireless-->Intel || <!--Test Distro--> || <!--Comments-->2003 32bit
|-
| <!--Name-->MSI Microstar PR210 || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Maybe|use VESA ATi RS690M}} || <!--Audio-->{{Yes|HD Audio through speaker / head phones but not hdmi}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{yes|Realtek 8111 8169}} || <!--Wireless-->Atheros AR242x AR542x aw-ge780 mini pci-e || <!--Test Distro-->2017 Icaros 2.1.2 || <!--Comments-->2004 32bit - ENE PCI based SD card with no bios boot option
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Advent 7106 EAA-88 || <!--Chipset-->Pentium M 1.7GHz with 915GM || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{Yes|2D and 3D tunnel 187 gearbox 67}} || <!--Audio-->{{Yes|AC97 Intel ICH6 with Conexant Cx20468 31 codec playback head phones only}} || <!--USB--> || <!--Ethernet-->{{Yes|Realtek 8169}} || <!--Wireless-->{{No|Intel 2200BG Fn/F2 replaced with atheros mini pci in small base panel - startup errors in wireless manager}} || <!--Test Distro-->2017 Icaros 2.1.1 || <!--Comments-->2005 32bit 14" cheap rubbish sadly - fan noise through audio channel -
|-
| <!--Name-->Motion Computing LE1600 PC Slate || <!--Chipset-->915 || <!--IDE--> || <!--SATA--> || <!--Gfx-->915 || <!--Audio-->Intel AC97 SigmaTel STAC9758 9759 || <!--USB--> || <!--Ethernet-->Realtek 8169 || <!--Wireless-->Intel PRO Wireless 2200BG || <!--Test Distro--> || <!--Comments-->2005 serial Wacom digitiser not usb
|-
| <!--Name-->Panasonic Toughbook CF-51 CF-P1 CF-T5 CF-Y2 || <!--Chipset-->945GMS || <!--IDE--> || <!--SATA--> || <!--Gfx-->GMA 950 || <!--Audio-->HD Audio || <!--USB--> || <!--Ethernet-->Broadcom || <!--Wireless-->Intel || <!--Test Distro--> || <!--Comments-->2006 32bit
|-
| <!--Name-->Sony Vaio VGN-AR11S || <!--Chipset-->ntel Core Duo T2500 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{yes| Nvidia Go 7600}} || <!--Audio-->{{yes| }} || <!--USB-->{{yes| }} || <!--Ethernet-->{{no| }} || <!--Wireless-->{{No| }} || <!--Test Distro-->Aros One 32bit || <!--Comments-->2006 32bit - 17" 1920x1200 - blu-ray -
|-
| Sony Vaio VGN SR29VN || Intel ICH9 || {{N/A}} || {{maybe|IDE legacy}} || {{partial|ATI HD 3400 (VESA only)}} || {{partial|HD Audio (too quiet)}} || {{yes|USB1.1 and USB2.0}} || {{no|Marvell 8040}} || {{no|Intel 5100}} || Icaros 1.5 || 2007 32bit -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Wyse XM Class DELL WYSE Xn0m LAPTOP || <!--Chipset-->AMD T-G56N 1.6 1.65Ghz || <!--IDE-->{{N/A| }} || <!--SATA-->decased 2.5in ssd || <!--Gfx-->{{Maybe|Vesa 2d only AMD 6320}} || <!--Audio-->{{Maybe| }} || <!--USB-->{{Maybe|EHCI 2.0 with NEC uPD720200 USB 3.0}} || <!--Ethernet-->{{Yes|Realtek rtl8169 8111E}} || <!--Wireless-->{{No|Atheros 93xx}} || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 - 1366 x 768 14" - 2 ddr3l slots max 16gb - 19v coax barrel plug psu -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->MSI Ge40 Ge60 || <!--Chipset-->Intel 4 || <!--IDE--> || <!--SATA--> || <!--Gfx-->GTX 860M || <!--Audio--> || <!--USB--> || <!--Ethernet-->{{no|Killer}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2014 64bit -
|-
| <!--Name-->MSI GE62 2QF Apache Pro || <!--Chipset-->Intel 5 || <!--IDE--> || <!--SATA--> || <!--Gfx-->GTX 970M || <!--Audio--> || <!--USB--> || <!--Ethernet-->{{no|Killer }} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2015 64bit -
|-
| <!--Name-->MSI GS65 Stealth || <!--Chipset-->i7-8750H and later i7-9750H || <!--IDE-->{{N/A}} || <!--SATA-->nvme || <!--Gfx-->GeForce GTX 1060 or 1070 Max Q, GTX 1660 Ti, RTX 2080 Max-Q || <!--Audio-->{{unk|HDAudio }} || <!--USB-->{{unk|US3}} || <!--Ethernet-->{{No| }} || <!--Wireless-->{{No| }} || <!--Test Distro--> || <!--Comments-->2018 64bit -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Gigabyte P35X || <!--Chipset-->Intel || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->GTX 980M || <!--Audio-->HDaudio || <!--USB-->USB3 || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2014 64bit -
|-
| <!--Name-->Panasonic Toughpad FZ-G1 MK2 || <!--Chipset-->Core i5-3437U, 1.9GHz || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet-->{{N/A}} || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2014 64bit -
|-
| <!--Name-->ToughPad FZ-G1 Mk3 || <!--Chipset-->Intel Core i5-4310U || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->Intel HD 4400 || <!--Audio-->HDaudio Codec ALC255 || <!--USB--> || <!--Ethernet-->{{N/A}} || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->2015 64bit -
|-
| <!--Name-->[https://wiki.recessim.com/view/Panasonic_Toughpad_FZ-G1_MK4 Panasonic Toughpad FZ-G1 MK4] || <!--Chipset-->intel 6300U || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->Intel 520 || <!--Audio-->HDaudio with ALC256 codec - o/c or s/c fails early || <!--USB-->{{maybe|USB3 but options on the right hand side of screen case}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|intel ac 8260}} || <!--Test Distro--> || <!--Comments-->2016 64bit - 10.1in 1600x1200 - 4gb ddr3l soldered - waterproof pen left hand side base - optional slot-in 4g lte and sdhc - 16v 4.06A 64.96W panasonic barrel -
|-
| <!--Name-->Panasonic Toughpad FZ-G1 MK5 || <!--Chipset-->intel i5-7300U || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->Intel 620 || <!--Audio-->HDaudio ALC295 codec - o/c or s/c fails early || <!--USB-->{{maybe|USB3 but optional usb2 plugin r.h.s. of screen casing}} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no|Intel}} || <!--Test Distro--> || <!--Comments-->2018 64bit - 8gb ddr3l soldered - 10.1" WUXGA 1920 x 1200 with LED backlighting screen 2-800 nit - 10-point capacitive multi touch + Waterproof Digitizer pen l.h.s -
|-
| <!--Name-->ToughPad FZ-M1 || <!--Chipset-->Intel® Core TM m5-6Y57 vPro TM || <!--IDE-->{{N/A}} || <!--SATA-->sata || <!--Gfx-->Intel HD 4200 || <!--Audio-->HDaudio with ALC codec || <!--USB-->{{maybe| }} || <!--Ethernet-->{{N/A}} || <!--Wireless-->{{no| }} || <!--Test Distro--> || <!--Comments-->2016 64bit - 7in 800p - 8gb ddr3l soldered -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || IDE || SATA || Gfx || Audio || USB || Ethernet || Wireless || Test Distro || Comments
|-
| <!--Name-->Any Razor Razer laptops || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->AVOID unable to remove secure boot
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
===Netbook===
[[#top|...to the top]]
* PC to write Aros image onto an USB pendrive with Raspberry PI writer, USB writer or Rufus for boot purposes on a netbook
* SD card sometimes can boot like Dell 2100, EeePC 1001P, ASUS EeePC 900, acer aspire one d150, MSI Wind U100,
====Acer Packard Bell Netbooks====
[[#top|...to the top]]
{| class="wikitable sortable" width=100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| Aspire One AOA110 (A110) (ZG5) || Intel 945GSE || {{N/A}} || {{Maybe|IDE legacy mode}} || {{Yes|Intel GMA (2D and 3D) tunnel 99 and gearbox 84 score}} || {{Yes|HD Audio ALC6628}} || {{Yes|USB1.1 and USB2.0}} || {{Yes|rtl8169 RTL8101E}} || {{Yes|AR5006}} atheros 5k || 2016 AspireOS 1.8, 2025 Aros One 2.6 32bit USB || 2007 32bit 1 core - 19v barrel A13-045N2A 19V2.37A 45W 5.5x1.7mm -
|-
| Aspire One AOA150 (A150) (ZG5) || Intel 945GSE || {{N/A}} || {{Maybe|ide mode}} || {{Yes|Intel GMA 2D and accelerated 3D with tunnel 99 and gearbox 84.1 result}} || {{Yes|HD Audio ALC6628}} || {{Yes|uhci and ehci}} || {{Yes|rtl8169 RTL8101E}} || {{Yes|AR5006}} atheros 5k || 2016 AspireOS 1.8, 2025 aros one 2.6 32bit USB || 2007 32bit 1 core - 19v barrel -
|-
| Aspire One AOD150 D150 (Compal LA-4781P), AOD110 D110 (ssd) || Intel 945GME || {{N/A}} || {{Maybe|ide legacy}} || {{Yes|Intel GMA 950 (2D)}} || {{Yes|HDAudio with alc272}} || {{Yes|USB}} || {{No|Atheros AR8121 AR8113 AR8114 l1e}} || {{Maybe|AR5007EG AR5BXB63 works but Broadcom BCM4312 has no support}} || 2010 Icaros Desktop 1.3, 2024 Aros one 32bit USB || 2008 32bit 1 core - 19v barrel -
|-
| Aspire One (ZG8) || Intel 945G and N270 || {{N/A}} || {{Maybe|ide mode}} || {{Yes|Intel GMA 2D and accelerated 3D}} || {{maybe|HD Audio }} || {{Yes|uhci and ehci}} || {{No|Broadcom }} || {{no|Intel}} || 2014 AspireOS 1.8 || 2009 32bit -
|-
| Aspire One AOD250 D250 emachines em250 || 945GME || {{N/A}} || {{Maybe|ide legacy}} || {{Yes|Intel GMA (2D)}} || {{Yes|alc272 HD Audio}} || {{Yes}} || {{No|AR8132 (L1c)}} || {{No|BCM4312 or Atheros AR5B95}} || 2010 Icaros 1.3 || 2009 32bit 1 core - 19v barrel -
|-
| <!--Name-->Aspire AO532H (Compal LA-5651p) 533H Pineview || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio-->{{Yes|HD Audio playback}} || <!--USB--> || <!--Ethernet-->{{No|AR8132 (L1c)}} || <!--Wireless-->{{No|Atheros 9k}} || [http://www.amigaworld.net/modules/news/article.php?mode=flat&order=0&item_id=5968 Tested AspireOS June 2011] || <!--Comments-->
|-
| <!--Name-->emachines eM350 NAV51 || <!--Chipset--> with N450 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Intel 3150 || <!--Audio-->HD Audio with codec || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro-->Icaros 2.2 || <!--Comments-->Single core 64bit - 160GB HDD 1GB RAM 10.1" LED backlit screen and Webcam - 3 cell li-ion battery for 3 hours usage -
|-
| <!--Name-->emachines eM355 || <!--Chipset--> with N455 || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->64bit support possible -
|-
| <!--Name-->Aspire One 533 || <!--Chipset-->N455 with NM10 || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes}} || <!--Gfx-->{{Yes|2D 0x8086 0xa011}} || <!--Audio-->{{Yes| ALC272 codec ich7}} || <!--USB-->{{Yes}} || <!--Ethernet-->{{No|Atheros AR8152 v1.1 1c}} || <!--Wireless-->{{No|Broadcom 4313}} || <!--Test Distro-->2016 Icaros 2.1 and AROS One 2.3 || <!--Comments-->2011 64bit - f2 setup - 10.1inch 1024 x 768 -
|-
| Aspire One AOD255 AOD255e AOD260 AOHAPPY (Compal LA-6221P) || N570 and Nm10 || {{N/A}} || {{Maybe|SATA}} || {{Maybe|Intel GMA 3150}} || Audio || USB || {{No|Atheros AR8152 V1.1 (1lc)}} || {{No|Broadcom BCM4313}} || || a little support
|-
| Aspire One 522 AO522 (Compal LA-7072p) || 1GHz dual C-50 C50 or C-60 C60 + Hudson M1 || {{N/A}} || SATA || AMD 6250 (ATI 9804) or 6290 || ATI SB CX20584 HD Audio || USB || Atheros 8152 v2.0 l1c || {{No|Broadcom BCM4313 or Atheros ath9k}} || ||
|-
| <!--Name-->AAOD270 Aspire One D270 || <!--Chipset-->N2600 Cedarview || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes| }} || <!--Gfx-->{{Yes|2D on Intel GMA 3650}} || <!--Audio-->{{Yes| }} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{Yes|RTL 8169 RTL8101E}} || <!--Wireless-->{{No|Broadcom BCM4313 but swap for Atheros 5k}} || <!--Test Distro--> || <!--Opinion-->2011 64bit atom - ddr2 so-dimm 2gb max -
|-
| <!--Name-->Aspire One AO532G (Compal LA-6091p) || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Aspire One D257 (Quanta ZE6) || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Acer Aspire One 722 AO722 P1VE6 || <!--Chipset-->AMD C-60 C60 with SB900 || <!--IDE-->{{N/A| }} || <!--SATA--> || <!--Gfx-->{{Maybe| use VESA Ati 6290}} || <!--Audio-->{{Yes|HD Audio with codec but no Wrestler HDMI output}} || <!--USB--> || <!--Ethernet-->{{No|Qualcomm Atheros AR8152 v2.0}} || <!--Wireless-->{{unk|Atheros AR9485}} || <!--Test Distro-->2017 Icaros 2.1.2 || <!--Comments-->
|-
| <!--Name-->Aspire One AO721 (Wistron SJV10-NL) || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->AO751 AO751H (Quanta ZA3) || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Packard Bell Dot .S || <!--Chipset-->N280 + || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|legacy}} || <!--Gfx-->{{yes|Intel GMA950 (2D)}}|| <!--Audio-->HD Audio ALC272X || <!--USB--> USB2.0 || <!--Ethernet--> {{no|Atheros l1e}} || <!--Wireless-->{{no|Atheros 9k}} || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Packard Bell Dot .SE || <!--Chipset-->N450 + || <!--IDE-->{{N/A}} || <!--SATA-->legacy || <!--Gfx-->Intel GMA950 (2D) || <!--Audio-->HD Audio ALC|| <!--USB-->USB2.0 || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Packard Bell Dot .S2 NAV50 || <!--Chipset-->N455 NM10 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Intel X3150 || <!--Audio-->HD Audio ALC269 || <!--USB--> || <!--Ethernet-->Atheros || <!--Wireless-->Atheros || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name-->Packard Bell Dot M/A || <!--Chipset-->1.2GHz Athlon L110 + RS690E || <!--IDE-->{{N/A}} || <!--SATA-->legacy mode? || <!--Gfx-->AMD ATI Radeon Xpress X1270 (VESA only) || <!--Audio-->HD Audio ATI SBx00 || <!--USB--> || <!--Ethernet-->Realtek RTL8101E RTL8102E rtl8169 || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro--> || <!--Opinion-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Asus Netbooks====
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| [http://wiki.debian.org/DebianEeePC/Models eeePC] 700 701 2G 4G 8G Surf || Intel 910GML + ICH7 || {{N/A}} || {{Maybe|IDE legacy mode}} || {{Yes|Intel GMA 900 2D and 3D tunnel 68 gearbox 43 on 701 800x480}} || {{Yes|ALC662 HD Audio}} || {{Yes|UHCI and EHCI}} || {{No|Atheros L2}} || {{Yes|Atheros 5k AR5007EG (AR2425 works}} || 2016 Icaros 2.1.1, 2.1.2, Aros One 2.5 32bit USB, || 2007 32bit - power supplies fail due to bad caps issue 9.5V 2.5A 24W Charger AD59930 4.8*1.7MM -
|-
| [http://wiki.debian.org/DebianEeePC/Models eeePC] 701SD || Intel 910GML + ICH7 || {{N/A}} || {{Maybe|IDE legacy mode}} || {{Maybe|Intel GMA 900 (2D)}} || {{Yes|ALC662 HD Audio}} || {{Yes|UHCI and EHCI}} || {{No|Atheros L2}} || {{No|RTL8187SE swap with Atheros 5k}} || 2014 AspireOS 1.7, || 2007 32bit - boot issues but does boot with ATA=32bit,nopoll or ATA=nodma,nopoll
|-
| [http://wiki.debian.org/DebianEeePC/Models eeePC] 900 || Intel 910GML + ICH7 || {{N/A}} || {{Maybe|IDE legacy mode}} || {{Maybe|Intel GMA 900 (2D, 3D in some models)}} || {{Yes|ALC662 HD Audio}} || {{Yes|UHCI and EHCI}} || {{No|Atheros L2}} || {{Maybe|depends on chipset AR5007EG (AR2425) works but not RaLink}} || 2014 AspireOS 1.7, || 2008 32bit - boot issues but does boot with ATA=32bit,nopoll or ATA=nodma,nopoll. 900's may need BIOS upgrade to boot usb optical drives. 3D available in some model revisions - AD59230 9.5v 2.31a psu -
|-
| eeePC 900A || 945GSE || {{N/A}} || {{Maybe|IDE legacy mode}} || {{Yes|Intel GMA 950 (3D)}} || {{Yes|HD Audio ALC269}} || {{Yes|USB2.0}} || {{No|Atheros L1e [1969 1026]}} || {{Yes|Atheros 5k AR242x}} || Nightly Build 2012, 2023 Aros One 32bit 2.4 || 2009 32bit
|-
| eeePC 901 1000 || 945GM || {{N/A}} || {{Maybe|IDE legacy mode}} || {{yes|Intel GMA 950 (2D)}} || {{Yes|ALC269 HD Audio}} || {{Yes|USB}} || {{No|Atheros L1E (AR8121 AR8113 AR8114)}} || {{No|RaLink Device 2860 swap with Atheros 5k}} || 2011 Icaros 1.4, || 2009 32bit - 12v 3a psu -
|-
| eeePC Seashell 1000HA 1000HE 1008 1005HA || N280 + Intel GMA950 || {{N/A}} || SATA || {{Yes|Intel GMA (2D)}} || {{Yes|HD Audio ALC269}} || {{Yes|USB}} || {{Maybe|Realtek but not Atheros AR8132 (L1c)}} || {{unk|Atheros AR9285}} || 2014 Aspire OS 1.6, || 2010 32bit - 12v 3a psu -
|-
| <!--Name-->eeePC 1001ha || <!--Chipset-->GMA945 || <!--IDE-->{{N/A}} || <!--SATA-->legacy || <!--Gfx-->Intel GMA 950 (2D) || <!--Audio-->ALC269 HD Audio || <!--USB--> || <!--Ethernet-->{{No|Attansic Atheros AR8132 l1c}} || <!--Wireless-->{{No|RaLink RT3090 swap with Atheros 5k}} || <!--Test Distro-->untested || <!--Opinion-->2010 32bit
|-
| eeePC 1001P T101MT 1005PX 1005PE 1015PE Pineview 1001PXD || NM10 and N450 N455 CPU || {{N/A}} || {{Maybe|IDE mode}} || {{Yes|Intel GMA 3150 (2D)}} || {{Yes|HD Audio}} || {{Yes|USB 2.0}} || {{No|Atheros AR8132 (l1c)}} || {{unk|Atheros AR928x 802.11n}} || 2010 Icaros 1.3.3, || 2011 64bit - 19V 2.1A 2.3x0.7 -
|-
| EeePC 1015B 1215B || single C-30 C30 or dual C-50 C50 + Hudson M1 || {{N/A}} || SATA || {{partial|AMD 6250 (VESA only)}} || ATI SBx00 HD Audio || USB || {{No|AR8152 v2.0 atl1c}} || {{No|Broadcom BCM4313 [14e4 4727]}} || untested recently || 2011 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->Flare X101CH Cedarview || <!--Chipset-->N2600 + N10 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Intel GMA 6300 || <!--Audio--> || <!--USB--> || <!--Ethernet-->{{No|Atheros l1c 2.0}} || <!--Wireless-->{{unk|Atheros 9k AR9285}} || <!--Test Distro--> || <!--Comments-->2012 64bit
|-
| <!--Name-->Flare 1025CE 1225CE || <!--Chipset-->N2800 + N10 || <!--IDE--> || <!--SATA--> || <!--Gfx-->{{dunno|Intel GMA 3600}} || <!--Audio--> || <!--USB--> || <!--Ethernet-->{{No|Atheros l1c 2.0}} || <!--Wireless-->{{unk|Atheros 9k AR9285}} || <!--Test Distro--> || <!--Comments-->2012 64bit
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Dell Netbooks====
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| Inspiron 910 Mini 9 PP39S Vostro A90 || GMA945 || {{Maybe|STEC 8G 16G 32G IDE PATA Parallel ATA miniPCIE SSD 50MM / 70MM very slow}} || {{N/A| }} || {{yes|Intel GMA 2D and 3D opengl1}} || {{yes|ALC268 HD Audio}} || {{yes|USB2 boots and works}} || {{yes|rtl8169 Realtek RTL8102E}} || {{no|Broadcom BCM4310 and 4312 swap with atheros 5k bx32}} || ICAROS 1.3 but Icaros 2.3 (pci issues), AROS One 2.6 and Tiny AROS (digiclock startup) mouse cursor vanishes || 2008 32bit - 9inch 1024x600 screen - 1 ddr2 sodimm slot max 2gig - 19v 1.58a - 0 boot disk select - cr2032 battery under laptop base cover, while mem 2GB max under base flap -
|-
| <!--Name-->Inspiron Mini 10 1010 PP19S || <!--Chipset-->Atom Z520 Z530 Intel US15W Poulsbo || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{maybe|Intel GMA 500 (VESA only)}} || <!--Audio-->{{Maybe|HD Audio ALC269 codec}} || <!--USB--> || <!--Ethernet-->{{yes|rtl8169 RTL8102E}} || <!--Wireless-->{{no|Intel or BCM4312}} || <!--Test Distro-->untested || <!--Comments-->2008 32bit - 10.10 inch 16:9, 1366 x 768 glossy - 28whr or 56wHr battery options -
|-
| [https://wiki.ubuntu.com/HardwareSupport/Machines/Netbooks#Dell%20Mini%2010v%20(Inspiron%201011) Mini 10v 1011] [http://wiki.debian.org/InstallingDebianOn/Dell/InspironMini10v ] || Intel 950 || {{N/A}} || {{maybe|ide legacy mode}} || {{yes|Intel GMA (2D)}} || {{maybe|HDAudio}} || {{yes|USB}} || {{yes|RTL8102E 8103E}} || {{no|Dell 1397 Wireless}} || untested || 2008 32bit -
|-
| <!--Name-->Inspiron Mini 1018 || <!--Chipset-->Intel Atom N455 || <!--IDE-->{{N/A}} || <!--SATA-->{{partial|IDE mode }} || <!--Gfx-->{{yes|Intel GMA 3150 (2D, no VGA output)}} || <!--Audio-->{{partial|HD Audio head phones only - speaker and micro phone do not work}} || <!--USB-->{{yes|USB 2.0}} || <!--Ethernet-->{{yes|RTL8169}} || <!--Wireless-->{{unk|RTL8188CE or AR928X}} || <!--Test Distro-->2011 Icaros 1.5.1, || <!--Comments-->2009 64bit - 1 DDR3 max 2gb -
|-
| Latitude 2100 || Intel Atom N270 N280 1.60Ghz GMA 945GME || {{N/A}} || {{Yes|set to IDE in bios as ahci not working || {{yes|Intel GMA 950 (2D and 3D with tunnel 98 and gearbox 84)}} || {{yes|HD Audio with ALC272 codec}} || {{yes|USB2.0}} || {{No|Broadcom BCM5764M}} || {{No|Intel 5100 or BCM4322 DW 1510 half height mini pcie use small Atheros 5k}} || <!--Test Distro-->2016 AspireOS 1.8, Icaros 2.1.1 and AROS One USB 2.4 || 2009 32bit ddr2 sodimm max 2G - [https://sites.google.com/site/arosaspireone/about-aspire-one Webcam and card reader not working] lcd cable over hinge an issue - f12 bios and boot -
|-
| <!--Name-->Latitude 2110 2120 || <!--Chipset-->N470 1.83Ghz, N455 1.6Ghz, N550 1.5Ghz || <!--IDE-->{{N/A}} || <!--SATA-->{{Yes|ATA mode in bios not ahci}} || <!--Gfx-->{{Yes|Intel 3150 2D only}} || <!--Audio-->{{Maybe|HD Audio with ALC269 codec}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No| }} || <!--Wireless-->{{No| swap for Atheros}} || <!--Test Distro-->2014 Icaros 2.3, || <!--Comments-->2011 64bit does not support AVX or SSE 4.1 - ddr2 sodimm
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====HP Compaq Netbooks====
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| HP Mini 2133 || VIA C7-M P4M900 / 8237 VX700 || {{N/A}} || {{maybe|SATA}} || {{maybe|VIA Chrome 9 HC (VESA only)}} || {{no|VT1708/A HD Audio}} || USB || {{no|Broadcom Corp NetXtreme BCM5788}} || {{no|Broadcom Corp BCM4312}} || untested || 2008 32bit -
|-
| HP mini 1000 Mi 2140 ks145ut || N270 + 945GM || {{N/A}} || SATA || <!--Gfx-->{{Yes|Intel GMA 950 (2D and opengl1 3d)}} || <!--Audio-->{{Yes|HD Audio (playback tested)}} || <!--USB-->{{Yes| }} || {{no|Marvell 88E8040}} || {{no|Broadcom Corp BCM4312 hard blocked}} || untested || 2009 32Bit - unable to change wifi card
|-
| <!--Name-->HP Mini 700 702 || <!--Chipset-->N270 + 945GSE || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{Yes|Intel GMA 950 (2D)}} || <!--Audio-->{{Yes|HD Audio IDT 92HD75B (111d:7608, only playback tested)}} || <!--USB-->{{Yes| }} || <!--Ethernet--> || <!--Wireless-->{{No|Broadcom hard locked}} || <!--Test Distro-->untested || <!--Comments-->2009 32bit -
|-
| Compaq HP Mini 110 110-3112sa || 945GM Express || {{N/A}} || {{maybe|IDE mode}} || {{yes|Intel GMA 950 (2D)}} || {{yes|HD Audio IDT STAC 92xx}} || {{yes|USB 2.0}} || {{no|Atheros}} || {{no|Broadcom hard blocked Fn+F12}} || untested || 2009 32bit - unable to change wifi
|-
| HP Mini 200 210 || 945GM NM10 Express || {{N/A}} || SATA || Intel GMA 950 || {{Maybe|HDAudio with }} || USB || RTL8101E RTL8102E || {{no|Broadcom BCM4312 hard locked}} || untested || 2009 32bit -
|-
| HP Mini 311 DM1 (Quanta FP7) || N280 + ION LE || {{N/A}} || SATA || nVidia Geforce ION || {{maybe|HDAudio with }} || USB || eth || {{No|hard locked}} || untested || 2009 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|}
====Lenovo Netbooks====
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| IdeaPad S9 S9e(3G) S10 S10e(3G) || 945GME || {{N/A}} || {{maybe|SATA}} || {{yes|Intel GMA (2D)}} || {{maybe|ALC269 or SigmaTel HD Audio}} || {{yes|USB}} || {{no|Broadcom NetLink BCM5906M}} || {{no|Broadcom BCM4312 hard blocked}} || untested || 2009 32bit -
|-
| IdeaPad S12 || Intel Atom N270 + Nvidia ION LE MCP79 || {{N/A}} || SATA || nVidia C79 ION [Quadro FX 470M] || {{maybe|ALC269 HD Audio}} || USB || {{no|Broadcom}} || {{no|Intel locked down}} || 2012 Icaros 2.0, || 2009 32bit - does not boot - cause unknown
|-
| S10-2 || 945GME and N280 CPU || {{N/A}} || SATA || {{yes|Intel GMA (2D)}} || {{maybe|ALC269 HD Audio}} || {{yes}} || {{yes|rtl8169}} || {{no|Broadcom BCM4312 hard blocked}} || 2011 Icaros 1.3, || 2009 32bit -
|-
| S10-3 || NM410 and N450 CPU || {{N/A}} || SATA || {{yes|Intel GMA 3150 (2D)}} || {{maybe|HD Audio ALC269}} || {{yes|USB}} || {{yes|rtl8169}} || {{no|Atheros 9285 or Broadcom BCM4312 hard blocked}} || 2011 Icaros 1.3, || 2009 32bit -
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Samsung Netbooks====
[[#top|...to the top]]
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| [http://www.amigaworld.net/modules/newbb/viewtopic.php?post_id=616910&topic_id=33755&forum=28#616910 NC10] || 945GME || {{N/A}} || {{maybe|SATA}} || {{yes|Intel GMA 950 (2D)}} || {{partial|SigmaTel HD Audio (playback only)}} || {{yes|USB}} || {{maybe|rtl8169 works but not Marvell 88E8040 sky2}} || {{yes|AR5007EG}} || 2011 Icaros 1.4, || 2009 32bit - Nano silver on keyboard and lcd ribbon cable over hinge issues
|-
| [http://www.sammywiki.com/wiki/Samsung_NC20 NC20] || VIA VX800 || {{N/A}} || SATA || {{maybe|VIA Chrome9 (VESA only)}} || ALC272 GR (VT1708A) HD Audio || {{yes|USB}} || {{no|Marvell 88E8040}} || {{yes|Atheros AR5001}} || untested || 2009 32bit -
|-
| NP-N110 NP-N120 || 945GSE || {{N/A}} || SATA || {{yes|Intel GMA 950 (2D)}} || {{yes|ALC272 HD Audio or ALC6628}} || {{yes|USB}} || {{no|Marvell 88E8040}} || {{no|Realtek rtl8187}} || untested || 2009 32bit - Namuga 1.3M Webcam none
|-
| NP-N130 || 945GSE || {{N/A}} || {{yes|SATA in IDE mode}} || {{yes|Intel GMA 2D and opengl 1.x 99.5 tunnel 99 gearbox}} || {{yes|Intel HD with ALC272 ALC269 codec playback}} || {{yes|USB}} || {{yes|RTL 8169.device - 8101e 8102e}} || {{no|rtl 8192se rtl8187 too small an area to swap for atheros 5k}} || untested || 2009 32bit - 10.x inch 1024 x 600 - Namuga 1.3M Webcam - front slide power on and f2 setup bios - keyboard 17.7mm Pitch is made with Silver Nano (Anti-Bacterial) tech - small touchpad - 1 ddr2 2rx16 sodimm slot 2G max - 44Wh
|-
| <!--Name-->Go NP-N310 || <!--Chipset-->N270 + 945GME || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|IDE legacy mode}} || <!--Gfx-->{{yes|Intel GMA 950 (2D)}} || <!--Audio-->{{yes|HD Audio ALC6628}} || <!--USB-->{{yes}} || <!--Ethernet-->{{yes|rtl8169}} || <!--Wireless-->{{yes|Atheros5k}} || <!--Test Distro-->untested || <!--Opinion-->2010 32bit - N280 version changed specs
|-
| NP-N510 || N270 euro N280 uk + ION MCP79 || {{N/A}} || SATA || nVidia C79 ION [Quadro FX 470M] || HD Audio || USB || Marvell 88E8040 || Realtek 8192E || untested || 2010 32bit - does not boot - cause unknown
|-
| NP-N145 Plus || n450 + NM10 || {{N/A}} || {{maybe|IDE legacy mode}} || {{yes|Intel GMA 3150 (2D, no VGA output)}} || {{yes|Realtek HD Audio}} || {{yes|USB2.0}} || {{no|Marvell 88E8040}} || {{unk|Atheros AR9285}} || untested || 2010 some support but often the trackpad does not work
|-
| <!--Name-->NC110 Axx || <!--Chipset-->NM10 || <!--IDE-->{{N/A}} || <!--SATA-->Sata || <!--Gfx--> || <!--Audio-->HDAudio with ALC269 codec A9M22Q2 || <!--USB--> || <!--Ethernet-->{{Maybe|Rtl8169}} || <!--Wireless-->{{No|Broadcom BCM4313 or Atheros}} || <!--Test Distro-->untested || <!--Comments-->2011 64bit -
|-
| NF210 Pineview || n455 or n550 + N10 || {{N/A}} || {{maybe|SATA}} || {{maybe|Intel GMA 3150 (needs retesting, VESA works)}} || {{yes|HD Audio}} || {{yes|USB}} || {{no|Marvell 88E8040}} || Wireless || untested || 2011 64bit - some support
|-
| <!--Name-->NS310 NP-NS310-A03UK || <!--Chipset-->N570 with NM10 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->{{Maybe|use Vesa 2d }} || <!--Audio-->{{yes| ich7}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{yes|rtl8169 realtek 810xe }} || <!--Wireless-->{{no|bcm4313 }} || <!--Test Distro-->2022 AROS One 2.3, || <!--Comments-->2011 64bit Atom N570 or 1.5 GHz Intel Atom N550 dual core processor, 1 DDR3 sodimm slot memory, a 250GB hard drive, and a 10.1 inch, 1024 x 600 pixel 10.1" W7St - 2300mAh short life -
|-
| <!--Name-->[https://wiki.archlinux.org/index.php/Samsung_N150 N150] NB30 || <!--Chipset-->MN10 || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Yes|Intel GMA 3150 (2D)}} || <!--Audio-->{{No| }} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|Marvell 88E8040}} || <!--Wireless-->{{unk|Atheros AR9285 or Realtek 8192E}} || <!--Test Distro-->untested || <!--Comments-->2011 a little support
|-
| <!--Name-->[http://www.kruedewagen.de/wiki/index.php/Samsung_N220 N210 N220] N230 || <!--Chipset-->N450 + NM10 || <!--IDE-->{{N/A}} || <!--SATA-->{{Maybe| }} || <!--Gfx-->{{Yes|Intel GMA 3150 (2D)}} || <!--Audio-->HD Audio ALC269 || <!--USB-->{{Yes| }} || <!--Ethernet-->{{No|Marvell}} || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro-->untested || <!--Comments-->2011 64bit no sse4.1 or avx -
|-
| <!--Name-->NC110 Pxx Cedarview || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{dunno|Intel GMA 3600}} || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless-->{{No|Intel 6000g}} || <!--Test Distro-->untested || <!--Comments-->2012 64bit
|-
|}
====Toshiba Netbooks====
[[#top|...to the top]]
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="10%" |Wireless
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->NB100 || <!--Chipset-->945GM || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|legacy}} || <!--Gfx-->{{yes|Intel GMA (2D)}} || <!--Audio-->{{yes|ALC262 HD Audio}} || <!--USB--> || <!--Ethernet-->{{yes|rtl8169}} || <!--Wireless-->{{yes|AR5001}} || <!--Test Distro-->untested || <!--Comments-->2009 32bit -
|-
| <!--Name-->Mini NB200 series NB205 || <!--Chipset-->N280 + GSE945 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|IDE legacy mode}}|| <!--Gfx-->{{yes|Intel GMA (2D)}} || <!--Audio-->ALC272 HD Audio || <!--USB-->{{yes}} || <!--Ethernet-->{{yes|RTL8169}} || <!--Wireless-->{{maybe|AR9285}} || <!--Test Distro-->untested || <!--Opinion-->2009 32bit -
|-
| <!--Name-->Mini 300 series NB305 || <!--Chipset-->N455 with NM10 || <!--IDE-->{{N/A}} || <!--SATA-->legacy || <!--Gfx-->Intel GMA 3150 (2D) || <!--Audio-->ALC272 HD Audio || <!--USB--> || <!--Ethernet-->{{maybe|RTL8101E RTL8102E}} || <!--Wireless-->{{maybe|AR9285}} || <!--Test Distro-->untested || <!--Opinion-->2010 64bit -
|-
| <!--Name-->Mini 500 series NB505 NB520 NB550-10v || <!--Chipset--> || <!--IDE-->{{N/A}} || <!--SATA-->legacy || <!--Gfx-->Intel GMA 3150 (2D) || <!--Audio-->HD Audio || <!--USB--> || <!--Ethernet-->{{maybe|RTL8101E RTL8102E}} || <!--Wireless-->{{no|Realtek 8176 RTL 8188CE}} || <!--Test Distro-->untested || <!--Opinion-->2011 64bit -
|-
| [http://www.notebookcheck.net/Review-Toshiba-NB550D-AMD-Fusion-Netbook.46551.0.html Mini NB550D 10G] 108 (c30) 109 (c50) || C-50 + M1 || {{N/A}} || SATA || AMD 6250 (VESA only) || HD Audio || USB || {{maybe|rtl8169 Realtek 8111e}} || {{maybe|Atheros 9k}} || untested || 2011 64bit Realtek SD card reader
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Misc Netbooks====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |Chipset
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="5%" |Ethernet
! width="5%" |Wireless
! width="5%" |Test Distro
! width="30%" |Comments
|-
| Cammy's A1600 || GME945 || {{N/A}} || {{maybe}} || {{yes|Intel GMA950 (2D)}} || {{yes|HD Audio playback}} || {{yes}} || {{no|JMC 250/260}} || Wireless || 2010 Icaros 1.2.4, || 2009 32bit -
|-
| <!--Name-->Fujitsu Siemens Amilo Mini Ui 3520 || <!--Chipset-->Intel 945 || <!--ACPI--> || <!--SATA-->{{yes}} || <!--Gfx-->{{yes|Intel GMA (2D)}} || <!--Audio-->ALC269 HD Audio || <!--USB-->{{yes}} || <!--Ethernet-->{{yes|rtl8169}} || <!--Wireless-->{{yes|AR5001}} || <!--Test Distro-->untested || <!--Comments-->2009 32bit -
|-
| Guillemot Hercules eCafe EC-900 H60G-IA], Mitac MiStation and Pioneer Computers Dreambook Light U11 IL1 || Intel 945GME || {{N/A}} || {{maybe}} || {{yes|Intel GMA950 (2D)}} || {{Yes|HD Audio (playback only)}} || {{yes|uhci and ehci}} || {{yes|rtl8169}} || {{no|RAlink RT2860}} || untested || 2009 32bit -
|-
| <!--Name-->Hannspree Hannsnote SN10E2 24 48 || <!--Chipset-->N450 + NM10 || <!--IDE-->{{N/A}} || <!--SATA-->IDE legacy mode || <!--Gfx-->Pineview Intel (2D) || <!--Audio-->ALC HD Audio || <!--USB-->USB2.0 || <!--Ethernet-->Atheros l1c || <!--Wireless-->{{unk|Atheros AR9285}} || <!--Test Distro-->untested || <!--Opinion-->2009 32bit -
|-
| MSI Wind U90/U100 || GME945 || {{N/A}} || {{maybe}} || {{yes|Intel GMA 950 (2D)}} || {{partial|HD Audio ALC888s (playback only?)}} || {{yes|uhci 1.1 and ehci 2.0}} || {{yes|rtl8169}} || {{no|RaLink RT2860 RT2700E or rtl8187se (u100x)}} || 2011 Icaros 1.3, || 2009 32bit -
|-
| Advent 4211 || 945GSE || {{N/A}} || {{maybe|IDE legacy mode}} || Intel GMA950 (2D) || ALC HD Audio || USB || rtl8169 || {{no|Intel 3945 ABG}} || untested || 2009 32bit - MSI U100 clone
|-
| <!--Name-->Hannspree Hannsnote SN10E1 || <!--Chipset-->N270 + GMA945 || <!--IDE-->{{N/A}} || <!--SATA-->{{maybe|IDE legacy mode}} || <!--Gfx-->{{yes|Intel GMA 950 (2D)}} || <!--Audio-->ALC HD Audio || <!--USB-->USB2.0 || <!--Ethernet-->{{yes|Realtek RTL8101E RTL8102E RTL8169}} || <!--Wireless-->{{no|RaLink RT2860}} || <!--Test Distro-->untested || <!--Comments-->2009 32bit MSI U100 clone
|-
| <!--Name--> Vaio VGN-P11Z
| <!--Chipset-->
| <!--IDE--> {{dunno}}
| <!--SATA--> {{N/A}}
| <!--Gfx--> {{Partial|Intel (VESA only)}}
| <!--Audio--> {{no|HD Audio}}
| <!--USB--> {{yes|USB 2.0}}
| <!--Ethernet--> {{no|Marvell}}
| <!--Wireless--> {{unk|Atheros AR928X}}
| <!--Test Distro-->2012 Icaros 2.0.3
| <!--Comments-->2008 32bit Rarely boots!
|-
| <!--Name-->Sony VPC-W11S1E
| <!--Chipset-->N280 with 945GSE
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Yes| }}
| <!--Gfx-->{{yes|Intel GMA950 - hdmi}}
| <!--Audio-->HD Audio with realtek codec
| <!--USB-->3 USB2
| <!--Ethernet-->{{No|Atheros AR8132}}
| <!--Wireless-->{{unk|Atheros AR9285}}
| <!--Test Distro-->untested
| <!--Comments-->2009 32bit - 10.1" 1366 x 768 glossy - 3hr battery life -
|-
| <!--Name-->Archos 10 Netbook || <!--Chipset-->Atom with ICH7 NM10 945GSE || <!--IDE-->{{No }} || <!--SATA--> || <!--Gfx-->GMA 950 || <!--Audio-->HD Audio with ALC662 codec || <!--USB--> || <!--Ethernet-->Realtek 8139 || <!--Wireless--> || <!--Test Distro-->untested || <!--Comments-->2008 32bit -
|-
| <!--Name-->MSI Wind U135 DX MS-N014 || <!--Chipset-->Intel N455 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{Yes|2D only accelerated}} || <!--Audio-->{{No|ALC662 rev 1}} || <!--USB-->{{Yes| }} || <!--Ethernet-->{{Maybe|RTL}} || <!--Wireless-->{{No|Atheros AR 9K}} || <!--Test Distro-->2015 Icaros 2.1, || <!--Comments-->2009 32bit - needs noacpi notls added to grub boot line to start up
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--Chipset--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Wireless--> || <!--Test Distro--> || <!--Comments-->
|-
|}
===Desktop Systems===
[[#top|...to the top]]
{| class="wikitable sortable" width="100%"
| <!--OK-->{{Yes|'''Works well'''}} || <!--May work-->{{Maybe|'''Works a little'''}} || <!--Not working-->{{No|'''Does not work'''}} || <!--Not applicable-->{{N/A|'''N/A not applicable'''}}
|-
|}
====Acer====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->[https://www.acer.com/ac/en/ID/content/support-product/486;-; Veriton X270 VTX270] Intel Core 2 Duo ED7400C or Pentium dual-core UD7600C with 630i
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->{{Maybe|Vesa 2d Nvidia 7100 VGA and HDMI connections}}
| <!--Audio-->{{Maybe| with realtek codec}}
| <!--USB-->{{Maybe|4 rear and 5 front}}
| <!--Ethernet-->{{Maybe| nForce}}
| <!--Test Distro-->Icaros 2.3 dvd
| <!--Comments-->2009 64bit capable but would not fully boot, DHCP address timeout too short and failed often. Put in a third party NIC, worked - 1 PCI Express x16 slot and a free PCI x1 slot - internal thin long psu with 12pin -
|-
| <!--Name--> Imedia S1710 with Intel Dual Core E5200
| <!--IDE--> {{Yes|SATA/AHCI}}
| <!--SATA--> {{Maybe|Native IDE}}
| <!--Gfx--> {{Yes|Nvidia nForce 7100}}
| <!--Audio--> {{Yes|Nvidia MCP73}}
| <!--USB--> {{Yes|USB 2.0}}
| <!--Ethernet--> {{No|NVIDIA MCP73 Ethernet}}
| <!--Test Distro--> Nightly Build 14-09-2023, AROS One 2.3
| <!--Comments--> 2009 64-bit - Boot over USB not working on front - 2 DDR2 dual channel max 8GB - DEL for entering Bios - F12 for boot menu - Bus weird, could be reason for Ethernet issue
|-
| <!--Name-->Acer Revo AR1600, R1600 AR3600, R3600, Packard Bell IMAX Mini N3600, ACER Veriton N260G N270G slim nettop subcompact
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe|Native IDE mode, '''when it works''' boots}}
| <!--Gfx-->{{Maybe|Nvidia ION GeForce 9300M - nouveau 3d - '''when it boots''' 400 fps in shell'ed gearbox, 278 in tunnel, 42 in teapot}}
| <!--Audio-->{{Maybe|HD Audio with alc662 codec but nothing from HDMI audio}}
| <!--USB-->{{Maybe|Nvidia USB boot usb2 stick issues and slower with usb3 drives}}
| <!--Ethernet-->{{No|MCP79 nForce}}
| <!--Test Distro-->ArosOne 32bit very often boot stuck around ehciInit, 64bit ...
| <!--Comments-->2009 64bit does not support AVX or SSE 4.1 Intel Atom 230 N280 - 20cm/8" high 1 ltr noisy fan - DEL setup F12 boot options - 2 ddr2 sodimm slots max 4GB - 19v special barrel size 5.5mm/1.7mm psu - 2 ddr2 sodimm slots max 4GB - atheros 5k AR5BXB63 wifi - 3 wire CMOS coin battery -
|-
| <!--Name-->Revo AR3610 R3610 3610 Atom 330 nettop subcompact dual core
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe|Native IDE mode, '''when it works''' boots}}
| <!--Gfx-->{{Maybe|Nvidia ION GeForce 9400M LE MCP79MX 0x10de 0x087d - nouveau 3d - '''when it boots''' 400 fps in shell'ed gearbox, 278 in tunnel, 42 in teapot}}
| <!--Audio-->{{Yes|HD Audio with Realtek alc662 rev1 alc662-hd later ALC885 codec but nothing from HDMI audio}}
| <!--USB-->{{Maybe|Nvidia USB with 1% chance slow boot with usb2 sticks, more issues with usb3 drives}}
| <!--Ethernet-->{{No|RTL8211CL MCP79 nForce 0x10de 0x0ab0}}
| <!--Test Distro-->AROS One 32bit 1.5, 1.6 and 2.4 usb around ehciInit or Kernel SATA, etc try ATA=off, and 64bit 1.2 USB boot often stuck at device 0x00000000b05228c8 interrrupt by using noacpi noiopica
| <!--Comments-->2010 64bit does not support AVX or SSE 4.1 20cm/8" high 1 ltr noisy fan - non usb hub keyboard - DEL bios setup, F12 BBS POPUP/drive boot - 2 ddr2 sodimm slots max 4GB - 19v barrel psu with smaller inner pin size 5.5mm/1.7mm - replace wifi RT3090 ver c (0x1814 0x3090) with atheros 5k - 3 wire CMOS coin battery -
|-
| <!--Name-->Revo N281G
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe| }}
| <!--Gfx-->{{maybe|GMA 2d for GMA 3100}}
| <!--Audio-->HD audio codec
| <!--USB-->USB2
| <!--Ethernet-->Realtek
| <!--Test Distro-->
| <!--Comments-->2011 64bit does not support AVX and SSE 4.1 Atom D425 - 19v 65w barrel psu thinner inner pin - 2 DDR3L single channel max 4GB - replace wifi RT3090 ver d with atheros 5k mini pci-e - 1lr or 1.5 ltr dvdrw case 209.89 mm, (D) 209.89 mm, (H) 35.35 mm - del enter bios - 3 wire CMOS coin battery -
|-
| <!--Name-->REVO AR3700 R3700 3700 - ACER Veriton N282G
*one long beep with two short - bios damaged
*looping one long two short - video card fault
*two short beeps - CMOS damaged
*got one long and one short beep - board error?
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Yes|IDE ready in Bios
* Known issue, boot into bios, set bios to UEFI and reboot, set bios back to defaults and reboot, blank display, repair with reflash of 8 pin Winbond W25Q socketed bios chip with ch341a using P01.B0L or P01.A4 renamed amiboot.rom}}
| <!--Gfx-->{{Yes|Nvidia ION2 GT218 9400M class 0x10de 0x0a64 with vga fine but hdmi fussy over cable and display port used - 32bit nouveau 2d & 3d gearbox 404 tunnel 292 teapot 48 - 64bit not detected}}
| <!--Audio-->{{Yes|HDA Intel with Realtek ALC662 rev1 codec 0x10ec 0x0662, head phones only but nothing from NVidia HDMI 0x10de 0x000b}}
| <!--USB-->{{Yes|Intel® NM10 Express (NM10 is basically an ICH7 with a die shrink and IDE removed) USB boots usb, installs usb, accesses ok}}
| <!--Ethernet-->{{Yes|rtl8169 Realtek rtl8111g}}
| <!--Test Distro-->AROS one 32bit USB 1.5 and 1.6 and ArosOne 64bit usb 1.2
| <!--Comments-->2011 Atom D525 64bit does not support AVX or SSE 4.1 - 20cm/8" high 1 ltr noisy fan - early 2 ddr2 sodimm slots but later 2 ddr3 sodimm slots 1Rx8 max 4GB - 19v barrel psu thinner pin - replace wifi RT3090 ver d with atheros 5k mini pci-e - cmos 3pin cr2032CL plastic wrapped - del bios f12 boot choice -
|-
| <!--Name-->Revo 70 (RL70) with or without dvdrw
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->6320 or 6310
| <!--Audio-->HD audio ALC662-VCO-GR codec
| <!--USB-->USB2, 1.1 Hudson D1
| <!--Ethernet-->Realtek 8111E
| <!--Test Distro-->
| <!--Comments-->2012 64bit does not support AVX or SSE 4.1 AMD E450 1.65GHz - 19v 65w barrel psu thinner inner pin - 2 DDR3L single channel max 4GB - replace wifi RT3090 ver d with atheros 5k mini pci-e - 1lr or 1.5 ltr dvdrw case 209.89 mm, (D) 209.89 mm, (H) 35.35 mm - del enter bios -
|-
|}
====Asus====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->EEEbox B202
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Intel GMA950
| <!--Audio-->Intel Azalia HDaudio with Realtek ALC662 or ALC888-GR CODEC
| <!--USB-->
| <!--Ethernet-->Realtek 8111 or JM250
| <!--Test Distro-->Icaros
| <!--Comments-->internal 3 types of wifi chipset not supported
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
|}
====Dell====
{| class="wikitable sortable" width="100%"
! width="10%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name--> Precision 340
| <!--IDE--> {{yes}}
| <!--SATA--> {{n/a}}
| <!--Gfx--> {{n/a}}
| <!--Audio--> {{yes|Intel AC97}}
| <!--USB--> {{yes|USB 1.1 (UHCI)}}
| <!--Ethernet--> {{yes|3Com}}
| <!--Test Distro--> Nightly Build 2014 09-27
| <!--Comments-->
|-
| <!--Name-->Dimension 2400
| <!--IDE-->{{Yes}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{Yes|Intel 82845GL Brookdale G/GE (VESA 640x480 by 16)}}
| <!--Audio-->{{Unk|AC97 with ADI codec}}
| <!--USB-->{{Yes|UHCI EHCI}}
| <!--Ethernet-->{{Maybe|Broadcom 440x 4401}}
| <!--Test Distro-->[http://eab.abime.net/showthread.php?p=832495 Icaros 1.4]
| <!--Comments-->Graphics chipset is capable of higher resolution.
|-
| <!--Name-->Dimension 4600
| <!--IDE-->{{yes}}
| <!--SATA-->{{dunno}}
| <!--Gfx-->{{partial|Intel Extreme (VESA only)}}
| <!--Audio-->{{yes|Intel AC97 (use rear black port)}}
| <!--USB-->{{Yes|UHCI/EHCI}}
| <!--Ethernet-->{{yes|Intel PRO/100}}
| <!--Test Distro-->Icaros 1.5.2
| <!--Comments-->
|-
| <!--Name--> Optiplex 170L
| <!--IDE--> {{yes|IDE}}
| <!--SATA--> {{partial|IDE mode}}
| <!--Gfx--> {{partial|Intel Extreme (VESA only)}}
| <!--Audio--> {{no|Intel AC97}}
| <!--USB--> {{yes|USB 2.0}}
| <!--Ethernet--> {{yes|Intel PRO/100}}
| <!--Test Distro--> {{dunno}}
| <!--Comments-->
|-
| <!--Name--> Optiplex GX260
| <!--IDE--> {{yes|IDE}}
| <!--SATA--> {{N/A}}
| <!--Gfx--> {{partial|Intel Extreme (VESA only)}}
| <!--Audio--> {{yes|Intel AC97}}
| <!--USB--> {{yes|USB 2.0}}
| <!--Ethernet--> {{no|Intel PRO/1000}}
| <!--Test Distro--> Nightly Build 2014 09-27
| <!--Comments-->
|-
| Optiplex GX270
| {{yes|Working}}
| {{partial|IDE mode}}
| {{partial|Intel Extreme (VESA only)}}
| {{yes|Intel AC97}}
| {{yes|USB 2.0}}
| {{no|Intel PRO/1000}}
| Icaros 1.5.2
| <!--Comments-->
|-
| Optiplex GX280
| {{yes|Working}}
| {{partial|IDE mode}}
| {{maybe|Intel GMA (only VESA tested)}}
| {{yes|Intel AC97}}
| {{yes|USB 2.0}}
| {{no|Broadcom}}
| Nightly Build 2014 09-27
| <!--Comments-->
|-
| <!--Name--> Optiplex GX520
| <!--IDE--> {{yes|IDE}}
| <!--SATA--> {{partial|IDE mode}}
| <!--Gfx--> {{yes|Intel GMA}}
| <!--Audio--> {{partial|Intel AC97 (no line-out)}}
| <!--USB--> {{yes|USB 2.0}}
| <!--Ethernet--> {{no|Broadcom}}
| <!--Test Distro--> {{dunno}}
| <!--Comments-->
|-
| <!--Name--> Optiplex 745
| <!--IDE--> {{N/A}}
| <!--SATA--> {{partial|IDE mode}}
| <!--Gfx--> {{partial|Intel GMA (VESA only)}}
| <!--Audio--> {{partial|HD Audio (no volume control)}}
| <!--USB--> {{partial|Only keyboard mouse (legacy mode)}}
| <!--Ethernet--> {{no|Broadcom}}
| <!--Test Distro--> {{dunno}}
| <!--Comments-->
|-
| <!--Name--> Optiplex 755
| <!--IDE--> {{N/A}}
| <!--SATA--> {{partial|IDE mode}}
| <!--Gfx--> {{partial|Intel GMA (VESA only)}}
| <!--Audio--> {{no|HD Audio}}
| <!--USB--> {{yes|USB 2.0}}
| <!--Ethernet--> {{no|Intel Gigabit}}
| <!--Test Distro--> Icaros 1.5.1
| <!--Comments--> Around 25 second delay in booting from USB
|-
| <!--Name--> Optiplex 990
| <!--IDE--> {{N/A}}
| <!--SATA--> {{partial|non-RAID mode}}
| <!--Gfx--> {{partial|Intel HD (VESA only)}}
| <!--Audio-->{{no|HD Audio}}
| <!--USB--> {{yes|USB 2.0}}
| <!--Ethernet--> {{no|Intel Gigabit}}
| <!--Test Distro--> Nightly Build 2014 09-27
| <!--Comments-->
|-
| <!--Name-->Optiplex 360
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{maybe|ordinary boot gives VGA mode only - VESA}}
| <!--Audio-->{{no|HD Audio (Analog Devices ID 194a)}}
| <!--USB-->
| <!--Ethernet-->{{no|Broadcom}}
| <!--Test Distro-->Aspire Xenon
| <!--Comments-->poor support
|-
| <!--Name-->Dell Wyse Vx0 (V90 V30), Vx0L (V10L V90L), Vx0LE (V30LE V90LE) from VIA C7 800GHz to Eden 1.2GHz
| <!--IDE-->{{Maybe| }}
| <!--SATA-->{{N/A| }}
| <!--Gfx-->{{Maybe|Vesa 2d for S3 UniChrome Pro}}
| <!--Audio-->{{No|AC97 VIA VT8233A with ?? codec}}
| <!--USB-->{{yes|2 back and 1 front USB2}}
| <!--Ethernet-->{{Maybe|early models work but later VT6102-3 do not}}
| <!--Test Distro-->AROS One 2.2
| <!--Comments-->2006 to 2009 32bit - 12V 4A Coax 5.5mm/2.1mm - 1 sodimm DDR 333MHz SO-DIMM later DDR2 - early V90s do seem to have a reliability problem -
|-
| <!--Name-->[https://www.poppedinmyhead.com/2021/01/wyse-cx0-thin-client-notes-experiences.html Dell Wyse Cx0] C00LE, C10LE, C30LE, C50LE, C90LE, C90LE7, C90LEW VIA C7 Eden 1GHz
| <!--IDE-->{{Maybe| }}
| <!--SATA-->{{N/A| }}
| <!--Gfx-->{{Maybe|Vesa 2d VX855 VX875 Chrome 9}}
| <!--Audio-->{{Maybe|some VIA VT8237A VT8251 HDA with ?? codec work}}
| <!--USB-->{{yes|4 outside 2 inside USB2}}
| <!--Ethernet-->{{No|VT6120 VT6121 VT6122 Gigabit}}
| <!--Test Distro-->Icaros 2.3
| <!--Comments-->2010 to 2013 32bit - [https://ae.amigalife.org/index.php?topic=815.0 boots and works] - 12V 2.5A Coax 5.5mm/2.1mm - 1 sodimm ddr2 -
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->Dell RxxL Rx0L Wyse thin client
*R00L Cloud PC of Wyse WSM
*R10L Wyse Thin OS
*R50L Suse Linux Enterprise
*R90L Win XP Embedded
*R90LW Win Embedded Standard 2009
*R90L7 Win Embedded Standard 7
| <!--IDE-->128Mb IDE or 1GB
| <!--SATA-->{{Maybe|SATA Hyperdisk}}
| <!--Gfx-->AMD 690E RS690M Radeon Xpress 1200 1250 1270
| <!--Audio-->
| <!--USB-->4 usb2
| <!--Ethernet-->Realtek
| <!--Test Distro-->
| <!--Comments-->2009 64bit AMD Sempron™ 210U SMG210UOAX3DVE 1.5GHz SB600, up to 4GB single slot 240-pin DDR2 DIMM, 19v barrel psu, DEL key bios - Late 2012 2 data sockets added but only CN18 be used with two white sockets (CN13 & CN15) can used to power the SATA device "4-pin Micro JST 1.25mm
|-
| <!--Name-->Optiplex 390 sff small form factor - mt mini tower desktop - dt full desktop
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->{{maybe|1 pci-e}}
| <!--Audio-->{{maybe|HD Audio}}
| <!--USB-->
| <!--Ethernet-->{{maybe|realtek}}
| <!--Test Distro-->aros one 1.6 usb
| <!--Comments-->2011 64bit dual i3 2xxx - kettle iec plug psu cable - add nvidia gf218 gfx - error code 3 mobo or cpu -
|-
| <!--Name-->Optiplex 3010 sff small form factor
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->{{maybe|1 pci-e}}
| <!--Audio-->{{maybe|HD Audio}}
| <!--USB-->{{maybe| }}
| <!--Ethernet-->{{no|Broadcom 57XX}}
| <!--Test Distro-->
| <!--Comments-->2012 64bit dual i3 3xxx - kettle iec plug psu cable -
|-
| <!--Name-->Optiplex 7010 sff small form factor
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->{{maybe|1 pci-e}}
| <!--Audio-->{{maybe|HD Audio}}
| <!--USB-->
| <!--Ethernet-->{{no|Broadcom or Intel 825xx}}
| <!--Test Distro-->
| <!--Comments-->2012 64bit dual i3 3xxx Q77 - kettle iec plug psu cable - add pci-e ethernet and nvidia gf218 gfx -
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->Dell Wyse 5010 thin client ThinOS D class (D10D D00D D00DX, Dx0D), PCoIP (D10DP) or D90D7, 5040
*username: Administrator, admin, [blank]
*password: Fireport, DellCCCvdi, rappot, Wyse#123, Administrator, administrator, r@p8p0r+
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Yes|IDE mode may need 30cm ext cable as small area for half-slim sata ssd - decased new ssd??}}
| <!--Gfx-->{{Maybe|Vesa 2d 1400x1050 HD6250E IGP by using DVI to hdmi cable and 1 display port, no hdmi port}}
| <!--Audio-->{{Maybe|HD 6.34 audio chipset detected but codec alc269 working from one case speaker - none if v6.29 used}}
| <!--USB-->{{Yes|most 5010 have 4 USB 2.0 but D90Q7 has 2 USB3 instead}}
| <!--Ethernet-->{{Yes|rtl8169 Realtek 8168 8169 - rev 1.?? 8111? - rev 1.91 8111E}}
| <!--Test Distro-->Icaros 2.3
| <!--Comments-->2011 64bit no SSE4.1 or AVX slow AMD G-T44R 1.2Ghz later G-T48E 1.4Ghz Dual Bobcat Brazos BGA413 - Del for BIOS - p key to select boot with noacpi - single DDR3 sodimm slot max 4Gb, (8Gb hynix 2rx8 ddr3l)? (remove small board to upgrade) - passive no fan - 15cm/6" small 1ltr case and lack of expansion options - PA16 19v barrel psu Coax 5.5mm/2.5mm
|-
| <!--Name-->Dell Wyse 7010 DTS thin client (Z class Zx0D)
*2011 Zx0 Z90D7 2GF/2GR
*2013 Z10D
*2014 Z50D 2GF/2GR
*2012 Cisco VXC 6000 CVXC-6215-K9 white
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Yes|Bios set Sata mode to IDE mode and grub boot add 'noacpi' for half slim sata2 ssd or/with 50cm sata ext cable}}
| <!--Gfx-->{{Maybe|VESA 2d HD6310 HD6320 Terascale 2 through DVI and sometimes DP 1.1a - no hdmi port}}
| <!--Audio-->{{Maybe|HD Audio 6.34 detected but ALC269VB codec works on the one case speaker only}}
| <!--USB-->{{Yes|2.0 works but NEC 720200 3.0 not working}}
| <!--Ethernet-->{{Yes|rtl8169 Realtek 8169 8111e 8111F}}
| <!--Test Distro-->Icaros 2.3 and Aros One 32bit 1.5, 1.9 and 2.3 usb and 64bit 1.2
| <!--Comments-->2011 64bit does not support AVX or SSE 4.1 slow AMD G-t52R 1.5GHz later G-T56N 1.65 GHz Dual with A50M FCH - 20cm/8" high 1.5ltr larger fanless black plastic case with metal ventilated box inside - 2 desktop DDR3L DIMM slots max 16GB - PA-16 19v external psu Coax 5.5mm/2.5mm - 2 40cm SMA female WiFi Antenna to IPEX IPX u.fl Ufl Cable pigtail needed - does not like uefi boot devices -
|-
| <!--Name-->Wyse 7020 Thin Client
* 2013 Quad-core AMD GX-420CA 2.0 GHz (25W) -
* 2018 Zx0Q Quad-core AMD GX-415GA 1.5 GHz (15W) with Quad display 3dp and 1dvi
| <!--IDE-->{{N/A}}
| <!--SATA-->1 sata port
| <!--Gfx-->{{Maybe|Vesa 2d only for AMD Radeon HD8400E radeonsi (dual display) or AMD Radeon HD 8330E IGP with AMD Radeon E6240 Seymour E6460 (quad display), no hdmi ports}}
| <!--Audio-->
| <!--USB-->4 x USB2.0 works but 2 USB3.0
| <!--Ethernet-->rtl8169 Realtek 8169 8111
| <!--Test Distro-->
| <!--Comments-->2013 64bit does support AVX or SSE 4.1 quad eKabini Jaguar cores - two SODIMM sockets layered in centre of mobo DDR3L RAM - Coax 5.5mm/2.5mm ac psu 9mm plug is too short but 14mm length is fine - 15cm/6" high smaller 1ltr case and lack of expansion options -
|-
| <!--Name-->Dell Wyse Dx0Q (5020) D90Q8 NJXG4 AMD G-Series
| <!--IDE-->{{N/A}}
| <!--SATA-->1 sata port
| <!--Gfx-->HD 8330E
| <!--Audio--> with Realtek codec
| <!--USB-->4 x USB2.0 works but 2 USB3.0
| <!--Ethernet-->rtl8169 Realtek 8169 8111
| <!--Test Distro-->
| <!--Comments-->2014 64bit does support AVX or SSE 4.1 Quad-core AMD GX-415GA 1.5 GHz - 2 layered near edge of mobo 204-pin DDR3L SODIMM (bottom one tricky to insert) - 19v Coax 5.5mm/2.5mm - passive no fan - 15cm/6" high smaller 1ltr case and lack of expansion options
|-
| <!--Name-->Dell Wyse 5060 N07D thin client
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Yes|IDE bios mode for sata2 port}}
| <!--Gfx-->{{maybe|Vesa 2d - AMD R5E GCN2 IGP Sea Islands thru dp1 with an hdmi adapter no output thru dp2 - no hdmi dvi ports}}
| <!--Audio-->{{maybe|HD Audio with Realtek ALC231 codec head phones only}}
| <!--USB-->{{Maybe|4 x USB2.0 works but 2 USB3.0}}
| <!--Ethernet-->{{yes|rtl8169 realtek 8169 8111h}}
| <!--Test Distro-->AROS One 1.6 usb
| <!--Comments-->2017 64bit does support AVX or SSE 4.1 quad GX-424CC 19.5v external psu - CN-0Y62H1 mobo with 2 layered ddr3l 16Gb max sodimm slots at edge of mobo, bottom 0 one blocking - passive no fan so quiet - 15cm/6" high smaller 1ltr case and lack of expansion options -
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
|}
====Fujitsu Siemens====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="15%" |Test Distro
! width="20%" |Comments
|-
| Scenic [http://uk.ts.fujitsu.com/rl/servicesupport/techsupport/ProfessionalPC/Scenic/ScenicE/ScenicE.htm E600] (compact desktop)
|
|
| {{partial|VESA only}}
| {{yes|AC97}}
|
| {{no|Intel PRO/1000}}
| {{dunno}}
| Nice small, silent PC with good AROS support.
|-
| Scenic T i845
| {{dunno}}
| {{n/a}}
| {{n/a}}
| {{dunno|Intel AC97}}
| {{dunno|UHCI}}
| {{dunno|Intel PRO/100}}
| Icaros 1.5.2
| AROS does not boot
|-
| <!--Name-->Futro S200 S210 S220 and later S300
| <!--IDE-->{{yes| compactflash CF card max ??}}
| <!--SATA-->
| <!--Gfx-->{{maybe|VESA Silicon Integrated Systems [SiS] 315PRO PCI/AGP }}
| <!--Audio-->{{unk|AC97 via }}
| <!--USB-->{{unk|via uhci and ehci}}
| <!--Ethernet-->{{unk|via VT6102 [Rhine-II] (rev 74) }}
| <!--Test Distro-->
| <!--Comments-->2008 32bit - TR5670 Rev 1.4 mother with Transmeta TM5800 cpu - pci socket - single SODIMM socket for DDR memory PC2700S max 512MB -
|-
| <!--Name-->Futro S400
| <!--IDE-->{{yes| but swap with compactflash CF card already with AROS installed}}
| <!--SATA-->
| <!--Gfx-->{{maybe|VESA Silicon Integrated Systems [SiS] SiS741CX }}
| <!--Audio-->{{unk|AC97 SiS7018}}
| <!--USB-->{{unk|sis uhci and ehci}}
| <!--Ethernet-->{{unk|rtl8169 }}
| <!--Test Distro-->
| <!--Comments-->2008 32bit - AMD Geode NX1500 1GHz gets hot - SiS 963L / SiS 741CX chipset - 12V 4.2A 4-pin (DP-003-R) psu - single SODIMM socket for DDR PC2700S max 1G - large case 246 x 48 x 177cms torx screws - pci socket -
|-
| <!--Name-->FUJITSU Futro S700 and S900 Thin Client (based on mini-ITX motherboard D3003-A12, D3003-C1 lesser variant of [https://www.parkytowers.me.uk/thin/Futro/s900/TechNotes_V3.1_Mini-ITX_D3003-S.pdf D3003-S])
*G-T56N 1.65GHz
*G-T40N 1.00GHz
*G-T44R 1.20GHz
| <!--IDE-->{{N/A}}
| <!--SATA-->1 sata data socket but mSata 18+8pins 1GB-16GB
| <!--Gfx-->Radeon HD 6320, HD 6250, HD 6290 dvi or displayport (DP runs higher)
| <!--Audio-->HDAudio
| <!--USB-->{{yes|two USB2 front sockets and four on the rear}}
| <!--Ethernet-->{{Maybe|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2011 64bit AMD slow atom-like and fanless - 20V 2A psu 5.5mm/2.1mm coax (S900) - 2 DDR3L SODIMM sockets max 8GB tricky to run 1333 MHz on the Futro S900 - proprietary X2 PCI-e - 1 PCI socket but need a right-angle adaptor -
|-
| <!--Name-->esprimo p420 e85 desktop case
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe|IDE mode}}
| <!--Gfx-->Intel 4600 or old Geforce in pci-e slot
| <!--Audio-->HDAudio realtek alc671 codec
| <!--USB-->USB3
| <!--Ethernet-->rtl8169 8111
| <!--Test Distro-->
| <!--Comments-->2013 64bit - 2 ddr3 dimm slots - 16 pin special psu -
|-
| <!--Name-->esprimo E420 e85+ SFF case
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe|IDE mode}}
| <!--Gfx-->Intel 4600 or low profile pci-e card
| <!--Audio-->HDAudio realtek alc671 codec
| <!--USB-->USB3
| <!--Ethernet-->rtl8169 8111G
| <!--Test Distro-->
| <!--Comments-->2013 64bit - 2 ddr3 dimm slots - 16ish pin special psu - hd under front metal bracket, take front cover off first with 3 tabs - 3 slim pci-e slots -
|-
| <!--Name-->Futro S520 AMD dual 1.0Ghz codenamed "Steppe Eagle"
* GX-210HA @ 1.0GHz
* GX-212ZC @ 1.2GHz
| <!--IDE-->{{N/A}}
| <!--SATA-->no sata - 4Gb or 16Gb flash memory soldered to the board
| <!--Gfx-->AMD Radeon HD 8210E (GX210HA) or AMD Radeon R1E (GX212ZC)
| <!--Audio-->HDAudio
| <!--USB-->
| <!--Ethernet-->rtl8169 rtl8111e
| <!--Test Distro-->
| <!--Comments-->2016 64bit does support AVX or SSE 4.1 - smaller than ITX 160mm x 160mm Fujitsu D3314-A11 - 19V 3.4A PSU standard 5.5mm/2.1mm coax plug - 1 ddr3 sodimm slot -
|-
| <!--Name-->Fujitsu Futro S720 ThinClient D3313-B13 D3313-F
*2014 64bit AMD GX-217GA 1.65GHz VFY:S0720P8009FR VFY:S0720P8008DE VFY:S0720P4009GB
*2015 64bit AMD GX-222GC 2.20GHz VFY:S0720P702BDE VFY:S0720P702BFR
all begin VFY:S0720P and end two digit country code
| <!--IDE--> {{N/A|}}
| <!--SATA--> {{Yes|up to 2 Sata-cable-connector with space in casing so normal SSD/HDD over Sata was running very well on AHCI and IDE-Mode and 2242 mSata}}
| <!--Gfx--> {{Maybe|use VESA 2D for AMD Radeon HD 8280E IGP ( islands) or later R5E IGP ( islands)}}
| <!--Audio--> {{yes|HDAudio ALC671 codec partially working, external audio speaker}}
| <!--USB--> {{yes|4 rear USB 2.0 but not front 2 USB 3.1}}
| <!--Ethernet-->{{yes|rtl8169 Realtek 8169}}
| <!--Test Distro-->AROS One USB 2.0
| <!--Comments-->2014 64bit supports AVX and SSE 4.1 - 1 ddr3 Sodimm slot max 8Gb - 19V-20V 2A 5.5mm/2.5mm coax - D3313-B13 stripped down Mini-ITX mobo D3313-S1/-S2/-S3 (eKabini) D3313-S4/-S5/-S6 - SATA data socket can be located under the fins of the cpu heatsink is fanless - mPCIe socket for wireless card -
|-
| <!--Name-->Fujitsu FUTRO S920 D3313-E D3313-G
*2016 AMD GX-222GC SOC 2.20GHz Dual
*2017 AMD G-Series GX-415GA (1.50 GHz, Quad Core, 2 MB, AMD Radeon™ HD 8330E)
*2017 AMD G-Series GX-424CC 2.40 GHz Quad
| <!--IDE--> {{N/A}}
| <!--SATA--> {{yes|2242 mSata and 1 Sata-cable-connector with space in casing so normal SSD/HDD over Sata possible}}
| <!--Gfx--> {{yes|use VESA 2D for Radeon R5E GCN2/3 IGP}}
| <!--Audio--> {{yes|HDAudio ALC671 codec partially working}}
| <!--USB--> {{yes|4 rear USB 2.0, front 2 USB 3.1 downgradable to 2.0 in BIOS setting}}
| <!--Ethernet--> {{yes|rtl8169 Realtek 8169}}
| <!--Test Distro--> AROS One USB 2.4
| <!--Comments-->2016 64bit does support AVX or SSE 4.1 - 2 so dimm slot with max of 8 GB - 19v barrel psu 5.5mm 2.5mm - SATA data socket can be located under the fins of the heatsink - mPCIe a e keyed socket for wireless card - propetary X2 connector with official raizer to X1 connector - almost silent background noise, not affecting sound quality in any way
|-
| <!--Name-->Fujitsu Thin Client Futro S5011 S7011
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->{{maybe|Vesa 2D for AMD Vega 3 on 2 dp 1.4}}
| <!--Audio-->{{No|HDAudio with ALC623 codec}}
| <!--USB-->{{maybe|USB3 USB 3.2 Gen 2 front and 3 usb2 rear }}
| <!--Ethernet-->rtl8169 Realtek RTL8111H
| <!--Test Distro-->
| <!--Comments-->2019 64bit - AMD Ryzen Dual Core R1305G or R1505G 1ltr case - 2 ddr4 sodimm slots - TPM 2.0 - 19v 3.42amp round coax or usb-c 20c 3.25a external psu -
|-
| <!--Name-->Fujitsu FUTRO S9011 Thin Client VFY:S9011THU1EIN || <!--IDE-->{{N/A}} || <!--SATA-->NVMe || <!--Gfx-->{{maybe|Vesa 2D for AMD Vega 3 on 2 dp 1.4}} || <!--Audio-->{{No|HDAudio with ALC623 codec}} || <!--USB-->{{maybe|USB3 USB 3.2 Gen 2 front and 3 usb2 rear }} || <!--Ethernet-->rtl8169 Realtek RTL8111H || <!--Test Distro--> || <!--Comments-->2020 64bit Ryzen Embedded R1606G - 2 ddr4 sodimm slots - TPM 2.0 -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
|}
====HP Compaq====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Compaq presario 7360
| <!--IDE-->{{yes|Working}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{Maybe|VESA}}
| <!--Audio-->{{Maybe|AC97 via}}
| <!--USB-->{{Maybe|issues}}
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->Compaq EP Series 6400/10
| <!--IDE--> {{yes|IDE}}
| <!--SATA--> {{N/A}}
| <!--Gfx--> {{N/A}}
| <!--Audio--> {{no|ISA}}
| <!--USB--> {{yes|USB 1.1}}
| <!--Ethernet--> {{N/A}}
| <!--Test Distro--> {{dunno}}
| <!--Comments-->
|-
| <!--Name-->Compaq Evo D510
| {{yes|Working}}
| {{N/A}}
| {{partial|Intel Extreme (VESA only)}}
| {{yes|AC97}}
| {{yes|Working}}
| {{yes|Intel PRO/100}}
| Icaros 1.5
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->Compaq DX2000 MT
| <!--IDE-->{{yes}}
| <!--SATA-->{{maybe}}
| <!--Gfx-->{{maybe|Intel Extreme 2 (VESA only)}}
| <!--Audio-->{{no|detects AC97 but no support for ADI AD1888 codec}}
| <!--USB-->{{yes|OHCI/EHCI }}
| <!--Ethernet-->{{no|Intel 82526EZ e1000}}
| <!--Test Distro--> Icaros 1.51
| <!--Comments-->boots ok but no audio
|-
| <!--Name-->Compaq DX 2200
| <!--IDE-->{{yes}}
| <!--SATA-->{{maybe}}
| <!--Gfx-->{{maybe|RC410 [Radeon Xpress 200] (VESA only)}}
| <!--Audio-->{{dunno|HD Audio}}
| <!--USB-->{{maybe|OHCI/EHCI issues }}
| <!--Ethernet-->{{N/A}}
| <!--Test Distro--> {{dunno}}
| <!--Comments-->issues
|-
| <!--Name--> d230
| <!--IDE--> {{yes|UDMA}}
| <!--SATA--> {{N/A}}
| <!--Gfx--> {{partial|Intel Extreme (VESA only)}}
| <!--Audio--> {{partial|Intel AC97 (speaker and headphones only, no line-out)}}
| <!--USB--> {{yes|USB}}
| <!--Ethernet--> {{Maybe|Broadcom BCM4401}}
| <!--Test Distro--> Icaros 1.4.5
| <!--Comments-->
|-
| <!--Name-->HP Pavilion a220n || <!--IDE-->{{Yes}} || <!--SATA-->{{N/A}} || <!--Gfx-->{{Yes|VESA 1024x768 on nVidia GF4 MX with 64MB shared video ram}} || <!--Audio-->{{Yes|Realtek ALC650 AC'97 comp.}} || <!--USB-->{{Yes|USB 2.0}} || <!--Ethernet-->{{Yes|Realtek 8201BL 10/100 LAN}} || <!--Test Distro-->AROS One 2.5|| <!--Comments-->2004 32bit athlon xp 2600+ Socket 462 / Socket A - 2 dimm ddr pc2700 -
|-
| <!--Name-->t500
| <!--IDE-->{{Yes}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{Yes|FX5200 (2D; 3D with older driver)}}
| <!--Audio-->{{Yes|AC97 ICH4 ALC658D}}
| <!--USB-->{{Yes|UHCI/EHCI}}
| <!--Ethernet-->{{Yes|RTL 8101L 8139}}
| <!--Test Distro-->Nightly Build 2012-09-22
| <!--Comments-->2004
|-
| <!--Name-->DC7700
| <!--IDE-->{{Yes}}
| <!--SATA-->{{Yes}}
| <!--Gfx-->{{Yes|GMA 2D}}
| <!--Audio-->{{Yes| ICH8}}
| <!--USB-->{{Yes}}
| <!--Ethernet-->{{No|82566DM e1000e}}
| <!--Test Distro-->Nightly Build 2013-??-??
| <!--Comments-->2006 Some support at low cost
|-
| <!--Name-->HP dc 7600 CMT
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{Yes|Intel Graphics Media Accelerator 950}}
| <!--Audio-->{{Yes|Realtek ACL 260}}
| <!--USB-->{{Yes|USB 2.0}}
| <!--Ethernet-->{{No|Intel PRO/1000 GT}}
| <!--Test Distro-->
| <!--Comments-->2007
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->HP t5000 thin client series t5500 t5510 t5515 PC538A or PC542A t5700 t5710 Transmeta Crusoe Code Morphing TM 5400 5600 800Mhz
| <!--IDE-->128mb to 512MB
| <!--SATA-->{{N/A}}
| <!--Gfx-->Ati Radeon 7000M
| <!--Audio-->VIA with codec
| <!--USB-->{{No|Issues}}
| <!--Ethernet-->VIA Rhine 2
| <!--Test Distro-->
| <!--Comments-->2006 32bit - ddr max 1GB - F10 setup - all t51xx and some t55xx units will not include a SODIMM slot -
|-
| <!--Name-->HP t5000 thin client series CN700
*HSTNC-002L-TC t5135, t5530
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Vesa 2d 128Mb Via S3 32-bit colour
| <!--Audio-->AC97
| <!--USB-->
| <!--Ethernet-->VIA VT6102 VT6103 [Rhine-II] (rev 78)
| <!--Test Distro-->
| <!--Comments-->2007 32bit t5135 appears identical to the t5530 except the CPU VIA Esther 400 MHz - RAM 64Mb (? max) - 8 x USB2.0 - 12V 3.33A Coax 5.5mm/2.1mm
|-
| <!--Name-->HP t5720, t5725 HSTNC-001L-TC
| <!--IDE-->{{unk| }}
| <!--SATA-->{{N/A}}
| <!--Gfx-->VESA 2d SiS741GX 2048 x 1536 32-bit colour
| <!--Audio-->AC97 SiS SiS7012 AC'97
| <!--USB-->6 x USB2.0
| <!--Ethernet-->VIA VT6102 VT6103 [Rhine-II] (rev 8d)
| <!--Test Distro-->
| <!--Comments-->2007 32bit AMD Geode NX1500 1GHz socketed - RAM 512MB or 1GB, 256MB, 512MB or 1GB - 12V psu - sis DDMA support - custom 1.13 BIOS - pci low profile -
|-
| <!--Name-->t5000 series VX800 HSTNC-004-TC t5145, t5540, t5545, t5630
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Vesa 2d VIA Chrome9
| <!--Audio-->HD Audio VIA
| <!--USB-->
| <!--Ethernet-->{{No|VT6120 VT6121 VT6122 Gigabit (rev 82)}}
| <!--Test Distro-->
| <!--Comments-->2010 32bit - RAM 64Mb (? max) - 8 x USB2.0 - 12V 4.16A Coax: 5.5mm/2.1mm -
|-
| <!--Name-->t5730w HSTNC-003-TC t5730
| <!--IDE-->{{n/a|ATA 44pin DOM Flash}}
| <!--SATA-->
| <!--Gfx-->Vesa 2d ATI Radeon X1250 2048 x 1536 no 3D
| <!--Audio-->HD audio with codec
| <!--USB-->{{Yes|6 x USB2.0}}
| <!--Ethernet-->{{No|Broadcom 5707M tg3 10/100/1000}}
| <!--Test Distro-->
| <!--Comments-->2008 64bit AMD Sempron 2100+ 1GHz - 1 slot of ddr2 sodimm (Max 2GB) - 12V 4.16A Coax 5.5mm/2.1mm - F10 enter bios F12 boot devices -
|-
| <!--Name-->HSTNC-005-TC gt7720, gt7725
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Vesa 2d AMD RS780G HD 3200 - 2560 x 1600 DVI-D & DVI-H
| <!--Audio-->
| <!--USB-->8 x USB2.0
| <!--Ethernet-->{{No|Broadcom BCM5787M}}
| <!--Test Distro-->
| <!--Comments-->2009 64bit AMD Turion Dual Core CPU 2.3GHz - 1 DDR2 200-pin SODIMM - 19V 4.16A Coax 7.4mm/5.0mm (gt7725) -
|-
| <!--Name-->HP t5740 Thin Client HSTNC-006-TC t5740, t5745, st5742
| <!--IDE-->1 port
| <!--SATA-->1 port
| <!--Gfx-->{{Maybe|VESA for Intel CL40 VGA and DisplayPort connectors}}
| <!--Audio-->{{Yes|HD audio with IDT codec}}
| <!--USB-->{{Maybe| }}
| <!--Ethernet-->{{No|Broadcom BCM57780 Gigabit}}
| <!--Test Distro-->Nightly build and Icaros
| <!--Comments-->2009 32bit Atom N280 - F10 on power up to get into the BIOS screens. F12 brings up the boot options - hp 19V one with a coax connector, outer diameter 4.8mm with inner to be 1.7mm to 1.4mm - 2 ddr3 sodimm slots max 3gb due to 32bit - 1 pci-e slot completely non standard -
|-
| <!--Name-->t5000 series HSTNC-012-TC VIA Nano u3500 VX900
*t5550 512MB/1GB Windows CE6 R3
*t5565 1GB/1GB HP ThinPro
*t5570 2GB/1GB WES 2009
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Vesa 2d VIA ChromotionHD 2.0 GPU Chrome9
| <!--Audio-->VIA 9170 VT1708S codec
| <!--USB-->
| <!--Ethernet-->{{No|Broadcom BCM57780 Gigabit}}
| <!--Test Distro-->
| <!--Comments-->32bit - 1 sodimm - 19V 3.42A supply connector standard yellow-tip coax plug 4.8mm/1.8mm "Standard HP Compaq DC Power Plug 4.8mm x 1.5mm / 1.7mm Yellow Tip Connector -
|-
| <!--Name-->HP t510 Via Eden X2 U4200 HSTNC-012-TC shares features with t5570e, t5565z
| <!--IDE-->2G ATA Flash DOM
| <!--SATA-->one
| <!--Gfx-->{{Maybe|Vesa 2d for Chrome9 VIA ChromotionHD 2.0 gfx}}
| <!--Audio-->{{Maybe|VIA VT8237A VT8251 HDA with codec}}
| <!--USB-->{{Maybe|6 USB2 }}
| <!--Ethernet-->{{No|Broadcom Corporation NetLink BCM57780 Gigabit Ethernet PCIe}}
| <!--Test Distro-->
| <!--Comments-->2010 32bit - one slot ddr3 sodimm max 4GB - 19V 3.42A Coax 4.8mm/1.8mm -
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->HP T610 Thin Client and thicker PLUS version AMD G-T56N A55E
| <!--IDE-->{{Maybe|}}
| <!--SATA-->2 sata
| <!--Gfx-->Radeon 6320 1 dp port 1 dvi
| <!--Audio-->HDAudio with ALC codec
| <!--USB-->two USB2 on the front, two USB2 and two USB 3 ports on the rear
| <!--Ethernet-->{{No|Broadcom BCM57780}}
| <!--Test Distro-->
| <!--Comments-->2010 64bit does not support AVX SSE 4.1 - 2 204-pin DDR3 1600MHz SODIMMs PC3-12800 under motherboard via removable panel - 19.5V 3A Coax male 7.4mm/5.0mm + centre pin -
|-
| <!--Name-->HP T420 Thin Client
*AMD Embedded G-Series GX-209JA SOC (1 GHz, 2 cores)
| <!--IDE-->{{N/A}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->Radeon 8180 dvi vga
| <!--Audio-->HDAudio with ALC codec
| <!--USB-->2 front 2 rear USB2
| <!--Ethernet-->{{Yes|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2015 64bit supports AVX SSE 4.1 - soldered in place 2GB DDR3 - smaller than usual 19.5V 2.31A Coax male 4.5mm/3.0mm + centre pin - usb stick internal for storage - E15 BBR -
|-
| <!--Name-->HP t520 TPC-W016
*AMD GX-212JC 1.2Ghz (2 core)
| <!--IDE-->{{N/A}}
| <!--SATA-->1 m.2 mounting holes for 2242 and 2260 SSDs SATA (not NVME)
| <!--Gfx-->Radeon R2E GCN2 IGP Sea Islands
| <!--Audio-->HDAudio with ALC codec
| <!--USB-->2 USB3 front, 4 USB2 back
| <!--Ethernet-->{{Yes|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2014 2017 64 bit supports AVX SSE 4.1 - 1 204-pin DDR3 SODIMM - 19.5V 3.33A 7.4mm Coax with central pin
|-
| <!--Name-->HP t620 TPC-I004-TC
*AMD G-Series GX-217GA 2 core APU 1.65GHz (65W)
*AMD GX-415GA 4 core (65W)
and t620 PLUS (PRO wider version) TPC-I020-TC
*AMD GX-420CA SOC 4 core (Plus 85W)
| <!--IDE-->{{N/A}}
| <!--SATA-->{{yes|single M.2 2280 socket sata3, mSATA socket removed end of 2014}}
| <!--Gfx-->{{maybe|Vesa 2d for Radeon HD 8280E graphics 8330E Islands GCN2 IGP - 2 dp ports no dvi}}
| <!--Audio-->{{yes|HDAudio with Realtek ALC221 codec 0x10EC 0x0221}}
| <!--USB-->{{unk|4 front, 2 back, 1 inside limited space}}
| <!--Ethernet-->{{Yes|Realtek 8169}}
| <!--Test Distro-->Aros One 32bit with noacpi added to grub boot line
| <!--Comments-->2014 64bit supports AVX SSE 4.1 - 2 DDR3L SODIMMs side by side - mSATA ssd and M.2 SSD are M1.6 screws, M2.0 screws used on most SSDs - 19.5V 3.33A Coax male 7.4mm 5mm with centre pin - changed the network card to a Atheros 5000 compatible -
|-
| <!--Name-->HP T530
*AMD GX-215JJ (2 core) 1.5GHz
| <!--IDE-->{{N/A}}
| <!--SATA-->1 m.2 sata ssd up to 2280
| <!--Gfx-->Radeon R2E
| <!--Audio-->HDAudio with ALC codec
| <!--USB-->1 USB3.1, 1 usb-c front, 4 USB2 back
| <!--Ethernet-->{{Yes|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2015 64 bit does support AVX SSE 4.1 - 1 204-pin DDR4 SODIMM - 19.5V 2.31A Coax male 4.5mm/3.0mm with centre pin -
|-
| <!--Name-->HP T730 Wider "Thin" Client TPC-I018-TC Pixar RX-427BB (2c4t) - no display and fans blowing full speed caused by '''disabling internal gpu in bios''' flash L43_0116.bin onto smc MX25L6473F (3.3V 8-PIN SOP (200mil) SPI 25xx) ([https://www.badcaps.net/forum/troubleshooting-hardware-devices-and-electronics-theory/troubleshooting-desktop-motherboards-graphics-cards-and-pc-peripherals/bios-schematic-requests/96303-hp-t730-password-locked-bios in the rom rcvry socket under a delicate thin narrow surface flap]) with ch341a alike switchable from 5v, 3.3v to 1.8v
| <!--IDE-->{{N/A}}
| <!--SATA-->{{partial|Storage bios option to IDE and not AHCI to prevent constant install error messages to DH0: - add noacpi to end of grub boot line - 1 M.2 SATA slot (Key B+M) up to 2280 with T8 torx secure stub}}
| <!--Gfx-->{{maybe|use VESA for non-vulkan Radeon R7 GCN 2 UVD4.2 Sea Islands with 4 dp outs '''but too easy bricking''' if swapping with 1 PCIe 3.0 x8 slot 30W slim factor low profile 8400gs gt210 nvs295 nvs310 gt1030}}
| <!--Audio-->{{yes|HDaudio 6.34 realtek alc221 codec thru case speaker only}}
| <!--USB-->{{yes|'''Works''' for 4 USB2 in the back with 2 in the front, 2 USB3.0 ports on front and 1 more internal (not bootable)}}
| <!--Ethernet-->{{yes|rtl8169 Realtek RTL8111HSH-CG set up first in Prefs/Network}}
| <!--Test Distro-->boots with AROS One 32bit and 64bit USB with added noacpi added to grub boot line - press e - Latest distros can select grub boot options with Aros One 64bit USB and Aros One USB 2.8 but system seems to freeze after choice
| <!--Comments-->2016 64bit supports AVX SSE 4.1 - 2 DDR3L sodimm stacked slots max 32GB - '''Larger''' 20cm/8" high 3.5ltr case noisy fan - TPM2 - esc/F9 boot selector F10 enter bios - 2 serial and 1 parallel old ports - Key E Wireless - PCIe slot (x16 physical, x8 electrical) - 19.5V 4.36A 85w TPC-LA561 HP 7.4mm black-ring-tip power plug, red flashing power button, wrong psu or bad MotherBoard MB -
|-
| <!--Name-->HP t630 Thin Client TPC-I020-TC
*AMD Embedded G-Series SoC GX-420GI quad core 2Ghz
| <!--IDE-->{{N/A}}
| <!--SATA-->{{yes|ahci.device mbr msdos partiton table for 2 Sata M.2, sata0 up to 2280 (1tb max), sata1 2242 (64gb max), both T8 torx secure stubs}}
| <!--Gfx-->{{maybe|use VESA for Radeon AMD Wani R7E with 2 displayport 1.2 sockets, use one nearest to power jack - no dvi / hdmi}}
| <!--Audio-->{{Yes|HDAudio 6.36 0x1022, 0x157a and ALC255 aka ALC3234 codec 0x10ec, 0x0255, pins 0x17 as LFE and 0x1b as int speaker but not ahi 6.34}}
| <!--USB-->{{yes|USB2 2 front and 2 rear, 2 front USB3 and 1 inside}}
| <!--Ethernet-->{{Yes|Realtek 8169 8111H}}
| <!--Test Distro-->AROS One USB 2.2, 2.8 and 64bit USB 1.0, 1.2, 1.3 with noacpi added to the end of the grub bootline (press e)
| <!--Comments-->2016 64bit supports AVX SSE 4.1 - 2 DDR4 SODIMMs side by side speed 1866Mhz limit - 19.5V 3.33A 65W TPC-BA54 Coax male 7.4mm with centre pin - can be easily bricked, might reflash bios with M40 SP149736 - 20cm/8" high 1.5ltr larger fanless case - esc f1 f9 f10 -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->HP Compaq Elite 7200 7300 8200 8300 SFF with kettle IEC psu cable
| <!--IDE-->
| <!--SATA-->{{yes|IDE ata legacy only in BIOS}}
| <!--Gfx-->i pci-e
| <!--Audio-->{{Maybe|8200 works}}
| <!--USB-->{{yes| }}
| <!--Ethernet-->{{no|Intel or Broadcom}}
| <!--Test Distro-->icaros 2.3
| <!--Comments-->2013 64bit dual core - add pci-e rtl8169 ethernet card and pci-e gf210 nvidia low height -
|-
| <!--Name-->HP Compaq Pro 6305 Small Form Factor SFF AMD A75 chipset (FCH 6 SATA 6 Gb/s, 4 USB 3.0)
*AMD Quad A10-5800B
*AMD A8-5500B
*AMD Dual A6-5400B
*AMD A4-5300B
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Radeon 7000 Terascale iGPU series Radeon HD 7660D, Radeon HD 7560D, Radeon HD 7540D, Radeon HD 7480D
| <!--Audio-->HD ALC221
| <!--USB-->
| <!--Ethernet-->{{No|Broadcom 5761}}
| <!--Test Distro-->
| <!--Comments-->2012 64bit
|-
| <!--Name-->Elitedesk 705 G1 - SFF
*AMD A10-8850B, Quad-Core A10 PRO-7850B, A10-8750B
*AMD A10-7800B, A10 PRO-6800B, A8-7600B
*AMD A8-8650B, A6-8550B
*AMD A6-8350B, Dual A6 PRO 7400B, A4-7300B
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe| }}
| <!--Gfx-->{{Maybe|VESA 2D with Radeon R7 or 8000}}
| <!--Audio-->{{Maybe|HD audio with Realtek ALC221 codec}}
| <!--USB-->{{Maybe| }}
| <!--Ethernet-->{{No|Broadcom or Intel}}
| <!--Test Distro-->
| <!--Comments-->2014 64bit - T15 security torx psu with 6pin PWR 200W connector -
|-
| <!--Name-->HP EliteDesk 705 G2, 705 G3 Mini PC USFF thin client
| <!--IDE-->{{N/A}}
| <!--SATA-->2.5in and m.2
| <!--Gfx-->Radeon R7
| <!--Audio-->HDAudio
| <!--USB-->USB3
| <!--Ethernet-->{{No|Broadcom BCM5762 GbE}}
| <!--Test Distro-->
| <!--Comments-->2014 64bit AM4 socket with 35W TDP A10-8770E (4c), AMD PRO A6-8570E (2c), AMD Pro A6-9500E, or AMD PRO A10-9700E on AMD B300 FCH - ddr4 sodimm slots - 77 x 175 x 34mm (6.97 x 6.89 x 1.34in) 1L and about 3lbs -
|-
| <!--Name-->HP EliteDesk 705 G4 Mini 1ltr USFF AMD Ryzen 3 2200G (4c t) or 5 2400G (4c t)
| <!--IDE-->{{N/A|}}
| <!--SATA-->{{Maybe|Nvme 2280 and 2.5in sata}}
| <!--Gfx-->Vega 8 thru DP1.2 port
| <!--Audio-->{{No|HD Audio Conexant codec}}
| <!--USB-->USB2 usb3
| <!--Ethernet-->rtl8169 realtek
| <!--Test Distro-->
| <!--Comments-->2016 64bit Am4 socket - 2 sodimm 16GB max - 19.5v hp socket ext psu -
|-
| <!--Name-->Elitedesk 705 G4 35w, HP Prodesk 405 G4 35W USFF - baseboard 83e9 35W - AMD Athlon PRO 200GE (2c 4t), 2200GE (4c t) or 2400GE (4c t) on AMD B350 FCH
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe|Nvme 2280 and older models 2.5in sata}}
| <!--Gfx-->Vega 3, 8 or 11 with 2 dp1.2 ports
| <!--Audio-->{{no|HDAudio with Conexant CX20632 codec}}
| <!--USB-->USB3
| <!--Ethernet-->rtl8169 Realtek 8169 8111EPH 1Gbe or Realtek RTL8111F
| <!--Test Distro-->
| <!--Comments-->2017 64bit - realtek wifi 8821 or 8822 - up to 1 ddr4 dimm slots - hp barrel external ac -
|-
| <!--Name-->Elitedesk 705 G5, HP Elitedesk 806 G6, Prodesk 405 G6 || <!--IDE-->{{N/A}} || <!--SATA-->2x NVMe or 1x SATA + 1x NVMe, but not all three drives at the same time without serious modding of hd caddie || <!--Gfx-->Vega with DP1.4 port || <!--Audio-->{{no|HDAudio with Realtek ALC3205 codec}} || <!--USB-->USB3 || <!--Ethernet-->{{maybe|Realtek}} || <!--Test Distro--> || <!--Comments-->2018 64bit - 2 ddr4 sodimm slots - 3400GE Ryzen 5 PRO 3350GE (4c 8t), Ryzen 3 PRO 3200GE 3150GE (4c 4t), AMD Athlon Silver PRO 3125GE (2c 4t) on AMD PRO 565
|-
| <!--Name-->HP t540 1ddr4 slot, t640 2 DDR4 SDRAM sodimm SO-DIMM 260-pin non-ECC max 32gb thin client USFF
| <!--IDE-->{{N/A}}
| <!--SATA-->1 NVM Express (NVMe) 2230 or 2280
| <!--Gfx-->Vega 3 VGA, DisplayPort
| <!--Audio-->HD Audio with codec
| <!--USB-->2 USB3 gen1
| <!--Ethernet-->rtl8169 Realtek Realtek RTL8111HSH or RTL8111E PH-CG
| <!--Test Distro-->
| <!--Comments-->2019 64bit ryzen r1000 series Ryzen Embedded R1305G 1.5 GHz, R1505G dual (2c 4t) 2.0Ghz or R1606G ?.?Ghz (2c4t) - Realtek RTL8852AE wifi - 45W psu Coax male 4.5mm/3.0mm + centre pin -
|-
| <!--Name-->HP t740 SFF Thin Client
| <!--IDE-->{{N/A}}
| <!--SATA-->2 M.2, one is sata and other nvme
| <!--Gfx-->Vega 8 DisplayPort or + optional pci-e 30W Radeon E9173
| <!--Audio-->HD Audio with codec
| <!--USB-->USB3
| <!--Ethernet-->Realtek RTL8111E PH-CG 1Gbe
| <!--Test Distro-->
| <!--Comments-->2019 64bit - Ryzen Embedded V1756B 3.25Ghz quad - 90W 19.5V 4.62A psu Coax male 4.5mm/3.0mm + centre pin - sodimm DDR4 max 64Gb - slightly noisy fan -
|-
| <!--Name-->HP EliteDesk 805 G6 Mini 4750GE (8t 16t), Prodesk 405 G6 Ryzen 5 PRO 4650GE (6c 12t) or Ryzen 3 PRO 4350GE (4c 8t) on AMD PRO 565
| <!--IDE-->{{N/A}}
| <!--SATA-->2.5in carrier and 2 slots m.2 nvme
| <!--Gfx-->Vega 8 with DP1.4 and HDMI flex io2 output options
| <!--Audio-->HDAudio with Realtek ALC3205 codec
| <!--USB-->4 usb a - gen 2 10gig and gen 1 5gig ports
| <!--Ethernet-->{{N/A}}
| <!--Test Distro-->
| <!--Comments-->2021 64bit AMD Ryzen 4000 SBC unlocked - 2 sodimm ddr4 slots - wifi6 - 90W ac -
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|-
|}
====Lenovo====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Lenovo Nettop IdeaCentre Q150 (40812HU)
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->ION2
| <!--Audio--> realtek codec
| <!--USB-->USB2
| <!--Ethernet-->intel 10/100
| <!--Test Distro-->
| <!--Comments-->2011 64bit D510
|-
| <!--Name-->M625q Tiny (1L)
| <!--IDE-->{{N/A}}
| <!--SATA-->M.2 Sata
| <!--Gfx-->Stoney Radeon R2, R3 or R4 and later R5 with 2 dp ports
| <!--Audio-->HD audio with ALC233-VB2-CG codec 0x10EC 0x0233
| <!--USB-->{{No|3 usb3.1 Gen 1 and 3 usb2}}
| <!--Ethernet-->rtl8169 RTL8111
| <!--Test Distro-->
| <!--Comments-->2016 64bit all dual cores - e2-9000e or a4-9120e later A9-9420e - heatsink covers 70% area covers wifi - 65w or 135w lenovo rectangle ac - 1 ddr4 2666MHz slot max 8gb - tpm 2.0 -
|-
| <!--Name-->M715q Gen 1 AMD A6 A8 A10-9700E 9770E (2c2t)
| <!--IDE-->{{N/A}}
| <!--SATA-->m.2
| <!--Gfx-->R4
| <!--Audio-->HDAudio
| <!--USB-->USB3
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->2016 64bit -
|-
| <!--Name-->M715q Gen 2 Ryzen 5 PRO 2400GE 4C 8T
| <!--IDE-->{{N/A}}
| <!--SATA-->m.2
| <!--Gfx-->Vega 11
| <!--Audio-->HD Audio with codec
| <!--USB-->USB3
| <!--Ethernet-->1GbE
| <!--Test Distro-->
| <!--Comments-->2018 64bit - f1 enter setup, esc device boot - fixed 1.8v ch341a needed to reflash 1.8v bios if no boot SOP8 DIP8 Winbond W25Q64, MXIC MX25U1635, MX25U6435 -
|-
| <!--Name-->ThinkCenter M75n nano Ryzen3 3300U
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->ThinkCentre M75q M75q-1 Tiny 1ltr TMM
*AMD Ryzen 5 PRO Quad 3500 Pro 3400GE (4c 8t) 11a5 soe400
*AMD 3200GE (2c 4t) zen1+ 11a4
| <!--IDE-->{{N/A|}}
| <!--SATA-->{{Maybe|NVMe 2280 1Tb max - untested 2.5inch}}
| <!--Gfx-->Vega 11
| <!--Audio-->HD Audio Realtek ALC222-CG codec ALC3287
| <!--USB-->3 USB3 Gen 1
| <!--Ethernet-->rtl8169 Realtek 8169 8111
| <!--Test Distro-->
| <!--Comments-->2019 64bit - 65w 20v 3.25A to 135W rectangle psu - 2 sodimm ddr4 sodimm max 32GB locked 2666MHz -
|-
| <!--Name-->ThinkCentre Ryzen 7 PRO Tiny 1ltr Gen 2 AMD 4000 series
*AMD 4650GE (6c12t) 4750GE (8c16t) 4350G (4c8t) Zen2 -
| <!--IDE-->{{N/A|}}
| <!--SATA-->{{Maybe|NVme}}
| <!--Gfx-->Vega 8
| <!--Audio-->HD Audio codec
| <!--USB-->
| <!--Ethernet-->Realtek 8169 8111
| <!--Test Distro-->
| <!--Comments-->2021 64bit vendor locked - 20v psu - 2 sodimm -
|-
| <!--Name-->Thinkcenter M75q-2 Gen2 refresh
| <!--IDE-->{{N/A}}
| <!--SATA-->m.2 nvme
| <!--Gfx-->Radeon Vega
| <!--Audio-->HDAudio
| <!--USB-->USB3
| <!--Ethernet-->1GigE
| <!--Test Distro-->
| <!--Comments-->2022 64bit 5650GE (6c12t) 5750GE (8c16t) - vendor/PSB can lock your AMD CPU - f12 boot devices
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->Thinkcentre M75q Tiny Gen5
| <!--IDE-->{{N/A| }}
| <!--SATA-->2 NVMe
| <!--Gfx-->Radeon 780M dp1.4a or hdmi
| <!--Audio-->HDAudio with codec
| <!--USB-->USB3 usb-c
| <!--Ethernet-->1GBe port
| <!--Test Distro-->
| <!--Comments-->2024 Ryzen PRO 7 8700GE - 90W yellow rectangle connector psu - 2 DDR5 sodimm slots max 128Gb -
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|}
====Misc====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="5%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->Impart impact Media Group IQ Box mini Digital Signage with MB896 mini itx
| <!--IDE-->{{Yes| }}
| <!--SATA-->{{N/A}}
| <!--Gfx-->GMA 915 gme
| <!--Audio--> via audio
| <!--USB-->{{yes| }}
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->2007 32bit - 1 ddr2 slot - pentium m 1.73GHz -
|-
| <!--Name-->[https://everymac.com/systems/apple/mac_mini/specs/mac_mini_cd_1.83-specs.html Apple A1176 Intel MacMini1,1]
| <!--IDE-->{{N/A}}
| <!--SATA-->{{unk|gpt/efi }}
| <!--Gfx-->{{Yes|gma950 2d and 3d}}
| <!--Audio-->{{No|HDAudio with ICH7 [https://answers.launchpad.net/ubuntu/+source/alsa-driver/+question/186749 Sigmatel Stac 9221] [https://android.googlesource.com/kernel/msm/+/android-wear-5.1.1_r0.6/sound/pci/hda/patch_sigmatel.c codec][https://alsa-devel.alsa-project.narkive.com/Yt20W6cE/sigmatel-stac9221-mux-amp-out-0x02-microphone-not-working mic]}}
| <!--USB-->{{Yes|USB2}}
| <!--Ethernet-->{{No|Marvell}}
| <!--Test Distro-->
| <!--Comments-->2006 32bit possible 1.83 GHz Intel “Core Duo” (T2400) - swap pci-e wifi for atheros 5k AR5007EG - maybe hack with a 2,1 firmware - max 4GB Ram ddr2 sodimms - external apple psu - dvd boot only with c key -
|-
| <!--Name-->[https://everymac.com/systems/apple/mac_mini/specs/mac-mini-core-2-duo-1.83-specs.html Apple A1176 Intel Mac Mini2,1]
| <!--IDE-->{{N/A}}
| <!--SATA-->{{unk|gpt/efi }}
| <!--Gfx-->{{Yes|gma950 2d and 3d}}
| <!--Audio-->{{No|HDAudio with ICH7 Sigmatel Stac 9221 codec}}
| <!--USB-->{{Yes|USB2}}
| <!--Ethernet-->{{No|Marvell}}
| <!--Test Distro-->Aros One 2.0/ Icaros
| <!--Comments-->2007 64bit - swap pci-e wifi for atheros 5k AR5007EG - hacked with a 2,1 firmware and replaced the cpu for T7600 2.33 Ghz C2D and max 4GB Ram ddr2 sodimms - external apple psu - dvd boot only via c key
|-
| <!--Name-->Apple iMac 5,1 "Core 2 Duo" 1.83GHz 17" T5600 MA710LL || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->GMA 950 with 64Mb || <!--Audio-->HDAudio idt codec || <!--USB-->3 USB2 || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->2006 64bit - 2 ddr2 667MHz sodimm slots - 17.0" TFT widescreen 1440x900 - polycarbonate
|-
| <!--Name-->Apple iMac 6,1 "Core 2 Duo" 2.16 2.33 24" only T7400 T7600 aka MA456LL/A A1200 (EMC 2111) || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Nvidia 7300GT with 128 MB of GDDR3 SDRAM PCI Express or GeForce 7600GT with 256Mb mini dvi, vga || <!--Audio-->HDAudio || <!--USB-->3 USB2 || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->2006 64bit - 2 ddr2 667MHz sodimm slots - 24.0" TFT widescreen 1920 x 1200 - polycarbonate plastic case iMacs of this generation are the most difficult iMacs to service due to their front bezel design
|-
| <!--Name-->Neoware CA2
| <!--IDE-->flash DOM
| <!--SATA-->{{N/A}}
| <!--Gfx-->S3 Inc ProSavage PM133 (rev 02) vga
| <!--Audio-->VIA VT82C686 AC97 Audio
| <!--USB-->USB
| <!--Ethernet-->rtl8139
| <!--Test Distro-->
| <!--Comments-->2003 32bit - VIA Ezra 800MHz - 2 PC100 sodimm slots - riser board carries an ISA slot and a PCI slot - external 12V power supply.with 4 pins -
|-
| <!--Name-->Neoware CA5 Capio One
| <!--IDE-->44pin Disk On Module DOM
| <!--SATA-->{{N/A}}
| <!--Gfx-->SiS550 vga
| <!--Audio-->AC97 with SiS7019 codec
| <!--USB-->USB1.1
| <!--Ethernet-->rtl8139
| <!--Test Distro-->
| <!--Comments-->2004 32bit - internal power supply with mains lead has a "clover leaf" style - 2 144-pin PC100 or PC133 SODIMM might have 24MB of RAM soldered -
|-
| <!--Name-->Neoware CA10
*E140 model BL-XX-XX (800MHz CPU) later
*E100 model BK-XX-XX (1GHz CPU)
| <!--IDE-->
| <!--SATA-->{{N/A}}
| <!--Gfx-->VIA VT8623 (Apollo CLE266) vga
| <!--Audio-->AC97 with
| <!--USB-->4 USB2
| <!--Ethernet-->VIA VT6102/VT6103 [Rhine-II] (rev 74)
| <!--Test Distro-->
| <!--Comments-->2004/5 32bit - 12v 5.5mm/2.1mm - 2 184-pin DDR DIMM -
|-
| <!--Name-->VXL Itona thin client
*TC3200,
*TC3x41 (P3VB-VXL) TC3541 TC3641 TC3841,
*TC3xx1 (6VLE-VXL0) TC3931,
*TC43xx (Gigabyte C7V7VX) TC4321
| <!--IDE-->
| <!--SATA-->{{N/A}}
| <!--Gfx-->VIA vga
| <!--Audio-->AC'97 Audio with VIA VT
| <!--USB-->VIA USB
| <!--Ethernet-->Realtek 8100B
| <!--Test Distro-->
| <!--Comments-->2005 2006 32bit VIA Samuel 2, VIA C3 Nehamiah CPU, 1 DIMM slot, internal psu,
|-
| <!--Name-->Neoware Capio C50, model CA15 Thin Clients]
*Login Administrator Password Administrator
*Login User Password User
| <!--IDE-->1 flash Disk On Module
| <!--SATA-->{{N/A}}
| <!--Gfx-->VIA VT8623 (Apollo CLE266) vga
| <!--Audio-->AC97 with via codec
| <!--USB-->USB
| <!--Ethernet-->VIA
| <!--Test Distro-->
| <!--Comments-->2006 32bit VIA Eden (Samuel II core) CPU - 1 ddr sodimm slot max 512mb - slot - internal psu clover leaf -
|-
| <!--Name-->[http://etoy.spritesmind.net/neowareca21.html Neoware CA21 Thin Clients] Igel 3210 (and maybe the Clientron G270)
*Login Administrator Password Administrator
*Login User Password User
| <!--IDE-->1 flash Disk On Module DOM
| <!--SATA-->{{N/A}}
| <!--Gfx-->VIA CN700 vga
| <!--Audio-->AC97 with via codec
| <!--USB-->USB2
| <!--Ethernet-->VIA
| <!--Test Distro-->
| <!--Comments-->2007 32bit VIA C3 Nehemiah instead of Ezra-T - made 2 version of the CA 21, one with an Award bios and one with a Phoenix bios - 1 ddr2 sodimm slot max 1gb - VT6656 wireless - slot - internal psu iec -
|-
| <!--Name-->Neoware CA22 (e140), part number DD-L2-GE with BCOM WinNET P680 (V4) as the Igel 4210LX (Igel 5/4)
| <!--IDE-->1 VIA VT82C586A/B VT82C686/A/B VT823x/A/C PIPC Bus Master IDE (rev 06)
| <!--SATA-->{{N/A}}
| <!--Gfx-->VIA CN700 P4M800 Pro CE VN800 Graphics [S3 UniChrome Pro] (rev 01) vga
| <!--Audio-->AC97 with codec
| <!--USB-->USB2 VIA VT8237R Plus
| <!--Ethernet-->VIA VT6102/VT6103 [Rhine-II] (rev 78)
| <!--Test Distro-->
| <!--Comments-->2007 32bit - VIA Esther to later C7 1GHz - 1 ddr2 sodimm slots max 512mb - +12V DC/4.16A/50W 5.5mm/2.1mm coaxial -
|-
| <!--Name-->10Zig RBT402, Clientron U700,
| <!--IDE-->{{Yes|44 pin header very little room}}
| <!--SATA-->{{N/A|}}
| <!--Gfx-->{{Partial|VESA dvi}}
| <!--Audio-->{{unk|AC97 with codec}}
| <!--USB-->{{unk|VIA }}
| <!--Ethernet-->{{unk|}}
| <!--Test Distro-->
| <!--Comments-->2008 32bit - very small cases with very limited expansion - 1 sodimm 2GB max - 12v 3a psu - Password Fireport
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->Dell Optiplex FX170 D05U thin client, 10Zig 56xx range 5602, 5616v, 5617v, 5672v, Clientron U800, Devon IT TC5,
| <!--IDE-->{{Yes|44 pin header very little room}}
| <!--SATA-->{{N/A|}}
| <!--Gfx-->{{partial|GMA 950 dvi}}
| <!--Audio-->{{Yes|HD Audio with codec}}
| <!--USB-->{{Yes| }}
| <!--Ethernet-->{{No|Broadcom}}
| <!--Test Distro-->Icaros 2.3
| <!--Comments-->2009 32bit - very small cases with very limited expansion - 1 ddr2 sodimm 2GB max - 12v 3a psu - Password Fireport - ps2 keyboard socket -
|-
| <!--Name-->10Zig RBT-616V or Chip PC Technologies EX-PC (model number XPD4741)
| <!--IDE-->{{unk|44 pin header very little room}}
| <!--SATA-->{{N/A|}}
| <!--Gfx-->{{Yes|GMA 950}}
| <!--Audio-->{{unk|HD Audio with codec}}
| <!--USB-->{{unk| }}
| <!--Ethernet-->{{unk|rtl8169}}
| <!--Test Distro-->
| <!--Comments-->2010 32bit N270 on NM10 with ICH7 - very small cases with very limited expansion - 1 sodimm 2GB max - 12v 4a psu - Password Fireport
|-
| <!--Name-->Gigabyte Brix GS-A21S-RH (rev. 1.0) SFF
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{maybe|X3100}}
| <!--Audio-->{{No|HD Audio with ALC883-GR codec}}
| <!--USB-->Intel USB
| <!--Ethernet-->{{no|Intel 82566DC}}
| <!--Test Distro-->ICAROS 2.3
| <!--Comments-->2009 64bit Intel GME965 chipset with Intel ICH8M - 2 DDR2 Dimm slots - GA-6KIEH2-RH Rev.1.x mini ITX Case 213mm(D) x 64mm(W) x 234mm(H) - custom psu -
|-
| <!--Name-->VXL Itona MD+24 MD27 MD54 MD64 MD76 thin client
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->VIA Chrome 9
| <!--Audio-->HD Audio with VIA VT
| <!--USB-->VIA
| <!--Ethernet-->VIA
| <!--Test Distro-->
| <!--Comments-->2009 32bit VIA X2 U4200 - 12v-19v barrel psu -
|-
| <!--Name-->Acer Revo 100 RL100 AMD Athlon II X2 K325 || <!--IDE--> || <!--SATA--> || <!--Gfx-->NVIDIA® ION™ 9300m || <!--Audio-->HDAudio with ALC662 codec || <!--USB-->USB2 1 front 2 back || <!--Ethernet-->NVIDIA nForce 10/100/1000 || <!--Test Distro--> || <!--Comments-->2010 64bit but no AVX - 4Gb DDR3 sodimm - 500 GB - 19v 3.42a 65W - dvd but later BD drive -
|-
| <!--Name-->Asrock ION 330 330Pro HT-BD, Foxconn NT-330i, Zotac ION F (IONITX mini itx),
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->{{Maybe|ION geforce 9400}}
| <!--Audio-->{{Maybe| }}
| <!--USB-->{{Maybe|Nvidia USB}}
| <!--Ethernet-->{{No|Nvidia }}
| <!--Test Distro-->
| <!--Comments-->2010 32bit slow atom cpu - 2.5L 8" by 8" plastic case - 2 ddr2 sodimm max 4G - external 19v 65W 3.42A Plug 5.5mm X 2.5mm - little whiny fan -
|-
| <!--Name-->Zotac ZBOXHD-ND01
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->ION1
| <!--Audio-->HDaudio
| <!--USB-->USB2
| <!--Ethernet-->NVidia
| <!--Test Distro-->
| <!--Comments-->2009 32bit
|-
| <!--Name-->Zotac ZBOX HD-ID11
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->ION2
| <!--Audio-->HDaudio with ALC888 codec
| <!--USB-->USB2
| <!--Ethernet-->rtl8169 rtl8111D
| <!--Test Distro-->
| <!--Comments-->2010
|-
| <!--Name-->ZOTAC ZBOX Blu-ray 3D ID36 Plus
| <!--IDE-->{{N/A}}
| <!--SATA-->sata
| <!--Gfx-->ION2
| <!--Audio-->HDaudio
| <!--USB-->2 USB3
| <!--Ethernet-->GbE
| <!--Opinion-->2011 64bit -
|-
| <!--Name-->Shuttle XS35GT || <!--IDE--> || <!--SATA--> || <!--Gfx-->ION || <!--Audio-->HD audio IDT92HD81 || <!--USB--> || <!--Ethernet-->{{No|JMC261}} || <!--Test Distro--> || <!--Comments-->2011 64bit - Atom™ D510 NM10 - DDR2
|-
| <!--Name-->Shuttle XS35GT V2 || <!--IDE--> || <!--SATA--> || <!--Gfx-->ION2 || <!--Audio-->HD audio IDT92HD81 || <!--USB-->Intel || <!--Ethernet-->{{No|JMC251}} || <!--Test Distro--> || <!--Comments-->2011 64bit Atom™ D525 NM10 chipset - DDR3
|-
| <!--Name-->Sapphire Edge-HD || <!--IDE--> || <!--SATA--> || <!--Gfx-->ION2 GT218 with vga and hdmi || <!--Audio-->HDAudio realtek codec || <!--USB--> || <!--Ethernet-->{{Unk|Realtek}} || <!--Test Distro--> || <!--Comments-->2011 64bit - Atom™ D510 NM10 - DDR2 65 W AC, DC 19V~3.42A, 19.3L x 14.8w x 2.2H cm (1l), weight 530g,
|-
| <!--Name-->Sapphire Edge-HD2 || <!--IDE-->{{N/A}} || <!--SATA-->{{yes|IDE mode}} || <!--Gfx-->{{Yes|nouveau ION2 GT218 with vga and hdmi 2d and 3d}} || <!--Audio-->{{Yes|HDAudio}} || <!--USB-->{{Yes|Intel USB2}} || <!--Ethernet-->{{Yes|}} || <!--Test Distro--> || <!--Comments-->2011 64bit Atom™ D525 NM10 chipset - DDR3
|-
| <!--Name-->AOPEN Digital Engine DE67-HA(I)
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe| }}
| <!--Gfx-->{{Maybe| Vesa 2d for Intel HD}}
| <!--Audio-->{{maybe|HDAudio for ALC662 codec}}
| <!--USB-->{{maybe|usb3}}
| <!--Ethernet-->{{no|Intel WG82579LM}}
| <!--Test Distro-->
| <!--Comments-->2011
|-
| <!--Name-->[https://www.jetwaycomputer.com/JBC600C99352W.html Jetway JBC600C99352W]
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->ION2
| <!--Audio-->{{No|C-Media CM108AH}}
| <!--USB-->USB2
| <!--Ethernet-->Realtek 8111DL
| <!--Test Distro-->
| <!--Comments-->2011 64bit D525 - DDR3 - 12v psu
|-
| <!--Name-->Foxconn nT-A3550 A3500 AMD A45 Chipset DDR3 Nettop Barebones - White
| <!--IDE-->{{N/A}}
| <!--SATA-->1 slot
| <!--Gfx-->AMD Radeon HD6310
| <!--Audio-->
| <!--USB-->4 USB2 back and 2 USB3 front
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->2012 64bit does not support AVX or SSE 4.1 AMD Dual-core E350 1.6GHz CPU - 1 ddr3 sodimm -
|-
| <!--Name-->Asus EeeBox PC EB1021 || <!--IDE--> || <!--SATA--> || <!--Gfx-->Radeon HD6320M || <!--Audio-->HDAudio with ALC codec || <!--USB-->USB2 || <!--Ethernet-->Realtek GbE1 || <!--Test Distro--> || <!--Comments-->2012 64bit - AMD® Brazos E-350 SFF or E-450 with A50M - 2 ddr3l so-dimm - 40W ac -
|-
| <!--Name-->Xi3 Piston PC Athlon64 X2 3400e (X5A), AMD R-464L quad (X7A) Z3RO NUC
| <!--IDE-->{{N/A}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->AMD mobility HD3650 to radeon HD 7660G
| <!--Audio--> codec
| <!--USB-->4 USB2 3 USB3
| <!--Ethernet-->{{no|Atheros AR8161}}
| <!--Test Distro-->
| <!--Comments-->2012 - 2 sodimm 8GB max - 19v 3.3a round - Titan105 bios update -
|-
| <!--Name-->Sapphire Edge-HD3 || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->Radeon HD6320M with vga and hdmi || <!--Audio-->HDAudio with Realtek ALC662 codec || <!--USB-->USB2 || <!--Ethernet-->Realtek GbE1 || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 AMD® Brazos E-450 with A45M - ddr3l so-dimm - 65W ac - Wireless is Realtek 8191SU WiFi (802.11n) or AzureWave (802.11bgn) -
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->Samsung Syncmaster Thin Client Display TC-W Series 24" LF24 TOWHBFM/EN TC220W LED LF22TOW HBDN/EN || <!--IDE-->{{N/A}} || <!--SATA-->8gb SSD || <!--Gfx-->{{Maybe| VESA mode only Radeon HD 6290}} || <!--Audio--> || <!--USB-->2 USB 2.0 || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->2012 64bit does not support AVX or SSE 4.1 thin Client C-50 C50 AMD® 1000 MHz and no wireless
|-
| <!--Name-->Advantech TPC-2140 thin client
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->{{Maybe|VESA }}
| <!--Audio-->
| <!--USB-->USB2
| <!--Ethernet-->{{Yes|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2012 64bit does not support AVX or SSE 4.1 atom-like G-T56E 1.65Ghz up to SSE3, BGA413 soldered -
|-
| <!--Name-->CompuLab FIT-PC3 fitPC3 USFF PC AMD G-T56N || <!--IDE-->{{N/A}} || <!--SATA-->{{yes| }} || <!--Gfx-->RADEON HD 6320 || <!--Audio-->{{yes|HDAudio ALC888 codec}} || <!--USB-->{{yes| }} || <!--Ethernet-->{{yes|rtl8169 8111}} || <!--Test Distro--> || <!--Comments-->2012 64 bit does not support AVX or SSE 4.1 - 12v 3a - 2x sodimm DDR3 max 4GB - wifi rtl8188ce
|-
| <!--Name-->10Zig 6872 thin client
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{Maybe|VESA }}
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->{{Yes|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2012 64bit does not support AVX or SSE 4.1 atom-like G-T56N up to SSE3 BGA413 (FT1) soldered - DDR3l single channel -
|-
| <!--Name-->10ZiG Technology 9972 1.6 GHz Linux 1.47 kg Black RX-216GD thin client
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->AMD Radeon 5E 3840 x 2160 @ 30Hz to 2560 x 1600 @ 60Hz 2 x Display Port
| <!--Audio-->
| <!--USB-->6 x USB2.0 2 x USB3.0
| <!--Ethernet-->{{Maybe|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2016 64bit does support AVX or SSE 4.1 AMD RX-216TD - 1 ddr3 sodimm - 12V 4A Coax 5.5mm/2.1mm
|-
| <!--Name-->10ZiG 7800q thin client
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->AMD Radeon 5E 3840 x 2160 @ 30Hz to 2560 x 1600 @ 60Hz 2 x Display Port
| <!--Audio-->
| <!--USB-->6 x USB2.0 2 x USB3.0
| <!--Ethernet-->{{Maybe|Realtek}}
| <!--Test Distro-->
| <!--Comments-->2016 64bit does support AVX or SSE 4.1 AMD GX-424CC (Quad Core) 2.4GHz BGA769 (FT3b) - 1 ddr3 sodimm - 12V 4A Coax 5.5mm/2.1mm
|-
| <!--Name-->
*Itona VXL MZE12 AMD a4-5000 thin client
*VXL Itona LQ27 LQ+27 LQ44 LQ+44 LQ49 LQ+49 LQ50 LQ+50 LQ64 LQ+64 thin client
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->Ati 8330 vga hdmi dp
| <!--Audio-->
| <!--USB-->4 usb2 2 usb3
| <!--Ethernet-->Realtek
| <!--Test Distro-->
| <!--Comments-->2014 64bit quad BGA769 (FT3) soldered - 2 stacked sodimm ddr3 middle of mobo - 2 m.2 sata slots - 1 sata short cable half size space - limited 1ltr 8in case no fan - 19v hp style psu connector -
|-
| <!--Name-->Dell Wyse 5212 21.5" AIO Thin Client W11B
| <!--IDE-->{{N/A}}
| <!--SATA-->Sata
| <!--Gfx-->R3 out from DP or vga
| <!--Audio-->HDAudio
| <!--USB-->USB2
| <!--Ethernet-->Realtek
| <!--Test Distro-->
| <!--Comments-->2015 64bit slow atom like dual core AMD G-T48E 1.4 GHz - dell type round ac needed 90W 19.5V 4.62A - 21 inch 1080p screen -
|-
| <!--Name-->LG 24CK560N-3A 24' All-in-One Thin Client Monitor, 27CN650N-6N 27CN650W-AC 27', 34CN650W-AC 34',
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->2018 64bit AMD Prairie Falcon GX-212JJ
|-
| <!--Name-->CompuLab fit-PC4 fitPC4 4x 2Ghz AMD || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet-->{{no|Intel}} || <!--Test Distro--> || <!--Comments-->2018 64 - 2x DDR4 sodimm -
|-
| <!--Name-->IGEL Hedgehog M340C UD3 thin client
*2016 V1.0 AMD GX-412HC 1.2GHz-1.6GHz Radeon R3E, normal bios DEL for Bios or F12 boot selector
*2018 AMD GX-424CC 2.4GHz, Radeon R5E, UEFI hit DEL and choose boot or SCU icon
| <!--IDE-->{{N/A|}}
| <!--SATA-->SATA half slim version '''limited space''' with msata 8+18pins slot on earlier 2016 models
| <!--Gfx-->{{Maybe|VESA for Radeon R3E later R5E sea islands vulkan 1.2 with dvi dp output}}
| <!--Audio-->{{Yes|HD Audio with codec ?? (412) and Realtek ALC662-VD0-GR (424), both case speaker}}
| <!--USB-->amd usb3 boot usb2 with bios "disable usb" entry
| <!--Ethernet-->{{Yes|Realtek 8169 8111 (412) and (424)}}
| <!--Test Distro-->Aros One x86 USB 1.5, 1.8 and 2.2 but ArosOne 64bit 1.2 boot loop in usb2 port
| <!--Comments-->2016 64bit - 20cm/8" high case - 1 DDR3L sodimm slot max 8Gb 1600MHz - external '''12V 3A''' supply with 5.5mm/2.1mm coaxial - IDE like interface under base stand is for legacy addon ports RS232 parallel etc - capacitive touch power on - case opening 3 stages, remove stand and narrow black plastic strip from the back, top cover slides off to the back and lifts off -
|-
| <!--Name--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Test Distro--> || <!--Comments-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->10ZiG 6148v 6048qv (6100 series)
| <!--IDE-->{{N/A}}
| <!--SATA-->{{maybe| }}
| <!--Gfx-->
| <!--Audio-->{{maybe| }}
| <!--USB-->{{No| }}
| <!--Ethernet-->{{maybe| }}
| <!--Test Distro-->
| <!--Comments-->2018 64bit AMD Ryzen V1202B
|-
| <!--Name-->10ZiG 7111q
| <!--IDE-->{{N/A}}
| <!--SATA-->{{maybe| }}
| <!--Gfx-->
| <!--Audio-->{{maybe| }}
| <!--USB-->{{maybe| }}
| <!--Ethernet-->{{maybe| }}
| <!--Test Distro-->
| <!--Comments-->2019 64bit AMD Ryzen R2514 2.1 GHz -
|-
| <!--Name-->Shuttle DA320
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->R3 R5
| <!--Audio-->HD Audio with ALC662 codec
| <!--USB-->{{maybe| }}
| <!--Ethernet-->dual realtek 1GbE 8111H
| <!--Test Distro-->
| <!--Opinion-->2017 64bit AMD 2200G 2400G - Robust metal 1.3-liter case - A320 chipset DDR4 - 19V 6.32A DC PSU -
|-
| <!--Name-->IGEL UD7 H850C around december 2019 '''AMD Secure Processor''' is a built-in dedicated security system that checks if the BIOS has a valid signature and thus secures the next step in the boot process. This ensures that only devices with a signed BIOS will boot
| <!--IDE-->{{N/A}}
| <!--SATA-->None but 8gb emmc
| <!--Gfx-->Vega 3
| <!--Audio-->HD Audio with Realtek ALC897 or ALC888S codec
| <!--USB-->USB 3.2 and 2.0
| <!--Ethernet-->1GbE
| <!--Test Distro-->
| <!--Comments-->2018 64bit - AMD Ryzen™ Dual-Core 10W TDP - 2 DDR4 sodimms slots max 16Gb - 12V 4A psu - 2x DisplayPort 1.2 no dvi or hdmi - Intel® 9260 or SparkLAN WNFT-238AX wifi - 1x rear serial Prolific PL2303 chipset - locked down components and very limited expansion options
|-
| <!--Name-->IGEL UD7 H860C - '''AMD Secure Processor''' is a built-in dedicated security system that checks if the BIOS has a valid signature and thus secures the next step in the boot process. This ensures that only devices with a signed BIOS will boot
| <!--IDE-->{{N/A}}
| <!--SATA-->None but 8gb emmc
| <!--Gfx-->Vega 3
| <!--Audio-->HD Audio with Realtek ALC897 or ALC888S codec
| <!--USB-->USB 3.2 and 2.0
| <!--Ethernet-->1GbE
| <!--Test Distro-->
| <!--Comments-->2018 64bit - AMD Ryzen™ Dual-Core 10W TDP - 2 DDR4 sodimms slots max 16Gb - 12V 4A psu - 2x DisplayPort 1.2 no dvi or hdmi - Intel® 9260 or SparkLAN WNFT-238AX wifi - 1x rear serial Prolific PL2303 chipset - locked down components and very limited expansion options
|-
| <!--Name-->IGEL UD3 M350C (UEFI issues)
| <!--IDE-->{{N/A}}
| <!--SATA-->None but 8gb emmc
| <!--Gfx-->Vega 3
| <!--Audio-->HD Audio with Realtek ALC897 or ALC888S codec
| <!--USB-->USB 3.2 and 2.0
| <!--Ethernet-->1GbE
| <!--Test Distro-->
| <!--Comments-->2018 64bit - AMD Ryzen™ R R1505G Dual-Core 10W TDP - 2 DDR4 sodimms slots max 16Gb - 12V 4A psu - 2x DisplayPort 1.2 no dvi or hdmi - Intel® 9260 or SparkLAN WNFT-238AX wifi - 1x rear serial Prolific PL2303 chipset - locked down components and very limited expansion options
|-
| <!--Name-->IGEL UD7 H860C AMD Ryzen V1605B Thin Client - '''AMD Secure Processor''' is a built-in dedicated security system that checks if the BIOS has a valid signature and thus secures the next step in the boot process. This ensures that only devices with a signed BIOS will boot
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HDAudio
| <!--USB-->{{maybe| }}
| <!--Ethernet-->1GbE
| <!--Test Distro-->
| <!--Comments-->2020 AMD Ryzen™ Embedded V1605B 2 – 3.6 GHz (Quad-Core) - 12v 5A psu - up to 16GB RAM DDR4 - locked down components and very limited expansion options
|-
| <!--Name-->Gigabyte Brix Barebone Mini PC BSRE-1605
| <!--IDE-->{{N/A}}
| <!--SATA-->2 M.2
| <!--Gfx-->Vega 8
| <!--Audio-->HD Audio ALC269 codec
| <!--USB-->USB3
| <!--Ethernet-->2 GbE
| <!--Test Distro-->
| <!--Comments-->2020 64bit AMD Ryzen V1605B - 2 DDR4 sodimm slots
|-
| <!--Name-->MINISFORUM Deskmini UM250 Mini PC
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->{{maybe| }}
| <!--Ethernet-->{{maybe| }}
| <!--Test Distro-->
| <!--Comments-->2020 64bit AMD Ryzen V1605B -
|-
| <!--Name-->T-Bao MN25 Mini PC 2500U
| <!--IDE-->{{N/A| }}
| <!--SATA-->{{Unk|Intel NVMe}}
| <!--Gfx-->{{No|VESA Radeon Vega 8}}
| <!--Audio-->{{Unk| }}
| <!--USB-->{{maybe|USB 3}}
| <!--Ethernet-->{{Yes|Realtek PCIe 1GbE}}
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->Atari VCS || <!--IDE-->{{N/A}} || <!--SATA--> || <!--Gfx-->{{maybe|Vesa 2D for AMD Vega 3}} || <!--Audio-->{{unk|HDAudio with ALC codec}} || <!--USB-->{{maybe|USB3 USB 3.2 Gen 2 front and 3 usb2 rear }} || <!--Ethernet-->rtl8169 Realtek RTL8111H || <!--Test Distro--> || <!--Comments-->2021 64bit Ryzen Embedded R1606G - 2 ddr4 sodimm slots - TPM 2.0 -
|-
| <!--Name-->Minis Forum M200 Silver Athlon M300 3300U
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->Vega 8
| <!--Audio-->
| <!--USB-->{{maybe|USB 3.1 gen 1 and 2}}
| <!--Ethernet-->{{No|Realtek PCIe 2.5G}}
| <!--Test Distro-->
| <!--Comments-->2021 64bit
|-
| <!--Name-->Minis Forum DeskMini UM300 3300U, UM350 DMAF5 3550H, UM370 and UM700 with 3750H
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->Vega 8
| <!--Audio-->
| <!--USB-->{{maybe|USB 3.1 gen 1 and 2}}
| <!--Ethernet-->{{No|Realtek PCIe 2.5G}}
| <!--Test Distro-->
| <!--Comments-->2021 64bit
|-
| <!--Name-->MinisForum X300 with AMD 3400G
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->Vega 8
| <!--Audio-->
| <!--USB-->{{maybe|USB 3.1 gen 1 and 2}}
| <!--Ethernet-->{{No|Realtek PCIe 2.5G}}
| <!--Test Distro-->
| <!--Comments-->2021 64bit
|-
| <!--Name-->Beelink SER3 GTR4
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->AMD Vega 3 or 10
| <!--Audio-->HD Audio with codec
| <!--USB-->{{maybe|USB3}}
| <!--Ethernet-->Realtek RJ45 1GbE
| <!--Test Distro-->
| <!--Comments-->2020 64bit 3200u or 3750h
|-
| <!--Name-->AsRock DeskMini X300
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->2020 Ryzen 7 Pro 4750G 5600G
|-
| <!--Name-->MinisForum Besstar Tech X400 with AMD 4650G
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->AMD
| <!--Audio-->
| <!--USB-->{{maybe|USB 3.1 gen 1 and 2}}
| <!--Ethernet-->{{No|Realtek PCIe 2.5G}}
| <!--Test Distro-->
| <!--Comments-->2021 64bit - MP1584 - kill NB679 NB679GD-Z=ALTM=AL** QFN-12 IC-REG-DL buck/linear synchronous chip IC with bad usb cables -
|-
| <!--Name-->Beelink SER4 GTR5
| <!--IDE-->{{N/A}}
| <!--SATA-->cant boot from installed SSDs unless its an M.2
| <!--Gfx-->AMD Vega
| <!--Audio-->
| <!--USB-->{{maybe|USB3}}
| <!--Ethernet-->1 or 2 Realtek
| <!--Test Distro-->
| <!--Comments-->2021 64bit 4700U or 5900HX
|-
| <!--Name-->MSI PRO DP20Z 5M Mini PC - AMD Ryzen 5 5300G
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->{{No|Realtek 2.5G LAN RTL8125}}
| <!--Test Distro-->
| <!--Comments-->2018-2021 R3 3200G Vega 8 - R5 3400G Vega 11 - Ryzen 5 5600G Vega 7 - Athlon 3000G
|-
| <!--Name-->Minisforum UM450
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->Vega
| <!--Audio-->HDaudio
| <!--USB-->USB3
| <!--Ethernet-->{{No|Realtek 2.5G LAN RTL8125}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit - Ryzen 4500U -
|-
| <!--Name-->Gigabyte Brix
GB-BRR7-4800 (rev. 1.0)
GB-BRR7-4700 (rev. 1.0)
GB-BRR5-4500 (rev. 1.0)
GB-BRR3-4300 (rev. 1.0)
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->{{maybe|}}
| <!--Ethernet-->Realtek 2.5G LAN RTL8125
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->ASUS PN50 mini PC AMD Ryzen 7 4700U
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Vega
| <!--Audio-->HD audio with codec
| <!--USB-->{{maybe|3.1 gen1}}
| <!--Ethernet-->{{No|realtek 2.5GbE}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit -
|-
| <!--Name-->ASUS PN51-S1 mini PC AMD Ryzen 7 5700U
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->Vega thru dp or hdmi
| <!--Audio-->HD audio with codec
| <!--USB-->{{maybe|3.1 gen1}}
| <!--Ethernet-->{{No|realtek 2.5GbE}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit - 19v or 19.5v 90w psu round barrel - 32gb ddr4 sodimm -
|-
| <!--Name-->Minis Forum Bessstar Tech EliteMini B550
| <!--IDE-->{{N/A}}
| <!--SATA-->1 x 2.5in and 2 nvme
| <!--Gfx-->Vega 8
| <!--Audio-->
| <!--USB-->{{maybe|4 usb3.1}}
| <!--Ethernet-->{{No|realtek 8125 2.5GbE}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit AMD 4700G 5700G desktop cpu - 19v 120w round barrel -
|-
| <!--Name-->ASRock A300 and later X300 Mini itx with Desktop AM4 socket
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->Vega
| <!--Audio-->HDAudio
| <!--USB-->USB3
| <!--Ethernet-->1GbE
| <!--Test Distro-->
| <!--Comments-->2022 64bit - choose your own AMD APU GE 35w based - DDR4 -
|-
| <!--Name-->ASRock 4x4 BOX-5800U Zen 3-based AMD Ryzen 7 5800U 15W -
| <!--IDE-->{{N/A}}
| <!--SATA-->m.2 slot gen 3 and sata
| <!--Gfx-->vega
| <!--Audio-->HD audio with codec
| <!--USB-->{{maybe|}}
| <!--Ethernet-->{{Maybe|1 GbE and 1 2.5GbE}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit - WiFi 6E -
|-
| <!--Name-->Topton S500+ Gaming Mini PC - Morefine S500+ 5900HX Mini PC - Minisforum UM590 Ryzen AMD Zen3 Ryzen 9 5900HX 7 5800H 45W -
| <!--IDE-->{{N/A}}
| <!--SATA-->2 nvme 1 sata
| <!--Gfx-->Vega 8 thru HDMI 2.0, DP 1.4, and USB type-C
| <!--Audio-->
| <!--USB-->{{maybe|usb3.1}}
| <!--Ethernet-->{{Maybe|1 realtek rtl 8111h and 1 8125 2.5GbE bg-cg}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit - 2 sodimm ddr4 3200MHz -
|-
| <!--Name-->Chuwi RzBox later Ubox
| <!--IDE-->{{N/A}}
| <!--SATA-->2 nvme
| <!--Gfx-->Vega 8 later to 660m vga, dp, hdmi
| <!--Audio-->HDaudio
| <!--USB-->{{maybe|usb-c usb2}}
| <!--Ethernet-->dual gigabit
| <!--Test Distro-->
| <!--Comments-->2022 2025 64bit amd 5800h 4800h 6600H - 90w psu -
|-
| <!--Name-->Beelink Mini PC SER5, Trigkey AZW S5, Asus PN52, ZHI BEN MX-JB560,
| <!--IDE-->{{N/A}}
| <!--SATA-->PCIe3 M.2 2280 nvme
| <!--Gfx-->AMD Vega 6 with 1 or 2 hdmi
| <!--Audio-->HDAudio
| <!--USB-->{{maybe|USB3.0}}
| <!--Ethernet-->{{Maybe|Realtek 1GbE}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit 5500U 5560u 5600U to PRO 5600H 5800H - 19v 3.42W 65W psu -
|-
| <!--Name-->NIPOGI Kamrui ACEMAGICIAN AM06PRO Dual LAN Mini PC AMD Ryzen 7 5800U, 5 5500U or 5600U/5625U
| <!--IDE-->{{N/A}}
| <!--SATA-->M.2 and 2.5in sata
| <!--Gfx-->Vega 7
| <!--Audio-->HDAudio
| <!--USB-->USB3
| <!--Ethernet-->2 GbE ports
| <!--Test Distro-->
| <!--Comments-->2022 64bit - plastic build - 90w usb-c power - loud at 25W setting -
|-
| <!--Name-->Topton FU02 Fanless Mini PC AMD Ryzen 7 4700U 5600U 5800U 8 Core 16 Threads
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe and 2.5in sata
| <!--Gfx-->Vega
| <!--Audio-->HDAudio
| <!--USB-->4 3.0 with 2 2.0
| <!--Ethernet-->2 x 1G
| <!--Test Distro-->
| <!--Comments-->2022 64 - 2 ddr4 sodimm slots - fanless with copper cube from cpu to metal sheet which gets warm
|-
| <!--Name-->Xuu XR1 Lite (5300u 4c 8t) PRO 5400U MAX 5600U
| <!--IDE-->{{N/A}}
| <!--SATA-->1 NVMe 2242 slot
| <!--Gfx-->Vega 6
| <!--Audio-->HDAudio
| <!--USB-->2 3.0
| <!--Ethernet-->1G
| <!--Test Distro-->
| <!--Comments-->2022 64 quiet fan - very small case no expansions -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->MINISFORUM UM690 Venus Series
| <!--IDE-->{{N/A}}
| <!--SATA-->pcie4 nvme 2280 and 1 sata3 2.5in
| <!--Gfx-->680m RNDA2 12CU with 2 hdmi
| <!--Audio-->HD Audio with codec
| <!--USB-->{{maybe|1 USB4 and 2 USB3.2}}
| <!--Ethernet-->{{No|2.5G LAN}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit 6900hx 8C16T - 2 ddr5 sodimmm - 19v ???W -
|-
| <!--Name-->Beelink Mini PC GTR6
| <!--IDE-->{{N/A}}
| <!--SATA-->PCIe4
| <!--Gfx-->AMD 680M RDNA2
| <!--Audio-->
| <!--USB-->USB3.2
| <!--Ethernet-->{{No|Realtek 2.5GbE or intel i225}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit Ryzen 9 6900HX Zen3+ and a 2gb Radeon 680m 12CU ddr5 sodimm - 19v 120w psu -
|-
| <!--Name-->Asus PN53, Geekom AS 6,
| <!--IDE-->{{N/A}}
| <!--SATA-->pcie gen4 nvme and ata 2.5in
| <!--Gfx-->680m RNDA2 12CU with 2 hdmi and 1 dp
| <!--Audio-->HD Audio with codec
| <!--USB-->{{maybe|2 usb-c, 2 USB2.1 and 3 USB3.2}}
| <!--Ethernet-->{{No|1G LAN}}
| <!--Test Distro-->
| <!--Comments-->2022 64bit 6900hx 8C 16T - 2 slots ddr5 sodimmm (64Gb max) - 19v 120W - 4 retained base screws beware ribbon cable -
|-
| <!--Name-->Micro Computer (HK) Tech Ltd MinisForum UM773 Lite later UM750L slim, GMKtec K2 Mini PC
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe PCIe4.0
| <!--Gfx-->RDNA
| <!--Audio-->HD Audio
| <!--USB-->USB4
| <!--Ethernet-->2.5GbE
| <!--Test Distro-->
| <!--Comments-->2023 2025 64bit - AMD Zen 3+ (8c 16t) Ryzen 7 7735HS, 7840HS and AMD Ryzen 9 7845HX AMD Ryzen™5 7545U (6c12t) - 19v up to 120w ac adapter - ddr5 sodimm 4800Mhz -
|-
| <!--Name-->[https://www.asrockind.com/en-gb/4x4 ASrock 4x4 SBC]
| <!--IDE-->{{N/A}}
| <!--SATA-->sata or nvme
| <!--Gfx-->Vega or 680M
| <!--Audio-->HDAudio
| <!--USB-->USB3 or USB4
| <!--Ethernet-->Realtek 1GbE or intel 2.5GbE
| <!--Test Distro-->
| <!--Comments-->2022 64bit -
|-
| <!--Name-->Beelink Mini PC GTR7 SER7
| <!--IDE-->{{N/A}}
| <!--SATA-->PCIe4 nvme 2280 up to 2Tb
| <!--Gfx-->AMD 780M RDNA3 GPU output on hdmi and dp
| <!--Audio-->HDAudio
| <!--USB-->USB3.2
| <!--Ethernet-->{{No|1 or 2 2.5GbE}}
| <!--Test Distro-->
| <!--Comments-->2023 64bit AMD Phoenix APUs Zen 4 CPU Ryzen 7 7840HS or 9 7940HS (8c 16t) - 19v 5.26A 120w psu - del dios setup f7 choose boot - 2 usb-c on back - up to 64gb via 2 ddr5 sodimm slots -
|-
| <!--Name-->MINISFORUM BD770i Ryzen 7 7745HX (8c16t) or BD795i SE 790i 9 7945HX (16c32t) or F1FXM_MB_V1.1 795M LGA1700 mATX
| <!--IDE-->{{N/A}}
| <!--SATA-->2 NVMe
| <!--Gfx-->Radeon 610m over usb-c, dp or hdmi
| <!--Audio-->HDAudio with codec
| <!--USB-->USB3 with 2 rear USB2
| <!--Ethernet-->Realtek 2.5G
| <!--Test Distro-->
| <!--Opinion-->2024 mini-ITX M/B is the first MoDT (Mobile on Desktop) with soldered AMD CPU - 2 dual PCIe4.0 M.2 slots - 2 ddr5 sodimm slots max 5200Mhz - 8pin cpu power - battery not easily replaceable underneath -
|-
| <!--Name-->Minisforum ms-a1 MS-a2
* 5700G to 8700G apu
* 9955HX
| <!--IDE-->{{N/A}}
| <!--SATA-->2 nvme
| <!--Gfx-->AMD 610M
| <!--Audio-->HDAudio
| <!--USB-->USB3
| <!--Ethernet-->dual 2.5GbE
| <!--Test Distro-->
| <!--Comments-->2024 64bit - 19v ?A round barrel jack - 2 ddr5 so-dimm slots -
|-
| <!--Name-->AOOSTAR GT68
| <!--IDE-->{{N/A}}
| <!--SATA-->Nvme
| <!--Gfx-->680m
| <!--Audio-->HDaudio
| <!--USB-->USB3
| <!--Ethernet-->2 2.5Gb
| <!--Test Distro-->
| <!--Comments-->2025 Ryzen7 Pro 6850H,
|-
| <!--Name-->NextSBC 7840HS
| <!--IDE-->{{N/A}}
| <!--SATA-->Nvme
| <!--Gfx-->AMD 780M 12CU
| <!--Audio-->HDAudio with codec
| <!--USB-->USB4 and USB 3.2
| <!--Ethernet-->2 GbE
| <!--Test Distro-->
| <!--Comments-->2025 64bit - 32Gb soldered -
|-
| <!--Name-->Firebat A6 R7 6800H
| <!--IDE-->{{N/A}}
| <!--SATA-->nvme
| <!--Gfx-->AMD 680M
| <!--Audio-->HDaudio
| <!--USB-->USB3
| <!--Ethernet-->rtl8169
| <!--Test Distro-->
| <!--Comments-->2025 64bit -
|-
| <!--Name-->Minisforum UM760 7640HS
| <!--IDE-->{{N/A}}
| <!--SATA-->nvme
| <!--Gfx-->AMD 760
| <!--Audio-->HDaudio
| <!--USB-->USB4
| <!--Ethernet-->rtl8169 and 2.5Gb
| <!--Test Distro-->
| <!--Comments-->2025 64bit -
|-
| <!--Name-->Peladn WO4 Mini PC
| <!--IDE-->{{N/A}}
| <!--SATA-->nvme
| <!--Gfx-->AMD 760
| <!--Audio-->HDaudio
| <!--USB-->USB3
| <!--Ethernet-->rtl8169
| <!--Test Distro-->
| <!--Comments-->2025 64bit 7640HS - 19v 5.26A 120W -
|-
| <!--Name-->BossGame M4 Neo 7840HS
| <!--IDE-->{{N/A}}
| <!--SATA-->nvme
| <!--Gfx-->AMD 780
| <!--Audio-->HDaudio
| <!--USB-->USB3
| <!--Ethernet-->rtl8169
| <!--Test Distro-->
| <!--Comments-->2025 64bit -
|-
| <!--Name-->Minisforum UM870 || <!--IDE-->{{N/A}} || <!--SATA-->NVme || <!--Gfx-->AMD 780M || <!--Audio-->HDaudio || <!--USB-->USB3 || <!--Ethernet-->2.5GbE || <!--Test Distro--> || <!--Comments-->2025 64bit -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || IDE || SATA || Gfx || Audio || USB || Ethernet || Test Distro || Comments
|-
| <!--Name-->GEEKOM A8 Max AI Mini PC AMD Ryzen™ 9 8945HS, Ryzen™ 7 8845HS or 8745HS
| <!--IDE-->{{N/A}}
| <!--SATA-->NVme
| <!--Gfx-->AMD 780M
| <!--Audio-->HDAudio with codec
| <!--USB-->{{maybe| USB4}}
| <!--Ethernet-->{{No|Dual 2.5 G Ethernet ports}}
| <!--Test Distro-->
| <!--Comments-->2025 64bit -
|-
| <!--Name-->Beelink SER 9
| <!--IDE-->{{N/A}}
| <!--SATA-->NVme
| <!--Gfx-->Radeon 890M
| <!--Audio-->HDaudio
| <!--USB-->USB4
| <!--Ethernet-->{{No| }}
| <!--Test Distro-->
| <!--Comments-->2025 64bit - Ryzen AI HX 370 strix point -
|-
| <!--Name-->GMKtec EVO-X2 mini pc
| <!--IDE-->{{n/a}}
| <!--SATA-->nvme
| <!--Gfx-->AMD 8060S iGPU RDNA3.5 RADV GFX1151
| <!--Audio-->HDaudio
| <!--USB-->USB4
| <!--Ethernet-->{{No| }}
| <!--Test Distro-->
| <!--Comments-->2025 64bit - amd ryzen AI Max+ 395 (16c32t) strix halo -
|-
| <!--Name-->BosGame M5
| <!--IDE-->{{n/a}}
| <!--SATA-->nvme
| <!--Gfx-->AMD 8060S iGPU RDNA3.5 RADV GFX1151
| <!--Audio-->HDaudio
| <!--USB-->USB4
| <!--Ethernet-->{{No| }}
| <!--Test Distro-->
| <!--Comments-->2025 64bit - amd ryzen AI Max+ 395 (16c32t) -
|-
| <!--Name-->Steam Machine GabeCube
| <!--IDE-->{{N/A}}
| <!--SATA-->nvme
| <!--Gfx-->semi-custom 1080p amd 7600m like with 28cu 8gb ddr6 gddr 10GFlops
| <!--Audio-->hdaudio with codec
| <!--USB-->usb3
| <!--Ethernet-->{{maybe|rtl8169}}
| <!--Test Distro-->
| <!--Comments-->2026 64bit amd 1772 hawk point2 6c12t zen4 avx512 FP7 socket with FCH51 - 16gb ddr5 -
|-
| <!--Name-->AMD Ryzen AI Halo Developer Platform Workstation
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->2026 64bit - amd ryzen AI Max+ 395 (16c32t) -
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|}
===Server Systems===
[[#top|...to the top]]
====IBM====
{| class="wikitable sortable" width="100%"
! width="15%" |Name
! width="5%" |IDE
! width="5%" |SATA
! width="10%" |Integrated Gfx
! width="10%" |Audio
! width="10%" |USB
! width="10%" |Ethernet
! width="15%" |Test Distro
! width="20%" |Comments
|-
| <!--Name-->xSeries 206m
| <!--IDE-->{{yes}}
| <!--SATA-->{{yes}}
| <!--Gfx-->{{Maybe|ATI RN50b (VESA only)}}
| <!--Audio-->{{n/a}}
| <!--USB-->{{yes|USB 2.0 (UHCI/EHCI)}}
| <!--Ethernet-->{{no|Broadcom}}
| <!--Test Distro-->Nightly Build 2014-09-27
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
|}
===Motherboard===
[[#top|...to the top]]
* Late 2002, USB2.0 added and slightly better AROS sound support (AC97) appeared
* 2002-2005 and still, to a limited extent, ongoing [http://en.wikipedia.org/wiki/Capacitor_plague bad capacitors]
* Late 2003, ATX PSUs moved from 5V to 12v rails (extra 4pin on motherboard for CPU)
* Late 2005, PCI Express replaced AGP and HDAudio replaced AC97
* Late 2007, ATX PSUs added extra 12V PCI-E connectors and 4+4pin for CPUs
* Late 2010, USB3.0 appears on motherboards or needing a PCI-E motherboard slot
* Late 2014 Hardware USB2 removed from USB3 chipsets
====AMD Sockets====
[[#top|...to the top]]
=====Socket 7 (1997/1999)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->1997 VT82C586B (QFP-208) is the first from VIA with DDMA
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2000 VT82C686 has close to excellent DDMA support
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->SiS 5581/5582
SiS 5591/5595
SiS 530 /5595
SiS 600/5595
SiS 620/5595
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|}
=====Socket A 462 (2001/4)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->[http://www.sharkyextreme.com/hardware/motherboards/article.php/2217921/ABIT-NF7-S-nForce2-Motherboard-Review.htm Abit NF7-S]
| <!--Chipset-->nForce 2
| <!--ACPI-->
| <!--IDE-->2 ports
| <!--SATA-->SIL 3112A
| <!--Gfx-->
| <!--Audio-->{{yes|ALC650 AC97 (Nvidia APU)}}
| <!--USB-->{{yes}}
| <!--Ethernet-->Realtek RTL 8201LB
| <!--Opinion-->Firewire Realtek RTL8801B
|-
| <!--Name-->ASRock K7NF2
| <!--Chipset-->nforce2 ultra 400
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{yes|AGP 8x}}
| <!--Audio-->CMedia CMI 9761A AC'97
| <!--USB-->{{yes}}
| <!--Ethernet-->Realtek 8201
| <!--Opinion-->
|-
| <!--Name-->ASRock K7S8X
| <!--Chipset-->SIS 746FX
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->
| <!--Gfx-->{{yes|AGP 8x}}
| <!--Audio-->{{yes|AC'97 cmedia}}
| <!--USB-->{{maybe|USB2.0 works but does not boot}}
| <!--Ethernet-->{{yes|SiS900}}
| <!--Opinion-->
|-
| <!--Name-->ASRock K7S41GX
| <!--Chipset-->SIS 741GX + DDR 333
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->
| <!--Gfx-->{{maybe|onboard sis does not work with vga or vesa but AGP 8x works}}
| <!--Audio-->{{yes|AC97 SIS 7012}}
| <!--USB-->{{maybe|USB2.0 works but does not boot}}
| <!--Ethernet-->{{yes|SiS 900}}
| <!--Opinion-->works ok
|-
| <!--Name-->[http://www.asus.com ASUS A7N8X]
| <!--Chipset-->nForce2
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->Silicon Image Sil 3112A
| <!--Gfx-->1 AGP slot
| <!--Audio-->{{yes|ac97 ALC650}}
| <!--USB-->{{yes|ehci USB2.0}}
| <!--Ethernet-->{{yes|rtl8201BL - nforce}}
| <!--Opinion-->first total support for AROS in 2004/5 - damocles and M Schulz
|-
| <!--Name-->Biostar M7NCD
| <!--Chipset-->nForce2 Ultra 400
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->{{yes|ALC650 AC97}}
| <!--USB-->
| <!--Ethernet-->{{yes|RTL8201BL}}
| <!--Opinion-->
|-
| <!--Name-->Chaintech 7NJS Ultra Zenith
| <!--Chipset-->nForce2 Ultra 400
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->Promise PDC 20376
| <!--Gfx-->
| <!--Audio-->{{yes|CMI8738}}
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->DFI Lanparty NF2 Ultra
| <!--Chipset-->nForce2 Ultra 400
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->{{no|via ac97 VT1616}}
| <!--USB-->
| <!--Ethernet-->RTL8139C
| <!--Opinion-->
|-
| <!--Name-->ECS N2U400-A
| <!--Chipset-->nForce2 Ultra 400
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->{{no|Cmedia 9379A AC97}}
| <!--USB-->{{yes|usb2.0}}
| <!--Ethernet-->{{no|VIA VT6103L}}
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA7N400L
| <!--Chipset-->nForce2 Ultra 400
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->1 AGP 8x slot
| <!--Audio-->{{yes|AC97 ALC650}}
| <!--USB-->2 USB2.0
| <!--Ethernet-->RTL8100C
| <!--Opinion-->
|-
| <!--Name-->[http://www.gigabyte.lv/products/page/mb/ga-8siml Gigabyte 8SIML]
| <!--Chipset-->SIS 650
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->
| <!--Gfx-->{{maybe|VESA}}
| <!--Audio-->{{yes|AC'97}}
| <!--USB-->{{maybe|working}}
| <!--Ethernet-->{{no|Realtek RTL8100L LAN}}
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Matsonic [http://www.elhvb.com/mobokive/archive/matsonic/manual/index.html Manuals] MS83708E
| <!--Chipset-->SIS730
| <!--ACPI-->
| <!--IDE-->{{yes|SiS 5513}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{maybe|sis 305 no support use VESA}}
| <!--Audio-->{{no|sis7018}}
| <!--USB-->{{no|SiS 7001 USB 1.1 only}}
| <!--Ethernet-->{{yes|SIS900}}
| <!--Opinion-->little support
|-
| <!--Name-->[http://h10025.www1.hp.com/ewfrf/wc/document?docname=bph07585&lc=en&dlc=en&cc=us&dest_page=softwareCategory&os=228&tool=softwareCategory&query=Pavilion%20742n&product=89232 MSI MS-6367 HP 722n 742n (Mambo) (2001/2)]
| <!--Chipset-->Nvidia nforce 220D (2001/2)
| <!--ACPI-->
| <!--IDE-->{{Yes}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->GeForce2 AGP works 2D nouveau only
| <!--Audio-->{{Maybe|AC97 ADI 1885 no volume control on Units 0-3}}
| <!--USB-->{{Yes|4 USB1.1 ports AMD based - front 2 ports iffy}}
| <!--Ethernet-->{{No|nForce}}
| <!--Opinion-->Tested 20th Aug 2012 NB
|-
| <!--Name-->MSI K7N2 [http://us.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=546/ Delta ILSR] Delta-L
| <!--Chipset-->nForce2 (2002/3)
| <!--ACPI-->
| <!--IDE-->{{yes|Primary & Secondary ports}} IDE Tertiary port (RAID)
| <!--SATA-->2 ports (RAID)
| <!--Gfx-->{{yes|when fitted with an agp video card}}
| <!--Audio-->{{yes|ac97 ALC650}}
| <!--USB-->{{yes}}
| <!--Ethernet-->{{yes|rtl8201BL - nforce}}
| <!--Opinion-->runs AROS well. Tested with Icaros 1.2.3
|-
| <!--Name-->MSI K7N2 Delta2-LSR Platinum
| <!--Chipset-->nForce2 (2002/3)
| <!--ACPI-->
| <!--IDE-->{{yes|Primary & Secondary ports}} IDE Tertiary port (RAID)
| <!--SATA-->2 ports (RAID)
| <!--Gfx-->{{yes|when fitted with an agp video card}}
| <!--Audio-->{{No|ac97 ALC655}}
| <!--USB-->{{yes}}
| <!--Ethernet-->{{yes|rtl8201BL - nforce}}
| <!--Opinion-->runs AROS well. Tested with Icaros 1.2.3
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->[http://www.sharkyextreme.com/hardware/motherboards/article.php/2204281/Soltek-SL-75MRN-L-nForce2-Motherboard-Review.htm Soltek 75FRN-L]
| <!--Chipset-->nForce2
| <!--ACPI-->
| <!--IDE-->{{yes|2 ports}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->AGP slot
| <!--Audio-->{{yes|ALC650}}
| <!--USB-->{{yes|2 usb2.0}}
| <!--Ethernet-->{{yes|Realtek RTL8201BL}}
| <!--Opinion-->good support
|-
| <!--Name-->[http://www.3dvelocity.com/reviews/mach4nf2ultra/mach4.htm XFX Pine Mach4 nForce2 Ultra 400]
| <!--Chipset-->nForce2
| <!--ACPI-->
| <!--IDE-->{{yes|3 ports}}
| <!--SATA-->{{maybe|2 ports VIA VT6240}}
| <!--Gfx-->1 AGP 8x slot
| <!--Audio-->{{yes|ALC650}}
| <!--USB-->{{yes|2 USB2.0}}
| <!--Ethernet-->{{yes|RTL8201BL}}
| <!--Opinion-->some support
|-
| <!--Name-->ASUS A7V266
| <!--Chipset-->via KT266A + 8233
| <!--ACPI-->
| <!--IDE-->{{no|issues}}
| <!--SATA-->
| <!--Gfx-->1 AGP slot
| <!--Audio-->AC97 with AD1980 codec
| <!--USB-->via 8233
| <!--Ethernet-->VIA VT6103
| <!--Opinion-->2002 issues with booting
|-
| <!--Name-->Asus A7V8X-X
| <!--Chipset-->VIA KT400
| <!--ACPI-->
| <!--IDE-->{{unk| }}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{yes|agp}}
| <!--Audio-->{{unk|AC97 with ADI AD1980 codec}}
| <!--USB-->{{unk|VIA 8235}}
| <!--Ethernet-->{{unk|Realtek 10/100}}
| <!--Opinion-->2003 not booting for Socket A for AMD Barton/Thoroughbred/Athlon XP/Athlon/Duron 2.25+ GHz CPU - 3 x DDR DIMM Sockets Max. 3 GB -
|-
|}
=====Socket 754 (2004/5)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Abit NF8-V2
| <!--Chipset-->nForce3 250GB (2004/5)
| <!--ACPI-->
| <!--IDE-->{{yes|2 ports}}
| <!--SATA-->{{maybe|2 ports}}
| <!--Gfx-->1 AGP slot x8
| <!--Audio-->ALC658 ac97
| <!--USB-->{{yes|2 USB2.0}}
| <!--Ethernet-->{{no|RTL8201C}}
| <!--Opinion-->a little support but no Firewire VIA VT6306
|-
| <!--Name-->Biostar CK8 K8HNA Pro
| <!--Chipset-->nforce3 150
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->VT6420 thru ide legacy only
| <!--Gfx-->
| <!--Audio-->{{no|AC97 ALC655}}
| <!--USB-->
| <!--Ethernet-->Realtek RTL8110S
| <!--Opinion-->Firewire VT6307 no
|-
| <!--Name-->[http://www.extremeoverclocking.com/reviews/motherboards/Chaintech_ZNF3-150_3.html Chaintech ZNF3-150 Zenith]
| <!--Chipset-->nforce3 150
| <!--ACPI-->
| <!--IDE-->2 ports
| <!--SATA-->{{maybe|Sli3114 SATA via IDE emul}}
| <!--Gfx-->1 AGP slot
| <!--Audio-->{{no|VIA Envy24PT (VT1720) + VT1616}}
| <!--USB-->{{Maybe|2 USB2.0}}
| <!--Ethernet-->{{no|Broadcom GbE 5788}}
| <!--Opinion-->very little support needs PCI cards but no Firewire VIA VT6306
|-
| <!--Name-->DFI Lanparty UT nF3 250GB
| <!--Chipset-->nForce3 250gb
| <!--ACPI-->
| <!--IDE-->2 ports
| <!--SATA-->{{maybe|2 ports nForce3 and 2 Marvell SATA PHY}}
| <!--Gfx-->
| <!--Audio-->{{yes|AC97 ALC850}}
| <!--USB-->{{Maybe|2 USB2.0}}
| <!--Ethernet-->CK8S - Winfast NF3 250K8AA works and Marvell 88E1111 does not work
| <!--Opinion-->2005 some support but no Firewire VIA VT6307
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Gigabyte GA-K8N
| <!--Chipset-->NVIDIA nForce3 150
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->Realtek ALC658 AC97
| <!--USB-->
| <!--Ethernet-->Realtek RTL8100C
| <!--Opinion-->Firewire TI43AB23 no
|-
| <!--Name-->Gigabyte K8NNXP
| <!--Chipset-->nForce3 150
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->Sata sil3512
| <!--Gfx-->
| <!--Audio-->ALC658 AC97
| <!--USB-->
| <!--Ethernet-->RTl8110S
| <!--Opinion-->Firewire TI STB82AA2 no
|-
| <!--Name-->Gigabyte GA-K8NSNXP
| <!--Chipset-->nForce3 250GB
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->SiI 3512 CT128 Sata Sil3515
| <!--Gfx-->
| <!--Audio-->ALC850 AC97
| <!--USB-->
| <!--Ethernet-->{{No|Marvel 88E8001}}
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->MSI K8N Neo-FIS2R
| <!--Chipset-->nVIDIA NF3-250Gb
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->Realtek 7.1 AC'97 ALC850
| <!--USB-->
| <!--Ethernet-->{{No|Marvell 88E1111}}
| <!--Opinion-->
|-
| <!--Name-->[http://techreport.com/articles.x/5748/1 Shuttle AN50R]
| <!--Chipset-->nF3-150
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->Sil 3112
| <!--Gfx-->
| <!--Audio-->ALC650 AC97
| <!--USB-->
| <!--Ethernet-->Nvidia nF3 (10/100) Intel 82540EM Gigabit
| <!--Opinion-->Firewire VT6307 no
|-
| <!--Name--> Foxconn WinFast K8S755A
| <!--Chipset-->SiS755 + SiS964 (DDR333)
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio--> {{yes|AC97}}
| <!--USB-->
| <!--Ethernet--> {{yes|RTL8169}}
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket 939 (2005)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Asus A8N-LA GeForce 6150 LE
| <!--Chipset-->Geforce 6150 (MCP51) + nForce 430 (PC-3200)
| <!--ACPI-->
| <!--IDE-->{{yes|two ATA 133}}
| <!--SATA-->{{maybe|four 3.0GB/s SATAII ports}}
| <!--Gfx-->built in or PCI-E x16
| <!--Audio-->Realtek ALC883 HD Audio
| <!--USB-->6 USB2.0
| <!--Ethernet-->Realtek RTL 8201CL
| <!--Opinion-->
|-
| <!--Name-->Asus A8N-SLI Premium
| <!--Chipset-->NVidia
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{Yes|PCIe slot}}
| <!--Audio-->{{Yes|AC97}}
| <!--USB-->{{Maybe}}
| <!--Ethernet-->{{Yes|nForce LAN but not Marvell}}
| <!--Opinion-->Works well
|-
| <!--Name-->DFI nF4 Ultra-D LanParty - Diamond Flower International sold to BenQ group 2010
| <!--Chipset-->nF4
| <!--ACPI-->
| <!--IDE-->2 ports
| <!--SATA-->4 ports SATA 2
| <!--Gfx-->2 PCIe x16 slots
| <!--Audio-->AC97 with ALC850 codec
| <!--USB-->
| <!--Ethernet-->Dual Gigabit Ethernet, PCIe by Vitesse VSC8201 PHY nee Cicada 8201, PCI by Marvel 88E8001
| <!--Opinion-->2006 64bit - Four 184-pin DDR Dual-Channel Slots - 1 pci on Ultra, 2 pci on sli,
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus A8V E SE
| <!--Chipset-->VIA K8T890 +VT8237R CHIPSET ATX AMD Motherboard with Athlon 64 X2 / Athlon 64 FX / Athlon 64
| <!--ACPI-->{{N/A}}
| <!--IDE-->{{Yes}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{N/A}}
| <!--Audio-->{{Maybe}} AC97 driver using Realtek ALC850 codec
| <!--USB-->{{Yes}} USB 2.0 only
| <!--Ethernet-->{{No}} Marvell 88E8053
| <!--Opinion-->Good base but needs additional PCI cards added for better support
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->ASUS A8V Deluxe (2004)
| <!--Chipset-->VIA K8T800 Pro (DDR400)
| <!--ACPI-->
| <!--IDE-->Promise 20378 2 ports
| <!--SATA-->2 SATA2
| <!--Gfx-->
| <!--Audio-->{{no|VIA VT8233A 8235 8237 AC97}}
| <!--USB-->
| <!--Ethernet-->{{no|Marvell 88E8001 Gigabit}}
| <!--Opinion-->needs extra PCI cards
|-
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Test Distro-->
| <!--Comments-->
|-
| <!--Name-->AsRock 939Dual-SATA2
| <!--Chipset-->Ali Uli M1695 PCIe with M1567 AGP
| <!--ACPI-->
| <!--IDE-->2 ports
| <!--SATA-->1 Sata with JMicron JMB360 chip
| <!--Gfx-->1 pci-e and 1 agp
| <!--Audio-->AC97 with ALC850 codec
| <!--USB-->
| <!--Ethernet-->Realtek RTL8201CL PHY ULi 10/100
| <!--Opinion-->64bit pci-e and agp combo on board - 4 ddr slots -
|}
=====Socket AM2 (2006/8) and AM2+ (2007-2010) =====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-M61PME-S2 (rev. 2.x)
| <!--Chipset-->NVIDIA® GeForce 6100 / nForce 430 chipset
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{maybe|VESA 2d for vga}}
| <!--Audio-->{{yes|HDAudio Realtek ALC662 Audio Codec}}
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus M2N61-AR mini itx
| <!--Chipset-->NVIDIA nForce 430
| <!--ACPI-->
| <!--IDE-->1
| <!--SATA-->2
| <!--Gfx-->GeForce 6150SE via vga or 1 pci-e slot
| <!--Audio-->HD Audio with codec
| <!--USB-->Nvidia
| <!--Ethernet-->Nvidia
| <!--Opinion-->2006 32bit - 1 pci - 2 ddr2 dimm slots non-eec -
|-
| <!--Name-->asus m2n68-am se2
| <!--Chipset-->nvidia 630a 630/a MCP68SE
| <!--ACPI-->
| <!--IDE-->1 ports
| <!--SATA-->2 ports MCP61 chipset is SATA over IDE, not SATA over AHCI and reports subsystem as 0x1 IDE, not 0x6 SATA
| <!--Gfx-->{{Yes|nvidia 7025 2d and 3d thru vga}}
| <!--Audio-->{{Yes|hd audio with realtek alc662 codec}}
| <!--USB-->{{Yes| }}
| <!--Ethernet-->{{Yes|nForce chipset RTL 8201CP}}
| <!--Opinion-->2007 64bit Phenom IIX2, Athlon 64 LE X2, Sempron, and Phenom FX processors - ddr2 667Mhz ram max 4Gb -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-MA770-UD3 (rev. 1.0)
| <!--Chipset-->AMD 770 with SB700
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes| }}
| <!--Gfx-->pci-e
| <!--Audio-->{{yes|ALC888 codec }}
| <!--USB-->{{yes|USB2}}
| <!--Ethernet-->{{yes|rtl8169 8111C later 8111D}}
| <!--Opinion-->Good support for AM2+ / AM2 with 4 ddr2 ram - 4 x PCI Express x1, 2 x PCI slots - firewire T.I. TSB43AB23 chip no support -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus M3A32-MVP Deluxe
| <!--Chipset-->AMD 790FX RD790 + SB600
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->{{No|Marvell 88SE6121 SATA II}}
| <!--Gfx-->pci-e 1.1 support
| <!--Audio-->{{No|HD Audio ADI® AD1988}}
| <!--USB-->
| <!--Ethernet-->{{No|Marvell 88E8056}}
| <!--Opinion-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->ASROCK N68-S N68C-S
| <!--Chipset-->AMD based nForce 630a
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->{{yes|slimline DVD drive works}}
| <!--Gfx-->{{maybe|GF 7025 use vesa}}
| <!--Audio-->{{yes|HDAudio for VIA 1708S VT1705}}
| <!--USB-->{{Maybe|echi usb 2.0}}
| <!--Ethernet-->{{no|RTL8201EL / 8201CL - nforce}}
| <!--Opinion-->2008 unbuffered 1066Mhz ddr2 ram - N68C-S may need noacpi added to grub boot line to disable pci temporarily to run as it cannot get to [PCI] Everything OK -
|-
| <!--Name-->Asus M2N68-AM Plus
| <!--Chipset-->Athlon 64, Sempron, Athlon 64 X2, Athlon 64 FX with nvidia 630a
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->no vga, pci-e slot only
| <!--Audio-->{{yes|HD Audio with ALC662 codec}}
| <!--USB-->
| <!--Ethernet-->{{no|RTL8211CL Gigabit LAN}}
| <!--Opinion-->adding "noacpi noapic noioapic" to the GRUB options - Dual channel DDR2 1066, 800, 667 MHz -
|-
| <!--Name-->Gigabyte GA-M68M-S2 (1.0) S2P (2.3) S2L GA-M68SM-S2 (1.x)
| <!--Chipset-->nForce 630a chipset
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->NVIDIA® GeForce 7025, vga (s2 and s2p), dvi (s2l)
| <!--Audio-->ALC883 (S2), ALC888B (S2P), ALC662 (S2L),
| <!--USB-->
| <!--Ethernet-->RTL 8201CL (S2), 8211CL (S2P), 8211BL (S2L),
| <!--Opinion-->2008 64bit possible with AMD AM2+ CPU on AM2 motherboard, the system bus speed will downgrade from HT3.0(5200MHz) to HT1.0(2000 MT/s) spec
|-
| <!--Name-->ASUS M2N68-VM
| <!--Chipset-->nForce 630a (MCP68PVNT)
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Nvidia GeForce ® 7050PV hdmi, dvi and vga
| <!--Audio-->HD audio VIA 1708B codec
| <!--USB-->
| <!--Ethernet-->RTL 8211C
| <!--Opinion-->2008 64bit - ddr2 800Mhz
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket AM3 White socket (2010/11)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Gigabyte GA-MA74GM-S2 GA-MA74GM-S2H
| <!--Chipset-->740g with sb710
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes|bios IDE}}
| <!--Gfx-->Radeon 2100 and pci-e slot
| <!--Audio-->ALC888 (r1.x),ALC888b (r2.0), ALC888B (rev4.x)
| <!--USB-->USB2
| <!--Ethernet-->rtl8169 Realtek 8111C later 8111D
| <!--Opinion-->2010 64bit - 2 x 1.8V DDR2 DIMM sockets max 8 GB - Micro ATX Form Factor 24.4cm x 23.4cm -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->[http://www.vesalia.de/e_aresone2011.htm Aresone 2011]
| <!--Chipset-->760g
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Yes}}
| <!--Gfx-->{{Maybe|no Radeon HD3000 driver yet<br>vesa driver works<br>and add PCIe card}}
| <!--Audio-->{{Yes|HD Audio}}
| <!--USB-->{{Yes|USB2.0}}
| <!--Ethernet-->{{yes}}
| <!--Opinion-->Good support - 4 DDR3 memory sockets -
|-
| <!--Name-->Foxconn A76ML-K 3.0
| <!--Chipset-->AMD 760g rev3.0
| <!--ACPI-->
| <!--IDE-->{{Yes|1 }}
| <!--SATA-->{{Yes|4 in IDE mode }}
| <!--Gfx-->HD3000 with pci-e slot
| <!--Audio-->HDAudio with ALC662-GR codec
| <!--USB-->USB2
| <!--Ethernet-->rtl8169 rtl8111E
| <!--Opinion-->2011 64bit - 2 ddr3 slots - 2 pci slots -
|-
| <!--Name-->GA-MA770T-UD3P (rev. 1.0 to 1.4)
| <!--Chipset-->amd 770 with sb710
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{yes|4 sata}}
| <!--Gfx-->pci-e
| <!--Audio-->{{yes|HDAudio with Realtek ALC888 codec}}
| <!--USB-->{{yes| }}
| <!--Ethernet-->{{yes|rtl8168 rtl8111c/d}}
| <!--Opinion-->2011 64 - 4 ddr3 dimm slots -
|-
| <!--Name-->Gigabyte GA-MA770-UD3 (rev. 2.0 2.1)
| <!--Chipset-->AMD 770 with SB700
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes| }}
| <!--Gfx-->pci-e
| <!--Audio-->{{yes|ALC888 codec }}
| <!--USB-->{{yes|USB2}}
| <!--Ethernet-->{{yes|rtl8169 8111C later 8111D}}
| <!--Opinion-->Good support for AM3 with 4 ddr2 ram - 4 x PCI Express x1, 2 x PCI slots - firewire T.I. TSB43AB23 chip no support -
|-
| <!--Name-->Asus M4A785TD-M PRO
| <!--Chipset-->785G and SB710
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Maybe|ide legacy}}
| <!--Gfx-->{{Maybe|ATI Radeon HD 4200 - use vesa}} or pci-e 2.0 slot
| <!--Audio-->{{Yes|HD Audio}}
| <!--USB-->{{Yes| }}
| <!--Ethernet-->{{Yes| }}
| <!--Opinion-->Good support with 1366 ddr3 ram -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->ASUS M4A88T-I Deluxe ITX
| <!--Chipset-->AMD 880G with AMD SB710
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->Three SATA 3Gbps
| <!--Gfx-->Radeon HD 4350 GPU with HDMI and DVI or One 16x PCI-Express 2.0
| <!--Audio-->HDAudio with Realtek ALC889
| <!--USB-->6 x USB 2, 2 x USB 3
| <!--Ethernet-->{{No|Realtek RTL8112L}}
| <!--Opinion-->2014 64bit - 2 SODIMM DDR3 slots max 8GB
|-
| <!--Name-->Asus M4A88T-M Version E5907 E5826
| <!--Chipset-->AMD 880G SB710
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Radeon 4250
| <!--Audio-->HD Audio with VIA VT 1708S codec
| <!--USB-->
| <!--Ethernet-->Realtek rtl8169 8111E
| <!--Opinion-->2010 64bit -
|-
| <!--Name-->GigaByte 890GPA-UD3H
| <!--Chipset-->AMD 890GX together with SB850
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->Yes
| <!--Gfx-->use pci-e nvidia
| <!--Audio-->Maybe - ALC892 rev. 1.0, ALC892 rev 2.1, ALC889 rev. 3.1
| <!--USB-->Yes
| <!--Ethernet-->Yes
| <!--Opinion-->works well overall
|-
| <!--Name-->Gigabyte GA-890FXA-UD7
| <!--Chipset-->AMD 890FX with SB850
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes|IDE }}
| <!--Gfx-->
| <!--Audio-->ALC889 (rev 2.x)
| <!--USB-->{{Yes|AMD USB2 but limited with NEC D720200F1 USB3}}
| <!--Ethernet-->2 x Realtek 8111D
| <!--Opinion-->2012 64bit - XL-ATX Form Factor 32.5cm x 24.4cm - 4 ddr3 slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI 890GXM-G65
| <!--Chipset-->890GX + SB750
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->{{Maybe|legacy}}
| <!--Gfx-->{{Maybe|ATI 4290 built-in (vesa)}}
| <!--Audio-->{{Maybe|ALC889 DD GR}} HD Audio crackles
| <!--USB-->{{Yes}}
| <!--Ethernet-->{{Yes|RTL 8169}}
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->ASRock N68-VS3 FX
| <!--Chipset-->NVIDIA® GeForce 7025 / nForce 630a
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 Sata2
| <!--Gfx-->Integrated NVIDIA® GeForce 7025
| <!--Audio-->HD Audio with VIA® VT1705 Codec
| <!--USB-->USB2
| <!--Ethernet-->Realtek PHY RTL8201EL
| <!--Opinion-->2010 64bit - 2 x DDR3 DIMM slots -
|-
| <!--Name-->MSI GF615M-P35 MS-7597
| <!--Chipset-->NVIDIA® nForce 430
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->GeForce 6150SE
| <!--Audio-->{{Maybe|HD Audio with Realtek® ALC888S}}
| <!--USB-->{{No|freezes}}
| <!--Ethernet-->{{No|Realtek 8211CL}}
| <!--Opinion-->2010 64bit
|-
| <!--Name-->Gigabyte GA-M68MT-S2
| <!--Chipset--> nForce 630a
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->NVIDIA® GeForce 7025 vga
| <!--Audio-->ALC888B (1.3), ACL887 (3.1),
| <!--USB-->
| <!--Ethernet-->RTL8211CL (all)
| <!--Opinion-->2010 64bit possible, AMD AM3 CPU on this motherboard, the system bus speed will downgrade from HT3.0 (5200MT/s) to HT1.0 (2000 MT/s) spec
|-
| <!--Name-->Gigabyte GA-M68MT-S2P
| <!--Chipset--> nForce 630a
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->NVIDIA® GeForce 7025 vga
| <!--Audio-->ALC888B (1.x 2.x), ALC889 (3.0), ALC888B/889 (3.1),
| <!--USB-->
| <!--Ethernet-->RTL8211CL (all)
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus M4N78 PRO
| <!--Chipset-->NVIDIA GeForce 8300
| <!--ACPI-->
| <!--IDE-->1 xUltraDMA 133/100
| <!--SATA-->6 xSATA 3 Gbit/s ports
| <!--Gfx-->Integrated NVIDIA® GeForce® 8 series GPU with 1 PCIe 2.0 slot
| <!--Audio-->HD Audio with VIA1708S 8 -Channel codec
| <!--USB-->12 USB 2.0 ports (8 ports at mid-board, 4 ports at back panel)
| <!--Ethernet-->NVIDIA Gigabit
| <!--Opinion-->4 x DIMM, Max. 16 GB, DDR2 1200(O.C.)/1066*/800/667 ECC,Non-ECC,Un-buffered Memory - ATX Form Factor 12 inch x 9.6 inch ( 30.5 cm x 24.4 cm ) -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|}
=====Socket AM3+ Black socket (2012/15)=====
*095W FX-6300 FD6300WMHKBOX (bulldozer SSE4.1 AVX) 970 mobos with FX-8320E 8core Black Editions FD832EWMHKBOX FX-8370E (Vishera/Piledriver)
*125W FX-6310 (bulldozer) 970 mobos with FX-8320 FX-8350 FX-8370 (Vishera/Piledriver)
*220W 990FX mobos with FX-9000 FX-9370 FX-9590
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->ASUS M5A78L-M LX3
| <!--Chipset-->AMD 760G with SB710
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{Yes|bios IDE mode}}
| <!--Gfx-->HD3000 with pci-e slot
| <!--Audio-->HDAudio with ALC887, V? ALC892 codecs
| <!--USB-->USB2
| <!--Ethernet-->{{No|Qualcomm Atheros 8161/8171 add realtek 8111? pci-e card}}
| <!--Opinion-->2012 64bit - uATX Form Factor 9.6 inch x 7.4 inch ( 24.4 cm x 18.8 cm ) - 2 x DIMM, Max. 16GB, DDR3 -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-78LMT-S2P
| <!--Chipset-->AMD 760G and SB710
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{yes|6 SATA2 ports}}
| <!--Gfx-->GT240 and a nv7900gs, both pci-e
| <!--Audio-->{{Maybe|ALC889 (r3.1), ALC??? (rev. 4.0), ALC887 (r5.x)}}
| <!--USB-->4 USB2
| <!--Ethernet-->{{Maybe|Realtek 8111E (r3.1), Atheros (rev4.0), Atheros (r5.x) }}
| <!--Opinion-->2012 offers very poor control over its EFI vs. BIOS booting partition features
|-
| <!--Name-->Gigabyte GA-78LMT-USB3 (r3.0), (r4.1 Blue board), (r5.0 dark board), (rev6 dark mobo)
| <!--Chipset-->AMD 760G and SB710
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes|Bios IDE mode for SATA2 on early ones}}
| <!--Gfx-->AMD HD3000, pci-e GT240 and a nv7900gs
| <!--Audio-->{{Maybe|ALC??? (r3.0), ALC887 (r4.1), VIA VT2021 (r5.0), Realtek® ALC892 codec (rev6) }}
| <!--USB-->{{yes|AMD USB2 but not VIA® VL805 USB3}}
| <!--Ethernet-->Realtek GbE
| <!--Opinion-->2013 64bit - Micro ATX Form Factor 24.4cm x 24.4cm - 4 x DDR3 DIMM sockets -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI 760GM
| <!--Chipset-->ATI 760G plus SB710
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{yes| }}
| <!--Gfx-->HD3000 Use Vesa
| <!--Audio-->{{Maybe|P33 VT1705; P34, P21 and P23 (FX) MS7641 v3.0 ALC887, E51 ALC892}}
| <!--USB-->{{yes| }}
| <!--Ethernet-->{{Yes|Realtek}}
| <!--Opinion-->P23 issues with audio ALC887 crackles thru earphones -
|-
| <!--Name-->Gigayte GA-MA770T-UD3P (rev. 3.1)
| <!--Chipset-->amd 770 with sb710
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata
| <!--Gfx-->pci-e slot
| <!--Audio-->HDaudio with Realtek ALC888/892 codec
| <!--USB-->
| <!--Ethernet-->rtl8169 rtl8111d/e
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->ASRock 890FX Deluxe5 Extreme3
| <!--Chipset-->AMD 890FX + AMD SB850 or SB950 (Extreme3)
| <!--ACPI-->
| <!--IDE-->{{Yes}}
| <!--SATA-->{{Yes}}
| <!--Gfx-->{{N/A}}
| <!--Audio-->{{Maybe|ALC892}}
| <!--USB-->{{Yes}}
| <!--Ethernet-->{{Yes|RTL8111E rtl8169}}
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus M5A97 R2.0 EVO
| <!--Chipset-->AMD 970 and SB950
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->Asmedia SATA Controller
| <!--Gfx-->n/a
| <!--Audio-->HDAudio with Realtek ALC887 (LE), ALC887 (Regular), ALC892 (EVO) codec
| <!--USB-->4 USB 2.0 and 2 Asmedia USB3.0 Controller
| <!--Ethernet-->Realtek 8111F
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-970A-D3
| <!--Chipset-->AMD 970 with SB950
| <!--ACPI-->
| <!--IDE-->{{Yes| }}
| <!--SATA-->{{Yes|IDE mode}}
| <!--Gfx-->pci-e
| <!--Audio--> ALC??? (rev. 1.0/1.1), ALC887 (rev1.2), VIA VT2021 codec (rev 1.3 1.4 and rev3.0)
| <!--USB-->{{yes|AMD USB2 but not Etron EJ168 chip (USB3)}}
| <!--Ethernet-->Realtek GbE 8111E (all revisions),
| <!--Opinion-->2015 64bit - ATX Form Factor 30.5cm x 22.4cm - 4 x 1.5V DDR3 DIMM sockets -
|-
| <!--Name-->MSI 970 Gaming
| <!--Chipset-->970FX SB950
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->Realtek® ALC1150 Codec
| <!--USB-->6 usb2 with 2 USB3 VIA VL806 Chipset
| <!--Ethernet-->Killer E2205 Gigabit LAN
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus M5A99X EVO
| <!--Chipset-->990X - RD980 with SB920
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->2 pci-e gen ?
| <!--Audio-->HDAudio with ALC892 codec
| <!--USB-->
| <!--Ethernet-->rtl8169 realtek 8111e
| <!--Opinion-->2012 64bit -
|-
| <!--Name-->Gigabyte GA-990XA-UD3
| <!--Chipset-->AMD 990 with SB950
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes| }}
| <!--Gfx-->
| <!--Audio-->ALC889 (rev 1.x, 3.0, 3.1),
| <!--USB-->{{yes|AMD USB2 not 2 x Etron EJ168 chips for USB3}}
| <!--Ethernet-->realtek rtl8169 8111e
| <!--Opinion-->2012 64bit - ATX Form Factor; 30.5cm x 24.4cm - 4 ddr3 slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====AMD Fusion (2011/14)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| 1.2GHz single Bobcat Fusion C30 + Hudson M1
| ACPI
| IDE
| SATA
| AMD 6250
| Audio
| USB
| Ethernet
| <!--Opinion-->2011 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2011 64bit does not support AVX or SSE 4.1 -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| Asus E35M1-M PRO uATX
| 1.6GHz 18W AMD Fusion E-350 dual core + Hudson M1
| ACPI
| {{N/A}}
| SATA
| AMD 6310 - no HD driver yet
| ALC887 VD2
| USB
| RTL8111E
| 2011 64bit does not support AVX or SSE 4.1 - EFI bios - pci slot -
|-
| Asus E35M1-I Deluxe miniITX
| 1.6GHz dual AMD Fusion E350 + Hudson M1 + DDR3
| ACPI
| {{N/A}}
| SATA
| AMD 6310 - no HD driver yet
| ALC892
| USB
| Realtek 8111E
| 2011 64bit does not support AVX or SSE 4.1 - no support for Atheros AR5008 on a Mini PCI-E - 1 pci slot -
|-
| ASRock E350M1 / USB3 (also version with USB3.0 added)
| 1.6GHz dual AMD Fusion E350 + Hudson M1
| ACPI
| {{N/A}}
| SATA - 4 SATA3
| {{Maybe|AMD 6310 - use vesa with hdmi and dvi}}
| {{Yes|Audio ALC892 playback but no HDMI output}}
| USB - 4 USB2.0 and 2 USB3.0
| {{Yes|rtl8169 for Realtek rtl8111E}}
| 2011 64bit does not support AVX or SSE 4.1 - 1 pci-e 2.0 x4 slot - f2 or del bios, f11 boot select -
|-
| <!--Name-->Gigabyte GA-E350N-USB3 mini-ITX
| <!--Chipset--> Hudson M1 FCH
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 SATA3
| <!--Gfx--> plus HDMI, DVI
| <!--Audio-->ALC892
| <!--USB-->2 NEC USB3.0 with 4 USB2.0
| <!--Ethernet-->rtl8169 for Realtek rtl8111E
| <!--Opinion-->2011 64bit does not support AVX or SSE 4.1 - 1 pci slot -
|-
| <!--Name-->Gigabyte GA-E350N Win8 V1.0
| <!--Chipset-->Hudson M1 FCH A45
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 SATA3
| <!--Gfx-->{{maybe|Use VESA - AMD 6310 plus HDMI, DVI}}
| <!--Audio-->{{yes|ALC887 playback through headphones but not thru hdmi}}
| <!--USB-->{{maybe|4 USB2.0 needs more testing}}
| <!--Ethernet-->{{yes|rtl8169 for Realtek 8111e}}
| <!--Opinion-->2011 64bit does not support AVX or SSE 4.1 - works well but need to test with sata hard disk
|-
| <!--Name-->MSI E350IA-E45
| <!--Chipset-->e-350 + Hudson M1 + DDR3
| <!--ACPI-->no support
| <!--IDE-->{{N/A}}
| <!--SATA-->4 Sata3 ports
| <!--Gfx-->AMD 6310 gpu
| <!--Audio-->ALC HDA
| <!--USB-->6 USB2.0 and 2 USB3.0 through NEC 720200 chipset
| <!--Ethernet-->Realtek RTL8111E
| <!--Opinion-->2011 64bit does not support AVX or SSE 4.1 -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->ASUS E45M1-M PRO
| <!--Chipset-->E450 APU with Hudson M1
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->ALC887
| <!--USB-->
| <!--Ethernet-->Realtek
| <!--Opinion-->2011 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->ASUS E45M1-I Deluxe
| <!--Chipset-->E-450 together
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->ALC892
| <!--USB-->
| <!--Ethernet-->Realtek 8111E
| <!--Opinion-->2011 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket FM1 (2011/13)=====
On board Graphic on CPU - HD6410D, HD6530D, HD6550D,
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->ASUS F1A55-M LE
| <!--Chipset--> with AMD A55 FCH (Hudson D2)
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->6 x SATA 3Gbit/s port(s), blue Support Raid 0, 1, 10, JBOD
| <!--Gfx-->PCI-e 2.0 slot or Integrated AMD Radeon™ HD 6000 in Llano APU
| <!--Audio-->Realtek® ALC887 Audio CODEC
| <!--USB-->6 USB2.0 ports
| <!--Ethernet-->Realtek 8111E rtl8169
| <!--Opinion-->2012 2011 64bit does not support AVX or SSE 4.1 - A-Series/E2- Series APUs up to 4 cores - 2 x DIMM, Max. 32GB, DDR3 2250(O.C.)/1866/1600/1333/1066 MHz Non-ECC, Un-buffered Memory Dual Channel Memory Architecture -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket FM2 White Socket (2012/13)=====
Onboard Gfx on CPU - HD6570, HD7480D, HD7540D,
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->A75 A85X
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2012 64bit does not support AVX or SSE 4.1 -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket FM2 Plus Black socket (2013/15)=====
Onboard Gfx on CPU - HD6570, HD7480D, HD7540D,
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->A88X
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket AM1 FS1b socket (2014/1x)=====
5350 4 core Jaguar cores 2GHz with Integrated AMD Radeon R Series Graphics in the APU Kabini [Radeon HD 8400]
Later Beema APU with 2/4 core Puma (slightly updated Jaguar) cores, GCN graphics and a compute capable Radeon core, along with a brand new AMD security processor and FT3 BGA packaging (probably best avoided for long term survival).
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->ASUS AM1I-A
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HD Audio Realtek® ALC887-VD
| <!--USB-->
| <!--Ethernet-->Realtek 8111GR 8168
| <!--Opinion-->2011 64bit may support AVX or SSE 4.1 -
|-
| <!--Name-->MSI AM1I
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HD Audio ALC887
| <!--USB-->
| <!--Ethernet-->Realtek 8111G
| <!--Opinion-->
|-
| <!--Name-->MSI AM1M
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HD Audio ALC887
| <!--USB-->
| <!--Ethernet-->Realtek 8111G
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->BGA FT3 AM1x
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket AM4 FM3 Summit Ridge Zen Zen+ (2016/22)=====
Jim Keller’s group designed x86 Zen CPU - new and covering the same AM4 platform/socket for desktop
Zen will also shift from Bulldozer’s Clustered Multithreading (CMT) to Simultaneous Multithreading (SMT, aka Intel’s Hyperthreading). CMT is the basis for Bulldozer’s unusual combination of multiple integer cores sharing a single FPU within a module, so the move to SMT is a more “traditional” design for improving resource usage
Trusted Platform Module, or fTPM, that Windows 11 requires. Ryzen processors using a firmware TPM are causing stutters, even when doing mundane tasks. To enable TPM 2.0 on your AMD system please follow the steps below.
<pre>
Power on system and press DEL or F2 to get into the BIOS.
Navigate to Advanced\CPU Configuration.
Enable AMD fTPM switch.
Press F10 to save changes.
</pre>
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Asus ROG Crosshair VI Hero
| <!--Chipset-->X370
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e 3.0 (1x16 or 2x8)
| <!--Audio-->SupremeFX audio features an S1220 codec
| <!--USB-->
| <!--Ethernet-->Intel I211
| <!--Opinion-->Ryzen 7 1800X 1700X
|-
| <!--Name-->Biostar X370gtn Itx Am4
| <!--Chipset-->AMD X370
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->HDAudio with ALC892
| <!--USB-->
| <!--Ethernet-->Realtek Dragon LAN RTL8118AS
| <!--Opinion--> 2 ddr4 slots
|-
| <!--Name-->Gigabyte GA-AX370 K7
| <!--Chipset--> X370
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->HDAudio with 2 x Realtek® ALC1220 codec 0x10EC, 0x0295
| <!--USB-->
| <!--Ethernet-->1 intel and 1 E2500
| <!--Opinion--> 4 ddr4 slots
|-
| <!--Name-->MSI Xpower Gaming Titanium
| <!--Chipset--> X370
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->8-channel Realtek 1220 Codec 0x10EC, 0x0295
| <!--USB-->ASMedia® ASM2142 and amd cpu
| <!--Ethernet-->1 x Intel® I211AT Gigabit LAN
| <!--Opinion--> 2 ddr4 slots
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus Prime B350 Plus ATX
| <!--Chipset-->B350
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx--> x PCIe 3.0/2.0 x16 (x16 mode)
| <!--Audio-->Realtek® ALC887 8-Channel
| <!--USB-->
| <!--Ethernet-->Realtek® RTL8111H
| <!--Opinion-->Ryzen 5 1600x 1600 1500X 1400 - 4 x DIMM Max 64GB, DDR4 up to 2666MHz ECC and non-ECC Memory - ATX 12 inch x 9.35 inch ( 30.5 cm x 23.7 cm ) - 2 pci
|-
| <!--Name-->Asus PRIME B350M-A/CSM Micro ATX
| <!--Chipset-->AMD B350
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->HDaudio with
| <!--USB-->
| <!--Ethernet-->Realtek LAN
| <!--Opinion-->Ryzen 3 1300x 1200 1100
|-
| <!--Name-->AsRock Pro4 AB350
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->2 PCIe 3.0 x16, 4 PCIe 2.0 x1
| <!--Audio-->Realtek ALC892
| <!--USB-->
| <!--Ethernet-->Realtek
| <!--Opinion-->2017 64bit -
|-
| <!--Name-->ASRock AB350 Gaming-ITX/ac
| <!--Chipset--> B350
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->Intel LAN
| <!--Opinion-->
|-
| <!--Name-->MSI B350 Tomahawk Arctic Mortar
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->1 x PCIe 3.0 x16 (x16 mode)
| <!--Audio-->Realtek ALC892
| <!--USB-->
| <!--Ethernet-->Realtek RTL8111H
| <!--Opinion-->white and grey colours - 2 pci-e and 2 pci slots - m.2 in middle - atx 12 in by 9.6 in and matx versions -
|-
| <!--Name-->Jginyue M-ATX B350M-TI
| <!--Chipset-->B350
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Jginyue B350I-Plus ITX
| <!--Chipset-->B350
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->ASRock A320M-ITX MINI ITX Rev1.0 Rev2 Rev2.1
| <!--Chipset-->A320
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2018
|-
| <!--Name-->Asus PRIME A320M-C R2.0 rev1.1 A320M-K
| <!--Chipset-->A320 A/B300 SFF
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->PCIe 3.0
| <!--Audio-->HD audio with Realtek ALC887 alc897 CODEC
| <!--USB-->2 usb 3.1 gen 1
| <!--Ethernet-->Realtek 8111E
| <!--Opinion-->2019 64bit - 3rd/2nd/1st Gen AMD Ryzen™ / 2nd and 1st Gen AMD Ryzen™ with Radeon™ Vega
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI A320M-A PRO MicroATX
| <!--Chipset-->AMD A320
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->pci-e 3.0
| <!--Audio-->HDAudio Realtek® ALC892
| <!--USB-->USB3
| <!--Ethernet-->Realtek® 8111H
| <!--Opinion-->2019 64bit -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus ROG X399 Zenith Extreme
| <!--Chipset-->AMD X399
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio--> supremefx s1220
| <!--USB-->
| <!--Ethernet-->intel
| <!--Opinion-->Threadripper 1950X 1920X 1900X TR4 skt
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->AsRock Fatality X470 Gaming K4 mATX
| <!--Chipset-->X470
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->nvme
| <!--Gfx-->pci-e rebar possible
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->intel
| <!--Opinion-->
|-
| <!--Name-->Asrock Fatal1ty X470 Gaming-ITXac AMD AM4
| <!--Chipset-->AMD X470
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->intel
| <!--Comments-->
|-
| <!--Name-->ASUS ROG STRIX X470-I GAMING AM4 ITX Motherboard
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus B450-I Gaming
| <!--Chipset-->AMD B450
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->high VRM temps - raven ridge 14nm+ like 2200G 2400G
|-
| <!--Name-->AsRock B450 Gaming K4
| <!--Chipset-->B450
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio--> alc892
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion--> 4 ddr4 slots - low VRM thermals 3900x 3950x
|-
| <!--Name-->Gigabyte B450 I Aorus Pro Wifi
| <!--Chipset-->AMD B450
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->1 nvme pcie3 with 4 sata
| <!--Gfx-->pcie
| <!--Audio-->HDAudio with Realtek® ALC1220-VB codec
| <!--USB-->
| <!--Ethernet-->Intel LAN
| <!--Opinion-->very high vrm temps
|-
| <!--Name-->Jginyue B450i Gaming ITX
| <!--Chipset-->B450
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata3 - none nvme
| <!--Gfx-->pcie3
| <!--Audio-->HDAudio
| <!--USB-->
| <!--Ethernet-->1G
| <!--Opinion-->2021 64 2nd 3rd AMD - 2 ddr4 dimm slots
|-
| <!--Name-->MSI b450 tomahawk max
| <!--Chipset--> b450
| <!--ACPI-->
| <!--IDE-->{{n/A}}
| <!--SATA-->
| <!--Gfx-->PCIe 3.0
| <!--Audio-->HD audio with Realtek® ALC892 Codec
| <!--USB-->
| <!--Ethernet-->Realtek 8111H
| <!--Opinion-->
|-
| <!--Name-->MSI B450 Pro Carbon
| <!--Chipset-->B450
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio--> ALC codec
| <!--USB-->
| <!--Ethernet-->Intel LAN
| <!--Opinion-->
|-
| <!--Name-->MSI B450-A PRO
| <!--Chipset-->B450
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->ALC892
| <!--USB-->
| <!--Ethernet-->rtl8169 8111h
| <!--Opinion-->
|-
| <!--Name-->MSI B450I GAMING Plus AC ITX
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2019 - 2nd and 3rd gen AMD - 2 ddr4 slots -
|-
| <!--Name-->MSI B450 GAMING PLUS MAX
| <!--Chipset-->B450
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HDAudio with Realtek® ALC892/ALC897 Codec
| <!--USB-->USB3
| <!--Ethernet-->rtl8169 8111H
| <!--Opinion-->
|-
| <!--Name-->MAXSUN AMD Challenger B450M M-ATX (aka Soyo)
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->ASRock X570 PHANTOM GAMING-ITX/TB3 Mini ITX AM4
| <!--Chipset-->X570
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->nvme
| <!--Gfx-->PCIe 4.0
| <!--Audio--> ALC1200
| <!--USB-->
| <!--Ethernet-->Intel LAN
| <!--Comments-->
|-
| <!--Name-->Asus ROG Crosshair VIII Dark Hero
| <!--Chipset-->AMD X570
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio--> SupremeFX7.1 codec
| <!--USB-->
| <!--Ethernet-->Intel® I211-AT and Realtek® RTL8125-CG 2.5G LAN
| <!--Opinion-->
|-
| <!--Name-->Asus ROG Strix X570-I Gaming Mini ITX AM4 Motherboard
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI MPG X570 Gaming Plus
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio--> alc1220 codec
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus ROG Strix B550-i AM4 ITX Motherboard
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2022 -
|-
| <!--Name-->Jginyue Jingyue B550i Gaming itx
| <!--Chipset-->B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->3 with 1 nvme
| <!--Gfx-->1 pci-e 4
| <!--Audio-->HDAudio alc
| <!--USB-->
| <!--Ethernet-->1G
| <!--Comments-->2022 64bit max of Ryzen 5500 (c t), 5600, 5600g (6c12t) - 2 ddr4
|-
| <!--Name-->Asrock B550 PHANTOM GAMING ITX/AX
| <!--Chipset-->AMD B550
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx--> pci-e
| <!--Audio-->HDAudio with alc1220 codec
| <!--USB-->USB3
| <!--Ethernet-->{{no|intel 2.5G}}
| <!--Comments-->
|-
| <!--Name-->AsRock B550M-ITX/ac
| <!--Chipset-->B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HDAudio with Realtek ALC887 ALC897 Audio Codec
| <!--USB-->
| <!--Ethernet-->Realtek Gigabit LAN
| <!--Opinion-->2022 - 2 ddr4 slots
|-
| <!--Name-->AsRock ASRock B550M-HDV
| <!--Chipset-->B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->nvme and sata3
| <!--Gfx-->pci-e 4.0
| <!--Audio-->HDAudio with Realtek ALC887 or ALC897 Audio Codec unknown
| <!--USB-->usb3
| <!--Ethernet-->{{yes|rtl8169 Realtek rtl8111h Gigabit LAN}}
| <!--Opinion-->2022 - 2 ddr4 slots - 1 pcie x1 slot -
|-
| <!--Name-->Asus ROG STRIX B550-A GAMING
| <!--Chipset-->B550
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->PCIe Gen4 x4 & SATA3
| <!--Gfx-->pci-e 4
| <!--Audio--> supremefx S1220A
| <!--USB-->
| <!--Ethernet-->{{No|Intel® I225-V 2.5Gb}}
| <!--Opinion-->
|-
| <!--Name-->Gigabyte AMD B550I AORUS PRO AX Mini-ITX rev 1.0
| <!--Chipset-->AMD B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2 nvme pci-e3 with 4 sata3
| <!--Gfx-->pci-e
| <!--Audio-->Realtek® ALC1220-VB codec
| <!--USB-->
| <!--Ethernet-->{{no|Realtek® 2.5GbE LAN}}
| <!--Opinion-->2021 2 x DDR4 DIMM sockets 1Rx8/2Rx8/1Rx16 -
|-
| <!--Name-->Gigabyte B550 AORUS ELITE AX V2 ATX
| <!--Chipset-->B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->PCI-e 4.0 DP and hdmi
| <!--Audio-->HDAudio ALC1200
| <!--USB-->USB3 USB 3.2 Gen1 Type-C
| <!--Ethernet-->{{No|2.5GbE LAN}}
| <!--Opinion-->2022 64bit- finer tuning than A520's - AMD Ryzen 5000 Series/ 3rd Gen Ryzen and 3rd Gen Ryzen with Radeon Graphics CPU - Dual Channel ECC/ Non-ECC Unbuffered DDR4, 4 DIMMs -
|-
| <!--Name-->Gigabyte B550M DS3H mATX
| <!--Chipset--> B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2 NVMe
| <!--Gfx-->PCI-e 4.0
| <!--Audio-->HDaudio ALC887
| <!--USB-->USB3
| <!--Ethernet-->realtek rtl8118
| <!--Opinion-->2021 64bit - 4 ddr4 dimms -
|-
| <!--Name-->MSI MPG B550 GAMING PLUS ATX
| <!--Chipset--> B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->PCI-e 4.0
| <!--Audio-->HDAudio ALC892
| <!--USB-->USB 3
| <!--Ethernet-->rtl8169 Realtek 8111H
| <!--Opinion-->2022 64bit - 3rd Gen AMD Ryzen Processors - 4 dimm ddr4 -
|-
| <!--Name-->MSI MAG B550 TOMAHAWK ATX
| <!--Chipset--> B550
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe 1 x M.2, Socket 3, M Key (up to Type 22110) and 1 x M.2, Socket 3, M Key (Type 2242/2260/2280)
| <!--Gfx-->PCI-e 4.0 with dp and hdmi
| <!--Audio-->HDaudio ALC1200
| <!--USB-->USB3 1 x USB 3.1 Type-C and 1 x USB 3.1 Type-A
| <!--Ethernet-->Realtek RTL8125B and Realtek RTL8111H
| <!--Opinion-->2022 64bit - 4 Dimm slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Jginyue A520M-H mATX
| <!--Chipset-->A520
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion--> old bios with random issues with APU ryzens -
|-
| <!--Name-->Gigabyte A520M S2H mATX
| <!--Chipset-->AMD A520
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HDAudio
| <!--USB-->
| <!--Ethernet-->Realtek 1GbE
| <!--Opinion-->2022 64bit Zen3 65W and up - 2 ddr4 -
|-
| <!--Name-->Gigabyte A520I AC mITX mini-itx
| <!--Chipset-->AMD A520
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HDAudio
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2022 64bit Zen3 65W and up 5600G (6c12t) or 5700G (8c16t) - 2 ddr4 dimm slots -
|-
| <!--Name-->MSI A520M-A PRO mATX
| <!--Chipset-->A520
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe 1 x M.2, Socket 3, M Key (Type 2242/2260/2280)
| <!--Gfx-->PCI-e 3.0
| <!--Audio-->HDAudio ALC892
| <!--USB-->USB3
| <!--Ethernet-->rtl8169 rtl8111H
| <!--Opinion-->2022 64bit - 2 ddr4 dimm slots - 3rd Gen AMD Ryzen Desktop and AMD Ryzen 4000 G-Series CPU
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|}
===== (Socket AM5 LGA1718 Zen4 Zen5 Zen6 2022/27)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Asrock Steel Legend
| <!--Chipset-->x670e
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->PCI-e rnda2
| <!--Audio-->HD audio
| <!--USB-->USB3
| <!--Ethernet-->
| <!--Opinion-->2022 64bit - ddr5 ecc (10 chip) and non-ecc (8 chips) 64Gb @ 6000Mhz or 128GB @ 4800Mhz -
|-
| <!--Name-->Asrock TaiChi
| <!--Chipset-->x670e
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->PCI-e rnda2
| <!--Audio-->HD Audio
| <!--USB-->USB4 with Thunderbolt 4 equivalent
| <!--Ethernet-->{{No|Realtek killer E3000 2.5GbE}}
| <!--Opinion-->2022 64bit - ddr5 ecc (10 chip) and non-ecc (8 chips)
|-
| <!--Name-->Asus ROG Crosshair Hero
| <!--Chipset-->x670e
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe rnda2
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2022 64bit
|-
| <!--Name-->
| <!--Chipset-->x670e
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->rnda3
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2022 64bit 7950x3d 120W, 7900 7800 7600 90W
|-
| <!--Name-->
| <!--Chipset-->x670e
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->rnda3
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2022 64bit
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus B650E-I
| <!--Chipset-->B650
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->pci-e 5
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2023 - better sound with an actual AMP, PCIe 5, USB-C display outs -
|-
| <!--Name-->
| <!--Chipset-->x650 B650
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->x650 B650
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->x650 B650
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MAXSUN AMD Challenger B650M WIFI M-ATX (aka Soyo)
| <!--Chipset-->B650
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI b650i mini itx
| <!--Chipset-->B650
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->NVMe
| <!--Gfx-->pci-e 4
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->Realtek
| <!--Opinion-->2023 - front panel connectors at the back of the board - dead rear nvme slot and a drained CMOS battery as the CMOS button being pressed during shipping -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->A620M Zen4
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->A620M
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->A620M
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->A620M
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset--> Zen5
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset--> Zen6
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name--> || <!--Chipset--> || <!--ACPI--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Opinion-->2026 FP8 Zen 6 Medusa Point 4bigC, 4 econC, 2lpC, 8coreGPU -
|-
| <!--Name--> || <!--Chipset--> || <!--ACPI--> || <!--IDE--> || <!--SATA--> || <!--Gfx--> || <!--Audio--> || <!--USB--> || <!--Ethernet--> || <!--Opinion-->2026 FP10 Zen 6 Medusa Point 4bigC, 4 econC, 2lpC, 8coreGPU -
|-
|}
===== (Zen7 AM6 2027/3x)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
===== (Zen AM 203x/3x)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
====Intel Sockets====
[[#top|...to the top]]
=====Socket 370 (2000/2)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Intel D815EEA
| <!--Chipset-->866Mhz P3 and i815 chipset
| <!--ACPI-->
| <!--IDE-->{{Yes}}
| <!--SATA-->{{N/A}}
| <!--Gfx-->{{Yes|Nvidia AGPx8 6200LE added}}
| <!--Audio-->{{N/A}}
| <!--USB-->{{Yes|2 USB1.1}}
| <!--Ethernet-->{{N/A}}
| <!--Opinion-->Tested AspireOS 1.7, simple basic board with useful 5 PCI slots
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|}
=====Socket 478 (2002/4)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->[http://translate.google.co.uk/translate?hl=en&sl=zh-CN&u=http://detail.zol.com.cn/motherboard/index46381.shtml&prev=/search%3Fq%3Dc.865pe.l%2Bmotherboard%26client%3Dfirefox-a%26hs%3DsZB%26rls%3Dorg.mozilla:en-US:official Colorful Technology C.865PE-L Silver Fighter Warrior V2.3]
| <!--Chipset-->865PE
| <!--ACPI-->{{dunno| }}
| <!--IDE-->{{Yes|tested with CDROM}}
| <!--SATA-->{{dunno| }}
| <!--Gfx-->{{Maybe|AGP slot}}
| <!--Audio-->{{Yes|ALC650 AC97}}
| <!--USB-->{{Yes|USB 1.1 and 2.0}}
| <!--Ethernet-->{{Yes|RTL 8100 8139}}
| <!--Opinion-->Still testing with NB (Nightly Build) May 2013
|-
| <!--Name-->Intel 845
| <!--Chipset-->865P
| <!--ACPI-->
| <!--IDE-->{{Yes}}
| <!--SATA-->
| <!--Gfx-->{{No|intel 800}}
| <!--Audio-->{{No|AC97 AD1985}}
| <!--USB-->{{Yes|USB1.1 and USB2.0}}
| <!--Ethernet-->{{No|e1000}}
| <!--Opinion-->Tested ICAROS 1.3
|-
| <!--Name-->Intel 845
| <!--Chipset-->865GC
| <!--ACPI-->
| <!--IDE-->{{Yes}}
| <!--SATA-->
| <!--Gfx-->{{No|intel 865 Extreme Graphics 2}}
| <!--Audio-->{{No|AC97 AD1985}}
| <!--USB-->{{Yes|USB1.1 and USB2.0}}
| <!--Ethernet-->{{No|e1000}}
| <!--Opinion-->Tested ICAROS 1.3
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket LGA775 s775 (2005/8)=====
an industry standard DDR2 module could in theory contain fallback JEDEC, intel XMP and AMD EPP configuration data
Intel PC CL5 ram modules but an "AMD" CL5 ram module the BIOS cannot read the AMD EPP info on the SPD (Serial Presence Detect) but can recognize the CL5 timing info in the JEDEC data table. PC BIOS auto configures for the AMD ram module and boots normally.
an AMD PC CL6 ram modules but an "INTEL" CL6 ram module the BIOS cannot read the INTEL XMP info on the SPD but can recognize the CL6 timing info in JEDEC data table. PC BIOS auto configures for the AMD ram module and boots normally.
an INTEL PC needs CL6 ram modules but have an "AMD" CL4 ram module. INTEL BIOS cannot read the AMD EPP info on the SPD but can recognize the CL4 timing info in JEDEC data table. PC BIOS recognizes module timings as incompatible an refuses to boot.
entirely separate issue if the RAM module timing specs are incompatible.(i.e. CL4 RAM in a "CL6 only" PC)
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Abit AG8
| <!--Chipset-->P915 + ICH6R
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 ports SATA1
| <!--Gfx-->1 PCIe x16 Slot
| <!--Audio-->Realtek ALC658 AC97
| <!--USB-->4 USB2.0
| <!--Ethernet-->Realtek 8110S-32
| <!--Opinion-->2004 32bit - Firewire TI 4200R7T no
|-
| <!--Name-->MSI 915 Neo2
| <!--Chipset-->P915 + ICH6R
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 ports SATA1
| <!--Gfx-->1 PCIe x16 Slot
| <!--Audio-->CMI 9880L HD Audio
| <!--USB-->4 USB2.0
| <!--Ethernet-->{{no|Broadcomm BCM5751 PCIe}}
| <!--Opinion-->Firewire VIA VT6306 no
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus P5GC P5GC-MX
| <!--Chipset-->P945GC Lakeport-GC + ICH7R northbridge
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 SATA1 3.0 Gbit/s ports
| <!--Gfx-->1 PCIe 1.1 slot
| <!--Audio-->HD Audio with ALC662 codec
| <!--USB-->{{yes|2 usb2.0}}
| <!--Ethernet-->{{no|atheros L2}}
| <!--Opinion-->2005 32bit - 3 pci slots - 4 x 240-pin DIMM Sockets max. 4GB DDR2 667/533 non-ECC -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Foxconn PC45CM-SA 45CM-S
| <!--Chipset-->945GC with ICH7
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 sata2 ports
| <!--Gfx-->{{Yes|pcie 1.0 slot with gma950 integrated}}
| <!--Audio-->{{Yes|HD audio with aLC883 codec playback}}
| <!--USB-->{{Yes|}}
| <!--Ethernet-->{{Yes|realtek 8139 8100sc}}
| <!--Opinion-->2 dimm slots 667mhz max 4gb - can be found in Advent desktops - 2 pci-e and 2 pci - core 2 duo only e6xxx - Micro ATX (9.6” x 8.8”) -
|-
| <!--Name-->Gigabyte GA-81945GM MFY-RH
| <!--Chipset-->Intel® 945GM Express with ICH7M-DH
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->{{Yes|GMA950 VGA15 and PCI-e 1.0 slot}}
| <!--Audio-->{{Yes|HD Audio with ALC880 codec playback only rear port}}
| <!--USB-->{{Yes|4 usb 2.0}}
| <!--Ethernet-->{{No|Intel PRO1000PL 82573L Gigabit Ethernet}}
| <!--Opinion-->2006 MoDT term “Mobile on DeskTop.”, low TDP CPUs to work on desktop form-factor motherboards. mATX Micro ATX 24.4cm x 24.4cm - 2 DDR2 dimm 1.8v slots with 4Gb max - will not boot if PCI2 slot occupied -
|-
| <!--Name-->Gigabyte GA-945 GCM S2C
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->{{yes|ALC662 (1.x)}}
| <!--USB-->
| <!--Ethernet-->{{yes|8101E Rtl 8169 (1.x)}}
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA945-GCM S2L
| <!--Chipset-->945GC with ICH7
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 SATA1 ports
| <!--Gfx-->PCi-E slot
| <!--Audio-->{{Maybe|Intel HD Audio with ALC662 codec 2/4/5.1-channel (1.x)}}
| <!--USB-->{{Yes|4 USB2.0}}
| <!--Ethernet-->{{Yes|Realtek 8111c 8169 (1.x)}}
| <!--Opinion-->2 x 1.8V DDR2 DIMM 4GB DDR2 memory max - 2 PCI-e and 2 PCI - Micro ATX form factor; 24.4cm x 19.3cm -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI 945P Neo-F rev 1.0
| <!--Chipset-->P945 + ICH7
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 SATA1 ports
| <!--Gfx-->PCie 1.0 slot
| <!--Audio-->ALC662 HDA
| <!--USB-->4 USB2.0
| <!--Ethernet-->8110SC (rtl8169)
| <!--Opinion-->
|-
| <!--Name-->MSI 945P Neo2-F rev 1.2
| <!--Chipset-->P945 + ICH7
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 SATA1 ports
| <!--Gfx-->PCie 1.0 slot
| <!--Audio-->ALC850 AC97
| <!--USB-->4 USB2.0
| <!--Ethernet-->8110SC (rtl8169)
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-P31-DS3L
| <!--Chipset-->P31 with ICH7
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCI Express x16
| <!--Audio-->HD Audio with ALC888 codec
| <!--USB-->4 USB 2.0
| <!--Ethernet-->Realtek 8111B
| <!--Opinion-->DDR2 800Mhz up to 4Gb 4 x 240 pin - 3 PCI - ATX 12.0" x 8.3" -
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus P5KPL-AM /PS
| <!--Chipset-->G31 with ICH7
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->4 xSATA 3 Gbit/s ports
| <!--Gfx-->PCIe 1.1 with integrated Intel® GMA 3100
| <!--Audio-->HD Audio with VIA VT1708B with ALC662 codec
| <!--USB-->
| <!--Ethernet-->Realtek RTL8102EL 100/10 LAN with Realtek RTL8111C Gigabit LAN
| <!--Opinion-->2 x 2 GB DDR2 Non-ECC,Un-buffered DIMMs with 2 PCI - Intel Graphics Media Accelerator -
|-
| <!--Name-->Asus P5KPL/EPU
| <!--Chipset-->G31 with ICH7
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Pci-e 1.0 slot
| <!--Audio-->{{Yes|HD audio with ALC887 codec}}
| <!--USB-->
| <!--Ethernet-->{{Yes|RTL8169 Realtek 8111C}}
| <!--Opinion-->Tested - 4 240-pin DIMM, Max. 4 GB - 4 pci-e and 3 pci - ATX Form Factor 12 inch x 8.2 inch ( 30.5 cm x 20.8 cm ) -
|-
| <!--Name-->Gigabyte GA-G31M ES2L
| <!--Chipset-->G31 plus ICH7
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{Yes|Intel GMA 3100 2d}}
| <!--Audio-->{{Maybe|ALC883 (1.x), ALC883/888B (2.x)}}
| <!--USB-->
| <!--Ethernet-->{{Maybe|RTL8111C (1.x), Atheros 8131 (2.x)}}
| <!--Opinion-->reduces DRAM capacity to 4GB
|-
| <!--Name-->ASRock G31M-S r1.0 G31M-GS
| <!--Chipset-->G31 + ICH7
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->{{maybe|4 sata2}}
| <!--Gfx-->{{maybe|GMA 3100 2d not 3d}}
| <!--Audio-->{{yes|ALC662}}
| <!--USB-->{{yes|4 USB2.0}}
| <!--Ethernet-->{{partial|rtl8169 RTL8111DL 8169 (for -GS) RTL8102EL (for -S)}}
| <!--Opinion-->2007 64bit Core2 - 2 DDR2 800 max 8Gig AMI bios MicroATX -
|-
| <!--Name-->ASRock G31M-S r2.0
| <!--Chipset-->G31 + ICH7
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->{{maybe|4 sata2}}
| <!--Gfx-->{{maybe|GMA 3100 2d not 3d}}
| <!--Audio-->{{yes|ALC662}}
| <!--USB-->{{yes|4 USB2.0}}
| <!--Ethernet-->{{yes|RTL 8111DL 8169}}
| <!--Opinion-->2008 64bit core2 - 2 DDR2 800 max 8Gig MicroATX
|-
| <!--Name-->[http://www.intel.com/cd/channel/reseller/apac/eng/products/desktop/bdb/dg31pr/feature/index.htm Intel DG31PR]
| <!--Chipset-->iG31
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->{{maybe|3100 but can use PCIe 1.1 slot}}
| <!--Audio-->{{yes|ALC888 playback}}
| <!--USB-->
| <!--Ethernet-->{{yes|RTL8111B Rtl 8169}}
| <!--Opinion-->good support
|-
| <!--Name-->
| <!--Chipset-->Intel G33 Express Chipset with ich9 southbridge
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->Intel 3100 powervr tile based
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2008 64bit - embedded on Core 2 Quad, Core 2 Duo, Pentium Dual-Core CPUS with Integrated GPU Intel GMA 3100 -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->ASUS P5G41T-M LX
| <!--Chipset-->G41 + ICH8 + DDR3
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->{{maybe}}
| <!--Gfx-->{{yes|X4500 some 2d only)}}
| <!--Audio-->ALC887
| <!--USB-->3 USB2.0
| <!--Ethernet-->{{no|Atheros L1c AR8131}}
| <!--Opinion-->reduces maximum supported memory ddr3 from 16 to 8GB 2 dimm slots non-EEC - demotes the PCIe controller mode from revision 2.0 (5.0GT/s) to revision 1.1 (2.5GT/s
|-
| <!--Name-->Gigabyte GA-G41MT S2
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->VT1708S (1.3), ALC887-VD2 (1.4), ALC887 (2.1),
| <!--USB-->
| <!--Ethernet-->Atheros AR8151 l1c (1.x 2.x),
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-G41MT S2PT
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->ALC887 (1.0), VIA (2.0), ALC887 (2.1)
| <!--USB-->
| <!--Ethernet-->RTL8111E (1.x), Atheros AR8151 l1c (2.1),
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-G41MT D3
| <!--Chipset-->G41 + ICH7
| <!--ACPI-->
| <!--IDE-->1 Port
| <!--SATA-->4 Ports
| <!--Gfx-->{{yes|GMA X4500 2d only and pci-e 1.1 slot}}
| <!--Audio-->{{yes|ALC888B}}
| <!--USB-->4 ports + headers
| <!--Ethernet-->{{yes|RTL8111 D/E}}
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-P41T D3P
| <!--Chipset-->G41 + ICH7 with Intel Core 2 Duo (E6xxx) CPU
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4ports
| <!--Gfx-->GMA X4500 2d
| <!--Audio-->ALC888 889/892
| <!--USB-->4 ports
| <!--Ethernet-->RTL 8111C or D/E
| <!--Opinion-->
|-
| <!--Name-->Intel DG41AN Classic
| <!--Chipset-->iG41 +
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 ports
| <!--Gfx-->X4500 2d
| <!--Audio-->ALC888S ALC888VC
| <!--USB-->4 ports
| <!--Ethernet-->8111E
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->AsRock P5B-DE
| <!--Chipset-->P965 + ICH8
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->{{Maybe|works ide legacy}}
|<!--Gfx-->{{Yes|with PCI-E 1.1 slot}}
| <!--Audio-->{{Yes|HD Audio via VT1708S}}
| <!--USB-->{{Yes}}
| <!--Ethernet-->{{Yes|RTL8169}}
| <!--Opinion-->2006 works well
|-
| <!--Name-->Asus P5B SE
| <!--Chipset-->965 intel
| <!--ACPI-->
| <!--IDE-->{{Yes| }}
| <!--SATA-->{{Yes| }}
| <!--Gfx-->{{N/A}}
| <!--Audio-->{{Yes|HD Audio ALC662 codec}}
| <!--USB-->{{Yes}}
| <!--Ethernet-->{{No| }}
| <!--Opinion-->works well except ethernet
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus P5W DH Deluxe P5WDG2 WS PRO
| <!--Chipset-->975X
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->2 ports
| <!--Gfx-->2 PCIe x16 slots
| <!--Audio-->ALC882 AND LATER ADI 1988B
| <!--USB-->2 USB2.0
| <!--Ethernet-->{{No|Marvell 88E8052 88E8053}}
| <!--Opinion-->Firewire TI TSB43AB22A no
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Abit IP35
| <!--Chipset-->P35 Express + ICH9R
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->6 ports
| <!--Gfx-->
| <!--Audio-->ALC888 HDA
| <!--USB-->4 USB2.0
| <!--Ethernet-->two RTL8110SC
| <!--Opinion-->Firewire Texas TSB43 AB22A no
|-
| <!--Name-->MSI P35 Neo F FL MS-7630 rev 1
| <!--Chipset-->Intel P35
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->pci-e 1.1 support
| <!--Audio-->HD Audio ALC888
| <!--USB-->
| <!--Ethernet-->Realtek
| <!--Opinion-->Base model of this range of P35 mobos
|-
| <!--Name-->GA-P35-DS3
| <!--Chipset-->P35 and ICH9
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->4 ports
| <!--Gfx-->
| <!--Audio-->HDAudio with Realtek ALC889A codec
| <!--USB-->
| <!--Ethernet-->rtl8169 Realtek 8111B
| <!--Opinion-->2008 - 4 x 1.8V DDR2 DIMM sockets max 8 GB -
|-
| <!--Name-->GA-EP35-DS3 (rev. 2.1)
| <!--Chipset-->Intel® P35 + ICH9 Chipset
| <!--ACPI-->
| <!--IDE-->{{unk|}}
| <!--SATA-->{{unk|4 }}
| <!--Gfx-->pci-e
| <!--Audio-->{{unk|Realtek ALC889A codec }}
| <!--USB-->{{yes | }}
| <!--Ethernet-->{{yes|rtl8169 Realtek 8111B}}
| <!--Opinion-->good
|-
| <!--Name-->Abit IX38 Quad GT
| <!--Chipset-->X38 / ICH9R Chipset
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->6 ports
| <!--Gfx-->PCI-E 2.0 slot
| <!--Audio--> HD Audio ALC888
| <!--USB-->4 USB2.0
| <!--Ethernet-->Realtek RTL 8110SC 8169SC
| <!--Opinion-->Firewire Texas TSB 43AB22A no
|-
| <!--Name-->Gigabyte X38-DQ6
| <!--Chipset-->X38 / ICH9R Chipset
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->6 ports
| <!--Gfx-->PCI-E 2.0 slot
| <!--Audio-->ALC889A HDA
| <!--USB-->4 USB2.0
| <!--Ethernet-->twin 8111B 8169
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Gigabyte GA-EP45 DS3 (2008)
| <!--Chipset-->P45 + ICH9 or ICH10
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->6 x SATA 3Gbit/s (SATAII0, SATAII1, SATAII2, SATAII3, SATAII4, SATAII5)
| <!--Gfx-->two PCI-E v2.0 x16 slots support splitting its 16 PCIe 2.0 lanes across two cards at x8 transfers
| <!--Audio-->HD Audio with ALC888 or ALC889A codec
| <!--USB-->6 USB2.0
| <!--Ethernet-->2 x Realtek 8111C chips (10/100 /1000 Mbit)
| <!--Opinion-->4 x 1.8V DDR2 DIMM sockets non-EEC
|-
| <!--Name-->MSI P45 Platinum (2008)
| <!--Chipset-->P45 + ICH9
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->6 sata2 ports
| <!--Gfx-->two PCI-E x16 v2.0 slots
| <!--Audio-->ALC888 HD Audio
| <!--USB-->6 USB2.0
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->G45 +
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->adds Intel’s GMA X4500HD graphics engine to P45 Express features
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->G43 +
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->GMA X4500 2d
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->removes HD video acceleration from the G45’s features
|-
| <!--Name-->Asus P5E Deluxe
| <!--Chipset--> X48 with ICH9
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HD Audio with ADI 1988B codec
| <!--USB-->
| <!--Ethernet-->Marvell 88E8001
| <!--Opinion-->
|-
| <!--Name-->GigaByte GA-X48 DQ6
| <!--Chipset-->X48 plus ICH9R
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->8 ports
| <!--Gfx-->two PCI-E x16 v2.0 slots
| <!--Audio-->ALC889A
| <!--USB-->8 USB2.0
| <!--Ethernet-->RTL 8111B 8169
| <!--Opinion-->Firewire TSB43AB23 no - ICH9 pairs with Intel’s 3-series (X38, P35, etc.) chipsets, in addition to the X48 Express, but excluding the G35 Express
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Gigabyte EP43-DS3L and Gigabyte GA-EP43-UD3L
| <!--Chipset-->P43 with ICH10
| <!--ACPI-->
| <!--IDE-->1 port
| <!--SATA-->6 x SATA 3Gbit/s connectors
| <!--Gfx-->1 x PCI Express x16 slot PCI Express 2.0 standard
| <!--Audio-->HD Audio with ALC888 codec
| <!--USB-->
| <!--Ethernet-->realtek 8111C
| <!--Opinion-->4 x 1.8V DDR2 DIMM sockets - 4 pcie x1 - 2 pci - ATX Form Factor; 30.5cm x 21.0cm
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Gigabyte 73-pvm-s2h rev.1.0
| <!--Chipset-->NVIDIA GeForce 7100 nForce 630i
| <!--ACPI-->
| <!--IDE-->{{Yes|1 port}}
| <!--SATA-->{{yes|3 ports SATA2}}
| <!--Gfx-->{{Maybe|Vesa 2d GeForce 7100 (vga /hdmi/dvi), 1 PCIe x16 Slot }}
| <!--Audio-->{{Yes|Realtek ALC889A MCP73}}
| <!--USB-->{{Yes|7 USB2.0}}
| <!--Ethernet-->{{no|RTL 8211B MCP73}}
| <!--Opinion-->Firewire Not, tested with Icaros Desktop 2.0.3 MCP73 is a single chip solution in three different versions
|-
| <!--Name-->Nvidia 7150 630i
| <!--Chipset-->intel based nForce 630i (MCP73)
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->{{maybe|ide legacy}}
| <!--GFX-->GF 7150
| <!--Audio-->{{yes|HD AUDIO ALC883}}
| <!--USB-->{{yes|ohci echi}}
| <!--Ethernet-->{{no|RTL8201C}}
| <!--Opinion-->being tested
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->pci-e 2.0 x16
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion--> the MCP73PV or the GeForce 7050/nForce 630i
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->the MCP73S or the GeForce7025/nForce 630i
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->the MCP73V or the GeForce 7025/nForce 610i
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Atom SOC (2008/2x)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->D945CLF
| <!--Chipset-->N230 single core
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->
| <!--Gfx-->{{yes|GMA945}}
| <!--Audio-->{{yes|ALC662}} Skt 441
| <!--USB-->{{yes|uhci and ehci}}
| <!--Ethernet-->{{yes|rtl8169}}
| <!--Opinion-->works very well
|-
| <!--Name-->[http://www.clusteruk.com iMica D945GCKF2 mobo]
| <!--Chipset-->Intel Atom N330 Dual Core
| <!--ACPI-->wip
| <!--IDE-->{{yes|IDE}}
| <!--SATA-->{{maybe}}
| <!--Gfx-->{{yes|gma}}
| <!--Audio-->{{yes|HD AUDIO}}
| <!--USB-->{{yes|uhci ehci}}
| <!--Ethernet-->{{yes|rtl8169}}
| <!--Opinion-->
|-
| <!--Name-->D945GSEJT + Morex T1610
| <!--Chipset-->Atom 230 with 945GSE
| <!--ACPI-->
| <!--IDE-->{{yes}}
| <!--SATA-->{{maybe}}
| <!--Gfx-->{{yes|GMA900 vga but issues with DVI output}}
| <!--Audio-->{{yes|HDAudio with ALC662 codec}}
| <!--USB-->{{yes| }}
| <!--Ethernet-->{{yes|RTL8169 8111DL}}
| <!--Opinion-->small size, runs off 12V
|-
| <!--Name-->ASUS AT3N7A-I
| <!--Chipset-->Atom N330 Nvidia ION
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{maybe|3 ports legacy IDE}}
| <!--Gfx-->{{yes|nouveau cube cube 2 45 quake 3 }}
| <!--Audio-->{{yes|HD Audio with VIA 1708S codec playback}}
| <!--USB-->{{yes}}
| <!--Ethernet-->{{yes|RTL8169 device}}
| <!--Opinion--><ref>http://www.youtube.com/watch?v=EAiJpvu73iw</ref> good but can freeze randomly at times
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->D410PT 45nm pinetrail
| <!--Chipset-->D410 and NM10
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{maybe|ide legacy}}
| <!--Gfx-->{{maybe|GMA3150}}
| <!--Audio-->{{yes|ALC262 or ALC66x odd clicks}}
| <!--USB-->{{yes}}
| <!--Ethernet-->{{yes|RTL8111DL}}
| <!--Opinion-->some support
|-
| <!--Name-->45nm pinetrail
| <!--Chipset-->D510 and NM10 + GMA3150
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->GMA3150
| <!--Audio-->ALC888B or ALC66x
| <!--USB-->{{yes}}
| <!--Ethernet-->RTL8111DL
| <!--Opinion-->some support
|-
| <!--Name-->Gigabyte GA-D525TUD (rev. 1.0 1.2 1.5)
| <!--Chipset-->D525 NM10
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->gma 3150
| <!--Audio-->HDAudio ALC887
| <!--USB-->
| <!--Ethernet-->rtl8169 rtl8111f
| <!--Opinion-->2012 64 - 2 ddr3 dimm slots max 8g - Mini-ITX Form Factor; 17.0cm x 17.0cm -
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
|}
=====Socket 1366 (2009/10)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Asus P6T DELUXE
| <!--Chipset-->x58 + ICH10 and Intel 1st gen. (Nehalem/Lynnfield) Core i7 (8xx) CPU
| <!--ACPI-->
| <!--IDE-->{{yes|1 port}}
| <!--SATA-->4 ports
| <!--Gfx-->2 PCIe x16 (r2.0) slots
| <!--Audio-->ADI AD2000B HD Audio
| <!--USB-->{{yes|4 USB2.0}}
| <!--Ethernet-->{{no|Marvell 88E8056 Gigabit}}
| <!--Opinion-->Firewire VIA VT6308 no
|-
| <!--Name-->gigabyte ex58 ds
| <!--Chipset--> x58 + ICH10
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->Realtek 8111D rtl8169
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket 1156 (2010)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->Acer Aspire M3910
| <!--Chipset-->i3
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->{{unk| }}
| <!--Gfx-->{{maybe|VESA intel HD}}
| <!--Audio-->{{unk|HDAudio with Realtek ALC}}
| <!--USB-->{{yes| }}
| <!--Ethernet-->{{unk| Realtek}}
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-H55M-S2H
| <!--Chipset-->H55
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->PCIe slot
| <!--Audio-->{{Yes|ALCxxx playback}} ALC888B (Rev1.x)
| <!--USB-->{{Yes| }}
| <!--Ethernet-->{{Yes|RTL8111D}} (Rev 1.x)
| <!--Opinion-->Tested but no support for WLAN Realtek 8188su
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI H55M-E33 v1.0
| <!--Chipset-->E7636 M7636 H55 chipset so older i3/i5/i7 system
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->{{yes|HD Audio ALC889}}
| <!--USB-->
| <!--Ethernet-->{{Yes|PCI-E Realtek 8111DL}}
| <!--Opinion-->Works well
|-
| <!--Name-->Asus P7P55D
| <!--Chipset-->P55
| <!--ACPI-->
| <!--IDE-->{{unk| }}
| <!--SATA-->{{unk| }}
| <!--Gfx-->pci-e
| <!--Audio-->{{maybe | via codec}}
| <!--USB-->{{unk| }}
| <!--Ethernet-->{{maybe |rtl8169 Realtek RTL8111B/C RTL8112L }}
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket LGA 1155 H2 (2010/13)=====
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->ASUS P8H61-I LX R2.0
| <!--Chipset-->H61
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata
| <!--Gfx-->1 pci-e slot
| <!--Audio-->{{unk|HDAudio via7018s codec}}
| <!--USB-->USB3
| <!--Ethernet-->{{yes|rtl8169 8111f}}
| <!--Opinion-->2013 64bit up to intel ivybridge cpus - 2 ddr3 dimm slots -
|-
| <!--Name-->Asus P8H61-I/RM/SI mini-itx
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2 sata
| <!--Gfx-->pci-e 2
| <!--Audio-->{{unk|HDAudio via7018s codec}}
| <!--USB-->
| <!--Ethernet-->{{yes|rtl8169 8111f}}
| <!--Opinion-->2013 64bit up to i3-2010 - OEM board from an RM machine but not ivybridge as the Asus BIOS isn't compatible with these, 0909 hacked one might work -
|-
| <!--Name-->asus p8h61-i lx r2.0/rm/si mini itx
| <!--Chipset-->h61
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e 2.0
| <!--Audio-->HDaudio with VIA codec
| <!--USB-->
| <!--Ethernet-->rtl8169 rtl8111e
| <!--Opinion-->2012 sandy and ivy - oem from rm machine 2 x 240-Pin DDR3 DIMM sockets max DDR3 1333MHz -
|-
| <!--Name-->Bewinner 63q9c7omvs V301 ITX
| <!--Chipset-->H61
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata with nvme
| <!--Gfx-->pci-e 4
| <!--Audio-->HDAudio
| <!--USB-->
| <!--Ethernet-->Realtek 8106E 100M Network Card
| <!--Opinion-->2022 64
|-
| <!--Name-->Biostar H61 H61MHV2 H61MHV3 Ver. 7.0
| <!--Chipset-->H61 with Intel Pentium G 2xxx series CPU
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e
| <!--Audio-->Realtek ALC662 later ALC897
| <!--USB-->4 usb2
| <!--Ethernet-->rtl8169 Realtek RTL8111H
| <!--Opinion-->2014 - 2 ddr3 dimm slots -
|-
| <!--Name-->Gigabyte GA-H61M-D2-B3
| <!--Chipset-->H61 + Sandybridge
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 ports sata2
| <!--Gfx-->
| <!--Audio-->ALC889
| <!--USB-->2 ports
| <!--Ethernet-->Realtek RTL8111E
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-H61MA-D3V
| <!--Chipset-->H61 +
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 ports sata2
| <!--Gfx-->
| <!--Audio-->Maybe HDAudio with Realtek ALC887 (Rev 2.0) ALC887 (Rev2.1)
| <!--USB-->2 USB 2.0/1.1 ports
| <!--Ethernet-->Realtek RTL8111E
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-H61N-D2V
| <!--Chipset-->H61 +
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata2 and maybe 4 sata3
| <!--Gfx-->pci-e 2.0 slot wit 1 x DVI-I port
| <!--Audio-->{{unk|HDAudio with Realtek ALC887 (Rev 1.0)}}
| <!--USB-->2 USB 2.0/1.1 ports
| <!--Ethernet-->Realtek RTL8111E
| <!--Opinion-->2013 64bit- 2 x 1.5V DDR3 DIMM sockets up to 16 GB -
|-
| <!--Name-->GA-H61M-S2PV
| <!--Chipset-->H61 with 2400k 2500k 2600k 2700k
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->pci-e 2.0 slot
| <!--Audio-->ALC887 (rev 1.0 2.0 2.1 2.2 2.3)
| <!--USB-->4 USB 2.0
| <!--Ethernet-->Rtl811E (1.0) 8151 (2.0) Rtl8111F (2.1 2.2 2.3)
| <!--Opinion-->Micro ATX Form Factor; 24.4cm x 20cm with 2 pci-e and 2 pci -
|-
| <!--Name-->Intel Classic Series DH61CR Desktop
| <!--Chipset-->H61 +
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 ports
| <!--Gfx-->
| <!--Audio-->Intel HD with ALC892
| <!--USB-->4 ports
| <!--Ethernet-->{{no|Intel 82579V}}
| <!--Opinion-->
|-
| <!--Name-->MSI H61M-P20 (G3) MS-7788
*retail MSI board
*OEM Advent, etc
| <!--Chipset-->H61
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{yes|four SATAII ports}}
| <!--Gfx-->1 PCI Express gen3 (retail) gen2 (oem) x16 slot
| <!--Audio-->{{yes|HDAudio ALC887 codec}}
| <!--USB-->{{yes|}}
| <!--Ethernet-->{{yes|Realtek 8105E 100M Network Card}}
| <!--Opinion-->2012 64bit - 2 ddr3 slots - 22.6cm(L) x 17.3cm(W) M-ATX Form Factor - BIOS - [https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1149&rowstart=140&pid=6009#post_6007 works well],
|-
| <!--Name-->MSI H61I-E35 (B3) MS-7677 Ver.1.2
| <!--Chipset-->H61
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata2 3gbps
| <!--Gfx-->{{maybe|VESA 2d for hdmi and 1 pcie 2.0 x1 slot}}
| <!--Audio-->{{yes|https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1149&rowstart=140&pid=5861#post_5861 works}}
| <!--USB-->USB3 and USB2
| <!--Ethernet-->{{yes|rtl8169 rtl8111e}}
| <!--Opinion-->2012 64bit - 2 ddr3 slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus P8H67-M
| <!--Chipset-->H67 +
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2 sata3 - 4 sata2
| <!--Gfx-->
| <!--Audio-->Intel HD with ALC887
| <!--USB-->6 USB2.0
| <!--Ethernet-->Realtek® 8111E
| <!--Opinion-->
|-
| <!--Name-->Asus P8P67
| <!--Chipset-->P67 with sandybridge and ivybridge cpus
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->{{unk|HDAudio with ALC codec}}
| <!--USB-->
| <!--Ethernet-->{{unk|rtl8169 realtek rtl8111}}
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus P8Z68-V LX
| <!--Chipset-->Z68 + Intel 2nd generation (Sandy Bridge) CPU and possibly ivybridge
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{yes|2 sata3 - 4 sata2}}
| <!--Gfx-->pci-e slot
| <!--Audio-->{{yes|HDAudio Intel HD with ALC887 codec}}
| <!--USB-->{{yes|2 USB3.0 - 4 USB2.0}}
| <!--Ethernet-->{{yes|rtl8169 Realtek® 8111E}}
| <!--Opinion-->2011 64bit SSE 4.1 and AVX - EFI bios - 4 ddr3 dimm slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte Z68AP-D3 (B3)
| <!--Chipset-->Z68 + Ivybridge
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2 sata3 - 4 sata2
| <!--Gfx-->
| <!--Audio-->Intel HD with ALC889
| <!--USB-->2 USB3.0 - 4 USB2.0
| <!--Ethernet-->Realtek® 8111E
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus B75M-A
| <!--Chipset-->B75
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes| }}
| <!--Gfx-->pci-e
| <!--Audio-->{{maybe|HDAudio with Realtek ® ALC887-VD codec}}
| <!--USB-->{{maybe| }}
| <!--Ethernet-->{{yes|rtl8169 Realtek ® 8111F-VB-CG }}
| <!--Opinion-->2013 64bit - 2 ddr3 slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->H77
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-H77-D3H 1.0 1.1
| <!--Chipset-->H77
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata 3.0
| <!--Gfx-->pci-e
| <!--Audio-->{{No|HDAudio VIA VT2021 codec}}
| <!--USB-->
| <!--Ethernet-->{{No|Atheros GbE LAN chip}}
| <!--Opinion-->2013 64bit i5 3550 7 3770 - 4 DDR3 slots - 2 full pci-e 2 pci slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Gigabyte GA Z77 D3H with i3 3225 dual
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e
| <!--Audio-->{{No|HDAudio VIA VT2021 codec}}
| <!--USB-->
| <!--Ethernet-->{{No|Atheros GbE LAN chip}}
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket LGA 1150 H3 (2013/2016)=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->[https://theretroweb.com/motherboards/s/asus-b85m-e-rev-1-02 Asus B85M-E]
| <!--Chipset-->B85
| <!--ACPI-->
| <!--IDE-->{{yes| }}
| <!--SATA-->{{yes| }}
| <!--Gfx-->pci-e
| <!--Audio-->{{maybe|HDAudio with Realtek ® ALC887-VD2 codec}}
| <!--USB-->{{no| }}
| <!--Ethernet-->{{yes|rtl8169 Realtek 8111F}}
| <!--Opinion-->2014 64bit - 4 ddr3 slots -
|-
| <!--Name-->Gigabyte GA-H87N-WIFI mITX
| <!--Chipset-->H87 and Intel 4th generation (Haswell) Core i5 (4xxx) CPU
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->Intel HD with ALC892
| <!--USB-->
| <!--Ethernet-->Intel Atheros
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->ASUS H81I-PLUS Mini ITX
| <!--Chipset-->H81 with intel 4590t 4690t
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata3 6gbps
| <!--Gfx-->pci-e 3.0 x4 slot
| <!--Audio-->{{yes|HDAudio 6.34 with ALC8878 codec playback only}}
| <!--USB-->{{yes|USB3 USB2}}
| <!--Ethernet-->{{yes|rtl8169 rtl8111g}}
| <!--Opinion-->2014 64bit - 2 ddr3 dimm slots max 16gb - f2 or DEL bios and f8 boot select -
|-
| <!--Name-->Asus H81M-C H81M-P-SI
| <!--Chipset-->H81 with 4th generation (Haswell) Core i7 (4xxx) CPU
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2x3g 2x6g
| <!--Gfx-->pci-e slot
| <!--Audio-->hdaudio alc887 vd
| <!--USB-->
| <!--Ethernet-->realtek 8111gr
| <!--Opinion-->2013 skt 1150 - 2 ddr3 max 16g - mini atx -
|-
| <!--Name-->Asus H81T
| <!--Chipset-->H81
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2 sata
| <!--Gfx-->HD4000 igpu only
| <!--Audio-->HDAudio ALC887-VD
| <!--USB-->Intel USB3
| <!--Ethernet-->rtl8169 realtek 8111G
| <!--Opinion-->2013 64bit intel 4th gen mini itx - external dc brick with 19v rare barrel pin 7.4MM x 5.0MM - 2 ddr3 laptop sodimm slots -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-H81M-S2V
| <!--Chipset-->H81
| <!--ACPI-->
| <!--IDE-->{{N/A|}}
| <!--SATA-->
| <!--Gfx-->pci-e
| <!--Audio-->HDAudio ALC887
| <!--USB-->USB3
| <!--Ethernet-->Realtek® GbE LAN chip
| <!--Opinion-->2014 64bit up to i7 4790K - 2 DDR3 slots -
|-
| <!--Name-->Gigabyte GA-H81M-D3V (rev. 1.0)
| <!--Chipset-->H81
| <!--ACPI-->
| <!--IDE-->{{N/A| }}
| <!--SATA-->{{yes|2 sata2 2 sata3 }}
| <!--Gfx-->pci-e
| <!--Audio-->{{unk| HDAudio Realtek® ALC887 codec}}
| <!--USB-->{{unk|intel and VIA® VL805}}
| <!--Ethernet-->{{unk|rtl8169 Realtek }}
| <!--Opinion-->
|-
| <!--Name-->MSI H81M-E34 (MS-7817)
| <!--Chipset-->H81
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->{{yes| }}
| <!--Gfx-->PCIe 2.0 x16
| <!--Audio-->HDAudio with ALC887 codec
| <!--USB-->USB3
| <!--Ethernet-->{{yes|rtl8169 RTL8111G}}
| <!--Opinion-->2013 64bit -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus Z87-K
| <!--Chipset-->Z87 with 4th generation (Haswell) Core i7 4c8t i5 4c4t CPU
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e
| <!--Audio-->Intel HD with ALC
| <!--USB-->
| <!--Ethernet-->Realtek lan
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-Z87X-UD3H
| <!--Chipset-->Z87 Express
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e
| <!--Audio-->Intel HD with Realtek® ALC898 codec
| <!--USB-->
| <!--Ethernet-->intel
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA H97M D3H r1.0 r1.1 with i3 4360 or 4370 dual
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->pci-e
| <!--Audio-->Intel HD with ALC892
| <!--USB-->
| <!--Ethernet-->Realtek lan
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus Z97 A with i7 4790K
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->750, 960, 970 and 980 nvidia GTX cards
| <!--Audio-->Intel HD with ALC
| <!--USB-->
| <!--Ethernet-->intel lan ethernet
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA Z97X UD3H rev1.0 1.1 1.2
| <!--Chipset-->Z97 with i5 4690K
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->HDaudio with ALC1150
| <!--USB-->
| <!--Ethernet-->intel lan
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI GAMING 5 Z97
| <!--Chipset-->Z97 with 4th generation (Haswell) Core i7 4c8t CPU
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->ASUS Q87M-E
| <!--Chipset-->Q87
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2014 64bit - 4 DDR3 slots -
|-
| <!--Name-->
| <!--Chipset-->H99
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket LGA2011V2 s2011-2 (2012/15)=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->x79
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2013 Xeon e5-???? W TDP, e5-2667V2 W TDP, e5-????V2 W TDP, Sandybridge and Ivybridge V2
|-
| <!--Name-->Asus
| <!--Chipset-->X79
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket LGA2011V3 s2011-3 (2015/18)=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->x99
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2016 Xeon e5-1620v3 130W TDP, e5-1650V3 (i7-5930K) 140W TDP, e5-2640V3 90W TDP, Haswell-EP
|-
| <!--Name-->Asus
| <!--Chipset-->X99
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->most cheap Ryzens are better nowadays
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Huananzhi X99-CD4
| <!--Chipset-->Intel C612 and X99
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata 3 connectors and 1 m.2 nvme slot
| <!--Gfx-->pcie slot
| <!--Audio-->HDaudio with ALC897 codec
| <!--USB-->{{No|USB3}}
| <!--Ethernet-->{{maybe|rtl8169}}
| <!--Opinion-->2024 quality might not be great outside of a simple setup - 2 ddr4 dimms -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Keyiyou X99 XD4
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Machinist MR9A Pro
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2023
|-
| <!--Name-->Machinist MR9A Pro
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2023
|-
| <!--Name-->Mogul
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Qiyida X99 H9S
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2023
|-
| <!--Name-->Soyo
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket LGA 1151 Socket H4 (2015/2018)=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->Skylake CPUs have TPM 2.0 embedded
|-
| <!--Name-->Asus H110 Plus H110M-A/DP
| <!--Chipset--> with 6th Gen Core and 7th with bios update
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->Sunrise Point-H SATA [AHCI mode] [8086 a102]
| <!--Gfx-->{{No|Skylake Integrated HD Graphics use PIC-E slot}}
| <!--Audio-->Intel HD Audio with Realtek ALC887 Audio CODEC
| <!--USB-->Sunrise Point-H USB 3.0 xHCI [8086: a12f] no usb2.0 fallback
| <!--Ethernet-->{{Yes|Realtek 8111GR or 8111H RTL8111 8168 8411}}
| <!--Opinion-->ATX with 3 pci-e and 2 DDR4 slots - uatx version smaller - turn off TLSF as it was causing AHI driver to corrupt. Turned off ACPI for errors but works fine once booted -
|-
| <!--Name-->ASUS H110M-R M-ATX
| <!--Chipset-->H110 6th Gen Skylake Core™ i7 Core™ 6950X i7-6970HQ i7-6700K 4c8t hyperthreading, i5/Core™ i5-6600K 4c4t i3/Pentium® / Celeron®
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 x SATA 6Gb/s
| <!--Gfx-->pci-e
| <!--Audio-->HDAudio with Realtek® ALC887 codec
| <!--USB-->Intel USB3
| <!--Ethernet-->Realtek® RTL8111H
| <!--Opinion-->2016 64bit - 2 DDR4 DIMMS Max 32GB 2133MHz - 1 full pci-e and 2 pci-e 1 -
|-
| <!--Name-->Asus H110T
| <!--Chipset-->H110
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->2 sata
| <!--Gfx-->intel igpu only
| <!--Audio-->HDaudio
| <!--USB-->
| <!--Ethernet-->Dual Intel/Realtek GbE languard
| <!--Opinion-->2016 - mini itx 12v / 19v laptop type rare barrel pin 7.4MM x 5.0MM - 2 sodimm ddr4 slots - no pci-e slot -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte GA-H110M-S2H MATX Rev1.0
| <!--Chipset-->H110
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata
| <!--Gfx-->pci-e 3.0
| <!--Audio-->Realtek® ALC887 codec
| <!--USB-->2 (USB 3.1 Gen 1) ports with 4 us2
| <!--Ethernet-->Realtek® GbE LAN
| <!--Opinion--> 2 ddr4 slots
|-
| <!--Name-->Gigabyte ga-h110n
| <!--Chipset-->H110
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->{{Yes| sata}}
| <!--Gfx-->{{maybe|Vesa 2d for Intel or PCI-e slot}}
| <!--Audio-->{{Maybe|HDaudio for ALC887 codec}}
| <!--USB-->{{Maybe| }}
| <!--Ethernet-->{{maybe|RTL8169}}
| <!--Opinion-->2016 mini-itx 6th gen
|-
| <!--Name-->Msi H110M-PRO-VH
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 x SATA 6Gb/s
| <!--Gfx-->pci-e 3.0
| <!--Audio--> Realtek® ALC887 Codec
| <!--USB-->
| <!--Ethernet-->rtl8169 rtl8111h
| <!--Opinion--> 6th gen intel - 2 ddr4 slots
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus H170 Pro Gaming
| <!--Chipset-->H170
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sata
| <!--Gfx-->pci-e
| <!--Audio-->HDAudio
| <!--USB-->Asmedia USB3.1/3.0
| <!--Ethernet-->intel lan
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->MSI Z170A TOMAHAWK
| <!--Chipset-->Z170
| <!--ACPI-->
| <!--IDE-->{{N/A}}
| <!--SATA-->4 sara, 1 x 2280 Key M(PCIe Gen3 x4/SATA), 1 x 2230 Key E(Wi-Fi)
| <!--Gfx-->pci-e
| <!--Audio-->HDAudio
| <!--USB-->
| <!--Ethernet-->intel lan
| <!--Opinion-->2016 64bit up to i7 7700k - 2 DDR4 -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->GIGABYTE GA-B250M-DS3H HD3P D3H D2V
| <!--Chipset-->B250
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2018 coffee lake intel 8th gen
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus
| <!--Chipset--> with Kaby Lake X Intel 7th Gen
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion--> up to 16 pcie lanes
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus
| <!--Chipset--> Z390 with Kaby Lake X
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion--> up to 16 pcie lanes
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset--> Q370M
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset--> H370M
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset--> B360M
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Asus Rampage
| <!--Chipset-->x299 with i9
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion--> - up to 24 to 44 pcie lanes
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->Gigabyte
| <!--Chipset--X299 >
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|}
=====Socket LGA 1200 (2020/2022)=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->MSI H510M-A PRO (MS-7D22)
| <!--Chipset--> with 10th gen Comet Lake X
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2021 64bit - up to 16 pcie lanes rebar possible
|-
| <!--Name-->Asus PRIME H410M-E
Asrock H470M-HDV/M.2
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus
| <!--Chipset--> with 11th gen Rocket Lake X
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion--> up to 16 pcie lanes
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|}
=====Socket LGA 1700 (2023/ )=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->Alder Lake / 14th gen Raptor Lake
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2021 2022 64bit - QoS work to 2 level cpus, P down to E cores -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->Meteor Lake ultra 5 7 1xxH series 1
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2023 2024 64bit 10nm - 3 level cpus, Low Power Island (SOC tile) to E onto P cores -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset--> 15th gen Arrow Lake
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->Lunar lake ultra 5 7 2xxV series 2
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2025 64bit 7nm -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->Nova Lake
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2026 64bit -
|-
| <!--Name-->
| <!--Chipset-->Panther Lake
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2026 64bit - either 44, 484, or 448 tiled cores 18A process - core ultra x9 288h, x7 358H, -
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
|}
=====Socket LGA 1954 (2027/ )=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->
| <!--Chipset-->Nova Lake-S
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->Serpent Lake, Titan Lake, and Razer Lake
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->2027
|-
|}
=====Socket LGA (203x/203x)=====
[[#top|...to the top]]
{| class="wikitable sortable" width="90%"
! width="10%" |Name
! width="5%" |Chipset
! width="5%" |ACPI
! width="5%" |IDE
! width="5%" |SATA
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |USB
! width="10%" |Ethernet
! width="30%" |Opinion
|-
| <!--Name-->MSI
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|- style="background:lightgrey; text-align:center; font-weight:bold;"
| Name || Chipset || ACPI || IDE || SATA || Gfx || Audio || USB || Ethernet || Opinion
|-
| <!--Name-->Asus
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|-
| <!--Name-->
| <!--Chipset-->
| <!--ACPI-->
| <!--IDE-->
| <!--SATA-->
| <!--Gfx-->
| <!--Audio-->
| <!--USB-->
| <!--Ethernet-->
| <!--Opinion-->
|}
===Chromebooks===
For most (EOL) cromebooks, the recommended UEFI path forward is to:
*put the device into Developer Mode
*disable firmware write protection
*flash MrChromebox's UEFI Full ROM firmware
*install ChromeOS Flex, Linux, etc
See [https://mrchromebox.tech/#home MrChrome], [https://mrchromebox.tech MrChrome] and the [https://www.reddit.com/r/chrultrabook/ chrultrabook subreddit] for more info
ChromeOS has several different boot modes, which are important to understand in the context of modifying your device to run an alternate OS:
*Normal/Verified Boot Mode
Can only boot Google-signed ChromeOS images
Full verification of firmware and OS kernel
No root access to the system, no ability to run Linux or boot other OSes
Automatically enters Recovery Mode if any step of Verified Boot fails
Default / out-of-the-box setting for all ChromeOS devices
*Recovery Mode
User presented with Recovery Mode boot screen (white screen with 'ChromeOS is missing or damaged')
Boots only USB/SD with signed Google recovery image
Automatically entered when Verified Boot Mode fails
Can be manually invoked:
On Chromebooks, via keystroke: [ESC+Refresh+Power]
On Chromeboxes, by pressing a physical recovery button at power-on
On Convertibles/Tablets, by holding the Power, Vol+, and Vol- buttons for 10s and then release
Allows for transition from Verified Boot Mode to Developer Mode
On Chromebooks/Chromeboxes, via keystroke: [CTRL+D]
On Convertibles/Tablets, via button press: Vol+/Vol- simultaneously
Booting recovery media on USB/SD will repartition/reformat internal storage and reload ChromeOS
Note: The ChromeOS recovery process does not reset the firmware boot flags (GBB Flags), so if those are changed from the default, they will still need to be reset for factory default post-recovery.
*Developer Mode
"Jailbreak" mode built-in to every ChromeOS device
Loosened security restrictions, allows root/shell access, ability to run Linux via crouton
Verified Boot (signature checking) disabled by default, but can be re-enabled
Enabled via [CTRL+D] on the Recovery Mode boot screen
Boots to the developer mode boot screen (white screen with 'OS verification is off' text),
The user can select via keystroke
<pre>
ChromeOS (in developer mode) on internal storage ( [CTRL+D] )
ChromeOS/ChromiumOS on USB ( [CTRL+U] )
Legacy Boot Mode ( [CTRL+L] )
</pre>
Boot screen displays the ChromeOS device/board name in the hardware ID string (eg, PANTHER F5U-C92, which is useful to know in the context of device recovery, firmware support, or in determining what steps are required to install a given alternate OS on the device.
*Legacy Boot Mode
Unsupported method for booting alternate OSes (Linux, Windows) via the SeaBIOS RW_LEGACY firmware
Accessed via [CTRL+L] on the developer mode boot screen
Requires explicit enabling in Developer Mode via command line: sudo crossystem dev_boot_legacy=1
Most ChromeOS devices require a RW_LEGACY firmware update first
Boots to the (black) SeaBIOS splash screen; if multiple boot devices are available, prompt shows the boot menu
Note: If you hear two beeps after pressing [CTRL+L], then either your device doesn't have a valid Legacy Boot Mode / RW_LEGACY firmware installed, or legacy boot capability has not been been enabled via crossystem.
https://www.howtogeek.com/278953/how-to-install-windows-on-a-chromebook/
Chromebooks don’t officially support other OSs. You normally can’t even install as Chromebooks ship with a special type of BIOS designed for Chrome OS. But there are ways to install, if you’re willing to get your hands dirty and potentially ruin everything
[https://mrchromebox.tech/#devices Firmware Compatibility]
[https://wiki.galliumos.org/Hardware_Compatibility Here is the list of hardware that the GalliumOS supports and information on getting Gallium OS on to those devices]
Development on GalliumOS has been discontinued, and for most users, GalliumOS is not the best option for running Linux due to lack of hardware support or a kernel that's out of date and lacking important security fixes.
Meet Eupnea and Depthboot, the successors to Galliumos and Breath [https://eupnea-linux.github.io This is the bleeding edge]
Most older Chromebooks need the write-protect screw removed in order to install MrChromebox's firmware that allows you to install other operating systems. Most newer Chromebooks don't work in the same way as there is no write-protect screw on them.
Very rough guide to '''total''' (i.e. all cores / threads) processor performance (AROS usually uses only the [https://gmplib.org/gmpbench one core])
[[#top|...to the top]]
<pre>
060000 AMD Ryzen 9 7900X (AM5 170W),
056000 AMD Ryzen 9 5950X,
055000 AMD Ryzen 9 5900X3D,
053000 AMD Ryzen 9 5900X (AM4 105W), AMD Ryzen 9 3950X (105W),
044000 AMD Ryzen 7 5800X3D,
042000 AMD Ryzen 9 6900HX, AMD Ryzen 5 5600X3D (AM4 95W), AMD Ryzen 7 PRO 5750GE (AM4 35W),
039000 AMD Ryzen 9 5900HS, Intel Core i7-12700T, AMD Ryzen 7 7735HS (8c16t 45W), AMD 8840U,
038000 AMD Ryzen 7 5800H (FP6 45W), AMD Ryzen 7 6800U, Intel Core i5-12490F, Intel Core i5-12500E,
037000 AMD Ryzen 7 5800HS (FP6 35W), AMD Ryzen 5 8500G 8600GE (AM5 6c12t 35W), AMD Ryzen Z2 (8c16t),
036500 AMD Ryzen 7 5700G (AM4 8c16t 65W), AMD Ryzen 9 6900HS, Intel Core i7-12800H,
036200 AMD Ryzen 7 5700GE (AM4 8c16t 35W), AMD Ryzen Z1 Extreme (top TDP), AMD Ryzen 5 8600G (AM5 65W),
036000 AMD Ryzen 5 3600X (Am4 95W), AMD Ryzen 5 5500 (AM4 65W), AMD Ryzen 5 5600 (65W),
035000 AMD Ryzen 5 6600H, Intel Core i5-12400F,
031000 AMD Ryzen™ 9 8945HS, Ryzen™ 7 8845HS, AMD Ryzen 7 7840U,
030000 AMD Ryzen 7 4800U, AMD Ryzen 4800H, Intel Core i5-11400F, Intel Zeon E5-2697A V4,
029500 AMD Ryzen 5 4500 (AM4 65W), AMD Ryzen 5 3600 (65W), Apple M3 Pro 12c, AMD Ryzen 5 5600G,
028500 AMD Ryzen 5 PRO 5675U, AMD Ryzen 7 1700 (AM4 65W), AMD Ryzen 7 2700 (65W), Ryzen 3 7540U,
028000 AMD Ryzen 5 PRO 5650U, 5 5560U (FP6 25W 6c12t Zen3), Intel Core i5-13500H, AMD Ryzen 7 4800HS,
027700 AMD Ryzen 9 PRO 7940HS (FP8 65W), AMD 8745HS, AMD Ryzen H255 AI, AMD Ryzen 3 7545U,
027500 AMD Ryzen 3 7736U, AMD Ryzen 5 7640U,
027400 AMD Ryzen 5 8540U, AMD Ryzen 5 PRO 5650GE (AM4 6c12t 35W), AMD Ryzen 5 PRO 4650G (AM4 45W),
027300 AMD Ryzen 7 PRO 4750GE, AMD Ryzen 5 5600H, AMD Ryzen 7 5825U (FP6 8c16t 15W),
027200 AMD Ryzen 5 6600U, AMD Ryzen 7 2700X, AMD Ryzen 5 5600GE (AM4 35W), AMD Ryzen Z1,
027100 AMD Ryzen 7 7730U (FP6 15W 8c16t), AMD Ryzen 7 5800U (FP6 25W 8c16t), Ryzen 9 4900H,
027000 AMD Ryzen 7 PRO 4750U (8c16t), Ryzen 5 7430U (FP6 6c12t), Ryzen 5 PRO 6650U, Intel 10500H,
026500 AMD Ryzen 7 PRO 7840HS (FP7 65W), AMD Ryzen 7 8840HS, AMD Ryzen Z2 Extreme,
025000 AMD Ryzen 5 4600HS (FP6 35W 6c12t), Apple M1 Pro, AMD Ryzen 5 5625U (FP6 15W 6c12t),
024500 AMD Ryzen 5 5600U (FP6 25W hot 6c12t Zen3), AMD Ryzen 5 2600 (65W), Ryzen 5 7530U,
024000 AMD Ryzen 5 4600G (AM4 65W), AMD Ryzen 5 PRO 4650GE (AM4 35W), AMD Ryzen 7 PRO 1700X (AM4 95W),
023700 AMD Ryzen 3 PRO 5350GE (AM4 35W), AMD Ryzen 5 3500X (AM4 95W), Intel Core i7-9700,
023500 AMD Ryzen 5 1600X (95W), AMD Ryzen 3 5300GE (AM4 4c8t 35W), AMD Ryzen 7 5700U (FP6 25W 8c16t Zen2),
023200 AMD Ryzen 3 7330U (FP6 15W 4c8t), AMD Ryzen 7 4700U (FP6 25W 8c8t), AMD Ryzen 5 4400G,
023000 Intel Core i7-1255U, Intel Core i7 13700H, Ryzen 7640HS,
022000 AMD Ryzen Z2 Go (4c8t), AMD Ryzen 5 5500U (FP6 25W 6c12t Zen2), Snapdragon 8 Elite,
020500 AMD Ryzen 3 4300G (AM4 65W), AMD Ryzen 3 5450U 5425U, AMD Ryzen 5 PRO 4650U (6c12t),
019500 Intel Core i5-1135G7, AMD Ryzen 5 5500H, AMD Ryzen 5 4600U (FP6 25W 6c), AMD Ryzen 5 2600 (65W),
019250 Intel Core i5-1145G7,
019000 AMD Ryzen 5 3400G (AM4 65W), AMD Ryzen 5 2500X, AMD Ryzen 5 7520U, AMD Ryzen V3C18I (? 15W),
017750 AMD Ryzen 5 3400GE (AM4 35W), Intel Core i5-8400, AMD Ryzen 5 1500X (AM4 65W), Xbox One Series X,
017500 Intel Core i7-6700K, Intel i5-10400, AMD Ryzen 5 4500U (FP6 25W 6c6t), AMD Ryzen 3 5400U,
017000 AMD Ryzen 3 PRO 4350GE (AM4 35W), AMD Ryzen 3 5300U (FP6 25W 4c8t), Intel Core i5-11300H,
016500 AMD Ryzen 7 3750H, AMD Ryzen Embedded V1756B (FP5 45W), AMD Ryzen 3 PRO 4200GE, SD G3 Gen3,
016250 Intel Core i5-1035G7, intel core i5 7600 (4c4t 65W),
016000 AMD Ryzen 5 2400G (AM4 65W), AMD Ryzen 5 3550H, Ryzen 5 PRO 3350GE (4c 8t), Intel Core i5-8500T,
015500 AMD Ryzen Embedded R2544, Apple A19 Pro,
015000 AMD Ryzen 3 7320U, Ryzen 7 3700U, Ryzen 3200G (AM4 65W), Intel Core i7-8550U, Intel Core i5-1035G1,
014000 AMD Ryzen 5 2400GE (AM4 35W), Intel Core i7-6700T, AMD Ryzen 5 3550U,
013500 AMD Ryzen 5 3500U (FP5 15W 4c8t), AMD Ryzen 3 4300U, AMD Athlon Gold 4150GE, AMD Ryzen 5 3450U,
013250 AMD Ryzen 3 3200GE (AM4 45W), AMD Ryzen 3 1300X (65W), AMD Ryzen 3 2200G, Xbox One Series S,
013000 AMD Ryzen Embedded V1605B (FP5 25W), AMD Ryzen 2700U, AMD Ryzen R2514, Apple A18,
012500 AMD Ryzen 5 2500U (FP5 25W 4c8t), Intel Core i3-8300T, Intel Xeon X5680, Intel i3-1115G4 (2c4t),
012300 Intel Core i7-8565U, Intel Core i5-8350U, Intel Core i7-8700, Allwinner A733 (2 A76, 6 A55),
012200 ARM Cortex-X3 Prime Snapdragon SD8G2 Gen2 4nm 64-bit Kryo CPU, i5-8250U (4c8t),
012000 AMD Ryzen 3 2200GE, AMD Ryzen 3 1200 (65W), AMD Ryzen 5 3500C,
011500 AMD Ryzen 3 3300U, Intel Core i3-8100T, Intel Core i5-8265U, Intel i5-10210U, CORE i5-10310U,
010500 AMD Ryzen 3 2300U (FP5 25W 4c4t), Allwinner A527 (8 A55), Intel i5 4690K,
010300 Intel Core i7-3630QM, Intel Core i5-6600T, Intel Core i5-4670K,
010200 Intel Core i5-6440HQ, Intel Core i7-3610QM, Snapdragon SD865,
010000 AMD FX-8320E (AM3+ 125W 8c8t), Intel Core i5-7500T, Intel Core i5-4690, Intel i5 4690T,
009000 Spectrum Unisoc Tiger T7280 (T620), Cortex-X2, MediaTek Dimensity 1300 (4 A78, 4 A55),
008700 AMD FX-6130 (AM3+ 90W 6c6t), Intel Core i5-7400T, Intel Core i5-4590T,
008500 Intel Core i5-6500T, AMD Athlon 300GE (AM4, 35W), AMD Athlon Gold 7220U,
008000 AMD Ryzen R1606G (FP5 15W), AMD FX-6300 (AM3 65W 6c6t), Intel Core i5-2500K,
007500 AMD Ryzen 3 3200U, AMD Ryzen 3 3250U, Intel Alderlake ULX N100 / N95,
007200 AMD Ryzen 3 2200U (FP5 25W 2c4t), Intel Core i3-7100T, Intel Twinlakes N150 N200, Xbox(TM) One S,
007100 AMD Ryzen R1505G (FP5, 15W), RK3576 4 A72, 4 A53, Snapdragon XR2 Gen 1, Intel i7-6600U and 7600U,
006600 Qualcomm Snapdragon 888 5G, AMD Athlon 300U (FP5 2c4t 15W), Intel Core i7-7500U, AMD V1202B,
006500 Intel Core i7-6500U, AMD Athlon Gold 3150U, Intel Celeron N5105 (FCBGA1338 15W), SD 685,
006300 Intel Core i3-8130U (15W), Intel Celeron N5095 (FCBGA1338 15W), Intel Core i3-6100T,
006100 Intel Core i5-6300U, Intel Core i5-7200U (2c4t), Intel i7-5500U, Intel Core i7-6600U (2c4t),
006000 Intel Core i5-6200U (2c4t), Intel Core i3-7130U, Intel i7-4500U, Qualcomm Snapdragon 888 4G,
005950 Intel Core i5-4570T, Intel Core i5-5257U, Rockchip RK3588 (4 A76, 4 A55), Snapdragon 7325,
005900 Intel Xeon X5550, Intel Core i5-4300M, MediaTek Dimensity 1200 (4 A78, 4 A55), Unisoc 7255 (T616),
005800 Intel Celeron J4125 J4105 (FCBGA1090 15W), Intel Core i5-3470T, AMD A8-6600K APU, AMD 3015E (2c4t),
005600 Intel Core i5-3360M, Intel Core i7-3520M, Intel Core i5-4210M, Intel Pentium G4600T,
005400 MediaTek Dimensity 900 (2 A78, 6 A55), AMD Athlon Silver 7120U, Snapdragon 860,
005300 AMD PRO A12-9800B 7th Gen APU (FP4 15W), AMD FX-4300 4c4t, AMD Ryzen R1305G,
005250 Intel Core i5-3230M, AMD FX-7600P, Intel Pentium G4400, Unisoc T7200 (Unisoc T606 2 A76, 6 A55),
005200 AMD PRO A10-8770E, AMD A10-9700E, AMD PRO A10-9700B (FP4 15W), Intel Core i3-4130T,
005100 AMD RX-427BB (FP3 15W), AMD A10-9620P, AMD A12-9720P, Intel Core i3-8145U, AMD A12-9830B,
005050 AMD A8-5500 (FM2 65W), AMD A10 PRO-7800B APU, Intel Pentium Silver N5000, Intel Core i7-5500U,
005000 Intel Core i5-5300U, Intel Core i5-3320M (2c4t), Intel Core i5-5350U, Unisoc T618 (2 A73 6 A53),
004900 Intel Core i5-4300U, Intel Core i5-5200U, Intel Core i3-4100M, Snapdragon 662 (SM6115),
004860 Intel Core i7-2620M, Intel Core i7-2640M, AMD Athlon Silver 3050U 3050e, Intel i3-7020U,
004650 Intel Core i5-2520M (2c4t), Intel Core i5-3210M, AMD A10-9600P (FP4 4c 15W), Pentium 4415U,
004625 Intel Core i3-7100U (FCBGA1356 15W), ARM A76 RK3588S, AMD A10-6800B APU,
004600 AMD PRO A8-9600B, AMD PRO A12-8830B, AMD PRO A10-8730B, AMD A12-9700P, Intel Core i3-6100U,
004200 AMD A10-8700P A8-8600P, Intel Core i5-4200U, Intel Core i5-2540M, Intel i3-6006U, Intel i3-4150T,
004000 Intel Core i5-2430M, AMD PRO A8-8600B, AMD 3020e, Mediatek MT6797 Helio X20,
003850 Intel Core i5-2410M (2c4t), Intel Core i3-2120 (LGA1155 65W), Mediatek MT8786,
003800 AMD A10-4600M APU, AMD A10 PRO-7350B APU, AMD A10-5750M APU, Rockchip RK3399,
003600 AMD A8-6500T APU, AMD A8-7410 APU, AMD PRO A6-8550B, AMD A8-5550M (4c4t),
003500 AMD GX-424CC SOC (FT3b 25W 4c4t), ARM A75 Unisoc Tiger T610 (Spreadtrum) (8c 5W), intel i5-5250u,
003400 AMD A10-7300 APU, AMD A6-7310 APU, AMD A8-6410, AMD A10-5745M APU, Intel Core i3-4000M,
003350 Intel Pentium G2020, Intel Core i3-3120M (G2 2c4t), AMD R-464L APU, Intel® Core m5-6Y57 (2c4t),
003300 AMD GX-420CA SOC (FT3 BGA769 25W), AMD A6-9500E, Intel Celeron N4200, AMD A6-5200 ( 25W 2c2t),
003200 AMD A6-6310 APU, AMD A6-6400B APU, AMD A6-8570E, AMD A8-4500M APU, AMD A6-7400K APU,
003000 AMD A8-7150B, AMD A9-9410, A9-9420, A9-9425, AMD A6-8500B (FP4 15W), AMD A8-7100, Intel 5010u,
002900 AMD PRO A6-8530B, AMD A6-8500P, AMD A8-3500M APU, Intel Core i3-2120T, Intel i5-4250u,
002700 AMD Embedded GX-420GI (FP4 15W), AMD PRO A6-9500B, AMD GX-415GA, AMD A4-6210 APU, Intel i3-5005U,
002600 AMD A6-9225, AMD A8-4555M APU, AMD A4-5000 APU (FT3 15W), AMD A6-9220, AMD A6-3420M APU,
002450 Intel Celeron 2950M, Intel Pentium N3700, Intel Core i3-2350M, Allwinner A523 (8 A55),
002400 Intel Celeron N3150, Intel Core i3-2330M, Intel Xeon W3505, AMD A6-9210, Allwinner H618 (4 A53),
002300 Intel Celeron N3350, AMD A4-9120, AMD A4-9125, Intel Core i3-2310M, Intel Celeron 3865U,
002200 AMD A9-9420e, AMD A6-5350M APU, AMD E2-6110 APU, AMD E2-9000e, Celeron N4500, Intel N3710,
002000 AMD GX-412HC, AMD A4-4300M APU, AMD A6 PRO-7050B APU, AMD A6-4400M APU, AMD A6-7000,
001925 Intel Core2 Duo E6700, Intel Pentium Extreme Edition 965, Intel Core i3-370M, Celeron N4020,
001750 Intel Core i3-2365M 2375M, AMD A4-9120C, Intel Core2 Duo T8300, Qualcomm MSM8939,
001600 AMD GX-222GC (BGA769 FT3b 15W), AMD A4-9120e, AMD Embedded GX-215JJ, AMD A4-4355M APU,
001550 Intel Core2 Duo SL9400 T7600 T6600, AMD E2-3200, AMD A6-9220e, Mediatek MT8783, AMD E2-3800,
001520 Intel Celeron N4000,
001500 AMD GX-218GL SOC, AMD A6-4455M, AMD A4-5150M APU, ARM A55 RK3566 (4c 3W), Intel Core2 Duo T8100,
001400 AMD GX-217GA SOC, ARM Cortex-A53 4c4t H700, AMD A4-3300M APU, Allwinner A133P A64 (4 A53),
001300 AMD Turion 64 X2 Mobile TL-64 TL-62, Intel Core2 Duo T7300, Intel Core2 Duo T5600, AMD RX-216TD,
001250 AMD GX-412TC SOC, AMD A4-3320M APU, AMD Athlon 64 X2 QL-66, Intel Core2 Duo T7200
001200 AMD Athlon 64 X2 2c TK-57, AMD Turion 64 X2 Mobile TL-60 RM-74, AMD E1-2500, AMD E2-7015,
001150 Intel Core2 Duo T5550, Intel Core2 Duo L7500, AMD E2-3000M APU, ARM A35 RK3266, AMD E2-7110,
001100 Intel Core2 Duo T5300, AMD Athlon 64 X2 3800, Intel Core2 Duo E4300, Mediatek MT8127,
001050 AMD E1-6010 APU, Intel Pentium T4300, Intel Celeron N2840,
001050 AMD Athlon 64 FX-57, AMD Athlon 64 X2 Dual-Core TK-55, AMD Turion 64 X2 Mobile TL-52
001000 Intel Core2 Duo T5500, Intel Core2 Duo L7300, Intel Core2 Duo SU9400,
000950 AMD G-T56N, AMD Athlon 64 3100+, AMD E2-2000 APU,
000950 AMD Turion 64 X2 Mobile TL-50, AMD E1-2200 APU, Intel Celeron U3400,
000925 AMD TurionX2 Dual Core Mobile RM-72, AMD Sempron 140
000920 Intel Celeron SU2300, Intel Core2 Duo T5200, AMD Turion 64 X2 Mobile TL-56
000890 AMD E2-1800 APU, AMD Turion 64 X2 Mobile TL-58
000880 AMD G-T56E, AMD G-T48E,
000860 AMD E-450 APU, AMD E-350 APU, AMD Athlon LE-1620
000820 AMD A4-1250 APU, AMD Athlon LE-1600,
000810 AMD E1-2100 APU, Intel Core Duo T2500,
000810 Intel Atom D510, Intel Core2 Duo U7500,
000800 AMD Geode NX 2400+, AMD Turion 64 Mobile ML-42, AMD Athlon II Neo K325,
000760 AMD V140, AMD E1-1200 APU, AMD Athlon 64 3300+,
000730 Intel Core Duo T2400, AMD Turion 64 Mobile MK-38, AMD Sempron 3600+,
000700 Intel Core2 Duo U7600 U7700, AMD Sempron LE-1200, AMD V120
000680 AMD GX-212JC SOC, AMD E-300 APU, AMD A4-1200 APU,
000670 AMD Turion 64 Mobile MK-36 ML-37 ML-40, Mobile AMD Sempron 3800+
000640 Intel Atom N2600, Intel Atom N570, Mobile AMD Athlon 64 3200+
000640 Intel Core Duo T2300, Intel Core Duo T2050,
000630 VIA Eden X2 U4200, AMD Sempron LE-1100, AMD Sempron 3100+ 3600+,
000620 AMD C-70 C70 APU, Intel Atom 330, AMD G-T40N, AMD Athlon Neo MV-40,
000610 Intel Core2 Duo U7300, AMD Athlon II Neo K125 K145,
000600 Intel Atom N550, Intel Pentium 4, AMD Athlon 64 2800+,
000580 AMD C-60 C60, AMD G-T40E, AMD Sempron LE-1250
000530 AMD C-50 C50, Intel Celeron M 723, AMD Sempron 210U,
000490 AMD GX-210JA SOC, PowerPC 970 G5 IBM's 970 server CPU (2c),
000470 Mobile AMD Sempron 3500+, Mobile AMD Athlon XP-M 2200+,
000460 AMD Athlon XP 2500+, AMD Sempron 3500+, Mobile Intel Pentium 4,
000440 Intel Atom D425, Intel Atom N470, POWER 4 PPC,
000410 Intel Pentium M, Intel Celeron M, AMD Sempron 2300+
000400 Intel Atom N450, AMD Sempron 2400+,
000340 Intel Atom D410, AMD G-T52R, AMD C-30, AMD Sempron 2200+
000330 Intel Atom N455, Intel Atom N280, Intel Atom N270 (1c1t 2W), Intel P3,
000320 Freescale NXP QorIQ P1022
000310 PowerPC G4 7447 1Ghz (1c1t 15W), PPC440 core,
000230 PowerPC PPC G3/PPC 750,
000160 Pentium II, Motorola 68060
000080 Intel 80486, Motorola 68030,
000040 Intel 80386,
000030 Motorola 68020
000008 Motorola 68000
</pre>
=== Recommended hardware (32-bit) ===
[[#top|...to the top]]
Recommended hardware is hardware that has been tested with latest release of AROS and is relatively easy to purchase second hand (ie. ebay). This hardware also comes with commitment that compatibility will be maintained with each future release.
If in future decision will be made to drop any of the recommended hardware from the list (for example due to it no longer being available for purchase), such hardware will move to list of legacy supported systems and will have an indicated end of life date so that users have time to switch to other hardware.
{| class="wikitable sortable" width="100%"
| <!--OK-->{{Yes|'''Works well'''}} || <!--Not working-->{{No|'''Does not work'''}} || <!--Not applicable-->{{N/A|'''N/A not applicable'''}}
|-
|}
==== Virtual Hardware ====
{| class="wikitable" width="100%"
! width="20%" |Name
! width="5%" |Storage
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |Ethernet
! width="5%" |Wireless
! width="10%" |Additional hardware
! width="45%" |Comments
|-
| VirtualBox 7.x (Other/Unknown template) || {{Yes|IDE<br/>SATA(AHCI)}} || {{Yes|VMWARESVGA}} || {{Yes|HDAudio}} || {{Yes|PCNET32<br/>E1000}} || NOT APPLICABLE || NOT APPLICABLE || <!--Comments-->
|-
| VMware 16+ (Other32 template) || {{Yes|IDE<br/>SATA(AHCI)}} || {{Yes|VMWARESVGA}} || {{Yes|SB128}} || {{Yes|PCNET32}} || NOT APPLICABLE || NOT APPLICABLE || <!--Comments-->
|-
| QEMU 8.x ("pc" and "q35" machines) || {{Yes|IDE<br/>SATA(AHCI)}} || {{Yes|VESA}} || {{Yes|SB128}} || {{Yes|PCNET32}} || NOT APPLICABLE || NOT APPLICABLE || <!--Comments-->
|-
|}
==== Laptops ====
{| class="wikitable" width="100%"
! width="20%" |Name
! width="5%" |Storage
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |Ethernet
! width="5%" |Wireless
! width="10%" |Additional hardware
! width="45%" |Comments
|-
| ACER Aspire One ZG5 || {{Yes|IDE<br/>SATA(IDE)}} || {{Yes|GMA}} || {{Yes|HDAudio}} || {{Yes|RTL8169}} || {{Yes|ATHEROS}} || NOT APPLICABLE || <!--Comments-->
|-
| Dell Latitude D520 || {{Yes|IDE}} || {{Yes|GMA}} || {{Yes|HDAudio}} || {{Yes|BCM4400}} || {{No|}} || {{Yes|Atheros AR5BXB63}} || * select Intel Core 2 64-bit version, not Celeron 32-bit version <br/> * replace WiFi card to get wireless working
|-
|}
==== Desktop Systems ====
{| class="wikitable" width="100%"
! width="20%" |Name
! width="5%" |Storage
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |Ethernet
! width="5%" |Wireless
! width="10%" |Additional hardware
! width="45%" |Comments
|-
| Fujitsu Futro S720 || {{Yes|SATA(AHCI)}} || {{Yes|VESA}} || {{Yes|HDAudio}} || {{Yes|RTL8169}} || NOT APPLICABLE || NOT APPLICABLE || * no 2D/3D acceleration<br/> * use USB ports at back
|-
|}
==== Motherboards ====
{| class="wikitable" width="100%"
! width="20%" |Name
! width="5%" |Storage
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |Ethernet
! width="5%" |Wireless
! width="10%" |Additional hardware
! width="45%" |Comments
|-
| ASUS P8Z68V LX || {{Yes|SATA(AHCI)}} || {{Yes|VESA}} || {{Yes|HDAudio}}|| {{Yes|RTL8169}} || NOT APPLICABLE || {{Yes|GeForce 8xxx/9xxx}} || * add external PCIe video card for better performance
|-
| Gigabyte GA-MA770T UD3/UD3P || {{Yes|IDE<br/>SATA(AHCI)}} || NOT APPLICABLE || {{Yes|HDAudio}}|| {{Yes|RTL8169}} || NOT APPLICABLE || {{Yes|GeForce 8xxx/9xxx}} || * requires external PCIe video card
|-
| ASUS M2N68-AM SE2 || {{Yes|IDE}} || {{Yes|NVIDIA}} || {{Yes|HDAudio}}|| {{Yes|NVNET}} || NOT APPLICABLE || {{Yes|GeForce 8xxx/9xxx}} || * connecting a disk via SATA connector is not supported at this time <br/> * add external PCIe video card for better performance
|-
| Gigabyte GA-H55M-S2H || {{Yes|IDE<br/>SATA(AHCI)}} || {{Yes|VESA}} || {{Yes|HDAudio}}|| {{Yes|RTL8169}} || NOT APPLICABLE || {{Yes|GeForce 8xxx/9xxx}} || * add external PCIe video card for better performance
|-
|}
==== Legacy supported hardware ====
{| class="wikitable" width="100%"
! width="20%" |Name
! width="5%" |Storage
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |Ethernet
! width="5%" |Wireless
! width="10%" |Additional hardware
! width="10%" |EOL
! width="35%" |Comments
|-
| iMica || {{Yes|IDE}} || {{Yes|GMA}} || {{Yes|HDAudio}}|| {{Yes|RTL8169}} || NOT APPLICABLE || NOT APPLICABLE || 2026-12-31 ||
|-
| Gigabyte GA-MA770 UD3 || {{Yes|IDE<br/>SATA(IDE)}} || NOT APPLICABLE || {{Yes|HDAudio}}|| {{Yes|RTL8169}} || NOT APPLICABLE || {{Yes|GeForce 8xxx/9xxx}} || 2026-12-31 || * requires external PCIe video card
|-
|}
=== Recommended hardware (64-bit) ===
[[#top|...to the top]]
Recommended hardware is hardware that has been tested with latest release of AROS and is relatively easy to purchase second hand (ie. ebay). This hardware also comes with commitment that compatibility will be maintained with each future release.
==== Virtual Hardware ====
{| class="wikitable" width="100%"
! width="20%" |Name
! width="5%" |Storage
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |Ethernet
! width="5%" |Wireless
! width="10%" |Additional hardware
! width="45%" |Comments
|-
| VirtualBox 7.x (Other/Unknown (64-bit) template) || {{Yes|IDE<br/>SATA(AHCI)}} || {{Yes|VMWARESVGA}} || {{Yes|HDAudio}} || {{Yes|PCNET32<br/>E1000}} || NOT APPLICABLE || NOT APPLICABLE || * No accelerated 3D support
|-
| VMware 16+ (Other64 template) || {{Yes|IDE<br/>SATA(AHCI)}} || {{Yes|VMWARESVGA}} || {{Yes|SB128}} || {{Yes|E1000}} || NOT APPLICABLE || NOT APPLICABLE || * No accelerated 3D support
|-
| QEMU 8.x ("pc" and "q35" machines) || {{Yes|IDE<br/>SATA(AHCI)}} || {{Yes|VMWARESVGA}} || {{Yes|SB128}} || {{Yes|PCNET32}} || NOT APPLICABLE || NOT APPLICABLE || * No accelerated 3D support
|-
|}
==== Motherboards ====
{| class="wikitable" width="100%"
! width="20%" |Name
! width="5%" |Storage
! width="5%" |Gfx
! width="5%" |Audio
! width="5%" |Ethernet
! width="5%" |Wireless
! width="10%" |Additional hardware
! width="45%" |Comments
|-
| ASUS P8Z68V LX || {{Yes|SATA(AHCI)}} || {{Yes|VESA}} || {{Yes|HDAudio}}|| {{Yes|RTL8169}} || NOT APPLICABLE || {{Yes|GeForce GTX 7xx/9xx}} || * add external PCIe video card for better performance
|-
|}
==References==
[[#top|...to the top]]
{{reflist}}
{{BookCat}}
0w928k1johf3eyv6nhaucktgtpjboa4
Personal Finance/Other
0
241370
4656280
1944516
2026-08-04T18:30:23Z
LouieDukeofDran
3619190
I made this page age-relevant. Nothing major was changed. It had references from a bygone time.
4656280
wikitext
text/x-wiki
''There are many ways to reduce everyday expenses without sacrificing quality of life. The following are some simple suggestions for saving money in different areas of daily living.''
==== '''Entertainment''' ====
Try out cheaper entertainment. Instead of going out to a restaurant, why not a picnic? It will be much cheaper and healthier. Only go to the movies on discount days or at a cheaper theatre. Consider a streaming service instead of a full cable package. Many services now offer movies, shows, and even live TV for a lower monthly cost than cable. You may not need cable at all. Bicycle rides are cheaper than drives. Hosting a get together at home is often cheaper than going out to a bar with friends. Get in the habit of visiting your local parks and being friendly with the people there. Get to know your neighbours. Overcome social stigmas and stereotypes if you have to, and meet people locally instead of spending money on bars and clubs, along with the hangover that often follows.
==== '''Spirituality''' ====
Try to attend a place of worship close to your home, ideally within walking distance. If you cannot get along with the people at a place of worship near you because of race, culture, or other personal differences, and instead drive or rely on rides to somewhere across town just to attend services, you may be missing the point of worship in the first place. Do the things that matter to you, even if that means attending alone or waiting until you find a community that fits. This approach can also save money that might otherwise go toward alcohol, cigarettes, comfort food, or related medical costs down the road.
==== '''Share''' ====
Carpool to work. Once your children have outgrown their clothes, keep the ones in good condition and pass them on to family members. Accept gently used, still presentable children's clothing offered by relatives and friends. The same applies to strollers and car seats.
==== '''Re-gift''' ====
Received a gift you do not need? Give it to someone else instead of throwing it away. If you do not have a friend to pass it to, leave it somewhere visible, such as your porch or a community area, where a neighbour might pick it up. You might end up making a new friend in the process.
d2abw090sys4596sujrc22zhgu4p3fe
Introduction to Inorganic Chemistry/Review of Chemical Bonding
0
293959
4656287
4620295
2026-08-04T18:51:13Z
Tem5psu
1013978
4656287
wikitext
text/x-wiki
== Chapter 1: Review of Chemical Bonding==
[[File:Phosphorus-pentoxide-3D-balls.png|thumb|right|Ball-and-stick representation of chemical bonding in the molecules P<sub>4</sub>O<sub>10</sub> and P<sub>4</sub>S<sub>10</sub>.]]Molecules (and extended solids) are built from atoms that form chemical bonds. Theories of bonding seek to explain why molecules and solids form, what their structures are, why some are more stable than others, and how they react. As we will learn in Chapter 2, quantum mechanics gives us the most realistic picture of chemical bonding via molecular orbital (MO) theory. However, the MO description of bonding is conceptually difficult and mathematically intensive. This chapter will review less rigorous (but still useful) models such as Lewis dot structures and valence shell electron-pair repulsion (VSEPR) theory. When combined with a qualitative quantum mechanical description of bonding through the concepts of orbital hybridization and resonance, these simple models can help us understand a great deal about the structures, stabilities, and reactions of inorganic molecules.
The theory of chemical bonding has a long history, dating back to ancient Greece and the atomists [[w:Democritus|Democritus]], [[w:Leucippus|Leucippus]], and the [[w:Epicureanism|Epicureans]]. They postulated the existence of immutable atoms moving through the void, and envisioned the physical properties of materials as arising from the kinds and shapes of atoms. In his epic poem ''[[w:de_rerum_natura|De rerum natura]]'' (On the Nature of Things), the Roman poet [[w:Lucretius|Lucretius]] (c. 99 BC – c. 50 BC), drawing on his Epicurean beliefs, describes some atoms and chemical bonding in the following way:
''What seems to us the hardened and condensed''<br>
''Must be of atoms among themselves more hooked,''<br>
''Be held compacted deep within, as 'twere''<br>
''By branch-like atoms -- of which sort the chief''<br>
''Are diamond stones, despisers of all blows''<br>
''And stalwart flint and strength of solid iron''<br>
''And brazen bars, which, budging hard in locks,''<br>
''Do grate and scream. But what are liquid, formed''<br>
''Of fluid body, they indeed must be''<br>
''Of elements more smooth and round -- because''<br>
''Their globules severally will not cohere.''
Lucretius' [https://www.gutenberg.org/files/785/785-h/785-h.htm poem] is enjoyable reading and contains some remarkable insights into the microscopic world, given the tools available at the time. Modern analytical methods show that he was off base with his ideas about hooks and spheres, however. We will revisit the nature of chemical bonding in the substances Lucretius mentions (diamond, silicates, iron, brass, and water) in the context of modern chemical theories to understand why they have the special properties they do.
'''Learning goals for Chapter 1:'''
*Be able to draw Lewis dot structures, assign formal charges, predict molecular geometries (including bond angles), and calculate bond orders for molecules, including hypervalent molecules and ions.
*Describe hypervalent molecules using no-bond resonance.
*Understand and articulate how predictions of molecular structure and bonding can be experimentally verified.
*Learn to construct hybrid orbitals from s and p atomic orbitals.
*Use the isoelectronic principle to design new molecules and solids.
*Rationalize bond strength and chemical reactivity using bond polarity arguments.
*Interrelate bond length and bond strength.
==1.1 Valence bond theory: Lewis dot structures, the octet rule, formal charge, resonance, and the isoelectronic principle==
[[File:electron dot.svg|350px|thumb|right|Fig. 1.1.1. Examples of Lewis dot diagrams showing chemical bonds between carbon, hydrogen, and oxygen, and non-bonding electron pairs.]]
'''Atoms and Molecules'''<br>
[[w:Atomism|Atomism]], because it was dismissed by [[w:Aristotle|Aristotle]], enjoyed a long sleep in scientific discourse until it was reconsidered by [[w:Galileo_Galilei|Galileo]], [[w:René_Descartes|Decartes]], and [[w:Pierre_Gassendi|Gassendi]] in the 1600s. [[w:John_Dalton|Dalton]] postulated the modern atomic theory in 1808 based on his observation that elements such as hydrogen and oxygen combined in specific ratios (the Law of Definite Proportions), but the atomic theory remained contentious throughout most of the 19th century. [[w:JJ_Thompson|Thompson]], [[w:Ernest_Rutherford|Rutherford]], [[w:Nils_Bohr|Bohr]], and others around the turn of the 20th century established that matter was indeed composed of atoms that contained heavy nuclei and light electrons, and that atoms could exist in excited states that could be interpreted as excitations of their electrons to different energy levels. However the atomic theory did not provide a ready explanation for the bonded states of atoms in molecules.
In 1916, still more than a decade before modern quantum theory would adequately describe the shapes of [[w:Atomic_orbitals|atomic orbitals]], [[w:Gilbert_N._Lewis|Lewis]] proposed the octet theory based on the empirically observed rules of valence, i.e., the combining ratios of atoms in molecules.<ref>G. N. Lewis, "The atom and the molecule," J. Am. Chem. Soc. 1916, 38, 762-785</ref> This theory, in hindsight, can be rationalized for s- and p-block elements by observing that main-group atoms can use their four valence orbitals (s, p<sub>x</sub>, p<sub>y</sub>, and p<sub>z</sub>) to accommodate up to eight electrons, some or all of which may be shared with other atoms. In Lewis' model, the valence electrons of an atom were situated at the corners of a cube, and the cubes could share edges or faces to complete their octets. Lewis developed a shorthand notation for these structures based on dots that represented the valence electrons, as illustrated in Fig. 1.1.1. A pair of electrons shared between atoms constitutes a chemical bond, and can also be represented as a line joining the atoms. Four electrons shared between atoms, represented by two lines, is a double bond, and so forth. Any pairs of electrons not involved in bonding form "lone pairs" that belong to one atom only and are thus not involved in bonding.
The Lewis picture is powerful in its simplicity. It can be readily used to rationalize or predict the combining ratios of atoms, to sort plausible and unlikely structures for molecules (including large ones), and to rationalize the acid-base properties of many molecules. It is important to remember that the model is built on a shaky, pre-quantum mechanical description of atoms and so with it, we will make mistakes. Nevertheless it is useful to see how far we can go with the Lewis model.
<br />
<br />
'''Constructing the octet valence bond picture for a molecule'''<br /><br/>
We can construct an octet picture for any molecule using the '''N-V method:'''<br />
:Number of electrons ''needed'' to make separate octets around all atoms = '''N'''<br />
:(N = 8 for non-H atoms, N = 2 for H)<br />
:Number of ''valence'' electrons = '''V''' (add up using group numbers; don't forget to add or subtract for charges on ions)<br />
:Number of ''shared'' electrons = '''S''' = N-V; and therefore the number of bonds = S/2<br />
:Fill in lone pairs everywhere else to complete octets<br />
Example: nitrate anion, NO<sub>3</sub><sup>-</sup><br />
:N = 4 atoms x 8 electrons = 32<br />
:V = 5 + 6 + 6 + 6 + 1 = 24 (N + O + O + O + charge)<br />
:S = 32-24 = 8 shared electrons = '''4 bonds'''<br />
:The number of lone pairs is obtained by difference: (V-S)/2 = (24-8)/2 = 8<br />
:Now draw the molecule, starting with the four bonds and adding eight lone pairs to complete the octets:
<br />
::[[File:Nitrate Lewis dot structure.svg|100px|left]]
<br />
<br />
<br />
<br />
<br />
:Count the shared and unshared electrons around each atom in the nitrate ion and you will see that all atoms are '''octet''' and that the total number of valence electrons (V) is 24. If you do the N-V calculation according to the rules above, you should always get an octet structure.
<br />
[[File:System2.gif|right|400px|thumb|The charges on atoms in a molecule (or an extended solid such as SiO<sub>2</sub>) can be estimated from X-ray photoelectron spectra (XPS). Energetic X-rays ionize atoms by kicking out electrons from their core orbitals. By conservation of energy, the kinetic energy (KE) of an emitted electron is related to its binding energy (BE) and the energy of the incoming X-ray photon (hν) by BE = hν - KE. Electrons are harder to remove from positively charged atoms (higher BE), and easier to remove from negatively charged atoms (lower BE), relative to the neutral element.]]
The '''formal charge''' distribution is assigned by dividing the shared (bonding) electrons equally between atoms. Thus, the singly bonded O atoms each possess 7 electrons, and because O is in group 6, their formal charge is -1. The doubly bonded O has a formal charge of zero. The N atom has a formal charge of +1 because it "owns" 4 valence electrons and is in group 5.
Note that the '''formal charge''' is '''not''' the same thing as the '''oxidation number''' (or '''oxidation state'''). In the nitrate ion, the oxidation state of nitrogen is +5 and the oxidation state of oxygen is -2. The formal charge is typically closer to the "real" charge on the atom (as measured, e.g., by [[w:X-ray_photoelectron_spectroscopy|X-ray photoelectron spectroscopy]]). Oxidation states are a useful bookkeeping device for keeping track of oxidation-reduction reactions, as we will discuss in Chapter 4. Like oxidation states, the formal charges on the atoms in a molecule or ion must ''add up to its overall charge''.
We can similarly draw the Lewis structure for ammonia as shown below:
<br />
::[[File:ammonia Lewis structure.svg|200px|left]]
<br />
<br />
<br />
<br />
When we divide the shared electrons equally between the atoms, we see that the N atom has five electrons and each H atom has one. These are the same as their group numbers, and thus, all the formal charges in the ammonia molecule are zero.
Octet structures of the Lewis acid-base adduct NH<sub>3</sub>BF<sub>3</sub>, the hydronium ion H<sub>3</sub>O<sup>+</sup>, and the sulfate anion SO<sub>4</sub><sup>2-</sup> are shown below. In this case (and in many Lewis structures we will draw), we leave off the implied lone pairs around the peripheral atoms. Try calculating the number of bonds in each of these molecules using the N-V method, and fill in the lone pairs that are not explicitly drawn in.
::[[File:octet structures.jpg|400px|left]]
<br />
<br />
<br />
<br />
<br />
In cases where more than one valence bond structure is possible, we can use formal charges to decide which structures should be more or less stable. The rules are:<br />
*The formal charges on atoms are minimized in stable structures, zero being the best case.
*Negative formal charges should be placed on the most electronegative atom(s).
*Positive formal charges should be placed on the least electronegative atom(s).
*It is unfavorable to place like charges (++ or --) on neighboring atoms in a molecule.
<br />
Examples of these rules are shown below for alternative structures of BF<sub>3</sub> and ONF.
::[[File:Boron trifluoride resonance.svg|300px|left]][[File:Atmospheric ozone.svg|400px|right|thumb|Life outside of the ocean owes its existence to the presence of ozone (O<sub>3</sub>) in the stratosphere. Ozone absorbs the ultraviolet light in the solar spectrum, which otherwise would cause catastrophic damage to DNA and other biological molecules. Because ozone is produced photochemically from O<sub>2</sub>, which is itself generated by photosynthesis, the spectroscopic signature of ozone in the atmosphere of distant planets is one possible way to look for extraterrestrial life.]][[File:Susan Solomon-Desk With Globe.jpg|right|400px|thumb|[[w:Susan_Solomon|Susan Solomon]] discovered the heterogeneous catalytic mechanism whereby ozone is decomposed by chlorofluorocarbons (freons), creating the Antarctic ozone hole. Her work formed the basis of the [[w:Montreal_Protocol|U.N. Montreal Protocol]], an international agreement to protect the ozone layer by regulating damaging chemicals.]]
<br />
<br />
<br /><br />
In the BF<sub>3</sub> case, the structure on the left is non-octet, because there are only six electrons (three bonds) in the valence shell of B. Such structures are said to be ''electron deficient.'' An octet structure (right) can be drawn, but it places a positive formal charge on F, the most electronegative atom in the molecule. Thus, neither structure is completely "happy," but the formal charge rules tell us that the electron-deficient structure on the left is more stable. The electron deficiency of BF<sub>3</sub> makes it a powerful Lewis acid.
In the case of ONF, the structure on the left is unfavorable for two reasons. First, it places a positive formal charge on F, the most electronegative atom. Second, there is another possible structure (right) that has zero formal charge, which is preferable to one with non-zero charge. This means that the structure on the right, with a double bond between N and O, is more reasonable.
<br />
<br />
<br />
::[[File:ONF resonance structures.jpg|225px|left]]
<br />
<br />
<br />
'''Resonance structures'''</br>
The ozone (O<sub>3</sub>) molecule has two equivalent octet structures, shown below:
<br />
<br />
::[[File:ozone resonance structures.jpg|225px|left]]
<br />
<br />
<br />
In both cases, the Lewis dot diagram suggests that there are three kinds of oxygen atoms in the molecule, with +1, 0, and -1 formal charges. These structures also suggest that ozone should have one single and one double bond. Experimentally (by [[w:Electron_diffraction|electron diffraction]]), however, we find that the molecule is symmetric, with both O-O bond lengths the same. The real (instantaneous) structure is the average of the two forms, as shown below. In the classical Lewis picture of the molecule, we can rationalize resonance by observing that electrons, being thousands of times lighter than the nuclei of atoms, move very fast on the timescale of molecular vibrations. Thus, in the time it takes for the oxygen atoms to adjust their positions, the electrons can move back and forth many times. In the quantum mechanical MO picture (Chapter 2), we will see that resonance involves electrons that are fully delocalized over the atoms in the molecule. We represent resonance structures with a double-headed arrow to signify that the only difference between the Lewis structures is the distribution of electrons.
In the instantaneous structure of ozone, the formal (-) charge is shared between the two terminal oxygen atoms and therefore each one has a formal charge of -1/2. The O-O bonds are the average of a single and a double bond, i.e., each O-O bond order is 1.5.
[[File:ozone avg structure.jpg|150px|left]]
<br />
<br />
<br />
<br />
<br />
Similarly, the nitrate anion has three resonance structures, and experimentally (by X-ray crystallography of nitrate salts) we find that all the N-O bonds in the ion are the same. In this case, in the averaged structure, each O atom has a formal charge of -2/3 and the N-O bond order is 4/3 (=1.33...).
[[File:Nitrate ion resonance structures.png|300px|left]] = [[File:Nitrate-ion-resonance-hybrid-2D.png|119x119px]]
<br/>
<br/>
'''Inequivalent resonance structures'''<br>
The rules of resonance also apply to inequivalent structures, which in general will have different energies from each other. In this case the structure of the molecule represents a weighted average of the low energy structures. A good example is the cyanate ion, OCN<sup>-</sup>. We can write three inequivalent octet structures for the molecule:
:<math chem>\ce{~^{-}O-C \equiv N <-> O=C=N^- <-> ^+O \equiv C-N^{2-}}</math>
The first two are reasonable resonance structures, although we suspect the one on the left is the best because it puts the negative formal charge on the most electronegative atom. The last one is clearly a bad resonance structure, because the formal charges are high and there is a positive charge on the oxygen atom. The real structure is thus a weighted average of the first two.<br>
<br />
'''No-bond resonance'''<br>
An interesting and useful kind of inequivalent resonance structure is one in which there is a bond order of ''zero'' between two of the atoms. This concept of '''no-bond resonance''' is important in understanding the bonding in many halogen- and hydrogen-containing compounds. The idea is illustrated below for the generic molecule X-Y-Z, where Z might be an electronegative halogen atom such as F. By moving the bonding electrons from the Y-Z bond onto the Z atom, and moving a lone pair from X into the X-Y bond, we generate the resonance structure shown on the right in which all atoms remain octet, but there is no bond between Y and Z.<br>
<br />
[[File:no bond resonance.jpg|300px|left]]
<br />
<br />
It is important to recognize in this example that the no-bond form is only one resonance structure, and therefore the Z atom is still bound to Y. If the two resonance structures in this example have the same energy, we would expect the X-Y bond order to be 1.5 and the Y-Z bond order to be 0.5. Therefore the Y-Z bond should be longer than it is in a compound where the bond order is one, and it should be relatively easy to break the Y-Z bond.
Some molecular examples of no-bond resonance are shown below. In the molecule ONF<sub>3</sub>, the N-F bond is unusually long relative to the N-F bond in NF<sub>3</sub>, in which the bond order is 1. This can be explained by the no-bond resonance forms shown on the right. Similarly, in the Lewis acid-base adduct formed by combining BH<sub>3</sub> with CO, we can explain the long B-H bonds using no-bond resonance forms that place a partial positive charge on the H atoms.
[[File:NF no bond resonance.jpg|450px|left]]
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
No-bond resonance is often used to provide an octet bonding picture for so-called '''[[w:Hypervalent_molecule|hypervalent compounds]]''', which are compounds that appear to have more than 8 valence electrons in the bonding shell of the central atom. For example, we can consider two different valence bond structures for the triiodide ion, I<sub>3</sub><sup>-</sup>, which is formed by reaction of I<sup>-</sup> with I<sub>2</sub> in water:
[[File:hypervalent triiodide.jpg|370px|left]]
<br />
<br />
<br />
<br />
[[File:Blue Solution.jpg|200px|right|thumb|The deep blue color of starch-iodine solutions results from the complexation of linear polyiodide ions (I<sub>n</sub><sup>-</sup>) by the starch (amylose) left-handed helix. The interior of the helix is hydrophobic. In electron donor solvents such as ethanol and water, I<sub>2</sub> and salts of I<sub>3</sub><sup>-</sup> have a brown color, the result of a charge transfer interaction between the solvent and solute.<ref>W. Saenger, "The structure of the blue starch-iodine complex," Naturwissenschaften 71, 31-36 (1984).</ref><ref>R. D. Hancock and B. J. Tarbet, "The other double helix - the fascinating chemistry of starch," J. Chem. Ed. 77, 988-992 (2000).</ref>]]In this structure, the central iodine atom has 10 electrons in its valence shell, in violation of the octet rule. [[w:Raman_spectroscopy|Raman spectra]] of the triiodide ion show that the I-I bond is weaker than the I-I single bond in I<sub>2</sub>, suggesting that this picture is not an accurate description of the bonding. A better representation of I<sub>3</sub><sup>-</sup> can be obtained with no-bond resonance structures, as shown below. We will see that this picture is consistent with the MO description of I<sub>3</sub><sup>-</sup> in Chapter 2:
[[File:octet triiodide.jpg|350px|left]][[File:IodineStarch left en.svg|200px|right]]
<br />
<br />
<br />
<br /><br />
We can draw a similar picture for the XeF<sub>2</sub> molecule, which has the same number of valence electrons as I<sub>3</sub><sup>-</sup>. This picture is consistent with XPS data, which show a partial negative charge on the F atoms, as well as vibrational spectra, which show that the Xe-F bond is weaker in XeF<sub>2</sub> than it is in the singly-bonded cation Xe-F<sup>+</sup>.
[[File:octet XeF2.jpg|170px|left]]
<br />
<br />
<br />
Other well known examples of hypervalent compounds are PF<sub>5</sub>, P(CH<sub>3</sub>)<sub>5</sub>, and SF<sub>6</sub>, as well as oxyacids such as H<sub>2</sub>SO<sub>4</sub> and HClO<sub>4</sub>. The hypervalent structure is often drawn for these molecules, with the explanation that d-orbitals on the central atom contribute to the bonding in dsp<sup>3</sup> and d<sup>2</sup>sp<sup>3</sup> hybrids for 5- and 6-coordinate molecules, respectively. However, realistic molecular orbital calculations show that the phosphorus and sulfur 3d orbitals are too high in energy to contribute significantly to bonding in PF<sub>5</sub> and SF<sub>6</sub>. For these molecules, we can use no-bond resonance to make reasonable octet structures that predict polar bonds between the central atom and F. [[File:sf6 bonding.jpg|380px|left]][[File:Sulfur-hexafluoride-from-xtal-3D-SF.png|right|200px|thumb|Space-filling model of sulfur hexafluoride. [[w:Sulfur_hexafluoride|SF<sub>6</sub>]] is surprisingly unreactive with water, relative to other compounds that contain S-F bonds. The tight packing of F atoms around S prevents nucleophilic attack by water.]]<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
In other cases, such as P(CH<sub>3</sub>)<sub>5</sub>, the octet structure is unreasonable because it suggests a polar bond between P and C, with a partial negative charge on C. Further, in the case of oxyacids such as H<sub>2</sub>SO<sub>4</sub> and HClO<sub>4</sub>, X-ray crystallographic data establish that the S-O and Cl-O bonds are shorter for the oxygen atoms not bonded to hydrogen, which is more consistent with the hypervalent picture:
<br><br>
[[File:octet&hypervalent H2SO4.jpg|200px|left]][[File:Sulfuric-acid-2D-dimensions.svg|130px]]
<br>
The question of whether hypervalency and the octet rule are really useful descriptions of the bonding in these compounds has been considered in a number of computational studies, which have used increasingly accurate quantum mechanical calculations to determine the number of electrons associated with the central atom. In a 2002 study, Gillespie and Silvi<ref>R. J. Gillespie and B. Silvi, "The octet rule and hypervalence: two misunderstood concepts," Coord. Chem. Rev. 233-234, 53-62 (2002).</ref> found that the population of the valence shell is greater than eight for compounds with electropositive ligands, such as P(CH<sub>3</sub>)<sub>5</sub>, and less than eight for compounds such as PF<sub>5</sub>. They concluded that these valence electron shell populations depend primarily on the coordination numbers and electronegativities of the central atoms and their ligands, and that there is no fundamental difference between the bonding in hypervalent and non-hypervalent (Lewis octet) molecules. This reminds us that the octet rule is not a law of nature, but rather an empirical rule that is useful within certain limits.
<br />
<br />
[[File:A man breathing in nitrous oxide (laughing gas) and a man ex Wellcome L0023721.jpg|right|300px|thumb|Nitrous oxide (N<sub>2</sub>O), or laughing gas, is isoelectronic with CO<sub>2</sub>. The two molecules have the same shape (linear) and similar physical properties. CO<sub>2</sub> sublimes at -78 °C, whereas N<sub>2</sub>O melts at -91 °C and boils at -88 °C.]]
'''The isoelectronic principle'''<br />
In calculating the octet structures of molecules using the N-V method, we needed to know only the number of atoms and the number of electrons, not the identities of the atoms themselves. This means that we will get the same answer (and the same set of octet and resonance structures) for ''any'' molecule or ion that contains (a) the same number of non-hydrogen atoms, and (b) the same total number of valence electrons. Such molecules are said to be ''isoelectronic.'' This is a powerful conclusion because, once we have determined the electronic structure of one molecule, we can write down the same solution for ''all other molecules'' that are isoelectronic. For example, we noted above that I<sub>3</sub><sup>-</sup> and XeF<sub>2</sub>, which both have 22 valence electrons, have the same valence bond structure. We can further expect that isoelectronic molecules will have the same shapes and, very often, similar physical properties.
The four molecules and ions below all contain three non-hydrogen atoms and 16 valence electrons. All of them are linear molecules with two double bonds. The four molecules and ions shown below them all contain four non-hydrogen atoms and 24 valence electrons. These four have a trigonal planar shape. While BF<sub>3</sub> is a member of this isoelectronic series, we do not write it in the resonance form that contains a B=F double bond, because that would put a positive formal charge on F.
[[File:isoelectronic molecules.jpg|320px|left]] [[File:24e molecules.jpg|left|400px]]
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Similarly we can show that CH<sub>4</sub>, NH<sub>3</sub>, NH<sub>4</sub><sup>+</sup>, H<sub>2</sub>O, H<sub>3</sub>O<sup>+</sup>, HF, F<sup>-</sup>, and OH<sup>-</sup> are all isoelectronic with one non-H atom and eight valence electrons. In the next section we will see that this gives rise to nearly identical electronic shapes for these molecules.
[[File:Gallium-arsenide-unit-cell-3D-balls.png|200px|thumb|right|Fig. 1.1.2. The tetrahedral bonding in crystals of GaAs, CdTe, CuIn<sub>1-x</sub>Ga<sub>x</sub>Se<sub>2</sub> and other semiconductors is similar to that in isoelectronic Si and Ge.]]
<br>
'''Isoelectronic solids.''' The isoelectronic principle works not just for molecules but for extended solids as well. One technologically important set of isoelectronic solids are the p-block semiconductors. The group 14 element Si is the most widely used semiconductor for electronics, but, as we will discuss later, it is not a good light emitter. Light-emitting diodes (LEDs), which are used in lasers, high efficiency lighting, and display technologies, are made from compounds that are isoelectronic with Si and Ge, especially GaAs, GaP, AlAs, and GaN (all contain four valence electrons per atom). CdTe and CuIn<sub>1-x</sub>Ga<sub>x</sub>Se<sub>2</sub> (CIGS) are promising solar cell materials that also have the same number of valence electrons per atom. Like Si and Ge, these compounds have tetrahedrally bonded structures in the solid state and absorb light across most of the solar spectrum, as we will discuss in more detail in Chapters 8 and 10.
The isoelectronic principle is also a powerful tool in materials research, because it provides guidance about where to look for new materials with similar and perhaps improved properties. For example, the discovery that 8.5% efficient thin layer solar cells could be made with the compound CsSnI<sub>3</sub><ref>I. Chung, B. Lee, J. He, R. P. H. Chang and M. G. Kanatzidis, All-solid-state dye-sensitized solar cells with high efficiency, Nature 485, 486-489 (2012). doi:10.1038/nature11067</ref> stimulated the exploration of many isoelectronic ABX<sub>3</sub> compounds with the same perovskite crystal structure. Very recently thin film solar cells based on light absorbers in this structural family (MA)PbI<sub>3-x</sub>Cl<sub>x</sub> and FA<sub>x</sub>MA<sub>1−x</sub>PbBr<sub>y</sub>I<sub>3−y</sub> (MA<sup>+</sup> = methylammonium, CH<sub>3</sub>NH<sub>3</sub><sup>+</sup>; FA<sup>+</sup> = formamidinium, HC(NH<sub>2</sub>)<sub>2</sub><sup>+</sup>) have been reported with efficiencies as high as 22%.<ref>S.D. Stranks, G. E. Eperon, G. Grancini, C. Menelaou, M. J. P. Alcocer, T. Leijtens, L. M. Herz, A. Petrozza, and H. J. Snaith, Electron-Hole Diffusion Lengths Exceeding 1 Micrometer in an Organometal Trihalide Perovskite Absorber, Science 342, 341-344 (2013). DOI: 10.1126/science.1243982</ref><ref>G. Xing, N. Mathews, S. Sun, S. S. Lim, Y. M. Lam, M. Grätzel, S. Mhaisalkar, and T. C. Sum, Long-Range Balanced Electron- and Hole-Transport Lengths in Organic-Inorganic CH3NH3PbI3, Science 342, 344-347 (2013). DOI: 10.1126/science.1243167 </ref><ref>J.-P. Correa-Baena, A. Abate, M. Saliba, W. Tress, T. J. Jacobsson, M. Grätzel, and A. Hagfeldt, The rapid evolution of highly efficient perovskite solar cells, Energy Environ. Sci., 10, 710-727 (2017). DOI: 10.1039/C6EE03397K </ref>
==1.2 The shapes of molecules (VSEPR theory) and orbital hybridization ==
[[Image:Water molecule dimensions.svg|thumb|200px|Geometry of the [[w:water (molecule)|water molecule]]]]
The [[w:VSEPR_theory|Valence Shell Electron Pair Repulsion (VSEPR) theory]] is a simple and useful way to predict and rationalize the shapes of molecules. The theory is based on the idea of minimizing the electrostatic repulsion between electron pairs, as first proposed by Sidgwick and Powell in 1940,<ref>N. V. Sidgwick and H. M. Powell, Proc. Roy. Soc. A176, 153 (1940),</ref> then generalized by Gillespie and Nyholm in 1957,<ref>R. J. Gillespie and R. S. Nyholm, Quart. Rev. Chem. Soc., 11, 339 (1957).</ref> and then broadly applied over the intervening 50+ years.<ref>R. J. Gillespie, "Fifty years of the VSEPR model," Coord. Chem. Rev. 252, 1315-1327 (2008). DOI: 10.1016/j.ccr.2007.07.007</ref>
To use the VSEPR model, one begins with the Lewis dot picture to determine the number of lone pairs and bonding domains around a central atom. Because VSEPR considers all bonding domains equally (i.e., a single bond, a double bond, and a half bond all count as one electron domain), one can use either an octet or hypervalent structure, provided that the number of lone pairs (which should be the same in both) is calculated correctly. For example, in either the hypervalent or octet structure of the I<sub>3</sub><sup>-</sup> ion above, there are three lone pairs on the central I atom and two bonding domains. We then follow these steps to obtain the '''electronic geometry''':
<br />
<br />
*Determine the number of lone pairs on the central atom in the molecule, and add the number of bonded atoms (a.k.a. bonding domains)
*This number (the ''steric number'') defines the electronic shape of the molecule by minimizing repulsion. For example a steric number of three gives a trigonal planar electronic shape.
*The angles between electron domains are determined primarily by the electronic geometry (e.g., 109.5° for a steric number of 4, which implies that the electronic shape is a tetrahedron)
*These angles are adjusted by the hierarchy of repulsions: (lone pair - lone pair) > (lone pair - bond) > (bond - bond)
<br />
The '''molecular geometry''' is deduced from the electronic geometry by considering the lone pairs to be present but invisible. The most commonly used methods to determine molecular structure - [[w:X-ray_diffraction|X-ray diffraction]], [[w:Neutron_diffraction|neutron diffraction]], and [[w:Electron_diffraction|electron diffraction]] - have a hard time seeing lone pairs, but they can accurately determine the lengths of bonds between atoms and the bond angles.
The table below gives examples of electronic and molecular shapes for steric numbers between 2 and 9. We are most often concerned with molecules that have steric numbers between 2 and 6.
{| class="wikitable sortable"
|-
! Bonding electron pairs
! Lone pairs
! Electron domains (Steric #)
! Shape
! Ideal bond angle (example's bond angle)
! Example
! Image
|-
| <div style="text-align: center;">2</div>
| <div style="text-align: center;">0</div>
| <div style="text-align: center;">2</div>
| <div style="text-align: center;">[[w:linear molecular geometry|linear]]</div>
| <div style="text-align: center;">180°</div>
| <div style="text-align: center;">[[w:carbon dioxide|CO<sub>2</sub>]]</div>
| <div style="text-align: center;">[[Image:Linear-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">3</div>
| <div style="text-align: center;">0</div>
| <div style="text-align: center;">3</div>
| <div style="text-align: center;">[[w:trigonal planar molecular geometry|trigonal planar]]</div>
| <div style="text-align: center;">120°</div>
| <div style="text-align: center;">[[w:Boron trifluoride|BF<sub>3</sub>]]</div>
| <div style="text-align: center;">[[Image:Trigonal-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">2</div>
| <div style="text-align: center;">1</div>
| <div style="text-align: center;">3</div>
| <div style="text-align: center;">[[w:bent molecular geometry|bent]]</div>
| <div style="text-align: center;">120° (119°) </div>
| <div style="text-align: center;">[[w:Sulfur dioxide|SO<sub>2</sub>]]</div>
| <div style="text-align: center;">[[Image:Bent-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">4</div>
| <div style="text-align: center;">0</div>
| <div style="text-align: center;">4</div>
| <div style="text-align: center;">[[w:tetrahedral molecular geometry|tetrahedral]]</div>
| <div style="text-align: center;">109.5°</div>
| <div style="text-align: center;">[[w:methane|CH<sub>4</sub>]]</div>
| <div style="text-align: center;">[[Image:AX4E0-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">3</div>
| <div style="text-align: center;">1</div>
| <div style="text-align: center;">4</div>
| <div style="text-align: center;">[[w:trigonal pyramidal molecular geometry|trigonal pyramidal]]</div>
| <div style="text-align: center;">109.5° (107°) </div>
| <div style="text-align: center;">[[w:ammonia|NH<sub>3</sub>]]</div>
| <div style="text-align: center;">[[Image:Pyramidal-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">2</div>
| <div style="text-align: center;">2</div>
| <div style="text-align: center;">4</div>
| <div style="text-align: center;">[[w:bent molecular geometry|bent]]</div>
| <div style="text-align: center;">109.5° (104.5°) </div>
| <div style="text-align: center;">[[w:H2O|H<sub>2</sub>O]]</div>
| <div style="text-align: center;">[[Image:Bent-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">5</div>
| <div style="text-align: center;">0</div>
| <div style="text-align: center;">5</div>
| <div style="text-align: center;">[[w:trigonal bipyramidal molecular geometry|trigonal bipyramidal]]</div>
| <div style="text-align: center;">90°, 120°, 180°</div>
| <div style="text-align: center;">[[w:phosphorus pentachloride|PCl<sub>5</sub>]]</div>
| <div style="text-align: center;">[[Image:Trigonal-bipyramidal-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">4</div>
| <div style="text-align: center;">1</div>
| <div style="text-align: center;">5</div>
| <div style="text-align: center;">[[w:seesaw molecular geometry|seesaw]]</div>
| <div style="text-align: center;">180°, 120°, 90° (173.1°, 101.6°) </div>
| <div style="text-align: center;">[[w:sulfur tetrafluoride|SF<sub>4</sub>]]</div>
| <div style="text-align: center;">[[Image:Seesaw-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">3</div>
| <div style="text-align: center;">2</div>
| <div style="text-align: center;">5</div>
| <div style="text-align: center;">[[w:T-shaped molecular geometry|T-shaped]]</div>
| <div style="text-align: center;">90°, 180° (87.5°, < 180°) </div>
| <div style="text-align: center;">[[w:chlorine trifluoride|ClF<sub>3</sub>]]</div>
| <div style="text-align: center;">[[Image:T-shaped-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">2</div>
| <div style="text-align: center;">3</div>
| <div style="text-align: center;">5</div>
| <div style="text-align: center;">[[w:linear molecular geometry|linear]]</div>
| <div style="text-align: center;">180°</div>
| <div style="text-align: center;">[[w:xenon difluoride|XeF<sub>2</sub>]]</div>
| <div style="text-align: center;">[[Image:Linear-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">6</div>
| <div style="text-align: center;">0</div>
| <div style="text-align: center;">6</div>
| <div style="text-align: center;">[[w:octahedral molecular geometry|octahedral]]</div>
| <div style="text-align: center;">90°, 180°</div>
| <div style="text-align: center;">[[w:sulfur hexafluoride|SF<sub>6</sub>]]</div>
| <div style="text-align: center;">[[Image:AX6E0-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">5</div>
| <div style="text-align: center;">1</div>
| <div style="text-align: center;">6</div>
| <div style="text-align: center;">[[w:square pyramidal molecular geometry|square pyramidal]]</div>
| <div style="text-align: center;">90° (84.8°), 180° </div>
| <div style="text-align: center;">[[w:bromine pentafluoride|BrF<sub>5</sub>]]</div>
| <div style="text-align: center;">[[Image:Square-pyramidal-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">4</div>
| <div style="text-align: center;">2</div>
| <div style="text-align: center;">6</div>
| <div style="text-align: center;">[[w:square planar molecular geometry|square planar]]</div>
| <div style="text-align: center;">90°, 180°</div>
| <div style="text-align: center;">[[w:xenon tetrafluoride|XeF<sub>4</sub>]]</div>
| <div style="text-align: center;">[[Image:Square-planar-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">7</div>
| <div style="text-align: center;">0</div>
| <div style="text-align: center;">7</div>
| <div style="text-align: center;">[[w:pentagonal bipyramidal molecular geometry|pentagonal bipyramidal]]</div>
| <div style="text-align: center;">90°, 72°, 180°</div>
| <div style="text-align: center;">[[w:iodine heptafluoride|IF<sub>7</sub>]]</div>
| <div style="text-align: center;">[[Image:Pentagonal-bipyramidal-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">6</div>
| <div style="text-align: center;">1</div>
| <div style="text-align: center;">7</div>
| <div style="text-align: center;">[[w:pentagonal pyramidal molecular geometry|pentagonal pyramidal]]</div>
| <div style="text-align: center;">72°, 90°, 144°</div>
| <div style="text-align: center;">XeOF<sub>5</sub><sup>−</sup></div>
| <div style="text-align: center;">[[Image:Pentagonal-pyramidal-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">5</div>
| <div style="text-align: center;">2</div>
| <div style="text-align: center;">7</div>
| <div style="text-align: center;">[[w:pentagonal planar molecular geometry|planar pentagonal]]</div>
| <div style="text-align: center;">72°, 144°</div>
| <div style="text-align: center;">[[w:Tetramethylammonium pentafluoroxenate|XeF<sub>5</sub><sup>−</sup>]]</div>
| <div style="text-align: center;">[[Image:Pentagonal-planar-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">8</div>
| <div style="text-align: center;">0</div>
| <div style="text-align: center;">8</div>
| <div style="text-align: center;">[[w:square antiprismatic molecular geometry|square antiprismatic]]</div>
| <div style="text-align: center;"> </div>
| <div style="text-align: center;">[[w:Nitrosonium octafluoroxenate(VI)|XeF<sub>8</sub><sup>2−</sup>]]</div>
| <div style="text-align: center;">[[Image:Square-antiprismatic-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">9</div>
| <div style="text-align: center;">0</div>
| <div style="text-align: center;">9</div>
| <div style="text-align: center;">[[w:tricapped trigonal prismatic molecular geometry|tricapped trigonal prismatic]]</div>
| <div style="text-align: center;"> </div>
| <div style="text-align: center;">[[w:Potassium_nonahydridorhenate|ReH<sub>9</sub><sup>2−</sup>]]</div>
| <div style="text-align: center;">[[Image:AX9E0-3D-balls.png|50px]]</div>
|}
<br />
From the Table, we see that some of the molecules shown as examples have bond angles that depart from the ideal electronic geometry. For example, the H-N-H bond angle in ammonia is 107°, and the H-O-H angle in water is 104.5°. We can rationalize this in terms of the last rule above. The lone pair in ammonia repels the electrons in the N-H bonds more than the bonds repel each other. This lone pair repulsion exerts even more steric influence in the case of water, where there are two lone pairs. Similarly, the axial F-S-F angle in the "seesaw" molecule SF<sub>4</sub> is a few degrees less than 180° because of repulsion by the lone pair in the molecule.
'''Geometrical isomers'''<br />
For some molecules in the Table, we note that there is more than one possible shape that would satisfy the VSEPR rules. For example, the XeF<sub>2</sub> molecule has a steric number of five and a trigonal bipyramidal geometry. There are three possible stereoisomers: one in which the F atoms occupy axial sites, resulting in linear molecule, one in which the F atoms occupy one equatorial and one axial site (resulting in a 90° bond angle), and one in which the F atoms are both on equatorial sites, with a F-Xe-F bond angle of 120°.
[[File:XeF2 geometry.jpg|130px|left]]
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
The observed geometry of XeF<sub>2</sub> is linear, which can be rationalized by considering the orbitals that are used to make bonds (or lone pairs) in the axial and equatorial positions. There are four available orbitals, s, p<sub>x</sub>, p<sub>y</sub>, and p<sub>z</sub>. If we choose the z-axis as the axial direction, we can see that the p<sub>x</sub> and p<sub>y</sub> orbitals lie in the equatorial plane. We assume that the spherical s orbital is shared equally by the five electron domains in the molecule, the two axial bonds share the p<sub>z</sub> orbital, and the three equatorial bonds share the p<sub>x</sub> and p<sub>y</sub> orbitals. We can then calculate the bond orders to axial and equatorial F atoms as follows:
<br />
axial: 1/5 s + 1/2 p<sub>z</sub> = 0.7 bond (formal charge = -0.3)<br />
equatorial: 1/5 s + 1/3 p<sub>x</sub> + 1/3 p<sub>y</sub> = 0.867 bond (formal charge = -0.133)
<br />
Because fluorine is more electronegative than a lone pair, it prefers the axial site where it will have more negative formal charge. In general, by this reasoning, lone pairs and electropositive ligands such as CH<sub>3</sub> will always prefer the equatorial sites in the trigonal bipyramidal geometry. Electronegative ligands such as F will always go to the axial sites.
In the case of the BrF<sub>4</sub><sup>-</sup> anion, which is isoelectronic with XeF<sub>4</sub> in the Table, the electronic geometry is octahedral and there are two possible isomers in which the two lone pairs are ''cis'' or ''trans'' to each other. In this case, lone pair - lone pair repulsion dominates and we obtain the ''trans'' arrangement of lone pairs, giving a square planar molecular geometry.
<br />
[[File:BrF4-VSEPR.jpg|350px|left]]
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
'''Orbital hybridization'''
<br />
The observation of molecules in the various electronic shapes shown above is, at first blush, in conflict with our picture of [[w:Atomic_orbitals|atomic orbitals]]. For an atom such as oxygen, we know that the 2s orbital is spherical, and that the 2p<sub>x</sub>, 2p<sub>y</sub>, and 2p<sub>z</sub> orbitals are dumbell-shaped and point along the Cartesian axes. The water molecule contains two hydrogen atoms bound to oxygen not at a 90° angle, but at an angle of 104.5°. Given the relative orientations of the atomic orbitals, how do we arrive at angles between electron domains of 104.5°, 120°, and so on? To understand this we will need to learn a little bit about the quantum mechanics of electrons in atoms and molecules.<br>
<br>
The atomic orbitals ψ represent solutions to the [[w:Schrödinger equation|'''Schrödinger wave equation''']],
:<math> E \psi = \hat{H}\psi</math>
Here E is the energy of an electron in the orbital, and <math> \hat{H}</math> is the Hamiltonian operator.
By analogy with classical mechanics, the Hamiltonian is commonly expressed as the sum of [[w:Hermitian operators|operators]] corresponding to the [[w:kinetic energy|kinetic]] and [[w:potential energy|potential]] energies of a system in the form
:<math> \hat{H} = \hat{T} + \hat{V}, </math>
where <math> \hat{V} = V(\mathbf{r},t) </math> is the potential energy, and
:<math>\hat{T} = \frac{\mathbf{\hat{p}}\cdot\mathbf{\hat{p}}}{2m} = \frac{\hat{p}^2}{2m} = -\frac{\hbar^2}{2m}\nabla^2,</math>
is the kinetic energy operator in which ''m'' is the mass of the particle and the momentum operator is:
:<math> \hat{p} = -i\hbar\nabla ,</math> where <math>\nabla = {\partial \over \partial x} + {\partial \over \partial y} + {\partial \over \partial z}</math>
Here <math>\hbar</math> is h/2π, where h is Planck's constant, and the Laplacian operator ∇<sup>2</sup> is:
:<math>\nabla^2 = \frac{\partial^2}{{\partial x}^2} + \frac{\partial^2}{{\partial y}^2} + \frac{\partial^2}{{\partial z}^2}</math>
Although this is not the technical definition of the [[w:Hamiltonian mechanics|Hamiltonian in classical mechanics]], it is the form it most commonly takes in quantum mechanics. Combining these together yields the familiar form used in the Schrödinger equation:
:<math>\begin{align}\hat{H} & = \hat{T} + \hat{V} \ = \frac{\mathbf{\hat{p}}\cdot\mathbf{\hat{p}}}{2m}+ V(\mathbf{r},t) \ = -\frac{\hbar^2}{2m}\nabla^2+ V(\mathbf{r},t)\end{align}</math>
For hydrogen-like (one-electron) atoms, the Schrödinger equation can be written as:<br />
:<math> E \psi = -\frac{\hbar^2}{2\mu}\nabla^2\psi - \frac{Ze^2}{4\pi\epsilon_0 r}\psi </math>
where '''Z''' is the nuclear charge, ''e'' is the electron charge, and '''r''' is the position of the electron. The radial potential term on the right side of the equation is due to the [[w:Coulomb's law|Coulomb interaction]], i.e., the electrostatic attraction between the nucleus and the electron, in which ''ε''<sub>0</sub> is the [[w:electric constant|dielectric constant]] (permittivity of free space) and
:<math> \mu = \frac{m_em_n}{m_e+m_n} </math>
is the 2-body [[w:reduced mass|reduced mass]] of the [[w:Nucleus (atomic structure)|nucleus]] of mass ''m''<sub>n</sub> and the electron of mass ''m''<sub>e</sub>. To a good approximation, µ ≈ ''m''<sub>e</sub>.
[[File:Erwin_Schrodinger2.jpg|right|thumb|150px|Erwin Schrödinger as a young scientist]]
This is the equation that [[w:Erwin_Schrödinger|Erwin Schrödinger]] famously derived in 1926 to solve for the energies and shapes of the s, p, d, and f [[w:Atomic_orbital|atomic orbitals]] in hydrogen-like atoms. It was a huge conceptual leap for both physics and chemistry because it not only explained the quantized energy levels of the hydrogen atom, but also provided the theoretical basis for the octet rule and the arrangement of elements in the periodic table.
The Schrödinger equation can be used to describe chemical systems that are more complicated than the hydrogen atom (e.g., multi-electron atoms, molecules, infinite crystals, and the dynamics of those systems) if we substitute the appropriate potential energy function V(r,t) into the Hamiltonian. The math becomes more complicated and the equation must be solved numerically in those cases, so for our purposes we will stick with the simplest case of time-invariant, one-electron, hydrogen-like atoms.
<br><br>
[[File:Neon orbitals rotated.png|right|thumb|170px|The shapes of the first five [[w:Atomic_orbitals|atomic orbitals]]: 1s, 2s, 2p<sub>''x''</sub>, 2p<sub>''y''</sub>, and 2p<sub>''z''</sub>. The colors denote the sign of the wave function.]]
Without going into too much detail about the Schrödinger equation, we can point out some of its most important properties:<br>
:<math> E \psi = -\frac{\hbar^2}{2\mu}\nabla^2\psi - \frac{Ze^2}{4\pi\epsilon_0 r}\psi </math>
*The equation derives from the fact that the total energy (E) is the sum of the kinetic energy (KE) and the potential energy (PE). These three quantities are represented mathematically as [[w:Operator_(physics)|'''operators''']] in the equation.
*On the left side of the equation, the total energy operator (E) is a scalar that is multiplied by the [[w:Wave_function|wavefunction]] ψ. ψ is a function of the spatial coordinates (x,y,z) and is related to the probability that the electron is at that point in space.
*The first term on the right side of the equation represents the kinetic energy (KE). The kinetic energy operator is proportional to ∇<sup>2</sup> (the [[w:Laplacian|Laplacian operator]]) which takes the second derivative (with respect to three spatial coordinates) of ψ. Thus, the Schrödinger equation is a '''differential equation'''.
*The second term on the right side of the equation represents the Coulomb potential (PE), i.e. the attractive energy between the positively charged nucleus and the negatively charged electron.
*The solutions to the Schrödinger equation are a set of '''energies''' E (which are scalar quantities) and [[w:Wave_function|'''wavefunctions''']] (a.k.a. '''[[w:Atomic_orbitals|atomic orbitals]]''') ψ, which are functions of the spatial coordinates. You will sometimes see the energies referred to as [[w:Eigenvalue|''eigenvalues'']] and the orbitals as [[w:eigenfunction|''eigenfunctions'']], because mathematically the Schrödinger equation is an eigenfunction-eigenvalue equation. Although ψ is a function of the coordinates, E is not. So an electron in a 2p<sub>z</sub> orbital has the same total energy E (= PE + KE) no matter where it is in space.
*These E values and their associated [[w:Wave_function|wavefunctions]] ψ are catalogued according to their '''[[w:Quantum_number|quantum numbers]]''' ''n,'' ''l,'' and ''m<sub>l</sub>.'' That is, there are many solutions to the differential equation, and each solution (ψ(xyz) and E) has a unique set of quantum numbers. Some sets of orbitals are '''degenerate''', meaning that they have the same energy (e.g., 2p<sub>x</sub>, 2p<sub>y</sub>, and 2p<sub>z</sub>).
*The solutions ψ(xyz) to the Schrödinger equation (e.g., the 1s, 2s, 2p<sub>x</sub>, 2p<sub>y</sub>, and 2p<sub>z</sub> orbitals) represent '''probability amplitudes''' for finding the electron at a particular point (x,y,z) in space. A probability amplitude can have either '''+ or - sign'''. We typically represent the different signs by shading or by + and - signs on the two lobes of a 2p orbital.
*The square of the probability amplitude, ψ<sup>2</sup>, is always a positive number and represents the '''probability''' of finding the electron at a point x,y,z in space. Because the total probability of finding the electron somewhere is 1, the wavefunction must be '''normalized''' so that the integral of ψ<sup>2</sup> over the spatial coordinates (from -∞ to +∞) is 1.
*The solutions to the Schrödinger equation are '''orthogonal''', meaning that the product of any two (integrated over all space) is zero. For example the product of the 2s and 2p<sub>x</sub> orbitals, integrated over the spatial coordinates from -∞ to +∞, is zero.
<br>
Orbital hybridization involves making ''linear combinations'' of the [[w:Atomic_orbitals|atomic orbitals]] that are solutions to the Schrödinger equation. Mathematically, this is justified by recognizing that the Schrödinger equation is a ''linear'' differential equation. As such, any sum of solutions to the Schrödinger equation is also a valid solution. However, we still impose the constraint that our hybrid orbitals must be '''orthogonal''' and '''normalized'''.
<br />
'''Rules for orbital hybridization:'''
* Add and subtract [[w:Atomic_orbitals|atomic orbitals]] to get hybrid orbitals.
* We get the same number of orbitals out as we put in.
* The energy of a hybrid orbital is the weighted average of the [[w:Atomic_orbitals|atomic orbitals]] that make it up.
* The coefficients are determined by the constraints that the hybrid orbitals must be orthogonal and normalized.
For '''sp hybridization''', as in the BeF<sub>2</sub> or CO<sub>2</sub> molecule, we make two linear combinations of the 2s and 2p<sub>z</sub> orbitals (assigning z as the axis of the Be-F bond):
:<math>\psi_1 = \frac{1}{\sqrt 2}(2s) + \frac{1}{\sqrt 2}(2p_z)</math><br>
:<math>\psi_2 = \frac{1}{\sqrt 2}(2s) - \frac{1}{\sqrt 2}(2p_z)</math><br>
Here we have simply added and subtracted the 2s and 2pz orbitals; we leave it as an exercise for the interested student to show that both orbitals are normalized (i.e., {{Unicode|∫}}ψ<sub>1</sub><sup>2</sup>dτ = {{Unicode|∫}}ψ<sub>2</sub><sup>2</sup>dτ = 1) and orthogonal (i.e., {{Unicode|∫}}ψ<sub>1</sub>ψ<sub>2</sub>dτ = 0).
What this means physically is explained in the figure below. By combining the 2s and 2p<sub>z</sub> orbitals we have created two new orbitals with large lobes (high electron probability) pointing along the z-axis. These two orbitals are degenerate and have an energy that is halfway between the energy of the 2s and 2p<sub>z</sub> orbitals.
[[File:sp hybridization.jpg|thumb|500px|center|Linear combinations of the 2s and 2p<sub>z</sub> [[w:Atomic_orbitals|atomic orbitals]] make two 2sp<sub>z</sub> hybrids. The 2p<sub>x</sub> and 2p<sub>y</sub> orbitals are unchanged.]]
For an isolated Be atom, which has two valence electrons, the lowest energy state would have two electrons spin-paired in the 2s orbital. However, these electrons would not be available for bonding. By '''promoting''' these electrons to the degenerate 2sp<sub>z</sub> hybrid orbitals, they become unpaired and are prepared for bonding to the F atoms in BeF<sub>2</sub>. This will occur if the '''bonding energy''' (in the promoted state) exceeds the promotion energy. The '''overall bonding energy''', i.e., the energy released by combining a Be atom in its ground state with two F atoms, is the difference between the bonding and promotion energies.
We can similarly construct '''sp<sup>2</sup> hybrids''' (e.g., for the BF<sub>3</sub> molecule or the NO<sub>3</sub><sup>-</sup> anion) from one 2s and two 2p [[w:Atomic_orbitals|atomic orbitals]]. Taking the plane of the molecule as the xy plane, we obtain three hybrid orbitals at 120° to each other. The three hybrids are:
[[File:sp2hybrids.jpg|200px|right]]<br />
:<math>\psi_1 = \frac{1}{\sqrt 3}(2s) + \frac{\sqrt 2}{\sqrt 3}(2p_x)</math>
:<math>\psi_2 = \frac{1}{\sqrt 3}(2s) - \frac{1}{\sqrt 6}(2p_x) + \frac{1}{\sqrt 2}(2p_y)</math>
:<math>\psi_3 = \frac{1}{\sqrt 3}(2s) - \frac{1}{\sqrt 6}(2p_x) - \frac{1}{\sqrt 2}(2p_y)</math>
<br />
These orbitals are again degenerate and their energy is the weighted average of the energies of the 2s, 2p<sub>x</sub>, and 2p<sub>y</sub> [[w:Atomic_orbitals|atomic orbitals]].
Finally, to make a sp<sup>3</sup> hybrid, as in CH<sub>4</sub>, H<sub>2</sub>O, etc., we combine all four [[w:Atomic_orbitals|atomic orbitals]] to make four degenerate hybrids:
[[File:Ch4 hybridization.svg|130px|right]]<br />
[[File:CH4-structure.svg|130px|right]]<br />
:<math>\psi_1 = \frac{1}{2}(2s + 2p_x + 2p_y + 2p_z)</math><br>
:<math>\psi_2 = \frac{1}{2}(2s - 2p_x - 2p_y + 2p_z)</math><br>
:<math>\psi_3 = \frac{1}{2}(2s + 2p_x - 2p_y - 2p_z)</math><br>
:<math>\psi_4 = \frac{1}{2}(2s - 2p_x + 2p_y - 2p_z)</math><br>
The lobes of the '''sp<sup>3</sup> hybrid''' orbitals point towards the vertices of a tetrahedron (or alternate corners of a cube), consistent with the tetrahedral bond angle in CH<sub>4</sub> and the nearly tetrahedral angles in NH<sub>3</sub> and H<sub>2</sub>O. Similarly, we can show that we can construct the trigonal bipyramidal electronic shape by making sp and sp<sup>2</sup> hybrids, and the octahedral geometry from three sets of sp hybrids. The picture that emerges from this is that the [[w:Atomic_orbitals|atomic orbitals]] can hybridize as required by the shape that best minimizes electron pair repulsions.
[[File:Hydrogen-sulfide-2D-dimensions.svg|130px|right]]
Interestingly however, the bond angles in PH<sub>3</sub>, H<sub>2</sub>S and H<sub>2</sub>Se are close to 90°, suggesting that P, S, and Se primarily use their p-orbitals in bonding to H in these molecules. This is consistent with the fact that the energy difference between s and p orbitals stays roughly constant going down the periodic table, but the bond energy ''decreases'' as the valence electrons get farther away from the nucleus. In compounds of elements in the 3rd, 4th, and 5th rows of the periodic table, there thus is a ''decreasing tendency to use s-p orbital hybrids in bonding''. For these heavier elements, the bonding energy is not enough to offset the energy needed to promote the s electrons to s-p hybrid orbitals.
==1.3 Bond polarity and bond strength==
[[Image:Water-elpot-transparent-3D-balls.png|thumb|right|250px|Fig. 1.3.1. A [[w:water molecule|water molecule]], a commonly used example of polarity. The two charges are present with a negative charge in the middle (red), and a positive charge at the ends (blue).]]
[[w:Linus Pauling|Linus Pauling]] introduced the concept of [[w:electronegativity|electronegativity]] 1932 in order to explain the extra stability of molecules with polar bonds. <ref name="paulingJACS">{{cite journal |author= Pauling, L.
|authorlink=Linus Pauling
|year= 1932
|journal= [[w:Journal of the American Chemical Society|J. Am. Chem. Soc.]]
|volume= 54
|issue= 9
|pages= 3570–3582
|title= The Nature of the Chemical Bond. IV. The Energy of Single Bonds and the Relative Electronegativity of Atoms
|doi= 10.1021/ja01348a011}}</ref> The electronegativity of an atom, represented by the Greek letter ''χ'', can be defined as the tendency of an atom to draw electrons to itself in a chemical bond. On the Pauling scale, the electronegativity difference between two atoms A and B was defined in terms of the [[w:Bond dissociation energy|dissociation energies]] ''E''<sub>d</sub> of the A-A, B-B, and A-B bonds:<br><br>
::<small><math>\chi_{\rm A} - \chi_{\rm B} = \sqrt{E_{\rm d}({\rm AB}) - [E_{\rm d}({\rm AA}) + E_{\rm d}({\rm BB})]/2}</math></small><br><br>
where the energies are expressed in electron volts.
This definition, while directly relevant to the strength of chemical bonds, requires thermochemical input data from many compounds, some of which were not available at the time. Mulliken<ref>{{cite journal
|author = Mulliken, R. S.
|year =1934
|journal = [[w:Journal of Chemical Physics|J. Chem. Phys.]]
|volume = 2
|title = A New Electroaffinity Scale; Together with Data on Valence States and on Valence Ionization Potentials and Electron Affinities
|doi = 10.1063/1.1749394
|pages = 782–793
|issue = 11|bibcode = 1934JChPh...2..782M }}</ref><ref>{{cite journal
|author = Mulliken, R. S.
|year =1935
|title = Electronic Structures of Molecules XI. Electroaffinity, Molecular Orbitals and Dipole Moments
|journal = [[w:Journal of Chemical Physics|J. Chem. Phys.]]
|volume = 3
|doi = 10.1063/1.1749731
|pages = 573–585
|issue = 9|bibcode = 1935JChPh...3..573M }}</ref> and later Pearson<ref>{{cite journal|author = Pearson, R. G.
|title = Absolute electronegativity and absolute hardness of Lewis acids and bases
|year = 1985
|journal = [[w:Journal of the American Chemical Society|J. Am. Chem. Soc.]]
|volume = 107
|pages = 6801
|doi = 10.1021/ja00310a009|issue = 24}}</ref> developed a scale of electronegativities based on the average of the electron affinity and ionization energy of the free A and B atoms, which they correlated with thermochemical data and the Pauling scale.
On the Pauling scale, the least electronegative elements are the alkali metals (χ = 0.7-1.0) and the most electronegative are oxygen (3.5) and fluorine (4.0) at the upper right of the periodic table. Carbon and hydrogen have intermediate electronegativities (2.6 and 2.2 on the Pauling scale, respectively). The general trend (see table below) is that electronegativities increase going up and to the right in the periodic table. There are some interesting exceptions to this behavior, most notably two islands of high electronegativity at the bottom of the transition series, peaking at tungsten (χ = 2.4) and gold (χ = 2.5). The first of these can be explained by the very high metal-metal bond energy of elements such as Mo and W, which can use all six of their valence electrons in bonding, as we will discuss in Chapter 6. The second however occurs with more weakly bonded noble metals such as Pt and Au, and is responsible for their low position in the [[w:Reactivity_series|activity series]],<ref>B. Hammer and J. K. Norskov, "Why gold is the noblest of all the metals," ''Nature'' '''376,''' 238 - 240 (2002. doi:10.1038/376238a0</ref> as well as their extraordinary properties as catalysts.<br><br>
[[image:periodic table Pauling electronegatvity.jpg|500px|left]]
[[w:Electronegativities_of_the_elements_(data_page)#Electronegativity_.28Pauling_scale.29|Table of Pauling electronegativities]]
The polarity of bonds is determined by electronegativity differences. As a guideline we define bonds as:
* '''ionic''' if Δχ > 2.0
* '''polar''' if 2.0 > Δχ > 0.5
* '''nonpolar''' if 0.5 > Δχ
The polarity of bonds helps us understand [[w:Intermolecular_force|non-covalent forces]] between molecules, such as [[w:Hydrogen_bonding|hydrogen bonding]] and dipole-dipole interactions. It also helps us interpret the reactivity of molecules. For example, the Si-H bond (χ<sub>Si</sub> = 1.8, χ<sub>H</sub> = 2.1) is more hydride-like than the C-H bond (χ<sub>C</sub> = 2.5, χ<sub>H</sub> = 2.1). Therefore silanes react with acids to make H<sub>2</sub>, whereas phosphines (χ<sub>P</sub> = 2.1) and hydrocarbons do not. Similarly, electrophilic substitution reactions occur more readily on Si-H and P-H compounds than they do on C-H compounds.
There is also a correlation between the strength of a chemical bond and the bond length, longer bonds being weaker because of weaker orbital overlap. Pauling introduced an empirical formula relating bond length to bond strength. For a given pair of atoms (for example, two carbon atoms):<br><br>
:<big>'''D(n) = D(1) - 0.6 log<sub><small>10</small></sub>(n)'''</big><br><br>
where D(n) represents the bond length in Å and n is the bond order. D(1) in this case would be the length of a C-C single bond, which we can obtain from the average bond length in alkanes (1.54 Å). Using this formula we can predict that the bond lengths in ethylene (C=C double bond) and acetylene (C≡C triple bond) should be 1.36 and 1.25 Å, respectively, which are close to the experimental values of 1.33 and 1.20 Å. In a related form the Pauling formula can be used to calculate bond lengths when the single bond length D(1) is not available:<br><br>
:<big>'''D(n) = D(m) - 0.6 log<sub><small>10</small></sub>(n/m)'''</big><br>
Here n and m represent two different bond orders between the same kinds of atoms. This tells, for example, that the difference in length between a triple and double bond, D(2)-D(3), should be - 0.6 log<sub><small>10</small></sub>(2/3) = 0.11 Å.
<br />
<br />
[[File:Bond length of fluorine graph.JPG|right|350px|thumb|Trends in covalent radii for p-block elements. The [[w:Covalent_radius_of_fluorine|covalent radius of F]] has been difficult to determine because of electron pair repulsion effects. Early reports (Shomaker and Stevenson, Pauling) overestimated the size of the F atom.<ref>{{cite journal|last1=Schomaker|first1=Verner|last2=Stevenson|first2=D. P.|journal=Journal of the American Chemical Society|volume=63|pages=37–40|year=1941|doi=10.1021/ja01846a007|title=Some Revisions of the Covalent Radii and the Additivity Rule for the Lengths of Partially Ionic Single Covalent Bonds *}}</ref><ref>Pauling, L. The Nature of the Chemical Bond, 3rd ed.; Cornell University Press: Ithaca, NY, 1960; p. 224.</ref><ref>{{cite journal|last1=Robinson|first1=Edward A.|last2=Johnson|first2=Samuel A.|last3=Tang|first3=Ting-Hua|last4=Gillespie|first4=Ronald J.|title=Reinterpretation of the Lengths of Bonds to Fluorine in Terms of an Almost Ionic Model|journal=Inorganic Chemistry|volume=36|issue=14|pages=3022–3030|year=1997|pmid=11669953|doi=10.1021/ic961315b}}</ref> Accurate quantum chemical calculations place the F single-bond covalent radius at about 0.64 Å.<ref>{{cite journal|doi=10.1002/chem.200901472|title=Molecular Double-Bond Covalent Radii for Elements Li–E112|year=2009|last1=Pyykkö|first1=Pekka|last2=Atsumi|first2=Michiko|journal=Chemistry: A European Journal|volume=15|issue=46|pages=12770–12779}}</ref>]]Some bond lengths and bond energies are anomalous. For example, the F-F bond length in F<sub>2</sub> is 1.43 Å, which is 0.15 Å ''longer'' than twice the covalent radius of the F atom (0.64 Å). The F-F bond is also quite weak (bond dissociation energy = 155 kJ/mol) relative to the Cl-Cl bond (242 kJ/mol). By putting the extra bond length into the Pauling formula, we calculate that the bond order in the F<sub>2</sub> molecule is only 0.6, i.e., substantially weaker than a F-F single bond. The physical reason for this is that the F-F bond is "stretched" by repulsion of the lone pairs on the F atoms. This crowding is caused by the fact that the [He] 1s<sup>2</sup> core orbital, as well as the valence orbitals of the fluorine atoms, are contracted by the high nuclear charge. The Cl atom in Cl<sub>2</sub> has a larger [Ne] (1s<sup>2</sup>2s<sup>2</sup>2p<sup>6</sup>) core, in contrast, so Cl-Cl has a "normal" single bond length (1.98 Å) that is twice the covalent radius of the Cl atom (0.99 Å). A similar lone pair repulsion effect explains the anomalously long and weak N-N and O-O single bonds in hydrazine (H<sub>2</sub>N-NH<sub>2</sub>) and hydrogen peroxide (HO-OH), which are both highly reactive molecules.
<br />
The important roles of electronegativity differences and lone pair repulsion are evident when comparing trends in bond strengths. The table below shows the average single-bond enthalpies of p-block elements with H and F. H makes stronger bonds with 2nd row elements (C, N, O, F) than with third row elements (Si, P, S, Cl) because the 2p valence electrons are closer to the nucleus and thus make stronger bonds than electrons in 3p orbitals. The bonds to H also follow the expected trend of increasing bond strength with increasing electronegativity difference. Bonds between second row elements (C, N, O, F) and F are however anomalously weak because of lone pair repulsion. For this reason, the Si-F bond is substantially stronger than the C-F bond, whereas the C-H bond is much stronger than the Si-H bond. The strong Si-F bond is the reason that HF etches glass (to produce the SiF<sub>6</sub><sup>2-</sup> anion), and the strong C-H bond is an important factor in the stability of hydrocarbons and other organic molecules.
'''Average E-H and E-F bond enthalpies (kJ/mol)'''
{| class="wikitable"
|C-H 413 ||N-H 391 ||O-H 483 ||H-F 567
|-
|Si-H 323||P-H 322||S-H 339||H-Cl 431
|-
|
|
|
|
|-
|C-F 485||N-F 272||O-F 190||F-F 155
|-
|Si-F 565||P-F 490 ||S-F 327||Cl-F 253
|}
[[File:A water droplet DWR-coated surface2 edit1.jpg|thumb|150px|right|alt=A shiny spherical drop of water on blue cloth|Fabric treated with fluorosurfactant]]The anomalously weak bond in F<sub>2</sub> is responsible for the high electronegativity of fluorine, as well as the legendary reactivity of elemental fluorine gas, which reacts explosively with hydrogen and powdered metals. Because of the instability of elemental fluorine and the polar nature of its bonds with more electropositive elements, fluorine compounds tend to be very stable. For example, the noble gases Xe and Kr react with fluorine to make covalent compounds, whereas other halogens do not react. Fluorocarbon compounds contain strong C-F bonds and have high thermal and chemical stability. Perfluorocarbons such as [[w:Teflon|Teflon]] (poly(tetrafluoroethylene), -(CF<sub>2</sub>CF<sub>2</sub>)n-, PTFE) are also highly hydrophobic. The extraordinary hydrophobicity of perfluorocarbons arises from the fact that -CF<sub>2</sub>- and -CF<sub>3</sub> groups are "fatter" than -CH<sub>2</sub>- and -CH<sub>3</sub> groups; dissolving them in water is therefore more disruptive to the hydrogen bonding network than is dissolving a hydrocarbon. <ref>V. H. Dalvi and P. J. Rossky, Molecular origins of fluorocarbon hydrophobicity, Proc. Natl. Acad. Sci. USA 107,13603–13607 (2010). DOI: 10.1073/pnas.0915169107.</ref>
==1.4 Discussion questions==
'''Group essay project:'''<br>
Join a group of classmates from your inorganic chemistry course. Each group should have 3 or 4 students. Arrange a time to meet for an hour or so. Prior to the meeting, read part I (pp. 1367-1391) as well as the summary at the end of Linus Pauling's [http://courses.chem.psu.edu/chem310/ja01355a027.pdf article] (J. Am. Chem. Soc. 1931, 53, 1367-1400) on the nature of the chemical bond.
This paper was published only a few years after Schrödinger developed the quantum mechanical theory of atomic orbitals and is considered one of the most important papers in the history of modern chemistry. At the meeting, discuss the following questions: (1) What was understood about chemical bonding in molecules before Pauling published this work? (2) What new concepts did the paper introduce that we still use today? (3) Why were these ideas important? and (4) What, if anything, did Pauling get wrong, and why?
Together with your classmates, write a 1-2 page essay addressing these questions. Please include the names of all students in your group on the first page; all of you will receive the same grade on this assignment. Anonymous excerpts from a few of these essays will be shared with the class.
'''In-class discussion questions from this chapter:'''
* What are inequivalent resonance structures? Illustrate with some new examples not covered above.
* Explain no-bond resonance and hypervalency, using some new examples.
* What are the limitations of valence bond theory for molecules that contain an odd number of electrons? Illustrate with one or two examples.
==1.5 Problems==
1. Draw composite octet structures (including formal charges, bond order, and molecular shape) for the following: (a) BrO<sub>3</sub><sup>-</sup>, (b) SF<sub>6</sub>, (c) KrF<sub>2</sub>, (d) HClO<sub>4</sub> (= HOClO<sub>3</sub>), (e) NO<sub>2</sub><sup>-</sup>, and (f) ClO<sub>2</sub>.
2. Draw composite octet structures (including formal charges, bond order, and molecular shape) for the following: (a) Al<sub>2</sub>Cl<sub>6</sub>, (b) SnCl<sub>3</sub><sup>-</sup>, (c) BrF<sub>4</sub><sup>-</sup>,(d) HOClO, (e) SO<sub>3</sub>, and (f) NO<sub>2</sub><sup>+</sup>.
3. Show using resonance why the CO bond distance in formamide (HCONH<sub>2</sub>) is longer than the CO bond distance in acetone.
4. Give the formulas for five stable molecules and/or ions that are isoelectronic with ammonia.
5. Name three well known molecules or ions that are isoelectronic with (a) NO<sub>2</sub><sup>+</sup>, (b) BF<sub>4</sub><sup>-</sup>, (c) CH<sub>4</sub>, and (d) HCN.
6. Name three well known molecules or ions that are isoelectronic with (a) CN<sup>-</sup>, (b) H<sub>2</sub>O, (c) BF<sub>3</sub>, and (d) CO<sub>2</sub>.
7. The C-C bond distance is 1.20 Å in acetylene. Using the Pauling bond length – bond strength formula, D(n) = D(m) - 0.6 log(n/m), estimate the C-C bond distance in ketene (H<sub>2</sub>CCO).
8. In hydroxylamine, H<sub>2</sub>NOH, the N-O bond distance is 1.46 Å. Using the Pauling bond length - bond strength formula, estimate the N-O bond distances in NO<sub>2</sub> and NO<sub>3</sub><sup>-</sup>.
9. Nitrogen can exist in the +5 oxidation state in compounds that contain ions such a NF<sub>4</sub><sup>+</sup> and NO<sub>3</sub><sup>-</sup>. However the neutral binary compound NF<sub>5</sub> is unknown. Can you draw octet structures for each of these compounds? Why would NF<sub>5</sub> be unstable?
10. Consider the compounds NH<sub>3</sub> and PH<sub>3</sub>. The H-N-H bond angle in ammonia is 108<sup>o</sup> (close to the tetrahedral angle, 109.5<sup>o</sup>), but the analogous angle in PH<sub>3</sub> is 93<sup>o</sup>. Why is the angle in PH<sub>3</sub> closer to 90<sup>o</sup> than it is to the tetrahedral angle?
11. Two hypothetical structures for the N<sub>2</sub>F<sub>3</sub><sup>+</sup> ion are [N-NF<sub>3</sub>]<sup>+</sup> and [F-N-NF<sub>2</sub>]<sup>+</sup>. Which one is more stable? Explain. (Note: lines in the formulas can represent either single or multiple bonds)
12. Krypton difluoride, KrF<sub>2</sub>, decomposes at dry ice temperature to Kr and F<sub>2</sub>. However, several salts of the [KrF]<sup>+</sup> ion are relatively stable. Draw valence bond pictures for KrF<sub>2</sub> and [KrF]<sup>+</sup>, showing lone pairs, possible resonance structures, formal charges, bond orders, and bond angles. Why is [KrF]<sup>+</sup> more stable than KrF<sub>2</sub>?
13. Consider the anion SF<sub>3</sub>O<sub>2</sub><sup>-</sup> (with S the central atom). How many isomers are possible? Which is the most stable?
14. The Br-F bond distance in the interhalogen compound BrF is 1.76 Å. Use this information to estimate the average bond lengths in BrF<sub>3</sub> and BrF<sub>5</sub>.
15. The B-H bond distances are about the same in BH<sub>3</sub> and BH<sub>4</sub><sup>-</sup>. however, the B-F bond distance in BF<sub>3</sub> is shorter than that in the BF<sub>4</sub><sup>-</sup> ion. Explain.
16. The N-N bond dissociation energy in hydrazine (H<sub>2</sub>N-NH<sub>2</sub>) is 159 kJ/mol. The dissociation energy of the N-N triple bond in N<sub>2</sub> is 941 kJ/mol, i.e., much greater than three times the N-N single bond dissociation energy in hydrazine. Explain why the N-N bond in hydrazine is so weak, and why this effect is not seen in N<sub>2</sub>.
17. Show that a set of four sp<sup>3</sup> hybrid orbitals satisfies the following criteria: (a) any two orbitals in the sp<sup>3</sup> set are orthogonal, and (b) the orbitals are properly normalized.
18. Quantum mechanically, the momentum (p) of a particle traveling in a specific direction (e.g., the x direction) can be obtained by operating on its wavefunction <math>\psi</math> with the [[w:Momentum_operator|'''momentum operator''']]:
:<math> \hat{p}\psi = p\psi</math>, where <math> \hat{p} = -i\hbar{\partial \over \partial x} </math>
Knowing the correct form of this operator was the key to Schrödinger's formulation of the Hamiltonian operator, <math>\hat{H} = \frac{\hat{p}^2}{2m} + V</math>, which operates on a wavefunction to give the total energy. The momentum operator must also be consistent with the [[w:Matter_wave|'''de Broglie relation''']], p = h/λ, which relates the momentum to the particle wavelength.
By analogy to electromagnetic waves, Schrödinger knew that a wavelike particle (such as an electron) traveling in free space in the x-direction could be described by the wavefunction:
:<math>\psi(x,t)= Ae^{i(kx - \omega t +\varphi)}</math>
where the [[w:Wavenumber|'''wavenumber''']] k is inversely related to the particle's [[w:Matter_wave|'''de Broglie wavelength''']] λ by k = 2π/λ. Here A is a normalization constant, ω is the frequency of the wave, and <math>\varphi</math> represents its phase.
Show using the momentum operator <math>\hat{p}</math> that the value of the momentum p we obtain for a free particle from <math> \hat{p}\psi = p\psi</math> is consistent with the de Broglie relation, p = h/λ. <br>
(Hint: k, ω, and <math>\varphi</math> are independent of x)
19. N<sub>3</sub>S<sub>4</sub><sup>+</sup> is a cyclic cation that contains no N-N bonds. Draw the structure of the seven-membered ring and use the electron counting method to determine the number of single bonds, double bonds, and lone pairs. Draw out the possible resonance structures for this ion showing formal charges and indicate which one is the most stable. Which S-N bonds would you predict to be the shortest? The atomic connectivity in the ring is: -S-S-N-S-N-S-N-. (''Hint'': determine the number of π-bonds in the molecule by electron counting and then find the most stable resonance structures.)
20. F has a higher electronegativity than Cl, and F<sub>2</sub> is a much stronger oxidizing agent than Cl<sub>2</sub>, despite the fact that the electron affinity of fluorine (-328 kJ/mol) is weaker than that of chlorine (-349 kJ/mol). Explain this apparent contradiction.
21. The single bonds in methane (CH<sub>4</sub>), ammonia (NH<sub>3</sub>) and water (H<sub>2</sub>O) are stronger than those in SiH<sub>4</sub>, PH<sub>3</sub>, and H<sub>2</sub>S, respectively. The analogous fluorine containing compounds follow the opposite trend: the single bonds in CF<sub>4</sub>, NF<sub>3</sub>, and OF<sub>2</sub> are weaker than those in SiF<sub>4</sub>, PF<sub>3</sub>, and SF<sub>2</sub>. Can you explain these two opposite trends?
==1.6 References==
{{reflist|colwidth=30em}}
{{BookCat}}
d654uvvcy6nhgz35d9o9jzeic3x4fzx
4656288
4656287
2026-08-04T18:56:59Z
Tem5psu
1013978
4656288
wikitext
text/x-wiki
== Chapter 1: Review of Chemical Bonding==
[[File:Phosphorus-pentoxide-3D-balls.png|thumb|right|Ball-and-stick representation of chemical bonding in the molecules P<sub>4</sub>O<sub>10</sub> and P<sub>4</sub>S<sub>10</sub>.]]Molecules (and extended solids) are built from atoms that form chemical bonds. Theories of bonding seek to explain why molecules and solids form, what their structures are, why some are more stable than others, and how they react. As we will learn in Chapter 2, quantum mechanics gives us the most realistic picture of chemical bonding via molecular orbital (MO) theory. However, the MO description of bonding is conceptually difficult and mathematically intensive. This chapter will review less rigorous (but still useful) models such as Lewis dot structures and valence shell electron-pair repulsion (VSEPR) theory. When combined with a qualitative quantum mechanical description of bonding through the concepts of orbital hybridization and resonance, these simple models can help us understand a great deal about the structures, stabilities, and reactions of inorganic molecules.
The theory of chemical bonding has a long history, dating back to ancient Greece and the atomists [[w:Democritus|Democritus]], [[w:Leucippus|Leucippus]], and the [[w:Epicureanism|Epicureans]]. They postulated the existence of immutable atoms moving through the void, and envisioned the physical properties of materials as arising from the kinds and shapes of atoms. In his epic poem ''[[w:de_rerum_natura|De rerum natura]]'' (On the Nature of Things), the Roman poet [[w:Lucretius|Lucretius]] (c. 99 BC – c. 50 BC), drawing on his Epicurean beliefs, describes some atoms and chemical bonding in the following way:
''What seems to us the hardened and condensed''<br>
''Must be of atoms among themselves more hooked,''<br>
''Be held compacted deep within, as 'twere''<br>
''By branch-like atoms -- of which sort the chief''<br>
''Are diamond stones, despisers of all blows''<br>
''And stalwart flint and strength of solid iron''<br>
''And brazen bars, which, budging hard in locks,''<br>
''Do grate and scream. But what are liquid, formed''<br>
''Of fluid body, they indeed must be''<br>
''Of elements more smooth and round -- because''<br>
''Their globules severally will not cohere.''
Lucretius' [https://www.gutenberg.org/files/785/785-h/785-h.htm poem] is enjoyable reading and contains some remarkable insights into the microscopic world, given the tools available at the time. Modern analytical methods show that he was off base with his ideas about hooks and spheres, however. We will revisit the nature of chemical bonding in the substances Lucretius mentions (diamond, quartz, iron, brass, and water) in the context of modern chemical theories to understand why they have the special properties they do.
'''Learning goals for Chapter 1:'''
*Be able to draw Lewis dot structures, assign formal charges, predict molecular geometries (including bond angles), and calculate bond orders for molecules, including hypervalent molecules and ions.
*Describe hypervalent molecules using no-bond resonance.
*Understand and articulate how predictions of molecular structure and bonding can be experimentally verified.
*Learn to construct hybrid orbitals from s and p atomic orbitals.
*Use the isoelectronic principle to design new molecules and solids.
*Rationalize bond strength and chemical reactivity using bond polarity arguments.
*Interrelate bond length and bond strength.
==1.1 Valence bond theory: Lewis dot structures, the octet rule, formal charge, resonance, and the isoelectronic principle==
[[File:electron dot.svg|350px|thumb|right|Fig. 1.1.1. Examples of Lewis dot diagrams showing chemical bonds between carbon, hydrogen, and oxygen, and non-bonding electron pairs.]]
'''Atoms and Molecules'''<br>
[[w:Atomism|Atomism]], because it was dismissed by [[w:Aristotle|Aristotle]], enjoyed a long sleep in scientific discourse until it was reconsidered by [[w:Galileo_Galilei|Galileo]], [[w:René_Descartes|Decartes]], and [[w:Pierre_Gassendi|Gassendi]] in the 1600s. [[w:John_Dalton|Dalton]] postulated the modern atomic theory in 1808 based on his observation that elements such as hydrogen and oxygen combined in specific ratios (the Law of Definite Proportions), but the atomic theory remained contentious throughout most of the 19th century. [[w:JJ_Thompson|Thompson]], [[w:Ernest_Rutherford|Rutherford]], [[w:Nils_Bohr|Bohr]], and others around the turn of the 20th century established that matter was indeed composed of atoms that contained heavy nuclei and light electrons, and that atoms could exist in excited states that could be interpreted as excitations of their electrons to different energy levels. However the atomic theory did not provide a ready explanation for the bonded states of atoms in molecules.
In 1916, still more than a decade before modern quantum theory would adequately describe the shapes of [[w:Atomic_orbitals|atomic orbitals]], [[w:Gilbert_N._Lewis|Lewis]] proposed the octet theory based on the empirically observed rules of valence, i.e., the combining ratios of atoms in molecules.<ref>G. N. Lewis, "The atom and the molecule," J. Am. Chem. Soc. 1916, 38, 762-785</ref> This theory, in hindsight, can be rationalized for s- and p-block elements by observing that main-group atoms can use their four valence orbitals (s, p<sub>x</sub>, p<sub>y</sub>, and p<sub>z</sub>) to accommodate up to eight electrons, some or all of which may be shared with other atoms. In Lewis' model, the valence electrons of an atom were situated at the corners of a cube, and the cubes could share edges or faces to complete their octets. Lewis developed a shorthand notation for these structures based on dots that represented the valence electrons, as illustrated in Fig. 1.1.1. A pair of electrons shared between atoms constitutes a chemical bond, and can also be represented as a line joining the atoms. Four electrons shared between atoms, represented by two lines, is a double bond, and so forth. Any pairs of electrons not involved in bonding form "lone pairs" that belong to one atom only and are thus not involved in bonding.
The Lewis picture is powerful in its simplicity. It can be readily used to rationalize or predict the combining ratios of atoms, to sort plausible and unlikely structures for molecules (including large ones), and to rationalize the acid-base properties of many molecules. It is important to remember that the model is built on a shaky, pre-quantum mechanical description of atoms and so with it, we will make mistakes. Nevertheless it is useful to see how far we can go with the Lewis model.
<br />
<br />
'''Constructing the octet valence bond picture for a molecule'''<br /><br/>
We can construct an octet picture for any molecule using the '''N-V method:'''<br />
:Number of electrons ''needed'' to make separate octets around all atoms = '''N'''<br />
:(N = 8 for non-H atoms, N = 2 for H)<br />
:Number of ''valence'' electrons = '''V''' (add up using group numbers; don't forget to add or subtract for charges on ions)<br />
:Number of ''shared'' electrons = '''S''' = N-V; and therefore the number of bonds = S/2<br />
:Fill in lone pairs everywhere else to complete octets<br />
Example: nitrate anion, NO<sub>3</sub><sup>-</sup><br />
:N = 4 atoms x 8 electrons = 32<br />
:V = 5 + 6 + 6 + 6 + 1 = 24 (N + O + O + O + charge)<br />
:S = 32-24 = 8 shared electrons = '''4 bonds'''<br />
:The number of lone pairs is obtained by difference: (V-S)/2 = (24-8)/2 = 8<br />
:Now draw the molecule, starting with the four bonds and adding eight lone pairs to complete the octets:
<br />
::[[File:Nitrate Lewis dot structure.svg|100px|left]]
<br />
<br />
<br />
<br />
<br />
:Count the shared and unshared electrons around each atom in the nitrate ion and you will see that all atoms are '''octet''' and that the total number of valence electrons (V) is 24. If you do the N-V calculation according to the rules above, you should always get an octet structure.
<br />
[[File:System2.gif|right|400px|thumb|The charges on atoms in a molecule (or an extended solid such as SiO<sub>2</sub>) can be estimated from X-ray photoelectron spectra (XPS). Energetic X-rays ionize atoms by kicking out electrons from their core orbitals. By conservation of energy, the kinetic energy (KE) of an emitted electron is related to its binding energy (BE) and the energy of the incoming X-ray photon (hν) by BE = hν - KE. Electrons are harder to remove from positively charged atoms (higher BE), and easier to remove from negatively charged atoms (lower BE), relative to the neutral element.]]
The '''formal charge''' distribution is assigned by dividing the shared (bonding) electrons equally between atoms. Thus, the singly bonded O atoms each possess 7 electrons, and because O is in group 6, their formal charge is -1. The doubly bonded O has a formal charge of zero. The N atom has a formal charge of +1 because it "owns" 4 valence electrons and is in group 5.
Note that the '''formal charge''' is '''not''' the same thing as the '''oxidation number''' (or '''oxidation state'''). In the nitrate ion, the oxidation state of nitrogen is +5 and the oxidation state of oxygen is -2. The formal charge is typically closer to the "real" charge on the atom (as measured, e.g., by [[w:X-ray_photoelectron_spectroscopy|X-ray photoelectron spectroscopy]]). Oxidation states are a useful bookkeeping device for keeping track of oxidation-reduction reactions, as we will discuss in Chapter 4. Like oxidation states, the formal charges on the atoms in a molecule or ion must ''add up to its overall charge''.
We can similarly draw the Lewis structure for ammonia as shown below:
<br />
::[[File:ammonia Lewis structure.svg|200px|left]]
<br />
<br />
<br />
<br />
When we divide the shared electrons equally between the atoms, we see that the N atom has five electrons and each H atom has one. These are the same as their group numbers, and thus, all the formal charges in the ammonia molecule are zero.
Octet structures of the Lewis acid-base adduct NH<sub>3</sub>BF<sub>3</sub>, the hydronium ion H<sub>3</sub>O<sup>+</sup>, and the sulfate anion SO<sub>4</sub><sup>2-</sup> are shown below. In this case (and in many Lewis structures we will draw), we leave off the implied lone pairs around the peripheral atoms. Try calculating the number of bonds in each of these molecules using the N-V method, and fill in the lone pairs that are not explicitly drawn in.
::[[File:octet structures.jpg|400px|left]]
<br />
<br />
<br />
<br />
<br />
In cases where more than one valence bond structure is possible, we can use formal charges to decide which structures should be more or less stable. The rules are:<br />
*The formal charges on atoms are minimized in stable structures, zero being the best case.
*Negative formal charges should be placed on the most electronegative atom(s).
*Positive formal charges should be placed on the least electronegative atom(s).
*It is unfavorable to place like charges (++ or --) on neighboring atoms in a molecule.
<br />
Examples of these rules are shown below for alternative structures of BF<sub>3</sub> and ONF.
::[[File:Boron trifluoride resonance.svg|300px|left]][[File:Atmospheric ozone.svg|400px|right|thumb|Life outside of the ocean owes its existence to the presence of ozone (O<sub>3</sub>) in the stratosphere. Ozone absorbs the ultraviolet light in the solar spectrum, which otherwise would cause catastrophic damage to DNA and other biological molecules. Because ozone is produced photochemically from O<sub>2</sub>, which is itself generated by photosynthesis, the spectroscopic signature of ozone in the atmosphere of distant planets is one possible way to look for extraterrestrial life.]][[File:Susan Solomon-Desk With Globe.jpg|right|400px|thumb|[[w:Susan_Solomon|Susan Solomon]] discovered the heterogeneous catalytic mechanism whereby ozone is decomposed by chlorofluorocarbons (freons), creating the Antarctic ozone hole. Her work formed the basis of the [[w:Montreal_Protocol|U.N. Montreal Protocol]], an international agreement to protect the ozone layer by regulating damaging chemicals.]]
<br />
<br />
<br /><br />
In the BF<sub>3</sub> case, the structure on the left is non-octet, because there are only six electrons (three bonds) in the valence shell of B. Such structures are said to be ''electron deficient.'' An octet structure (right) can be drawn, but it places a positive formal charge on F, the most electronegative atom in the molecule. Thus, neither structure is completely "happy," but the formal charge rules tell us that the electron-deficient structure on the left is more stable. The electron deficiency of BF<sub>3</sub> makes it a powerful Lewis acid.
In the case of ONF, the structure on the left is unfavorable for two reasons. First, it places a positive formal charge on F, the most electronegative atom. Second, there is another possible structure (right) that has zero formal charge, which is preferable to one with non-zero charge. This means that the structure on the right, with a double bond between N and O, is more reasonable.
<br />
<br />
<br />
::[[File:ONF resonance structures.jpg|225px|left]]
<br />
<br />
<br />
'''Resonance structures'''</br>
The ozone (O<sub>3</sub>) molecule has two equivalent octet structures, shown below:
<br />
<br />
::[[File:ozone resonance structures.jpg|225px|left]]
<br />
<br />
<br />
In both cases, the Lewis dot diagram suggests that there are three kinds of oxygen atoms in the molecule, with +1, 0, and -1 formal charges. These structures also suggest that ozone should have one single and one double bond. Experimentally (by [[w:Electron_diffraction|electron diffraction]]), however, we find that the molecule is symmetric, with both O-O bond lengths the same. The real (instantaneous) structure is the average of the two forms, as shown below. In the classical Lewis picture of the molecule, we can rationalize resonance by observing that electrons, being thousands of times lighter than the nuclei of atoms, move very fast on the timescale of molecular vibrations. Thus, in the time it takes for the oxygen atoms to adjust their positions, the electrons can move back and forth many times. In the quantum mechanical MO picture (Chapter 2), we will see that resonance involves electrons that are fully delocalized over the atoms in the molecule. We represent resonance structures with a double-headed arrow to signify that the only difference between the Lewis structures is the distribution of electrons.
In the instantaneous structure of ozone, the formal (-) charge is shared between the two terminal oxygen atoms and therefore each one has a formal charge of -1/2. The O-O bonds are the average of a single and a double bond, i.e., each O-O bond order is 1.5.
[[File:ozone avg structure.jpg|150px|left]]
<br />
<br />
<br />
<br />
<br />
Similarly, the nitrate anion has three resonance structures, and experimentally (by X-ray crystallography of nitrate salts) we find that all the N-O bonds in the ion are the same. In this case, in the averaged structure, each O atom has a formal charge of -2/3 and the N-O bond order is 4/3 (=1.33...).
[[File:Nitrate ion resonance structures.png|300px|left]] = [[File:Nitrate-ion-resonance-hybrid-2D.png|119x119px]]
<br/>
<br/>
'''Inequivalent resonance structures'''<br>
The rules of resonance also apply to inequivalent structures, which in general will have different energies from each other. In this case the structure of the molecule represents a weighted average of the low energy structures. A good example is the cyanate ion, OCN<sup>-</sup>. We can write three inequivalent octet structures for the molecule:
:<math chem>\ce{~^{-}O-C \equiv N <-> O=C=N^- <-> ^+O \equiv C-N^{2-}}</math>
The first two are reasonable resonance structures, although we suspect the one on the left is the best because it puts the negative formal charge on the most electronegative atom. The last one is clearly a bad resonance structure, because the formal charges are high and there is a positive charge on the oxygen atom. The real structure is thus a weighted average of the first two.<br>
<br />
'''No-bond resonance'''<br>
An interesting and useful kind of inequivalent resonance structure is one in which there is a bond order of ''zero'' between two of the atoms. This concept of '''no-bond resonance''' is important in understanding the bonding in many halogen- and hydrogen-containing compounds. The idea is illustrated below for the generic molecule X-Y-Z, where Z might be an electronegative halogen atom such as F. By moving the bonding electrons from the Y-Z bond onto the Z atom, and moving a lone pair from X into the X-Y bond, we generate the resonance structure shown on the right in which all atoms remain octet, but there is no bond between Y and Z.<br>
<br />
[[File:no bond resonance.jpg|300px|left]]
<br />
<br />
It is important to recognize in this example that the no-bond form is only one resonance structure, and therefore the Z atom is still bound to Y. If the two resonance structures in this example have the same energy, we would expect the X-Y bond order to be 1.5 and the Y-Z bond order to be 0.5. Therefore the Y-Z bond should be longer than it is in a compound where the bond order is one, and it should be relatively easy to break the Y-Z bond.
Some molecular examples of no-bond resonance are shown below. In the molecule ONF<sub>3</sub>, the N-F bond is unusually long relative to the N-F bond in NF<sub>3</sub>, in which the bond order is 1. This can be explained by the no-bond resonance forms shown on the right. Similarly, in the Lewis acid-base adduct formed by combining BH<sub>3</sub> with CO, we can explain the long B-H bonds using no-bond resonance forms that place a partial positive charge on the H atoms.
[[File:NF no bond resonance.jpg|450px|left]]
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
No-bond resonance is often used to provide an octet bonding picture for so-called '''[[w:Hypervalent_molecule|hypervalent compounds]]''', which are compounds that appear to have more than 8 valence electrons in the bonding shell of the central atom. For example, we can consider two different valence bond structures for the triiodide ion, I<sub>3</sub><sup>-</sup>, which is formed by reaction of I<sup>-</sup> with I<sub>2</sub> in water:
[[File:hypervalent triiodide.jpg|370px|left]]
<br />
<br />
<br />
<br />
[[File:Blue Solution.jpg|200px|right|thumb|The deep blue color of starch-iodine solutions results from the complexation of linear polyiodide ions (I<sub>n</sub><sup>-</sup>) by the starch (amylose) left-handed helix. The interior of the helix is hydrophobic. In electron donor solvents such as ethanol and water, I<sub>2</sub> and salts of I<sub>3</sub><sup>-</sup> have a brown color, the result of a charge transfer interaction between the solvent and solute.<ref>W. Saenger, "The structure of the blue starch-iodine complex," Naturwissenschaften 71, 31-36 (1984).</ref><ref>R. D. Hancock and B. J. Tarbet, "The other double helix - the fascinating chemistry of starch," J. Chem. Ed. 77, 988-992 (2000).</ref>]]In this structure, the central iodine atom has 10 electrons in its valence shell, in violation of the octet rule. [[w:Raman_spectroscopy|Raman spectra]] of the triiodide ion show that the I-I bond is weaker than the I-I single bond in I<sub>2</sub>, suggesting that this picture is not an accurate description of the bonding. A better representation of I<sub>3</sub><sup>-</sup> can be obtained with no-bond resonance structures, as shown below. We will see that this picture is consistent with the MO description of I<sub>3</sub><sup>-</sup> in Chapter 2:
[[File:octet triiodide.jpg|350px|left]][[File:IodineStarch left en.svg|200px|right]]
<br />
<br />
<br />
<br /><br />
We can draw a similar picture for the XeF<sub>2</sub> molecule, which has the same number of valence electrons as I<sub>3</sub><sup>-</sup>. This picture is consistent with XPS data, which show a partial negative charge on the F atoms, as well as vibrational spectra, which show that the Xe-F bond is weaker in XeF<sub>2</sub> than it is in the singly-bonded cation Xe-F<sup>+</sup>.
[[File:octet XeF2.jpg|170px|left]]
<br />
<br />
<br />
Other well known examples of hypervalent compounds are PF<sub>5</sub>, P(CH<sub>3</sub>)<sub>5</sub>, and SF<sub>6</sub>, as well as oxyacids such as H<sub>2</sub>SO<sub>4</sub> and HClO<sub>4</sub>. The hypervalent structure is often drawn for these molecules, with the explanation that d-orbitals on the central atom contribute to the bonding in dsp<sup>3</sup> and d<sup>2</sup>sp<sup>3</sup> hybrids for 5- and 6-coordinate molecules, respectively. However, realistic molecular orbital calculations show that the phosphorus and sulfur 3d orbitals are too high in energy to contribute significantly to bonding in PF<sub>5</sub> and SF<sub>6</sub>. For these molecules, we can use no-bond resonance to make reasonable octet structures that predict polar bonds between the central atom and F. [[File:sf6 bonding.jpg|380px|left]][[File:Sulfur-hexafluoride-from-xtal-3D-SF.png|right|200px|thumb|Space-filling model of sulfur hexafluoride. [[w:Sulfur_hexafluoride|SF<sub>6</sub>]] is surprisingly unreactive with water, relative to other compounds that contain S-F bonds. The tight packing of F atoms around S prevents nucleophilic attack by water.]]<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
In other cases, such as P(CH<sub>3</sub>)<sub>5</sub>, the octet structure is unreasonable because it suggests a polar bond between P and C, with a partial negative charge on C. Further, in the case of oxyacids such as H<sub>2</sub>SO<sub>4</sub> and HClO<sub>4</sub>, X-ray crystallographic data establish that the S-O and Cl-O bonds are shorter for the oxygen atoms not bonded to hydrogen, which is more consistent with the hypervalent picture:
<br><br>
[[File:octet&hypervalent H2SO4.jpg|200px|left]][[File:Sulfuric-acid-2D-dimensions.svg|130px]]
<br>
The question of whether hypervalency and the octet rule are really useful descriptions of the bonding in these compounds has been considered in a number of computational studies, which have used increasingly accurate quantum mechanical calculations to determine the number of electrons associated with the central atom. In a 2002 study, Gillespie and Silvi<ref>R. J. Gillespie and B. Silvi, "The octet rule and hypervalence: two misunderstood concepts," Coord. Chem. Rev. 233-234, 53-62 (2002).</ref> found that the population of the valence shell is greater than eight for compounds with electropositive ligands, such as P(CH<sub>3</sub>)<sub>5</sub>, and less than eight for compounds such as PF<sub>5</sub>. They concluded that these valence electron shell populations depend primarily on the coordination numbers and electronegativities of the central atoms and their ligands, and that there is no fundamental difference between the bonding in hypervalent and non-hypervalent (Lewis octet) molecules. This reminds us that the octet rule is not a law of nature, but rather an empirical rule that is useful within certain limits.
<br />
<br />
[[File:A man breathing in nitrous oxide (laughing gas) and a man ex Wellcome L0023721.jpg|right|300px|thumb|Nitrous oxide (N<sub>2</sub>O), or laughing gas, is isoelectronic with CO<sub>2</sub>. The two molecules have the same shape (linear) and similar physical properties. CO<sub>2</sub> sublimes at -78 °C, whereas N<sub>2</sub>O melts at -91 °C and boils at -88 °C.]]
'''The isoelectronic principle'''<br />
In calculating the octet structures of molecules using the N-V method, we needed to know only the number of atoms and the number of electrons, not the identities of the atoms themselves. This means that we will get the same answer (and the same set of octet and resonance structures) for ''any'' molecule or ion that contains (a) the same number of non-hydrogen atoms, and (b) the same total number of valence electrons. Such molecules are said to be ''isoelectronic.'' This is a powerful conclusion because, once we have determined the electronic structure of one molecule, we can write down the same solution for ''all other molecules'' that are isoelectronic. For example, we noted above that I<sub>3</sub><sup>-</sup> and XeF<sub>2</sub>, which both have 22 valence electrons, have the same valence bond structure. We can further expect that isoelectronic molecules will have the same shapes and, very often, similar physical properties.
The four molecules and ions below all contain three non-hydrogen atoms and 16 valence electrons. All of them are linear molecules with two double bonds. The four molecules and ions shown below them all contain four non-hydrogen atoms and 24 valence electrons. These four have a trigonal planar shape. While BF<sub>3</sub> is a member of this isoelectronic series, we do not write it in the resonance form that contains a B=F double bond, because that would put a positive formal charge on F.
[[File:isoelectronic molecules.jpg|320px|left]] [[File:24e molecules.jpg|left|400px]]
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Similarly we can show that CH<sub>4</sub>, NH<sub>3</sub>, NH<sub>4</sub><sup>+</sup>, H<sub>2</sub>O, H<sub>3</sub>O<sup>+</sup>, HF, F<sup>-</sup>, and OH<sup>-</sup> are all isoelectronic with one non-H atom and eight valence electrons. In the next section we will see that this gives rise to nearly identical electronic shapes for these molecules.
[[File:Gallium-arsenide-unit-cell-3D-balls.png|200px|thumb|right|Fig. 1.1.2. The tetrahedral bonding in crystals of GaAs, CdTe, CuIn<sub>1-x</sub>Ga<sub>x</sub>Se<sub>2</sub> and other semiconductors is similar to that in isoelectronic Si and Ge.]]
<br>
'''Isoelectronic solids.''' The isoelectronic principle works not just for molecules but for extended solids as well. One technologically important set of isoelectronic solids are the p-block semiconductors. The group 14 element Si is the most widely used semiconductor for electronics, but, as we will discuss later, it is not a good light emitter. Light-emitting diodes (LEDs), which are used in lasers, high efficiency lighting, and display technologies, are made from compounds that are isoelectronic with Si and Ge, especially GaAs, GaP, AlAs, and GaN (all contain four valence electrons per atom). CdTe and CuIn<sub>1-x</sub>Ga<sub>x</sub>Se<sub>2</sub> (CIGS) are promising solar cell materials that also have the same number of valence electrons per atom. Like Si and Ge, these compounds have tetrahedrally bonded structures in the solid state and absorb light across most of the solar spectrum, as we will discuss in more detail in Chapters 8 and 10.
The isoelectronic principle is also a powerful tool in materials research, because it provides guidance about where to look for new materials with similar and perhaps improved properties. For example, the discovery that 8.5% efficient thin layer solar cells could be made with the compound CsSnI<sub>3</sub><ref>I. Chung, B. Lee, J. He, R. P. H. Chang and M. G. Kanatzidis, All-solid-state dye-sensitized solar cells with high efficiency, Nature 485, 486-489 (2012). doi:10.1038/nature11067</ref> stimulated the exploration of many isoelectronic ABX<sub>3</sub> compounds with the same perovskite crystal structure. Very recently thin film solar cells based on light absorbers in this structural family (MA)PbI<sub>3-x</sub>Cl<sub>x</sub> and FA<sub>x</sub>MA<sub>1−x</sub>PbBr<sub>y</sub>I<sub>3−y</sub> (MA<sup>+</sup> = methylammonium, CH<sub>3</sub>NH<sub>3</sub><sup>+</sup>; FA<sup>+</sup> = formamidinium, HC(NH<sub>2</sub>)<sub>2</sub><sup>+</sup>) have been reported with efficiencies as high as 22%.<ref>S.D. Stranks, G. E. Eperon, G. Grancini, C. Menelaou, M. J. P. Alcocer, T. Leijtens, L. M. Herz, A. Petrozza, and H. J. Snaith, Electron-Hole Diffusion Lengths Exceeding 1 Micrometer in an Organometal Trihalide Perovskite Absorber, Science 342, 341-344 (2013). DOI: 10.1126/science.1243982</ref><ref>G. Xing, N. Mathews, S. Sun, S. S. Lim, Y. M. Lam, M. Grätzel, S. Mhaisalkar, and T. C. Sum, Long-Range Balanced Electron- and Hole-Transport Lengths in Organic-Inorganic CH3NH3PbI3, Science 342, 344-347 (2013). DOI: 10.1126/science.1243167 </ref><ref>J.-P. Correa-Baena, A. Abate, M. Saliba, W. Tress, T. J. Jacobsson, M. Grätzel, and A. Hagfeldt, The rapid evolution of highly efficient perovskite solar cells, Energy Environ. Sci., 10, 710-727 (2017). DOI: 10.1039/C6EE03397K </ref>
==1.2 The shapes of molecules (VSEPR theory) and orbital hybridization ==
[[Image:Water molecule dimensions.svg|thumb|200px|Geometry of the [[w:water (molecule)|water molecule]]]]
The [[w:VSEPR_theory|Valence Shell Electron Pair Repulsion (VSEPR) theory]] is a simple and useful way to predict and rationalize the shapes of molecules. The theory is based on the idea of minimizing the electrostatic repulsion between electron pairs, as first proposed by Sidgwick and Powell in 1940,<ref>N. V. Sidgwick and H. M. Powell, Proc. Roy. Soc. A176, 153 (1940),</ref> then generalized by Gillespie and Nyholm in 1957,<ref>R. J. Gillespie and R. S. Nyholm, Quart. Rev. Chem. Soc., 11, 339 (1957).</ref> and then broadly applied over the intervening 50+ years.<ref>R. J. Gillespie, "Fifty years of the VSEPR model," Coord. Chem. Rev. 252, 1315-1327 (2008). DOI: 10.1016/j.ccr.2007.07.007</ref>
To use the VSEPR model, one begins with the Lewis dot picture to determine the number of lone pairs and bonding domains around a central atom. Because VSEPR considers all bonding domains equally (i.e., a single bond, a double bond, and a half bond all count as one electron domain), one can use either an octet or hypervalent structure, provided that the number of lone pairs (which should be the same in both) is calculated correctly. For example, in either the hypervalent or octet structure of the I<sub>3</sub><sup>-</sup> ion above, there are three lone pairs on the central I atom and two bonding domains. We then follow these steps to obtain the '''electronic geometry''':
<br />
<br />
*Determine the number of lone pairs on the central atom in the molecule, and add the number of bonded atoms (a.k.a. bonding domains)
*This number (the ''steric number'') defines the electronic shape of the molecule by minimizing repulsion. For example a steric number of three gives a trigonal planar electronic shape.
*The angles between electron domains are determined primarily by the electronic geometry (e.g., 109.5° for a steric number of 4, which implies that the electronic shape is a tetrahedron)
*These angles are adjusted by the hierarchy of repulsions: (lone pair - lone pair) > (lone pair - bond) > (bond - bond)
<br />
The '''molecular geometry''' is deduced from the electronic geometry by considering the lone pairs to be present but invisible. The most commonly used methods to determine molecular structure - [[w:X-ray_diffraction|X-ray diffraction]], [[w:Neutron_diffraction|neutron diffraction]], and [[w:Electron_diffraction|electron diffraction]] - have a hard time seeing lone pairs, but they can accurately determine the lengths of bonds between atoms and the bond angles.
The table below gives examples of electronic and molecular shapes for steric numbers between 2 and 9. We are most often concerned with molecules that have steric numbers between 2 and 6.
{| class="wikitable sortable"
|-
! Bonding electron pairs
! Lone pairs
! Electron domains (Steric #)
! Shape
! Ideal bond angle (example's bond angle)
! Example
! Image
|-
| <div style="text-align: center;">2</div>
| <div style="text-align: center;">0</div>
| <div style="text-align: center;">2</div>
| <div style="text-align: center;">[[w:linear molecular geometry|linear]]</div>
| <div style="text-align: center;">180°</div>
| <div style="text-align: center;">[[w:carbon dioxide|CO<sub>2</sub>]]</div>
| <div style="text-align: center;">[[Image:Linear-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">3</div>
| <div style="text-align: center;">0</div>
| <div style="text-align: center;">3</div>
| <div style="text-align: center;">[[w:trigonal planar molecular geometry|trigonal planar]]</div>
| <div style="text-align: center;">120°</div>
| <div style="text-align: center;">[[w:Boron trifluoride|BF<sub>3</sub>]]</div>
| <div style="text-align: center;">[[Image:Trigonal-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">2</div>
| <div style="text-align: center;">1</div>
| <div style="text-align: center;">3</div>
| <div style="text-align: center;">[[w:bent molecular geometry|bent]]</div>
| <div style="text-align: center;">120° (119°) </div>
| <div style="text-align: center;">[[w:Sulfur dioxide|SO<sub>2</sub>]]</div>
| <div style="text-align: center;">[[Image:Bent-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">4</div>
| <div style="text-align: center;">0</div>
| <div style="text-align: center;">4</div>
| <div style="text-align: center;">[[w:tetrahedral molecular geometry|tetrahedral]]</div>
| <div style="text-align: center;">109.5°</div>
| <div style="text-align: center;">[[w:methane|CH<sub>4</sub>]]</div>
| <div style="text-align: center;">[[Image:AX4E0-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">3</div>
| <div style="text-align: center;">1</div>
| <div style="text-align: center;">4</div>
| <div style="text-align: center;">[[w:trigonal pyramidal molecular geometry|trigonal pyramidal]]</div>
| <div style="text-align: center;">109.5° (107°) </div>
| <div style="text-align: center;">[[w:ammonia|NH<sub>3</sub>]]</div>
| <div style="text-align: center;">[[Image:Pyramidal-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">2</div>
| <div style="text-align: center;">2</div>
| <div style="text-align: center;">4</div>
| <div style="text-align: center;">[[w:bent molecular geometry|bent]]</div>
| <div style="text-align: center;">109.5° (104.5°) </div>
| <div style="text-align: center;">[[w:H2O|H<sub>2</sub>O]]</div>
| <div style="text-align: center;">[[Image:Bent-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">5</div>
| <div style="text-align: center;">0</div>
| <div style="text-align: center;">5</div>
| <div style="text-align: center;">[[w:trigonal bipyramidal molecular geometry|trigonal bipyramidal]]</div>
| <div style="text-align: center;">90°, 120°, 180°</div>
| <div style="text-align: center;">[[w:phosphorus pentachloride|PCl<sub>5</sub>]]</div>
| <div style="text-align: center;">[[Image:Trigonal-bipyramidal-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">4</div>
| <div style="text-align: center;">1</div>
| <div style="text-align: center;">5</div>
| <div style="text-align: center;">[[w:seesaw molecular geometry|seesaw]]</div>
| <div style="text-align: center;">180°, 120°, 90° (173.1°, 101.6°) </div>
| <div style="text-align: center;">[[w:sulfur tetrafluoride|SF<sub>4</sub>]]</div>
| <div style="text-align: center;">[[Image:Seesaw-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">3</div>
| <div style="text-align: center;">2</div>
| <div style="text-align: center;">5</div>
| <div style="text-align: center;">[[w:T-shaped molecular geometry|T-shaped]]</div>
| <div style="text-align: center;">90°, 180° (87.5°, < 180°) </div>
| <div style="text-align: center;">[[w:chlorine trifluoride|ClF<sub>3</sub>]]</div>
| <div style="text-align: center;">[[Image:T-shaped-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">2</div>
| <div style="text-align: center;">3</div>
| <div style="text-align: center;">5</div>
| <div style="text-align: center;">[[w:linear molecular geometry|linear]]</div>
| <div style="text-align: center;">180°</div>
| <div style="text-align: center;">[[w:xenon difluoride|XeF<sub>2</sub>]]</div>
| <div style="text-align: center;">[[Image:Linear-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">6</div>
| <div style="text-align: center;">0</div>
| <div style="text-align: center;">6</div>
| <div style="text-align: center;">[[w:octahedral molecular geometry|octahedral]]</div>
| <div style="text-align: center;">90°, 180°</div>
| <div style="text-align: center;">[[w:sulfur hexafluoride|SF<sub>6</sub>]]</div>
| <div style="text-align: center;">[[Image:AX6E0-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">5</div>
| <div style="text-align: center;">1</div>
| <div style="text-align: center;">6</div>
| <div style="text-align: center;">[[w:square pyramidal molecular geometry|square pyramidal]]</div>
| <div style="text-align: center;">90° (84.8°), 180° </div>
| <div style="text-align: center;">[[w:bromine pentafluoride|BrF<sub>5</sub>]]</div>
| <div style="text-align: center;">[[Image:Square-pyramidal-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">4</div>
| <div style="text-align: center;">2</div>
| <div style="text-align: center;">6</div>
| <div style="text-align: center;">[[w:square planar molecular geometry|square planar]]</div>
| <div style="text-align: center;">90°, 180°</div>
| <div style="text-align: center;">[[w:xenon tetrafluoride|XeF<sub>4</sub>]]</div>
| <div style="text-align: center;">[[Image:Square-planar-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">7</div>
| <div style="text-align: center;">0</div>
| <div style="text-align: center;">7</div>
| <div style="text-align: center;">[[w:pentagonal bipyramidal molecular geometry|pentagonal bipyramidal]]</div>
| <div style="text-align: center;">90°, 72°, 180°</div>
| <div style="text-align: center;">[[w:iodine heptafluoride|IF<sub>7</sub>]]</div>
| <div style="text-align: center;">[[Image:Pentagonal-bipyramidal-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">6</div>
| <div style="text-align: center;">1</div>
| <div style="text-align: center;">7</div>
| <div style="text-align: center;">[[w:pentagonal pyramidal molecular geometry|pentagonal pyramidal]]</div>
| <div style="text-align: center;">72°, 90°, 144°</div>
| <div style="text-align: center;">XeOF<sub>5</sub><sup>−</sup></div>
| <div style="text-align: center;">[[Image:Pentagonal-pyramidal-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">5</div>
| <div style="text-align: center;">2</div>
| <div style="text-align: center;">7</div>
| <div style="text-align: center;">[[w:pentagonal planar molecular geometry|planar pentagonal]]</div>
| <div style="text-align: center;">72°, 144°</div>
| <div style="text-align: center;">[[w:Tetramethylammonium pentafluoroxenate|XeF<sub>5</sub><sup>−</sup>]]</div>
| <div style="text-align: center;">[[Image:Pentagonal-planar-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">8</div>
| <div style="text-align: center;">0</div>
| <div style="text-align: center;">8</div>
| <div style="text-align: center;">[[w:square antiprismatic molecular geometry|square antiprismatic]]</div>
| <div style="text-align: center;"> </div>
| <div style="text-align: center;">[[w:Nitrosonium octafluoroxenate(VI)|XeF<sub>8</sub><sup>2−</sup>]]</div>
| <div style="text-align: center;">[[Image:Square-antiprismatic-3D-balls.png|50px]]</div>
|-
| <div style="text-align: center;">9</div>
| <div style="text-align: center;">0</div>
| <div style="text-align: center;">9</div>
| <div style="text-align: center;">[[w:tricapped trigonal prismatic molecular geometry|tricapped trigonal prismatic]]</div>
| <div style="text-align: center;"> </div>
| <div style="text-align: center;">[[w:Potassium_nonahydridorhenate|ReH<sub>9</sub><sup>2−</sup>]]</div>
| <div style="text-align: center;">[[Image:AX9E0-3D-balls.png|50px]]</div>
|}
<br />
From the Table, we see that some of the molecules shown as examples have bond angles that depart from the ideal electronic geometry. For example, the H-N-H bond angle in ammonia is 107°, and the H-O-H angle in water is 104.5°. We can rationalize this in terms of the last rule above. The lone pair in ammonia repels the electrons in the N-H bonds more than the bonds repel each other. This lone pair repulsion exerts even more steric influence in the case of water, where there are two lone pairs. Similarly, the axial F-S-F angle in the "seesaw" molecule SF<sub>4</sub> is a few degrees less than 180° because of repulsion by the lone pair in the molecule.
'''Geometrical isomers'''<br />
For some molecules in the Table, we note that there is more than one possible shape that would satisfy the VSEPR rules. For example, the XeF<sub>2</sub> molecule has a steric number of five and a trigonal bipyramidal geometry. There are three possible stereoisomers: one in which the F atoms occupy axial sites, resulting in linear molecule, one in which the F atoms occupy one equatorial and one axial site (resulting in a 90° bond angle), and one in which the F atoms are both on equatorial sites, with a F-Xe-F bond angle of 120°.
[[File:XeF2 geometry.jpg|130px|left]]
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
The observed geometry of XeF<sub>2</sub> is linear, which can be rationalized by considering the orbitals that are used to make bonds (or lone pairs) in the axial and equatorial positions. There are four available orbitals, s, p<sub>x</sub>, p<sub>y</sub>, and p<sub>z</sub>. If we choose the z-axis as the axial direction, we can see that the p<sub>x</sub> and p<sub>y</sub> orbitals lie in the equatorial plane. We assume that the spherical s orbital is shared equally by the five electron domains in the molecule, the two axial bonds share the p<sub>z</sub> orbital, and the three equatorial bonds share the p<sub>x</sub> and p<sub>y</sub> orbitals. We can then calculate the bond orders to axial and equatorial F atoms as follows:
<br />
axial: 1/5 s + 1/2 p<sub>z</sub> = 0.7 bond (formal charge = -0.3)<br />
equatorial: 1/5 s + 1/3 p<sub>x</sub> + 1/3 p<sub>y</sub> = 0.867 bond (formal charge = -0.133)
<br />
Because fluorine is more electronegative than a lone pair, it prefers the axial site where it will have more negative formal charge. In general, by this reasoning, lone pairs and electropositive ligands such as CH<sub>3</sub> will always prefer the equatorial sites in the trigonal bipyramidal geometry. Electronegative ligands such as F will always go to the axial sites.
In the case of the BrF<sub>4</sub><sup>-</sup> anion, which is isoelectronic with XeF<sub>4</sub> in the Table, the electronic geometry is octahedral and there are two possible isomers in which the two lone pairs are ''cis'' or ''trans'' to each other. In this case, lone pair - lone pair repulsion dominates and we obtain the ''trans'' arrangement of lone pairs, giving a square planar molecular geometry.
<br />
[[File:BrF4-VSEPR.jpg|350px|left]]
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
'''Orbital hybridization'''
<br />
The observation of molecules in the various electronic shapes shown above is, at first blush, in conflict with our picture of [[w:Atomic_orbitals|atomic orbitals]]. For an atom such as oxygen, we know that the 2s orbital is spherical, and that the 2p<sub>x</sub>, 2p<sub>y</sub>, and 2p<sub>z</sub> orbitals are dumbell-shaped and point along the Cartesian axes. The water molecule contains two hydrogen atoms bound to oxygen not at a 90° angle, but at an angle of 104.5°. Given the relative orientations of the atomic orbitals, how do we arrive at angles between electron domains of 104.5°, 120°, and so on? To understand this we will need to learn a little bit about the quantum mechanics of electrons in atoms and molecules.<br>
<br>
The atomic orbitals ψ represent solutions to the [[w:Schrödinger equation|'''Schrödinger wave equation''']],
:<math> E \psi = \hat{H}\psi</math>
Here E is the energy of an electron in the orbital, and <math> \hat{H}</math> is the Hamiltonian operator.
By analogy with classical mechanics, the Hamiltonian is commonly expressed as the sum of [[w:Hermitian operators|operators]] corresponding to the [[w:kinetic energy|kinetic]] and [[w:potential energy|potential]] energies of a system in the form
:<math> \hat{H} = \hat{T} + \hat{V}, </math>
where <math> \hat{V} = V(\mathbf{r},t) </math> is the potential energy, and
:<math>\hat{T} = \frac{\mathbf{\hat{p}}\cdot\mathbf{\hat{p}}}{2m} = \frac{\hat{p}^2}{2m} = -\frac{\hbar^2}{2m}\nabla^2,</math>
is the kinetic energy operator in which ''m'' is the mass of the particle and the momentum operator is:
:<math> \hat{p} = -i\hbar\nabla ,</math> where <math>\nabla = {\partial \over \partial x} + {\partial \over \partial y} + {\partial \over \partial z}</math>
Here <math>\hbar</math> is h/2π, where h is Planck's constant, and the Laplacian operator ∇<sup>2</sup> is:
:<math>\nabla^2 = \frac{\partial^2}{{\partial x}^2} + \frac{\partial^2}{{\partial y}^2} + \frac{\partial^2}{{\partial z}^2}</math>
Although this is not the technical definition of the [[w:Hamiltonian mechanics|Hamiltonian in classical mechanics]], it is the form it most commonly takes in quantum mechanics. Combining these together yields the familiar form used in the Schrödinger equation:
:<math>\begin{align}\hat{H} & = \hat{T} + \hat{V} \ = \frac{\mathbf{\hat{p}}\cdot\mathbf{\hat{p}}}{2m}+ V(\mathbf{r},t) \ = -\frac{\hbar^2}{2m}\nabla^2+ V(\mathbf{r},t)\end{align}</math>
For hydrogen-like (one-electron) atoms, the Schrödinger equation can be written as:<br />
:<math> E \psi = -\frac{\hbar^2}{2\mu}\nabla^2\psi - \frac{Ze^2}{4\pi\epsilon_0 r}\psi </math>
where '''Z''' is the nuclear charge, ''e'' is the electron charge, and '''r''' is the position of the electron. The radial potential term on the right side of the equation is due to the [[w:Coulomb's law|Coulomb interaction]], i.e., the electrostatic attraction between the nucleus and the electron, in which ''ε''<sub>0</sub> is the [[w:electric constant|dielectric constant]] (permittivity of free space) and
:<math> \mu = \frac{m_em_n}{m_e+m_n} </math>
is the 2-body [[w:reduced mass|reduced mass]] of the [[w:Nucleus (atomic structure)|nucleus]] of mass ''m''<sub>n</sub> and the electron of mass ''m''<sub>e</sub>. To a good approximation, µ ≈ ''m''<sub>e</sub>.
[[File:Erwin_Schrodinger2.jpg|right|thumb|150px|Erwin Schrödinger as a young scientist]]
This is the equation that [[w:Erwin_Schrödinger|Erwin Schrödinger]] famously derived in 1926 to solve for the energies and shapes of the s, p, d, and f [[w:Atomic_orbital|atomic orbitals]] in hydrogen-like atoms. It was a huge conceptual leap for both physics and chemistry because it not only explained the quantized energy levels of the hydrogen atom, but also provided the theoretical basis for the octet rule and the arrangement of elements in the periodic table.
The Schrödinger equation can be used to describe chemical systems that are more complicated than the hydrogen atom (e.g., multi-electron atoms, molecules, infinite crystals, and the dynamics of those systems) if we substitute the appropriate potential energy function V(r,t) into the Hamiltonian. The math becomes more complicated and the equation must be solved numerically in those cases, so for our purposes we will stick with the simplest case of time-invariant, one-electron, hydrogen-like atoms.
<br><br>
[[File:Neon orbitals rotated.png|right|thumb|170px|The shapes of the first five [[w:Atomic_orbitals|atomic orbitals]]: 1s, 2s, 2p<sub>''x''</sub>, 2p<sub>''y''</sub>, and 2p<sub>''z''</sub>. The colors denote the sign of the wave function.]]
Without going into too much detail about the Schrödinger equation, we can point out some of its most important properties:<br>
:<math> E \psi = -\frac{\hbar^2}{2\mu}\nabla^2\psi - \frac{Ze^2}{4\pi\epsilon_0 r}\psi </math>
*The equation derives from the fact that the total energy (E) is the sum of the kinetic energy (KE) and the potential energy (PE). These three quantities are represented mathematically as [[w:Operator_(physics)|'''operators''']] in the equation.
*On the left side of the equation, the total energy operator (E) is a scalar that is multiplied by the [[w:Wave_function|wavefunction]] ψ. ψ is a function of the spatial coordinates (x,y,z) and is related to the probability that the electron is at that point in space.
*The first term on the right side of the equation represents the kinetic energy (KE). The kinetic energy operator is proportional to ∇<sup>2</sup> (the [[w:Laplacian|Laplacian operator]]) which takes the second derivative (with respect to three spatial coordinates) of ψ. Thus, the Schrödinger equation is a '''differential equation'''.
*The second term on the right side of the equation represents the Coulomb potential (PE), i.e. the attractive energy between the positively charged nucleus and the negatively charged electron.
*The solutions to the Schrödinger equation are a set of '''energies''' E (which are scalar quantities) and [[w:Wave_function|'''wavefunctions''']] (a.k.a. '''[[w:Atomic_orbitals|atomic orbitals]]''') ψ, which are functions of the spatial coordinates. You will sometimes see the energies referred to as [[w:Eigenvalue|''eigenvalues'']] and the orbitals as [[w:eigenfunction|''eigenfunctions'']], because mathematically the Schrödinger equation is an eigenfunction-eigenvalue equation. Although ψ is a function of the coordinates, E is not. So an electron in a 2p<sub>z</sub> orbital has the same total energy E (= PE + KE) no matter where it is in space.
*These E values and their associated [[w:Wave_function|wavefunctions]] ψ are catalogued according to their '''[[w:Quantum_number|quantum numbers]]''' ''n,'' ''l,'' and ''m<sub>l</sub>.'' That is, there are many solutions to the differential equation, and each solution (ψ(xyz) and E) has a unique set of quantum numbers. Some sets of orbitals are '''degenerate''', meaning that they have the same energy (e.g., 2p<sub>x</sub>, 2p<sub>y</sub>, and 2p<sub>z</sub>).
*The solutions ψ(xyz) to the Schrödinger equation (e.g., the 1s, 2s, 2p<sub>x</sub>, 2p<sub>y</sub>, and 2p<sub>z</sub> orbitals) represent '''probability amplitudes''' for finding the electron at a particular point (x,y,z) in space. A probability amplitude can have either '''+ or - sign'''. We typically represent the different signs by shading or by + and - signs on the two lobes of a 2p orbital.
*The square of the probability amplitude, ψ<sup>2</sup>, is always a positive number and represents the '''probability''' of finding the electron at a point x,y,z in space. Because the total probability of finding the electron somewhere is 1, the wavefunction must be '''normalized''' so that the integral of ψ<sup>2</sup> over the spatial coordinates (from -∞ to +∞) is 1.
*The solutions to the Schrödinger equation are '''orthogonal''', meaning that the product of any two (integrated over all space) is zero. For example the product of the 2s and 2p<sub>x</sub> orbitals, integrated over the spatial coordinates from -∞ to +∞, is zero.
<br>
Orbital hybridization involves making ''linear combinations'' of the [[w:Atomic_orbitals|atomic orbitals]] that are solutions to the Schrödinger equation. Mathematically, this is justified by recognizing that the Schrödinger equation is a ''linear'' differential equation. As such, any sum of solutions to the Schrödinger equation is also a valid solution. However, we still impose the constraint that our hybrid orbitals must be '''orthogonal''' and '''normalized'''.
<br />
'''Rules for orbital hybridization:'''
* Add and subtract [[w:Atomic_orbitals|atomic orbitals]] to get hybrid orbitals.
* We get the same number of orbitals out as we put in.
* The energy of a hybrid orbital is the weighted average of the [[w:Atomic_orbitals|atomic orbitals]] that make it up.
* The coefficients are determined by the constraints that the hybrid orbitals must be orthogonal and normalized.
For '''sp hybridization''', as in the BeF<sub>2</sub> or CO<sub>2</sub> molecule, we make two linear combinations of the 2s and 2p<sub>z</sub> orbitals (assigning z as the axis of the Be-F bond):
:<math>\psi_1 = \frac{1}{\sqrt 2}(2s) + \frac{1}{\sqrt 2}(2p_z)</math><br>
:<math>\psi_2 = \frac{1}{\sqrt 2}(2s) - \frac{1}{\sqrt 2}(2p_z)</math><br>
Here we have simply added and subtracted the 2s and 2pz orbitals; we leave it as an exercise for the interested student to show that both orbitals are normalized (i.e., {{Unicode|∫}}ψ<sub>1</sub><sup>2</sup>dτ = {{Unicode|∫}}ψ<sub>2</sub><sup>2</sup>dτ = 1) and orthogonal (i.e., {{Unicode|∫}}ψ<sub>1</sub>ψ<sub>2</sub>dτ = 0).
What this means physically is explained in the figure below. By combining the 2s and 2p<sub>z</sub> orbitals we have created two new orbitals with large lobes (high electron probability) pointing along the z-axis. These two orbitals are degenerate and have an energy that is halfway between the energy of the 2s and 2p<sub>z</sub> orbitals.
[[File:sp hybridization.jpg|thumb|500px|center|Linear combinations of the 2s and 2p<sub>z</sub> [[w:Atomic_orbitals|atomic orbitals]] make two 2sp<sub>z</sub> hybrids. The 2p<sub>x</sub> and 2p<sub>y</sub> orbitals are unchanged.]]
For an isolated Be atom, which has two valence electrons, the lowest energy state would have two electrons spin-paired in the 2s orbital. However, these electrons would not be available for bonding. By '''promoting''' these electrons to the degenerate 2sp<sub>z</sub> hybrid orbitals, they become unpaired and are prepared for bonding to the F atoms in BeF<sub>2</sub>. This will occur if the '''bonding energy''' (in the promoted state) exceeds the promotion energy. The '''overall bonding energy''', i.e., the energy released by combining a Be atom in its ground state with two F atoms, is the difference between the bonding and promotion energies.
We can similarly construct '''sp<sup>2</sup> hybrids''' (e.g., for the BF<sub>3</sub> molecule or the NO<sub>3</sub><sup>-</sup> anion) from one 2s and two 2p [[w:Atomic_orbitals|atomic orbitals]]. Taking the plane of the molecule as the xy plane, we obtain three hybrid orbitals at 120° to each other. The three hybrids are:
[[File:sp2hybrids.jpg|200px|right]]<br />
:<math>\psi_1 = \frac{1}{\sqrt 3}(2s) + \frac{\sqrt 2}{\sqrt 3}(2p_x)</math>
:<math>\psi_2 = \frac{1}{\sqrt 3}(2s) - \frac{1}{\sqrt 6}(2p_x) + \frac{1}{\sqrt 2}(2p_y)</math>
:<math>\psi_3 = \frac{1}{\sqrt 3}(2s) - \frac{1}{\sqrt 6}(2p_x) - \frac{1}{\sqrt 2}(2p_y)</math>
<br />
These orbitals are again degenerate and their energy is the weighted average of the energies of the 2s, 2p<sub>x</sub>, and 2p<sub>y</sub> [[w:Atomic_orbitals|atomic orbitals]].
Finally, to make a sp<sup>3</sup> hybrid, as in CH<sub>4</sub>, H<sub>2</sub>O, etc., we combine all four [[w:Atomic_orbitals|atomic orbitals]] to make four degenerate hybrids:
[[File:Ch4 hybridization.svg|130px|right]]<br />
[[File:CH4-structure.svg|130px|right]]<br />
:<math>\psi_1 = \frac{1}{2}(2s + 2p_x + 2p_y + 2p_z)</math><br>
:<math>\psi_2 = \frac{1}{2}(2s - 2p_x - 2p_y + 2p_z)</math><br>
:<math>\psi_3 = \frac{1}{2}(2s + 2p_x - 2p_y - 2p_z)</math><br>
:<math>\psi_4 = \frac{1}{2}(2s - 2p_x + 2p_y - 2p_z)</math><br>
The lobes of the '''sp<sup>3</sup> hybrid''' orbitals point towards the vertices of a tetrahedron (or alternate corners of a cube), consistent with the tetrahedral bond angle in CH<sub>4</sub> and the nearly tetrahedral angles in NH<sub>3</sub> and H<sub>2</sub>O. Similarly, we can show that we can construct the trigonal bipyramidal electronic shape by making sp and sp<sup>2</sup> hybrids, and the octahedral geometry from three sets of sp hybrids. The picture that emerges from this is that the [[w:Atomic_orbitals|atomic orbitals]] can hybridize as required by the shape that best minimizes electron pair repulsions.
[[File:Hydrogen-sulfide-2D-dimensions.svg|130px|right]]
Interestingly however, the bond angles in PH<sub>3</sub>, H<sub>2</sub>S and H<sub>2</sub>Se are close to 90°, suggesting that P, S, and Se primarily use their p-orbitals in bonding to H in these molecules. This is consistent with the fact that the energy difference between s and p orbitals stays roughly constant going down the periodic table, but the bond energy ''decreases'' as the valence electrons get farther away from the nucleus. In compounds of elements in the 3rd, 4th, and 5th rows of the periodic table, there thus is a ''decreasing tendency to use s-p orbital hybrids in bonding''. For these heavier elements, the bonding energy is not enough to offset the energy needed to promote the s electrons to s-p hybrid orbitals.
==1.3 Bond polarity and bond strength==
[[Image:Water-elpot-transparent-3D-balls.png|thumb|right|250px|Fig. 1.3.1. A [[w:water molecule|water molecule]], a commonly used example of polarity. The two charges are present with a negative charge in the middle (red), and a positive charge at the ends (blue).]]
[[w:Linus Pauling|Linus Pauling]] introduced the concept of [[w:electronegativity|electronegativity]] 1932 in order to explain the extra stability of molecules with polar bonds. <ref name="paulingJACS">{{cite journal |author= Pauling, L.
|authorlink=Linus Pauling
|year= 1932
|journal= [[w:Journal of the American Chemical Society|J. Am. Chem. Soc.]]
|volume= 54
|issue= 9
|pages= 3570–3582
|title= The Nature of the Chemical Bond. IV. The Energy of Single Bonds and the Relative Electronegativity of Atoms
|doi= 10.1021/ja01348a011}}</ref> The electronegativity of an atom, represented by the Greek letter ''χ'', can be defined as the tendency of an atom to draw electrons to itself in a chemical bond. On the Pauling scale, the electronegativity difference between two atoms A and B was defined in terms of the [[w:Bond dissociation energy|dissociation energies]] ''E''<sub>d</sub> of the A-A, B-B, and A-B bonds:<br><br>
::<small><math>\chi_{\rm A} - \chi_{\rm B} = \sqrt{E_{\rm d}({\rm AB}) - [E_{\rm d}({\rm AA}) + E_{\rm d}({\rm BB})]/2}</math></small><br><br>
where the energies are expressed in electron volts.
This definition, while directly relevant to the strength of chemical bonds, requires thermochemical input data from many compounds, some of which were not available at the time. Mulliken<ref>{{cite journal
|author = Mulliken, R. S.
|year =1934
|journal = [[w:Journal of Chemical Physics|J. Chem. Phys.]]
|volume = 2
|title = A New Electroaffinity Scale; Together with Data on Valence States and on Valence Ionization Potentials and Electron Affinities
|doi = 10.1063/1.1749394
|pages = 782–793
|issue = 11|bibcode = 1934JChPh...2..782M }}</ref><ref>{{cite journal
|author = Mulliken, R. S.
|year =1935
|title = Electronic Structures of Molecules XI. Electroaffinity, Molecular Orbitals and Dipole Moments
|journal = [[w:Journal of Chemical Physics|J. Chem. Phys.]]
|volume = 3
|doi = 10.1063/1.1749731
|pages = 573–585
|issue = 9|bibcode = 1935JChPh...3..573M }}</ref> and later Pearson<ref>{{cite journal|author = Pearson, R. G.
|title = Absolute electronegativity and absolute hardness of Lewis acids and bases
|year = 1985
|journal = [[w:Journal of the American Chemical Society|J. Am. Chem. Soc.]]
|volume = 107
|pages = 6801
|doi = 10.1021/ja00310a009|issue = 24}}</ref> developed a scale of electronegativities based on the average of the electron affinity and ionization energy of the free A and B atoms, which they correlated with thermochemical data and the Pauling scale.
On the Pauling scale, the least electronegative elements are the alkali metals (χ = 0.7-1.0) and the most electronegative are oxygen (3.5) and fluorine (4.0) at the upper right of the periodic table. Carbon and hydrogen have intermediate electronegativities (2.6 and 2.2 on the Pauling scale, respectively). The general trend (see table below) is that electronegativities increase going up and to the right in the periodic table. There are some interesting exceptions to this behavior, most notably two islands of high electronegativity at the bottom of the transition series, peaking at tungsten (χ = 2.4) and gold (χ = 2.5). The first of these can be explained by the very high metal-metal bond energy of elements such as Mo and W, which can use all six of their valence electrons in bonding, as we will discuss in Chapter 6. The second however occurs with more weakly bonded noble metals such as Pt and Au, and is responsible for their low position in the [[w:Reactivity_series|activity series]],<ref>B. Hammer and J. K. Norskov, "Why gold is the noblest of all the metals," ''Nature'' '''376,''' 238 - 240 (2002. doi:10.1038/376238a0</ref> as well as their extraordinary properties as catalysts.<br><br>
[[image:periodic table Pauling electronegatvity.jpg|500px|left]]
[[w:Electronegativities_of_the_elements_(data_page)#Electronegativity_.28Pauling_scale.29|Table of Pauling electronegativities]]
The polarity of bonds is determined by electronegativity differences. As a guideline we define bonds as:
* '''ionic''' if Δχ > 2.0
* '''polar''' if 2.0 > Δχ > 0.5
* '''nonpolar''' if 0.5 > Δχ
The polarity of bonds helps us understand [[w:Intermolecular_force|non-covalent forces]] between molecules, such as [[w:Hydrogen_bonding|hydrogen bonding]] and dipole-dipole interactions. It also helps us interpret the reactivity of molecules. For example, the Si-H bond (χ<sub>Si</sub> = 1.8, χ<sub>H</sub> = 2.1) is more hydride-like than the C-H bond (χ<sub>C</sub> = 2.5, χ<sub>H</sub> = 2.1). Therefore silanes react with acids to make H<sub>2</sub>, whereas phosphines (χ<sub>P</sub> = 2.1) and hydrocarbons do not. Similarly, electrophilic substitution reactions occur more readily on Si-H and P-H compounds than they do on C-H compounds.
There is also a correlation between the strength of a chemical bond and the bond length, longer bonds being weaker because of weaker orbital overlap. Pauling introduced an empirical formula relating bond length to bond strength. For a given pair of atoms (for example, two carbon atoms):<br><br>
:<big>'''D(n) = D(1) - 0.6 log<sub><small>10</small></sub>(n)'''</big><br><br>
where D(n) represents the bond length in Å and n is the bond order. D(1) in this case would be the length of a C-C single bond, which we can obtain from the average bond length in alkanes (1.54 Å). Using this formula we can predict that the bond lengths in ethylene (C=C double bond) and acetylene (C≡C triple bond) should be 1.36 and 1.25 Å, respectively, which are close to the experimental values of 1.33 and 1.20 Å. In a related form the Pauling formula can be used to calculate bond lengths when the single bond length D(1) is not available:<br><br>
:<big>'''D(n) = D(m) - 0.6 log<sub><small>10</small></sub>(n/m)'''</big><br>
Here n and m represent two different bond orders between the same kinds of atoms. This tells, for example, that the difference in length between a triple and double bond, D(2)-D(3), should be - 0.6 log<sub><small>10</small></sub>(2/3) = 0.11 Å.
<br />
<br />
[[File:Bond length of fluorine graph.JPG|right|350px|thumb|Trends in covalent radii for p-block elements. The [[w:Covalent_radius_of_fluorine|covalent radius of F]] has been difficult to determine because of electron pair repulsion effects. Early reports (Shomaker and Stevenson, Pauling) overestimated the size of the F atom.<ref>{{cite journal|last1=Schomaker|first1=Verner|last2=Stevenson|first2=D. P.|journal=Journal of the American Chemical Society|volume=63|pages=37–40|year=1941|doi=10.1021/ja01846a007|title=Some Revisions of the Covalent Radii and the Additivity Rule for the Lengths of Partially Ionic Single Covalent Bonds *}}</ref><ref>Pauling, L. The Nature of the Chemical Bond, 3rd ed.; Cornell University Press: Ithaca, NY, 1960; p. 224.</ref><ref>{{cite journal|last1=Robinson|first1=Edward A.|last2=Johnson|first2=Samuel A.|last3=Tang|first3=Ting-Hua|last4=Gillespie|first4=Ronald J.|title=Reinterpretation of the Lengths of Bonds to Fluorine in Terms of an Almost Ionic Model|journal=Inorganic Chemistry|volume=36|issue=14|pages=3022–3030|year=1997|pmid=11669953|doi=10.1021/ic961315b}}</ref> Accurate quantum chemical calculations place the F single-bond covalent radius at about 0.64 Å.<ref>{{cite journal|doi=10.1002/chem.200901472|title=Molecular Double-Bond Covalent Radii for Elements Li–E112|year=2009|last1=Pyykkö|first1=Pekka|last2=Atsumi|first2=Michiko|journal=Chemistry: A European Journal|volume=15|issue=46|pages=12770–12779}}</ref>]]Some bond lengths and bond energies are anomalous. For example, the F-F bond length in F<sub>2</sub> is 1.43 Å, which is 0.15 Å ''longer'' than twice the covalent radius of the F atom (0.64 Å). The F-F bond is also quite weak (bond dissociation energy = 155 kJ/mol) relative to the Cl-Cl bond (242 kJ/mol). By putting the extra bond length into the Pauling formula, we calculate that the bond order in the F<sub>2</sub> molecule is only 0.6, i.e., substantially weaker than a F-F single bond. The physical reason for this is that the F-F bond is "stretched" by repulsion of the lone pairs on the F atoms. This crowding is caused by the fact that the [He] 1s<sup>2</sup> core orbital, as well as the valence orbitals of the fluorine atoms, are contracted by the high nuclear charge. The Cl atom in Cl<sub>2</sub> has a larger [Ne] (1s<sup>2</sup>2s<sup>2</sup>2p<sup>6</sup>) core, in contrast, so Cl-Cl has a "normal" single bond length (1.98 Å) that is twice the covalent radius of the Cl atom (0.99 Å). A similar lone pair repulsion effect explains the anomalously long and weak N-N and O-O single bonds in hydrazine (H<sub>2</sub>N-NH<sub>2</sub>) and hydrogen peroxide (HO-OH), which are both highly reactive molecules.
<br />
The important roles of electronegativity differences and lone pair repulsion are evident when comparing trends in bond strengths. The table below shows the average single-bond enthalpies of p-block elements with H and F. H makes stronger bonds with 2nd row elements (C, N, O, F) than with third row elements (Si, P, S, Cl) because the 2p valence electrons are closer to the nucleus and thus make stronger bonds than electrons in 3p orbitals. The bonds to H also follow the expected trend of increasing bond strength with increasing electronegativity difference. Bonds between second row elements (C, N, O, F) and F are however anomalously weak because of lone pair repulsion. For this reason, the Si-F bond is substantially stronger than the C-F bond, whereas the C-H bond is much stronger than the Si-H bond. The strong Si-F bond is the reason that HF etches glass (to produce the SiF<sub>6</sub><sup>2-</sup> anion), and the strong C-H bond is an important factor in the stability of hydrocarbons and other organic molecules.
'''Average E-H and E-F bond enthalpies (kJ/mol)'''
{| class="wikitable"
|C-H 413 ||N-H 391 ||O-H 483 ||H-F 567
|-
|Si-H 323||P-H 322||S-H 339||H-Cl 431
|-
|
|
|
|
|-
|C-F 485||N-F 272||O-F 190||F-F 155
|-
|Si-F 565||P-F 490 ||S-F 327||Cl-F 253
|}
[[File:A water droplet DWR-coated surface2 edit1.jpg|thumb|150px|right|alt=A shiny spherical drop of water on blue cloth|Fabric treated with fluorosurfactant]]The anomalously weak bond in F<sub>2</sub> is responsible for the high electronegativity of fluorine, as well as the legendary reactivity of elemental fluorine gas, which reacts explosively with hydrogen and powdered metals. Because of the instability of elemental fluorine and the polar nature of its bonds with more electropositive elements, fluorine compounds tend to be very stable. For example, the noble gases Xe and Kr react with fluorine to make covalent compounds, whereas other halogens do not react. Fluorocarbon compounds contain strong C-F bonds and have high thermal and chemical stability. Perfluorocarbons such as [[w:Teflon|Teflon]] (poly(tetrafluoroethylene), -(CF<sub>2</sub>CF<sub>2</sub>)n-, PTFE) are also highly hydrophobic. The extraordinary hydrophobicity of perfluorocarbons arises from the fact that -CF<sub>2</sub>- and -CF<sub>3</sub> groups are "fatter" than -CH<sub>2</sub>- and -CH<sub>3</sub> groups; dissolving them in water is therefore more disruptive to the hydrogen bonding network than is dissolving a hydrocarbon. <ref>V. H. Dalvi and P. J. Rossky, Molecular origins of fluorocarbon hydrophobicity, Proc. Natl. Acad. Sci. USA 107,13603–13607 (2010). DOI: 10.1073/pnas.0915169107.</ref>
==1.4 Discussion questions==
'''Group essay project:'''<br>
Join a group of classmates from your inorganic chemistry course. Each group should have 3 or 4 students. Arrange a time to meet for an hour or so. Prior to the meeting, read part I (pp. 1367-1391) as well as the summary at the end of Linus Pauling's [http://courses.chem.psu.edu/chem310/ja01355a027.pdf article] (J. Am. Chem. Soc. 1931, 53, 1367-1400) on the nature of the chemical bond.
This paper was published only a few years after Schrödinger developed the quantum mechanical theory of atomic orbitals and is considered one of the most important papers in the history of modern chemistry. At the meeting, discuss the following questions: (1) What was understood about chemical bonding in molecules before Pauling published this work? (2) What new concepts did the paper introduce that we still use today? (3) Why were these ideas important? and (4) What, if anything, did Pauling get wrong, and why?
Together with your classmates, write a 1-2 page essay addressing these questions. Please include the names of all students in your group on the first page; all of you will receive the same grade on this assignment. Anonymous excerpts from a few of these essays will be shared with the class.
'''In-class discussion questions from this chapter:'''
* What are inequivalent resonance structures? Illustrate with some new examples not covered above.
* Explain no-bond resonance and hypervalency, using some new examples.
* What are the limitations of valence bond theory for molecules that contain an odd number of electrons? Illustrate with one or two examples.
==1.5 Problems==
1. Draw composite octet structures (including formal charges, bond order, and molecular shape) for the following: (a) BrO<sub>3</sub><sup>-</sup>, (b) SF<sub>6</sub>, (c) KrF<sub>2</sub>, (d) HClO<sub>4</sub> (= HOClO<sub>3</sub>), (e) NO<sub>2</sub><sup>-</sup>, and (f) ClO<sub>2</sub>.
2. Draw composite octet structures (including formal charges, bond order, and molecular shape) for the following: (a) Al<sub>2</sub>Cl<sub>6</sub>, (b) SnCl<sub>3</sub><sup>-</sup>, (c) BrF<sub>4</sub><sup>-</sup>,(d) HOClO, (e) SO<sub>3</sub>, and (f) NO<sub>2</sub><sup>+</sup>.
3. Show using resonance why the CO bond distance in formamide (HCONH<sub>2</sub>) is longer than the CO bond distance in acetone.
4. Give the formulas for five stable molecules and/or ions that are isoelectronic with ammonia.
5. Name three well known molecules or ions that are isoelectronic with (a) NO<sub>2</sub><sup>+</sup>, (b) BF<sub>4</sub><sup>-</sup>, (c) CH<sub>4</sub>, and (d) HCN.
6. Name three well known molecules or ions that are isoelectronic with (a) CN<sup>-</sup>, (b) H<sub>2</sub>O, (c) BF<sub>3</sub>, and (d) CO<sub>2</sub>.
7. The C-C bond distance is 1.20 Å in acetylene. Using the Pauling bond length – bond strength formula, D(n) = D(m) - 0.6 log(n/m), estimate the C-C bond distance in ketene (H<sub>2</sub>CCO).
8. In hydroxylamine, H<sub>2</sub>NOH, the N-O bond distance is 1.46 Å. Using the Pauling bond length - bond strength formula, estimate the N-O bond distances in NO<sub>2</sub> and NO<sub>3</sub><sup>-</sup>.
9. Nitrogen can exist in the +5 oxidation state in compounds that contain ions such a NF<sub>4</sub><sup>+</sup> and NO<sub>3</sub><sup>-</sup>. However the neutral binary compound NF<sub>5</sub> is unknown. Can you draw octet structures for each of these compounds? Why would NF<sub>5</sub> be unstable?
10. Consider the compounds NH<sub>3</sub> and PH<sub>3</sub>. The H-N-H bond angle in ammonia is 108<sup>o</sup> (close to the tetrahedral angle, 109.5<sup>o</sup>), but the analogous angle in PH<sub>3</sub> is 93<sup>o</sup>. Why is the angle in PH<sub>3</sub> closer to 90<sup>o</sup> than it is to the tetrahedral angle?
11. Two hypothetical structures for the N<sub>2</sub>F<sub>3</sub><sup>+</sup> ion are [N-NF<sub>3</sub>]<sup>+</sup> and [F-N-NF<sub>2</sub>]<sup>+</sup>. Which one is more stable? Explain. (Note: lines in the formulas can represent either single or multiple bonds)
12. Krypton difluoride, KrF<sub>2</sub>, decomposes at dry ice temperature to Kr and F<sub>2</sub>. However, several salts of the [KrF]<sup>+</sup> ion are relatively stable. Draw valence bond pictures for KrF<sub>2</sub> and [KrF]<sup>+</sup>, showing lone pairs, possible resonance structures, formal charges, bond orders, and bond angles. Why is [KrF]<sup>+</sup> more stable than KrF<sub>2</sub>?
13. Consider the anion SF<sub>3</sub>O<sub>2</sub><sup>-</sup> (with S the central atom). How many isomers are possible? Which is the most stable?
14. The Br-F bond distance in the interhalogen compound BrF is 1.76 Å. Use this information to estimate the average bond lengths in BrF<sub>3</sub> and BrF<sub>5</sub>.
15. The B-H bond distances are about the same in BH<sub>3</sub> and BH<sub>4</sub><sup>-</sup>. however, the B-F bond distance in BF<sub>3</sub> is shorter than that in the BF<sub>4</sub><sup>-</sup> ion. Explain.
16. The N-N bond dissociation energy in hydrazine (H<sub>2</sub>N-NH<sub>2</sub>) is 159 kJ/mol. The dissociation energy of the N-N triple bond in N<sub>2</sub> is 941 kJ/mol, i.e., much greater than three times the N-N single bond dissociation energy in hydrazine. Explain why the N-N bond in hydrazine is so weak, and why this effect is not seen in N<sub>2</sub>.
17. Show that a set of four sp<sup>3</sup> hybrid orbitals satisfies the following criteria: (a) any two orbitals in the sp<sup>3</sup> set are orthogonal, and (b) the orbitals are properly normalized.
18. Quantum mechanically, the momentum (p) of a particle traveling in a specific direction (e.g., the x direction) can be obtained by operating on its wavefunction <math>\psi</math> with the [[w:Momentum_operator|'''momentum operator''']]:
:<math> \hat{p}\psi = p\psi</math>, where <math> \hat{p} = -i\hbar{\partial \over \partial x} </math>
Knowing the correct form of this operator was the key to Schrödinger's formulation of the Hamiltonian operator, <math>\hat{H} = \frac{\hat{p}^2}{2m} + V</math>, which operates on a wavefunction to give the total energy. The momentum operator must also be consistent with the [[w:Matter_wave|'''de Broglie relation''']], p = h/λ, which relates the momentum to the particle wavelength.
By analogy to electromagnetic waves, Schrödinger knew that a wavelike particle (such as an electron) traveling in free space in the x-direction could be described by the wavefunction:
:<math>\psi(x,t)= Ae^{i(kx - \omega t +\varphi)}</math>
where the [[w:Wavenumber|'''wavenumber''']] k is inversely related to the particle's [[w:Matter_wave|'''de Broglie wavelength''']] λ by k = 2π/λ. Here A is a normalization constant, ω is the frequency of the wave, and <math>\varphi</math> represents its phase.
Show using the momentum operator <math>\hat{p}</math> that the value of the momentum p we obtain for a free particle from <math> \hat{p}\psi = p\psi</math> is consistent with the de Broglie relation, p = h/λ. <br>
(Hint: k, ω, and <math>\varphi</math> are independent of x)
19. N<sub>3</sub>S<sub>4</sub><sup>+</sup> is a cyclic cation that contains no N-N bonds. Draw the structure of the seven-membered ring and use the electron counting method to determine the number of single bonds, double bonds, and lone pairs. Draw out the possible resonance structures for this ion showing formal charges and indicate which one is the most stable. Which S-N bonds would you predict to be the shortest? The atomic connectivity in the ring is: -S-S-N-S-N-S-N-. (''Hint'': determine the number of π-bonds in the molecule by electron counting and then find the most stable resonance structures.)
20. F has a higher electronegativity than Cl, and F<sub>2</sub> is a much stronger oxidizing agent than Cl<sub>2</sub>, despite the fact that the electron affinity of fluorine (-328 kJ/mol) is weaker than that of chlorine (-349 kJ/mol). Explain this apparent contradiction.
21. The single bonds in methane (CH<sub>4</sub>), ammonia (NH<sub>3</sub>) and water (H<sub>2</sub>O) are stronger than those in SiH<sub>4</sub>, PH<sub>3</sub>, and H<sub>2</sub>S, respectively. The analogous fluorine containing compounds follow the opposite trend: the single bonds in CF<sub>4</sub>, NF<sub>3</sub>, and OF<sub>2</sub> are weaker than those in SiF<sub>4</sub>, PF<sub>3</sub>, and SF<sub>2</sub>. Can you explain these two opposite trends?
==1.6 References==
{{reflist|colwidth=30em}}
{{BookCat}}
nubck40zy3493tjgav8zh9i5tcikvad
Chinese (Mandarin)/Commodities
0
294163
4656305
4192852
2026-08-05T06:28:14Z
一隻北極熊
3609960
4656305
wikitext
text/x-wiki
{| class="wikitable"
|-
!'''Mandarin - Simplified Han character<br>汉字 - 简化字'''
!'''Hanyu Pinyin<br>汉语拼音'''
!'''English<br>英语'''
|-
|洗发露 || xǐfàlù ||Shampoo
|-
|沐浴露 || mùyùlù || Body Wash
|-
|洗衣粉 || xǐyīfěn || Washing powder
|-
|漂白液 || piǎobáiyè || Bleach
|}
{{stub}}
{{BookCat}}
r4dtpaomnd4ii2atop2pfkjew6sipe7
Introduction to Inorganic Chemistry/Electronic Properties of Materials: Superconductors and Semiconductors
0
295932
4656268
4644887
2026-08-04T16:11:29Z
Tem5psu
1013978
/*   10.4 Semiconductors: band gaps, colors, conductivity and doping */
4656268
wikitext
text/x-wiki
==   <big>'''Chapter 10: Electronic Properties of Materials: Superconductors and Semiconductors'''</big>==
[[File:InternalIntegratedCircuit2.JPG|350px|right|thumb|Modern integrated circuits contain billions of nanoscale transistors and diodes that are essential for logic and memory functions. Both kinds of devices rely on junctions between crystalline silicon regions that contain a few parts per million of boron or phosphorus impurities.]] In Chapter 6 we developed an energy band picture for metals, starting from atomic orbitals and building up the molecular orbitals of the solid metallic crystal. This treatment gave us a useful picture of how electrons behave in metals, moving at very fast speed between scattering events, and migrating in an electric field at a slow drift velocity. It also taught us that a metal is something with a partially filled band, meaning that the Fermi level cuts through one of its bands of orbitals. An insulator or a semiconductor has a similar band picture, except that the bands are either completely full or completely empty. In this case the Fermi level lies in the gap between fully occupied and unoccupied bands. We will see in this chapter that the properties of semiconductors (along with their useful electronic applications) depend on the addition of small amounts of impurities ("dopants") that change the position of the Fermi level, resulting in conduction by electrons or "holes."
While the band picture works well for most crystalline materials, it does not tell us the whole story of conduction in solids. That is because the band model (like MO theory) is based on a ''one-electron'' model. This was an approximation we made at the very beginning of our discussion of MO theory: we used hydrogen-like (one-electron) solutions to the Schrodinger equation to give us the shapes of s, p, d, and f atomic orbitals. In a one-electron atom, these orbitals are degenerate within a given shell, and the energy differences between, e.g., 2s and 2p orbitals arise only when we consider the energy of an electron in the field of other electrons in the atom. Moving from atoms to molecules, we made linear combinations to generate one-electron molecular orbitals (and, in solids, one-electron energy bands). But as in multi-electron atoms, life is not so simple for real molecules and solids that contain many electrons. Electrons repel each other and so their movement in molecules and in solids is '''''correlated'''''. While this effect is weak in a "good" metal such as sodium - where the wavefunctions are highly delocalized - it can be quite important in other materials such as transition metal oxides. Correlated electron effects give rise to '''metal-insulator transitions''' that are driven by small changes in temperature, pressure, or composition, as well as to '''superconductivity''' - the passage of current with zero resistance at low temperatures. In this chapter we will develop some simple models to understand these interesting and important electronic properties of solids.
'''Learning goals for Chapter 10:'''
*Explain the physical basis of the Hubbard and Mott models of metal-insulator transitions.
*Understand why good superconductors derive from bad metals.
*Know the structures and the periodic trends in band gaps and colors of semiconductors.
*Obtain the band gap of an intrinsic semiconductor from the temperature dependence of the conductivity.
*Predict the doping type when impurities or defects are introduced into a semiconductor.
*Correlate the band picture and Fermi level with n- or p-type doping.
*Understand the physical principles of operation of diodes, LEDs, solar cells, and FETs.
*Explain the differences in structures and electronic properties of crystalline and amorphous semiconductors.
==   10.1 Metal-insulator transitions==
[[File:PSM V83 D032 Organ pipes that have been attacked by tin disease.png|left|230px|thumb|Organ pipes destroyed by "tin blight"]]
In Chapter 6 we learned that metals and insulators not only have different electrical properties but also have very different crystal structures. Metals tend to have high coordination numbers (typically 8 or 12) whereas insulators have low coordination numbers that can be rationalized as "octet" bonding arrangements. For example, in crystalline Si or Ge (diamond structure), each atom has four nearest neighbors. There are two electrons per bond, and thus each atom has eight electrons in its valence shell. Sn, the element below Ge, exists in two different forms, one (gray tin) with the diamond structure that is a brittle narrow-gap semiconductor, and the other (white tin) with a body-centered tetragonal structure that is a malleable metal. These two forms are very close in energy, and in fact metallic white tin transforms to the brittle semiconducting gray form at low temperature. Extremely cold weather in 18th century Europe caused many tin organ pipes to break and eventually turn to dust. This transformation has been called tin blight, tin disease, tin pest or tin leprosy. The dust is actually grey tin, which lacks the malleability of its metallic cousin white tin.
Under experimentally accessible temperatures and pressures, Si and Ge are always semiconducting (i.e., insulating), and Pb is always metallic. Why is Sn different? The reason has to do with orbital overlap. Theory tells us in fact that any (and all) insulators should become metallic at high enough pressure, or more to the point, at high enough density. For most insulators, however, the pressures required are far beyond those that we can achieve in the laboratory.
How can we rationalize the transition of insulators to the metallic state? Indeed, how can we understand the existence of insulators at all?
[[file:Hubbard_model.jpg|right|300px|thumb|Electron hopping in a 1-D chain of atoms.]][[file:Hubbard_bands.jpg|right|300px|thumb|Energy vs. DOS for the chain of atoms as the density and degree of orbital overlap between atoms increases. Increasing overlap broadens the neutral atom and anion-cation states into bands, each of which has a bandwidth Δ. A transition to the metallic state occurs abruptly when Δ exceeds the Hubbard gap U.]]'''The Hubbard Model.''' Let's consider a chain of a large number (''N'') of atoms as we did in Chapter 6. For convenience, we can say that these are atoms such as H, Na, or Cs that have one valence electron. The simple band model we developed earlier suggests that the chain should be metallic, because ''N'' atoms combine to make ''N'' orbitals, and the ''N'' valence electrons only fill the band of orbitals halfway. But this conclusion doesn't depend on the density, which creates a paradox. If atoms in the chain are very far apart, we suspect that the electrons should localize on the atoms.
A solution to this problem was proposed by J. Hubbard in 1963.<ref>{{cite journal |last1=Hubbard |first1=J. |year=1963 |title=Electron Correlations in Narrow Energy Bands |volume=276 |issue=1365 |pages=238–257 |journal=Proceedings of the Royal Society of London |bibcode= 1963RSPSA.276..238H|doi=10.1098/rspa.1963.0204 |jstor=2414761}}</ref> Hubbard considered the energy required to transfer an electron from an atom to its nearest neighbor, as shown in the picture at the right. Because each atom already has one electron (with random spin), moving an electron over by one atom requires overcoming the energy of electron-electron repulsion to make a cation-anion pair. For well-separated atoms this energy (U) is given by:
::U = IP - EA - e<sup>2</sup>/4πε<sub>0</sub>d
where IP and EA are the ionization energy and electron affinity, ε<sub>0</sub> is the permittivity of free space, and the last term in the equation represents the coulombic attraction between the cation and the anion. For atoms such as alkali metals, U is on the order of 3–5 eV, which is much larger than the thermal energy kT. Thus we expect there to be very few anion-cation pairs at room temperature, and the chain of atoms should be insulating.
What happens when we squeeze the atoms together? In the Hubbard model, as the distance between atoms decreases, the energies of both the neutral atom states and the anion-cation states broaden into bands, each of which has a band width Δ. The lower band can accommodate exactly ''N'' electrons (not ''2N'' as in the MO picture we developed earlier) because each orbital can only take one electron without spin-pairing. Thus for small Δ the lower band is full and the upper band is empty. However, as we continue to compress the chain, the orbital overlap becomes so strong that Δ ≈ U. At this point, the bands overlap and some of the electrons fill the anion-cation states. The chain then becomes conducting and the material is metallic.
[[file:VO2-MI.png|right|300px|thumb|Vanadium dioxide has the rutile structure, and in its undistorted form it is metallic, with one valence electron per V atom. Distortion of the lattice makes pairs of V atoms, resulting in an electronically insulating state. The insulator to metal transition can be driven reversibly by increasing the temperature, pressure, or orbital occupancy. Electrical switching of this transition in VO<sub>2</sub> is being studied for applications in high performance thin film transistors<ref>T. Mizokawa, Metal-insulator transitions: orbital control, Nature Physics 9, 612–613 (2013), doi: doi:10.1038/nphys2769</ref>]]Some materials, such as Sn and VO<sub>2</sub>, happen to have just the right degree of orbital overlap to make the Hubbard transition occur by changing the temperature or pressure. Such materials can be very useful for electrical switching, as illustrated at the right for rutile structure VO<sub>2</sub>. Most materials are far away from the transition, either on the metallic or insulating side. An interesting periodic trend that illustrates this concept can be seen among the transition metal monoxides, MO (M = Ti, V, Cr, Mn, Fe, Co, Ni), all of which have the NaCl structure. TiO and VO are metallic, because the 3d orbitals have significant overlap in the structure. However, CrO, MnO, FeO, CoO, and NiO are all insulators, because the 3d orbitals contract (and therefore Δ < U) going across the transition metal series. In contrast, the analogous sulfides (TiS, VS,....NiS) are all metallic. The sulfides have the NiAs structure, in which all the metal atoms are eclipsed along the stacking axis (the hexagonal c-axis). The short metal-metal distances along that axis result in strong orbital overlap, making Δ > U.
'''The Mott Model.''' A simpler, less atomistic model of the metal-insulator transition was formulated by Neville Mott.<ref>N. F. Mott, (1961) "The Transition to the Metallic State," Phil. Mag. 6, 287. DOI: 10.1080/14786436108243318.</ref> The Mott model considers the behavior of an electron in a material as a function of the density of all the other valence electrons. We know for a one-electron hydrogen-like atom (H, Na, Cs, etc.) the Schrodinger equation contains a potential energy term:
::V(r) = -(e<sup>2</sup>/4πε<sub>0</sub>r)
This potential energy function gives rise to familiar ladder of allowed energy levels in the hydrogen atom. However, in a metal, this Coulomb potential must be modified to include the screening of nuclear charge by the other electrons in the solid. In this case there is a '''screened Coulomb potential''':
::V(r) = -(e<sup>2</sup>/4πε<sub>0</sub>r)exp(-qr)
where q, which is the inverse of the '''screening length''', is given by:
::q<sup>2</sup> = 4m<sub>e</sub><sup>2</sup>(3n/π)<sup><sup>1/3</sup></sup>(2π/h)
[[file:Li-NH3.jpg|left|170px|thumb|Solutions of lithium metal in liquid ammonia at low (top, ionic conductor) and higher (bottom, metal) Li concentration. From a [https://www.youtube.com/watch?v=Qx-gVTaRAq4 video] by Joshua Judkins]]Here n is the density of atoms (or valence electrons), m<sub>e</sub> is the electron mass, and h is Planck's constant. At distances much larger than the screening length q<sup>-1</sup>, the electron no longer "feels" the charge on the nucleus. Mott showed that there is a critical density of electrons n<sub>c</sub> above which the valence electrons are no longer bound by individual nuclei and are free to roam the crystal. This critical density marks the transition to the metallic state, and is given by the Mott criterion:
'''n<sub>c</sub><sup>1/3</sup>a<sub>H</sub> ≈ 0.26'''
In this equation, a<sub>H</sub> is an effective Bohr radius for the valence electrons in the low-density limit, e.g. the average orbital radius of electrons in the 6s shell of a Cs atom when computing the value for Cs metal.
The important concept from the Mott model is that the metal-insulator transition depends very strongly on the '''density of valence electrons.''' This is consistent with the orbital overlap model of Hubbard, but also more general in the sense that it does not depend on a periodic structure of atoms. The Mott model is thus applicable to such diverse systems as metal atoms dissolved in liquid ammonia, metal atoms trapped in frozen gas matrices, and dopants in semiconductors.<ref>P. P. Edwards and M. J. Sienko (1982) "The Transition to the Metallic State," Acc. Chem. Res. 15, 87-93. DOI: 10.1021/ar00075a004</ref> In some systems, it is possible to continuously tune the density of valence electrons with rather striking results. For example, dissolving alkali metal (Li, Na, ...) in liquid ammonia (bp -33 <sup>o</sup>C) produces a blue liquid. The solvated alkali cations and negatively charged electrons impart ionic conductivity (as in a salt solution) but not electronic conductivity to the blue liquid ammonia solution. But as the concentration of electrons increases, a reflective, bronze-colored liquid phase forms that floats over the blue phase. This bronze phase is metallic and highly conducting. Eventually, with enough alkali metal added, the entire liquid is converted to the electronically conducting bronze phase.
The electrical switching of VO<sub>2</sub> between insulating and metallic phases (see above) can also be rationalized in terms of the Mott transition. Adding more electron density (by chemical or electric field doping) increases the concentration of valence electrons, driving the phase transition to the metallic state.
[[file:V2O3_phase_diagram.jpg|280px|right]]'''Thermodynamics and phase transitions.''' Thermodynamically, the metal-insulator transition is a '''first-order phase transition'''. In such a transition, the structure and properties change abruptly (think of the breakfast-to-lunch transition at McDonalds - there is just no way to get pancakes after, or hamburgers before 10:30 AM!<ref>Recent data have disproven this assertion; MacDonalds has finally responded to public opinion and is offering breakfast after 10:30 AM. But the laws of thermodynamics remain immutable and eternal</ref>). Thus in the case of Sn metal, the changes in structure (from four- to eight-coordination) and in electronic conductivity (insulator to metal) occur simultaneously. As in other first order phase transitions such as ice to water to steam, there is a latent heat associated with the transition and a discontinuity in derivative properties such as the heat capacity.
A typical phase diagram for a metal-insulator transition is shown at the right for V<sub>2</sub>O<sub>3</sub>. The octahedrally coordinated V<sup>3+</sup> ion has a d<sup>2</sup> electron count, so there are two unpaired spins per atom, and at low temperature the spins in the lattice order antiferromagnetically. As we learned in Chapter 8, above the Néel temperature an antiferromagnet becomes a paramagnet, which is also a Mott insulator. Increasing the pressure, or doping with electrons (e.g., by substituting some d<sup>3</sup> Cr<sup>3+</sup> for V<sup>3+</sup>) pushes the electron density over the Mott transition, the spins pair, and the solid becomes metallic.
==   10.2 Superconductors==
[[File:Meissner effect p1390048.jpg|thumb|200px|A magnet levitating above a high-temperature superconductor, cooled with liquid nitrogen. Persistent electric current flows on the surface of the superconductor, excluding the magnetic field of the magnet. This current effectively forms an electromagnet that repels the magnet.]][[w:Superconductivity|Superconductivity]] refers to the flow of electrical current in a material with zero resistance. Such materials are very important for use in electromagnets, e.g., in magnetic resonance imaging (MRI) and nuclear magnetic resonance (NMR) machines, because once the current starts flowing in the coils of these magnets it doesn't stop. Magnetic levitation using superconductors - which, below a critical field strength, are perfect diamagnets that are not penetrated by magnetic flux lines - is also potentially relevant to future technologies such as magnetically levitated trains.
The phenomenon of superconductivity, first discovered in Hg metal in 1911 by [[w:Heike_Kamerlingh_Onnes|Onnes]], continues to be only partially understood. It is of great interest to physicists as a macroscopic quantum phenomenon, and to chemists and materials scientists who try to make better superconductors (especially those that superconduct at higher temperatures) and devices derived from them, such as [[w:SQUID|superconducting quantum interference devices (SQUIDs)]], which are extremely sensitive magnetometers.
'''Spin pairing and zero resistance.''' The transition from the metallic to the superconducting state is related to the quantum phenomena of [[w:Bose–Einstein_condensate|Bose-Einstein condensation]] and [[w:Superfluidity|superfluidity]]. Individual electrons have spin = 1/2, and as such are [[w:Fermion|fermions]] (particles with half-integer spin). Because of the Pauli exclusion principle, no more than two fermions can occupy the same quantum state (such as an orbital in a molecule or a solid). The familiar consequence of this rule is the aufbau filling of orbitals with spin-paired electrons in each energy level. In contrast, particles with integer spins - which are called [[w:Boson|bosons]] - do not have this restriction, and any number of bosons can occupy the same quantized energy level.
Superconductivity occurs when electrons spin pair into so-called [[w:Cooper_pair|Cooper pairs]], which can travel through the lattice together. The electrons in a Cooper pair, although spin-paired, have a long-distance relationship: the spatial extent of a Cooper pair is a few nanometers in cuprate superconductors, and up to one micron in low T<sub>c</sub> superconductors such as aluminum. Because its overall spin angular momentum is zero, a Cooper pair is a boson. When the temperature is low enough, the Cooper pairs "condense" into the lowest energy level. The second lowest energy level - which is typically a few meV above the ground state - is not accessible to them as long as the energy gap is larger than the thermal energy, kT. The scattering of electrons by the lattice then becomes forbidden by energy conservation because scattering dissipates energy, and the Cooper pairs cannot change their energy state. Thus the resistance (which arises from scattering, as we learned in Ch. 6) drops abruptly to zero below T<sub>c</sub>. However, the Cooper pairs can be broken apart when they move fast, and thus superconductors turn back into normal metals (even below T<sub>c</sub>) above some critical current density j<sub>c</sub>. This phenomenon is also related to the critical magnetic field, H<sub>c</sub>, that quenches superconductivity.
[[file:Cooper_pairs.jpg|left|280px]]'''A trampoline for electrons.''' What causes electrons, which repel each other because of their negative charge, to pair up and travel together in superconductors? The mechanism - which must involve some kind of attractive interaction between electrons - is well understood for "conventional" superconductors which have relatively low transition temperatures, but is not yet known with certainty for high temperature oxide superconductors. In conventional, or [[w:BCS_theory|BCS superconductors]], the spin pairing is mediated by the lattice as shown in the figure at the left. A strong electron-lattice interaction causes a distortion in the lattice as an electron moves through. This elastic deformation is felt as an attractive force by a second electron moving in the opposite direction. This can be thought of as analogous to the interaction of two people jumping on a trampoline. The weight of the first person on the trampoline creates a "well" that attracts the second one, and they tend to move together (even if they don't like each other). Strange as this interaction seems, it is supported experimentally by isotope effects on T<sub>c</sub> and by quantitative predictions of T<sub>c</sub> values in conventional superconductors.
[[File:Timeline of Superconductivity from 1900 to 2015.svg|right|thumb|600px|Timeline of superconducting materials, showing T<sub>c</sub> vs. year of discovery.]]'''Bad metals make good superconductors.''' All superconductors are "normal" metals - with finite electrical resistance - above their critical transition temperature, T<sub>c</sub>. If you ask where in the periodic table one might look for superconductors, the answer is surprising. The most conductive metals (Ag, Au, Cu, Cs, etc.) make the worst superconductors, i.e., they have the lowest superconducting transition temperatures, in many cases below 0.01 K. Conversely "bad" metals, such as niobium alloys, certain copper oxides, K<sub>x</sub>Ba<sub>1-x</sub>BiO<sub>3</sub>, MgB<sub>2</sub>, FeSe, and alkali salts of C<sub>60</sub><sup>n-</sup> anions, can have relatively high transition temperatures.
We observe that most good superconductors appear in composition space very '''near a metal-insulator transition'''. In terms of our microscopic picture, orbital overlap in superconductors is poor, just barely enough to make them act as metals (Δ ≈ U) above T<sub>c</sub>. In the normal state, superconductors with high T<sub>c</sub> - which can be as high as 150 K - are typically "bad" metals. An important characteristic of such metals is that the '''mean free path''' of electrons (in the normal state, above T<sub>c</sub>) is on the order of the lattice spacing, i.e., '''only a few Å'''. In contrast, we learned in Ch. 6 that good metals such as Au, Ag, and Cu have electron mean free paths that are two orders of magnitude longer (ca. 40 nm). In a bad metal, the electron "feels" the lattice rather strongly, whereas in a good metal, the electrons are insensitive to small changes in the distance between metal atoms.
[[file:bad_metal.jpg|left|130px|thumb|Generic E vs. DOS for a bad metal.]]
What does the band picture look like for a bad metal? The key point is that because orbital overlap is poor, the metal has a '''high density of states''' at the Fermi level. This is a universal property of high temperature superconductors and provides a clue of where to look for new and improved superconducting materials. Recall that transition elements in the middle of the 3d series (Cr, Fe, Co, Ni) were magnetic because of poor orbital overlap and weak d-d bonding. The elements below these - especially Nb, Ta, and W - have just barely enough d-d orbital overlap to be on the metallic side of the metal-insulator transition and to be "bad" metals. Carbides and nitrides of these elements are typically superconducting, with the carbon and nitrogen atoms serving to adjust the valence electron density, as illustrated in the table below.
[[File:ybco.jpg|240px|thumb|Crystal structure of YBa<sub>2</sub>Cu<sub>3</sub>O<sub>7-δ</sub> (YBCO), the first superconductor with T<sub>c</sub> above the boiling point of liquid nitrogen.]]
{| class="wikitable"
|-
| <div style="text-align: center;">'''Compound'''</div> || NbC || Mo<sub>2</sub>N || TaC || VN || NbN || TaN || Nb<sub>3</sub>Ge
|-
|<div style="text-align: center;"> '''T<sub>c</sub> (K)'''</div> || <div style="text-align: center;">11.1</div>|| <div style="text-align: center;">5.0</div> || <div style="text-align: center;">9.7</div> || <div style="text-align: center;">7.5</div> ||<div style="text-align: center;"> 15.2</div> || <div style="text-align: center;">17.8</div> || <div style="text-align: center;">22.3</div>
|}
[[File:LSCO.jpg|500px|right|thumb|Crystal structure and phase diagram of the cuprate superconductor La<sub>2-x</sub>Sr<sub>x</sub>CuO<sub>4</sub>. (LSCO)]]
'''High T<sub>c</sub> superconductors.''' In addition to having weak orbital overlap in the metallic state - which results in a high DOS at E<sub>F</sub> - [[w:High-temperature_superconductivity|high temperature superconductors]] also typically contain elements in mixed oxidation states (for example, Cu<sup>2+/3+</sup> or Bi<sup>3+/5+</sup>) that are close in energy to the O<sup>2-</sup>/O<sup>-</sup> couple in the lattice. At ambient pressure, cuprate superconductors have the highest known T<sub>c</sub> values, ranging between about 35 and 150 K. The crystal structures of these materials are almost all variants of the perovskite lattice, as shown at the right for the 1-2-3 superconductor YBa<sub>2</sub>Cu<sub>3</sub>O<sub>7-δ</sub>. An ideal perovskite lattice would have formula ABO<sub>3</sub> = A<sub>3</sub>B<sub>3</sub>O<sub>9</sub>. In YBa<sub>2</sub>Cu<sub>3</sub>O<sub>7-δ</sub>, Y and Ba occupy the A cation sites, Cu occupies the B sites, and two of the nine O atoms are missing.
The YBa<sub>2</sub>Cu<sub>3</sub>O<sub>7-δ</sub> lattice consists of mixed-valent copper(II/III) oxide sheets capped by oxygen atoms to form CuO<sub>5</sub> square pyramids. These sheets encapsulate the Y<sup>3+</sup> cations. Copper(II) oxide ribbons that share the apical oxygen atoms of the square pyramids run in one direction through the structure. In YBa<sub>2</sub>Cu<sub>3</sub>O<sub>7-δ</sub> and related materials, one component of the structure (here the Cu-O ribbons) acts as a '''charge reservoir''' to control the doping of the planar CuO<sub>2</sub> sheets, which are the elements of the structure that carry the supercurrent. Cuprate superconductors with Bi, Tl, or Hg-containing charge reservoir layers and multiple, eclipsed CuO<sub>2</sub> sheets in the unit cell tend to have the highest T<sub>c</sub> values.
The connection between the metal-insulator transtion and superconductivity is nicely illustrated in the phase diagram of La<sub>2-x</sub>Sr<sub>x</sub>CuO<sub>4</sub>, the first cuprate superconductor, which was discovered in 1986 by Georg Bednorz and K. Alex Müller. This compound has a rather simple structure in which rocksalt La(Sr)O layers are intergrown with perovskite La(Sr)CuO<sub>3</sub> layers. Undoped La<sub>2</sub>CuO<sub>4</sub> contains only Cu<sup>2+</sup> ions and is an antiferromagnetic insulator. As a small amount of Sr<sup>2+</sup> is substituted for La<sup>3+</sup>, some of the Cu<sup>2+</sup> is oxidized to Cu<sup>3+</sup>, and the lattice is doped with holes. As the doping level increases, the antiferromagnetic phase undergoes a first-order phase transition to a "bad" metal, and at slightly higher doping density the superconducting phase appears. The proximity of the superconducting phase to the metal-insulator transition is a hallmark of cuprate superconductors. A maximum T<sub>c</sub> of 35K is observed at x = 0.15. Doping at higher levels moves the Fermi level beyond the point of highest DOS in the d-band of Cu and the superconducting phase then gradually disappears. It is interesting to compare this phase diagram with that of V<sub>2</sub>O<sub>3</sub> (above), which also undergoes an antiferromagnetic insulator to "bad" metal transition as it is doped.
==   10.3 Periodic trends: metals, semiconductors, and insulators==
As we consider periodic trends in the electronic properties of materials, it is important to review some of the key bonding trends we have learned in earlier chapters:
*Going down the periodic table, atoms in solids tend to adopt structures with higher coordination numbers.
*The second row of the periodic table is special, with strong s-p hybridization and π-bonding between atoms.
*Electrons in higher quantum shells are less strongly bound, so the energy difference between bonding and antibonding orbitals becomes smaller for heavier atoms.
We also know that most of the elements in the periodic table are metals, but the elements in the top right corner are insulating under ordinary conditions (1 atm. pressure) and tend to obey the octet rule in their compounds.
[[file:periodic_table_metalloids.jpg|center|800px]]
At the transition between metals and non-metals in the periodic table we encounter a crossover in electronic properties, as well as in other properties such as the acidity of the oxides (see Ch. 3). The group of elements at the border is loosely referred to as the [[w:Metalloid|metalloids]]. Several of these elements (such as C, Sn, and As) can exist as different allotropes that can be metals, insulators, or something in between.
A more rigorous delineation of the electronic properties of these elements (and of many compounds) can be made by considering their band structures and the '''temperature dependence of the electronic conductivity'''. As we have previously discussed, metals have partially filled energy bands, meaning that the Fermi level intersects a partially filled band. With increasing temperature, metals become poorer conductors because lattice vibrations (which are called [[w:Phonon|phonons]] in the physics literature) scatter the mobile valence electrons. In contrast, semiconductors and insulators, which have filled and empty bands, become better conductors at higher temperature, since some electrons are thermally excited to the lowest empty band. The distinction between insulators and semiconductors is arbitrary, and from the point of view of metal-insulator transitions, all semiconductors are insulators. We typically call an insulator a semiconductor if its band gap (E<sub>gap</sub>) is less than about 3 eV. A semimetal is a material that has a band gap near zero, examples being single sheets of sp<sup>2</sup>-bonded carbon (graphene) and elemental Bi. Like a narrow gap semiconductor, a semimetal has higher conductivity at higher temperature.
==   10.4 Semiconductors: band gaps, colors, conductivity and doping==
[[File:Gallium_Arsenide_(GaAs)_2"_wafer.jpg|right|250px|thumb|A 2" wafer cut from a GaAs single crystal. GaAs, like many p-block semiconductors, has the zincblende structure.]]Semiconductors, as we noted above, are somewhat arbitrarily defined as insulators with '''band gap energy <u><</u> 3.0 eV''' (~290 kJ/mol). This cutoff is chosen because, as we will see, the conductivity of undoped semiconductors drops off exponentially with the band gap energy and at 3.0 eV it is very low. Also, materials with wider band gaps (e.g. SrTiO<sub>3</sub>, E<sub>gap</sub> = 3.2 eV) do not absorb light in the visible part of the spectrum.
There are a number of places where we find semiconductors in the periodic table:
* Early transition metal oxides and nitrides, especially those with d<sup>0</sup> electron counts such as TiO<sub>2</sub>, TaON, and WO<sub>3</sub>
* Oxides of later 3d elements such as Fe<sub>2</sub>O<sub>3</sub>, NiO, and Cu<sub>2</sub>O
* Layered transition metal chalcogenides with d<sup>0</sup>, d<sup>2</sup> and d<sup>6</sup> electron counts including TiS<sub>2</sub>, ZrS<sub>2</sub>, MoS<sub>2</sub>, WSe<sub>2</sub>, and PtS<sub>2</sub>
* d<sup>10</sup> copper and sliver halides, e.g., CuI, AgBr, and AgI
* Zincblende- and wurtzite-structure compounds of the p-block elements, especially those that are isoelectronic with Si or Ge, such as GaAs and CdTe. While these are most common, there are other p-block semiconductors that are not isoelectronic and have different structures, including GaS, PbS, and Se.
The '''p-block octet semiconductors''' are by far the most studied and important for technological applications, and are the ones that we will discuss in detail.
[[File:Chalcopyrite-unit-cell-3D-balls.png|right|250px|thumb|The '''chalcopyrite structure''' is adopted by ABX<sub>2</sub> octet semiconductors such as Cu<sup>I</sup>In<sup>III</sup>Se<sub>2</sub> and Cd<sup>II</sup>Sn<sup>IV</sup>P<sub>2</sub>. The unit cell is doubled relative to the parent '''zincblende structure''' because of the ordered arrangement of cations. Each anion (yellow) is coordinated by two cations of each type (blue and red).]]'''Zincblende- and wurtzite-structure''' semiconductors have 8 valence electrons per 2 atoms. These combinations include 4-4 (Si, Ge, SiC,…), 3-5 (GaAs, AlSb, InP,…), 2-6 (CdSe, HgTe, ZnO,…), and 1-7 (AgCl, CuBr,…) semiconductors. Other variations that add up to an octet configuration are also possible, such as Cu<sup>I</sup>In<sup>III</sup>Se<sub>2</sub>, which has the '''chalcopyrite''' structure, shown at the right.
How does the '''band gap energy''' vary with '''composition'''? There are two important trends
(1) Going '''down a group''' in the periodic table, the gap '''decreases''':
:::C (diamond) > Si > Ge > α-Sn
'''E<sub>gap</sub> (eV):''' 5.4 1.1 0.7 0.0
This trend can be understood by recalling that E<sub>gap</sub> is related to the '''energy splitting between bonding and antibonding orbitals'''. This difference decreases (and bonds become weaker) as the principal quantum number increases.
(2) For isoelectronic compounds, '''increasing ionicity''' results in a '''larger band gap'''.
:::Ge < GaAs < ZnSe
:::0.7 1.4 2.8 eV
:::Sn < InSb < CdTe < AgI
:::0.0 0.2 1.6 2.8 eV
This trend can also be understood from a simple MO picture, as we discussed in Ch. 2. As the electronegativity difference Δχ increases, so does the energy difference between bonding and antibonding orbitals.
[[File:Colorwheel wavelengths.png|thumb|250x250px|Color wheel showing the colors and wavelengths of emitted light.]]
[[File:Iron(III)-oxide-sample.jpg|right|250px|thumb|Fe<sub>2</sub>O<sub>3</sub> powder is reddish orange because of its 2.2 eV band gap.]]The band gap is a very important property of a semiconductor because it determines its color and conductivity. Many of the applications of semiconductors are related to band gaps:
*Narrow gap materials (Hg<sub>x</sub>Cd<sub>1-x</sub>Te, VO<sub>2</sub>, InSb, Bi<sub>2</sub>Te<sub>3</sub>) are used as infrared photodetectors and [[w:Thermoelectric_materials|thermoelectrics]] (which convert heat to electricity).
*Wider gap materials (Si, GaAs, GaP, GaN, CdTe, CuIn<sub>x</sub>Ga<sub>1-x</sub>Se<sub>2</sub>) are used in electronics, light-emitting diodes, and solar cells.
Semiconductor solid solutions such as GaAs<sub>1-x</sub>P<sub>x</sub> have band gaps that are intermediate between the end member compounds, in this case GaAs and GaP (both zincblende structure). Often, there is a linear relation between composition and band gap, which is referred to as [[w:Vegard's_law|'''Vegard's Law''']]. This "law" is often violated in real materials, but nevertheless offers useful guidance for designing materials with specific band gaps. For example, red and orange light-emitting diodes (LED's) are made from solid solutions with compositions of GaP<sub>0.40</sub>As<sub>0.60</sub> and GaP<sub>0.65</sub>As<sub>0.35</sub>, respectively. Increasing the mole fraction of the lighter element (P) results in a larger band gap, and thus a higher energy of emitted photons.
'''Colors of semiconductors.''' The color of absorbed and emitted light both depend on the band gap of the semiconductor. [[w:Visible_spectrum|Visible light]] covers the range of approximately 390-700 nm, or 1.8-3.1 eV. The '''color of emitted light''' from an LED or semiconductor laser corresponds to the band gap energy and can be read off the color wheel shown at the right.
The color of '''absorbed light''' includes the band gap energy, but also all colors of higher energy (shorter wavelength), because electrons can be excited from the valence band to a range of energies in the conduction band. Thus semiconductors with band gaps in the infrared (e.g., Si, 1.1 eV and GaAs, 1.4 eV) appear black because they absorb all colors of visible light. Wide band gap semiconductors such as TiO<sub>2</sub> (3.0 eV) are white because they absorb only in the UV. Fe<sub>2</sub>O<sub>3</sub> has a band gap of 2.2 eV and thus absorbs light with λ < 560 nm. It thus appears reddish-orange (the colors of light reflected from Fe<sub>2</sub>O<sub>3</sub>) because it absorbs green, blue, and violet light. Similarly, CdS (E<sub>gap</sub> = 2.6 eV) is yellow because it absorbs blue and violet light.
[[file:electron-hole-pair.jpg|250px|right|thumb|An electron-hole pair is created by adding heat or light energy E <u>></u> E<sub>gap</sub> to a semiconductor (blue arrow). The electron-hole pair recombines to release energy equal to E<sub>gap</sub> (red arrow).]] '''Electrons and holes in semiconductors.''' Pure (undoped) semiconductors can conduct electricity when electrons are promoted, either by heat or light, from the valence band to the conduction band. The promotion of an '''electron''' (e<sup>-</sup>) leaves behind a '''hole''' (h<sup>+</sup>) in the valence band. The hole, which is the absence of an electron in a bonding orbital, is also a mobile charge carrier, but with a positive charge. The motion of holes in the lattice can be pictured as analogous to the movement of an empty seat in a crowded theater. An empty seat in the middle of a row can move to the end of the row (to accommodate a person arriving late to the movie) if everyone moves over by one seat. Because the movement of the hole is in the opposite direction of electron movement, it acts as a positive charge carrier in an electric field.
The opposite process of excitation, which creates an electron-hole pair, is their recombination. When a conduction band electron drops down to recombine with a valence band hole, both are annihilated and energy is released. This release of energy is responsible for the emission of light in LEDs.
At equilibrium, the creation and annihilation of electron-hole pairs proceed at equal rates. This dynamic equilibrium is analogous to the dissociation-association equilibrium of H<sup>+</sup> and OH<sup>-</sup> ions in water. We can write a mass action expression:
::n×p = K<sub>eq</sub> = n<sub>i</sub><sup>2</sup>
where n and p represent the number density of electrons and holes, respectively, in units of cm<sup>-3</sup>. The intrinsic carrier concentration, n<sub>i</sub>, is equal to the number density of electrons or holes in an undoped semiconductor, where n = p = n<sub>i</sub>.
Note the similarity to the equation for water autodissociation:
::[H<sup>+</sup>][OH<sup>-</sup>] = K<sub>w</sub>
By analogy, we will see that when we increase n (e.g., by doping), p will decrease, and vice-versa, but their product will remain constant at a given temperature.
'''Temperature dependence of the carrier concentration.''' Using the equations K<sub>eq</sub> = exp(-ΔG<sup>o</sup>/RT) and ΔG<sup>o</sup> = ΔH<sup>o</sup> – TΔS<sup>o</sup>, we can write:
::n×p = n<sub>i</sub><sup>2</sup> = exp(ΔS<sup>o</sup>/R)exp(-ΔH<sup>o</sup>/RT)
The entropy change for creating electron hole pairs is given by:
:: ΔS<sup>o</sup> = R ln(N<sub>C</sub>) + R ln(N<sub>V</sub>) = R ln(N<sub>C</sub>N<sub>V</sub>)
where N<sub>V</sub> and N<sub>C</sub> are the effective density of states in the valence and conduction bands, respectively.
and thus we obtain
::n<sub>i</sub><sup>2</sup> = N<sub>C</sub>N<sub>V</sub> exp(-ΔH<sup>o</sup>/RT)
Since the volume change is negligible, ΔH<sup>o</sup> ≈ ΔE<sup>o</sup>, and therefore ΔH<sup>o</sup>/R ≈ E<sub>gap</sub>/k, from which we obtain
::n<sub>i</sub><sup>2</sup> = N<sub>C</sub>N<sub>V</sub> exp(-E<sub>gap</sub>/kT)
and finally
::'''n = p = n<sub>i</sub> = (N<sub>C</sub>N<sub>V</sub>)<sup>1/2</sup> exp(-E<sub>gap</sub>/2kT)'''
For pure Si (E<sub>gap</sub> = 1.1 eV) with N ≈ 10<sup>22</sup>/cm<sup>3</sup>, we can calculate from this equation a carrier density n<sub>i</sub> of approximately 10<sup>10</sup>/cm<sup>3</sup> at 300 K. This is about 12 orders of magnitude lower than the valence electron density of Al, the element just to the left of Si in the periodic table. Thus we expect the conductivity of pure semiconductors to be many orders of magnitude lower than those of metals.
[[file:semiconductor-conductivity.jpg|right|250px|thumb|Plots of ln(σ) vs. inverse temperature for intrinsic semiconductors Ge (E<sub>gap</sub> = 0.7 eV), Si (1.1 eV) and GaAs (1.4 eV). The slope of the line is -E<sub>gap</sub>/2k.]]'''Conductivity of intrinsic semiconductors.''' The conductivity (σ) is the product of the number density of carriers (n or p), their charge (e), and their mobility (µ). Recall from Chapter 6 that µ is the ratio of the carrier drift velocity to the electric field and has units of cm<sup>2</sup>/Volt-second. Typically electrons and holes have somewhat different mobilities (µ<sub>e</sub> and µ<sub>h</sub>, respectively) so the conductivity is given by:
:: σ = neµ<sub>e</sub> + peµ<sub>h</sub>
For either type of charge carrier, we recall from Ch. 6 that the mobility μ is given by:
::μ = v<sub>drift</sub>/E = eτ/m,
where e is the fundamental unit of charge, τ is the scattering time, and m is the [[w:Effective_mass_(solid-state_physics)|effective mass]] of the charge carrier.
Taking an average of the electron and hole mobilities, and using n = p, we obtain
:: '''σ = σ<sub>o</sub> exp(-E<sub>gap</sub>/2kT)''', where σ<sub>o</sub> = 2(N<sub>C</sub>N<sub>V</sub>)<sup>1/2</sup>eµ.
By measuring the conductivity as a function of temperature, it is possible to obtain the activation energy for conduction, which is E<sub>gap</sub>/2. This kind of plot, which resembles an Arrhenius plot, is shown at the right for three different undoped semiconductors. The slope of the line in each case is -E<sub>gap</sub>/2k.
[[file:n_and_p_doping.png|right|300px|thumb|n- and p-type doping of semiconductors involves substitution of electron donor atoms (light orange) or acceptor atoms (blue) into the lattice. These substitutions introduce extra electrons or holes, respectively, which are easily ionized by thermal energy to become free carriers. The Fermi level of a doped semiconductor is a few tens of mV below the conduction band (n-type) or above the valence band (p-type).]]'''Doping of semiconductors.''' Almost all applications of semiconductors involve controlled '''doping''', which is the substitution of impurity atoms, into the lattice. Very small amounts of dopants (in the parts-per-million range) dramatically affect the conductivity of semiconductors. For this reason, very pure semiconductor materials that are carefully doped - both in terms of the concentration and spatial distribution of impurity atoms - are needed.
'''n- and p-type doping'''. In crystalline Si, each atom has four valence electrons and makes four bonds to its neighbors. This is exactly the right number of electrons to completely fill the valence band of the semiconductor. Introducing a phosphorus atom into the lattice (the positively charged atom in the figure at the right) adds an extra electron, because P has five valence electrons and only needs four to make bonds to its neighbors. The extra electron, at low temperature, is bound to the phosphorus atom in a hydrogen-like molecular orbital that is much larger than the 3s orbital of an isolated P atom because of the high dielectric constant of the semiconductor. In silicon, this "expanded" Bohr radius is about 42 Å, i.e., 80 times larger than in the hydrogen atom. The energy needed to ionize this electron – to allow it to move freely in the lattice - is only about 40–50 meV, which is not much larger the thermal energy (26 meV) at room temperature. The Fermi level (E<sub>F</sub>) is defined as the energy at which the probability of electron occupancy (at zero Kelvin) is 1/2. In the case of the hydrogenic dopant orbital, the energy of the lowest unoccupied orbital (n = 2) is close to the conduction band edge. Therefore the Fermi level lies just below the conduction band, and a large fraction of these extra electrons are promoted to the conduction band at room temperature, leaving behind fixed positive charges on the P atom sites. The crystal is '''n-doped''', meaning that the majority carrier (electron) is <u>n</u>egatively charged.
Alternatively, boron can be substituted for silicon in the lattice, resulting in '''p-type''' doping, in which the majority carrier (hole) is <u>p</u>ositively charged. Boron has only three valence electrons, and "borrows" one from the Si lattice, creating a positively charged hole that exists in a large hydrogen-like orbital around the B atom. This hole can become delocalized by promoting an electron from the valence band to fill the localized hole state. Again, this process requires only 40–50 meV, and so at room temperature a large fraction of the holes introduced by boron doping exist in delocalized valence band states. The Fermi level lies just above the valence band edge in a p-type semiconductor.
As noted above, the doping of semiconductors dramatically changes their conductivity. For example, the intrinsic carrier concentration in Si at 300 K is about 10<sup>10</sup> cm<sup>-3</sup>. The mass action equilibrium for electrons and holes also applies to doped semiconductors, so we can write:
::n×p = n<sub>i</sub><sup>2</sup> = 10<sup>20</sup> cm<sup>-6</sup> at 300K
If we substitute P for Si at the level of one part-per-million, the concentration of electrons is about 10<sup>16</sup> cm<sup>-3</sup>, since there are approximately 10<sup>22</sup> Si atoms/cm<sup>3</sup> in the crystal. According to the mass action equation, if n = 10<sup>16</sup>, then p = 10<sup>4</sup> cm<sup>-3</sup>. There are three consequences of this calculation:
* The density of carriers in the doped semiconductor (10<sup>16</sup> cm<sup>-3</sup>) is much higher than in the undoped material (~10<sup>10</sup> cm<sup>-3</sup>), so the conductivity is also many orders of magnitude higher.
* The activation energy for conduction is only 40–50 meV, so the conductivity does not change much with temperature (unlike in the intrinsic semiconductor)
* The minority carriers (in this case holes) do not contribute to the conductivity, because their concentration is so much lower than that of the majority carrier (electrons).
Similarly, for p-type materials, the conductivity is dominated by holes, and is also much higher than that of the intrinsic semiconductor.
'''Chemistry of semiconductor doping.''' Sometimes it is not immediately obvious what kind of doping (n- or p-type) is induced by "messing up" a semiconductor crystal lattice. In addition to substitution of impurity atoms on normal lattice sites (the examples given above for Si), it is also possible to dope with vacancies - missing atoms - and with interstitials - extra atoms on sites that are not ordinarily occupied. Some simple rules are as follows:
* For substitutions, adding an '''atom to the right''' in the periodic table results in '''n-type''' doping, and an atom to the '''left''' in '''p-type''' doping.
:For example, when TiO<sub>2</sub> is doped with Nb on some of the Ti sites, or with F on O sites, the result is n-type doping. In both cases, the impurity atom has one more valence electron than the atom for which it was substituted. Similarly, substituting a small amount of Zn for Ga in GaAs, or a small amount of Li for Ni in NiO, results in p-type doping.
* '''Anion vacancies''' result in '''n-type''' doping, and '''cation vacancies''' in '''p-type''' doping.
:Examples are anion vacancies in CdS<sub>1-x</sub> and WO<sub>3-x</sub>, both of which give n-type semiconductors, and copper vacancies in Cu<sub>1-x</sub>O, which gives a p-type semiconductor.
* '''Interstitial cations''' (e.g. Li) donate electrons to the lattice resulting in '''n-type''' doping. Interstitial anions are rather rare but they result in p-type doping. For example, interstitial hydroxide ions (OH<sup>-</sup>) charge-compensate Ag<sup>3+</sup> sites in Ag<sub>2</sub>O, making Ag<sub>2</sub>O a p-type semiconductor.
Sometimes, there can be both p- and n-type dopants in the same crystal, for example B and P impurities in a Si lattice, or cation and anion vacancies in a metal oxide lattice. In this case, the two kinds of doping '''compensate''' each other, and the doping type is determined by the one that is in higher concentration. A dopant can also be present on more than one site. For example, Si can occupy both the Ga and As sites in GaAs, and the two substitutions compensate each other. Si has a slight preference for the Ga site, however, resulting in n-type doping.
<br />
<br />
==   10.5 Semiconductor p-n junctions==
[[File:PnJunction-E.PNG|right|300px|thumb|When p-type and n-type semiconductors are joined, electrons and holes are annihilated at the interface, leaving a depletion region that contains positively and negatively charged donor and acceptor atoms, respectively. At equilibrium, the Fermi level (E<sub>F</sub>) is uniform throughout the junction. E<sub>F</sub> lies just above the valence band on the p-type side of the junction and just below the conduction band on the n-type side.]]
'''Semiconductor p-n junctions''' are important in many kinds of electronic devices, including [[w:Diode|diodes]], transistors, light-emitting diodes, and photovoltaic cells. To understand the operation of these devices, we first need to look at what happens to electrons and holes when we bring p-type and n-type semiconductors together.
At the junction between the two materials, mobile electrons and holes annihilate each other, leaving behind the fixed + and - charges of the electron donor and electron acceptor dopants, respectively. For example, on the n-side of a silicon p-n junction, the positively charged dopants are P<sup>+</sup> ions and on the p-side the negatively charged dopants are B<sup>-</sup>. The presence of these uncompensated electrical charges creates an electric field, the '''built-in field''' of the p-n junction. The region that contains these charges (and a very low density of mobile electrons or holes) is called the '''depletion region'''. <br />
The electric field, which is created in the depletion region by electron-hole recombination, repels both the electrons (on the n-side) and holes (on the p-side) away from the junction. The concentration gradient of electrons and holes, however, tends to move them in the opposite direction by diffusion. At equilibrium, the flux of mobile carriers is zero because the field-driven migration flux is equal and opposite to the concentration-driven diffusion flux.
The width of the depletion layer depends on the screening length in the semiconductor, which in turn depends on the dopant density. At high doping levels, the depletion layer is narrow (tens of nanometers across), whereas at low doping density it can be as thick as 1 µm. The depletion region is the only place where the electric field is nonzero, and the only place where the bands bend. Elsewhere in the semiconductor the field is zero and the bands are flat.<br />
In the middle of a p-n junction, the Fermi level energy, E<sub>F</sub>, is halfway between the valence band, VB, and the conduction band, CB, and the semiconductor is intrinsic (n = p = n<sub>i</sub>)
<br />
==   10.6 Diodes, LEDs and solar cells==
[[Image:Diode-closeup.jpg|thumb|left|180px|Closeup of a diode, showing the square-shaped semiconductor crystal ''(black object on left)''.]]
[[w:Diode|'''Diodes''']] are semiconductor devices that allow current to flow in only one direction. Diodes act as rectifiers in electronic circuits, and also as efficient light emitters (in LEDs) and solar cells (in photovoltaics). The basic structure of a diode is a junction between a p-type and an n-type semiconductor, called a p-n junction. Typically, diodes are made from a single semiconductor crystal into which p- and n- dopants are introduced.
If the n-side of a diode is biased at positive potential and the p-side is biased negative, electrons are drawn to the n-side and holes to the p-side. This reinforces the built in potential of the p-n junction, the width of the depletion layer increases, and very little current flows. This polarization direction is referred to as "back bias" or "reverse bias." If the diode is biased the other way, carriers are driven into the junction where they recombine. The electric field is diminished, the bands are flattened, and current flows easily since the applied bias lowers the built-in potential. This is called "forward bias."
The diode i-V curve, illustrated in the figure below at the right, is asymmetric and the current depends on the bias voltage V according to:
: <math>I_\ = I_\text{S} \left( e^\frac{V}{n V_\text{T}} - 1 \right)</math>
where V<sub>T</sub> is the thermal voltage kT/q (= 25.9 mV at 300K) and I<sub>S</sub> is the reverse-bias saturation current. The ideality factor (n) typically varies between 1 and 2 (though it can in some cases be higher), depending on the fabrication process and semiconductor material.
[[File:PnJunction-Diode-ForwardBias.PNG|280px|left|thumb|Electrons (red) and holes (white) in a forward-biased diode.]]
[[File:Diode current wiki.png|350px|right|thumb|Diode i-V curve]]
The figure on the left illustrates a forward-biased diode, through which current flows easily. As electrons and holes are driven into the junction (black arrows in lower left figure), they recombine (downward blue arrows), producing light and/or heat. The Fermi level in the diode is indicated as the dotted line. There is a drop in the Fermi level (equal to the applied bias) across the depletion layer. The corresponding diode i-V curve is shown on the right. The current rises exponentially with applied voltage in the forward bias direction, and there is very little leakage current under reverse bias. At very high reverse bias (typically tens of volts) diodes undergo avalanche breakdown and a large reverse current flows.<br />
<br />
[[File:PnJunction-LED-E.PNG|350px|thumb|Light-emitting diode (LED).|right]]
A [[w:Light-emitting_diode|'''light-emitting diode''']] or '''LED''' is a kind of diode that converts some of the energy of electron-hole recombination into light. This radiative recombination process always occurs in competition with non-radiative recombination, in which the energy is simply converted to heat. When light is emitted from an LED, the photon energy is equal to the bandgap energy. Because of this, LED lights have pure colors and narrow emission spectra relative to other light sources, such as incandescent and fluorescent lights. LED lights are energy-efficient and thus are typically cool to the touch.<br />
[[w:Direct_and_indirect_band_gaps|'''Direct-gap''']] semiconductors such as GaAs and GaP have efficient luminescence and are also good light absorbers. In direct gap semiconductors, there is no momentum change involved in electron-hole creation or recombination. That is, the electrons and holes originate at the same value of the momentum wavevector '''k''', which we encountered in Ch. 6. '''k''' is related to the momentum (also a vector quantity) by '''p''' = h'''k'''/2π. In a direct-gap semiconductor, the top of the valence band and the bottom of the conduction band most typically both occur at '''k''' = 0. Since the momentum of the photon is close to zero, photon absorption and emission are strongly allowed (and thus kinetically fast). Polar semiconductors such as GaAs, GaN, and CdSe are typically direct-gap materials. [[w:Direct_and_indirect_band_gaps|'''Indirect-gap''']] semiconductors such as Si and Ge absorb and emit light very weakly because the valence band maximum and conduction band minimum do not occur at the same point in k-space. This means that a lattice vibration (a phonon) must also be created or annihilated in order to conserve momentum. Since this "three body" (electron, hole, phonon) process has low probability, the radiative recombination of electrons and holes is slow relative to non-radiative decay - the thermalization of electron-hole energy as lattice vibrations - in indirect-gap semiconductors. The momentum selection rule thus prevents light absorption/emission and there are no pure Si LEDs or Si-based lasers.<br />
<br />
While red, orange, yellow, and green LEDs can be fabricated relatively easily from AlP-GaAs solid solutions, it was initially very difficult to fabricate blue LEDs because the best direct gap semiconductor with a bandgap in the right energy range is a nitride, GaN, which is difficult to make and to dope p-type. Working at Nichia Corporation in Japan, [[w:Shuji_Nakamura|Shuji Nakamura]] succeeded in developing a manufacturable process for p-GaN, which is the basis of the blue LED. Because of the importance of this work in the development of information storage ([[w:blu-ray|Blu-Ray technology]]) and full-spectrum, energy-efficient [[w:LED_lamp|LED lighting]], Nakamura shared the 2014 Nobel Prize in Physics with [[w:Isamu_Akasaki|Isamu Asaki]] and [[w:Hiroshi_Amano|Hiroshi Amano]], both of whom had made earlier contributions to the development of GaN diodes.
<br />
[[File:PnJunction-PV-E.PNG|300px|thumbnail|Photovoltaic effect in a semiconductor p-n junction.|right]]
A '''[[w:Solar cell|Solar cell]]''', or photovoltaic cell, converts light absorbed in a p-n junction directly to electricity by the photovoltaic effect. [[w:Photovoltaics|Photovoltaics]] is the field of technology and research related to the development of solar cells for conversion of solar energy to electricity. Sometimes the term solar cell is reserved for devices intended specifically to capture energy from sunlight, whereas the term photovoltaic cell is used when the light source is unspecified.
[[File:Short circuit.jpg|thumb|Current-voltage characteristic of a solar cell in the dark and under illumination with band gap light. The short-circuit photocurrent is indicated as i<sub>sc</sub>, and the open-circuit photovoltage is V<sub>photo</sub>. The maximum power generated by the solar cell is determined by the area of the orange box. |250px|left]] [[File:SolarCell-EquivalentCircuit3.PNG|thumb|The equivalent circuit of a p-n junction solar cell, which results in the "light" i-V curve shown in the figure above. The solar cell is effectively a diode with a reverse-bias current source provided by light-generated electrons and holes. The shunt resistance (R<sub>sh</sub>) in the equivalent circuit represents parasitic electron-hole recombination. A high shunt resistance (low recombination rate) and low series resistance (R<sub>s</sub>) are needed for high solar cell efficiency.|250px|left]]
Photocurrent in p-n junction solar cells flows in the diode reverse bias direction. In the dark, the solar cell simply acts as a diode. In the light, the photocurrent can be thought of as a constant current source, which is added to the i-V characteristic of the diode. The relationship between the dark and light current in a photovoltaic cell is shown in the diagram at the left.
The built-in electric field of the p-n junction separates e<sup>-</sup> h<sup>+</sup> pairs that are formed by absorption of bandgap light in the depletion region. The electrons flow downhill, towards the n-type side of the junction, the holes flow uphill towards the p-side. If hν ≥ E<sub>gap</sub>, light can be absorbed by promoting an electron from the valence band to the conduction band. Any excess energy is rapidly thermalized. Light with hν > E<sub>g</sub> thus can store only E<sub>g</sub> worth of energy in an e<sup>-</sup> h<sup>+</sup> pair. If light is absorbed outside of depletion region, i.e., on the n- or p-side of the junction where there is no electric field, minority carriers must diffuse into the junction in order to be collected. This process occurs in competition with electron-hole recombination. Because impurity atoms and lattice defects make efficient recombination centers, semiconductors used in solar cells (especially indirect-gap materials such as Si, which must be relatively thick in order to absorb most of the solar spectrum) must be very pure. Most of the cost of silicon solar cells is associated with the process of purifying elemental silicon and growing large single crystals from the melt.
The relationship between the photocurrent in the solar cell and the open circuit photovoltage (V<sub>oc</sub>) can be derived from the diode equation using the equivalent circuit shown above. If we assume that the series resistance is zero and the shunt resistance is infinite (the ideal case), then the solar cell simply adds a constant reverse-bias current to the diode. At zero bias the diode current is zero, so total current is just the constant photocurrent, which we write as I<sub>sc</sub> (the short-circuit photocurrent). At open circuit, the total current is zero, and so the diode current must be equal and opposite to I<sub>sc</sub>. Thus we can write:
: <math>I_\text{sc}\ = I_\text{S} \left( e^\frac{V_\text{oc}}{n V_\text{T}} - 1 \right)</math>
and rearranging this equation we find:
: <math>V_\text{oc}\ = nV_\text{T}\ln\left(1+\frac{I_\text{sc}}{ I_\text{S}} \right)</math>
This equation shows that the photovoltage increases logarithmically with I<sub>sc</sub>, which is in turn proportional to the light intensity. So solar cells ideally produce higher photovoltages (and have higher theoretical efficiency) at high light intensity, but only if resistive losses (R<sub>s</sub>) are small. For this reason, thin film solar cells made with nearly ideal direct-gap semiconductors such as GaAs have higher efficiency in concentrated sunlight than they do under 1 sun.
In the photodiode i-V curve above, V<sub>oc</sub> is typically only about 70% of the bandgap energy E<sub>gap</sub>. The photocurrent is limited by the photon flux, the recombination rate, and the re-emission of absorbed light.<ref>E. Yablonovitch, O. Miller, and S. Kurtz, "Strong Internal and External Luminescence as Solar Cells Approach the Shockley–Queisser Limit," IEEE Journal of Photovoltaics, vol. 2, no. 3, pp. 303-311, July 2012.</ref> The area of the orange rectangle indicates the power generated by the solar cell, which can be calculated as P = i x V. In good single crystal or polycrystalline solar cells made of Si, GaAs, CdTe, CuIn<sub>x</sub>Ga<sub>1-x</sub>Se<sub>2</sub>, or (CH<sub>3</sub>NH<sub>3</sub>)PbI<sub>3</sub> the quantum yield (the ratio of short circuit photocurrent to photon flux) is close to unity.
<br />
Solar cells have many current applications. Individual cells are used for powering small devices such as electronic calculators. Photovoltaic arrays generate a form of renewable electricity, particularly useful in situations where electrical power from the grid is unavailable such as in remote area power systems, Earth-orbiting satellites and space probes, remote radio-telephones and water pumping applications. Photovoltaic electricity is also increasingly deployed in grid-tied electrical systems.
==   10.7 Solar Cells and Efficiency ==
A recent topic of discussion with the introduction of solar cells is their efficiency. Thirty years ago, the costs associated with solar cell implementation, including wiring, hardware, and installation, were substantially high. However, as the efficiency increases, we can scale down these associated costs for the same energy output. Thus, there has been a strong economic drive to develop more efficient solar cells.
To understand the challenges in improving efficiency, we must examine the fundamental limits of the p-n junction. The process of converting sunlight to electricity can initially be analyzed through the lens of thermodynamic efficiency. Considering the sun as a black body radiating at 6000K and Earth's ambient temperature of 300K as the cold sink, a Carnot engine analysis suggests a theoretical maximum efficiency of 95%. However, even an optimized single-junction solar cell with an ideal 1.4 eV bandgap achieves a thermodynamic efficiency of only 32%. This significant gap between the Carnot limit and practical efficiency is due to several fundamental factors.
[[File:solar_cell_losses.png|thumb|400px|Energy losses in p-n junction solar cells. Long wavelength light (hν < E<sub>g</sub>) is not absorbed, and the excess energy of light with hν > E<sub>g</sub> is rapidly converted to heat. Losses also occur through recombination of electrons and holes.<ref>{{Cite book |last=Nelson |first=Jenny |title=The Physics of Solar Cells |publisher=London Imperial College Press |year=2003}}</ref> (Click for higher resolution image).|425x425px]]First, since sunlight contains a broad spectrum of wavelengths rather than being monochromatic, there are two primary mechanisms of power loss:
# Photons with energy below the semiconductor's bandgap (too far in the red/infrared) aren't absorbed at all.
# When photons with energy above the bandgap are absorbed, the excess energy is lost as heat. This occurs because even though high-energy photons create electron-hole pairs deep in the valence and conduction bands, these carriers quickly thermalize to the band edges, retaining only the bandgap energy.
These limitations require choosing a semiconductor with an intermediate bandgap that optimally matches the solar spectrum. The ideal bandgap for a single-junction solar cell is approximately 1.4 eV, corresponding to a wavelength of 885 nm, which allows absorption of all visible light and some near-infrared radiation.[[File:Photovoltaic (PV) Cell Costs per Peak Watt.png|thumb|Photovoltaic (PV) Cell Costs per Peak Watt|376x376px]]A third significant source of loss is due to entropy. At equilibrium, when no current is being drawn, the solar cell re-radiates photons with energy equal to its band gap in all directions, despite receiving sunlight from a highly collimated source. This represents an entropic loss in converting highly parallel incoming photons into randomly oriented outgoing radiation.
These fundamental limitations combine to set the theoretical power conversion efficiency limit at approximately 32%. The practical limit is lower, because the cell operates at non-zero current at its maximum power point, and because of resistive losses. The choice of semiconductor is therefore crucial. Silicon, with its 1.1 eV bandgap, has been the traditional material of choice, while gallium arsenide (GaAs) with its nearly ideal 1.4 eV bandgap offers even better theoretical performance.[[File:Best Research-Cell Efficiencies.png|thumb|upright=2.5|Reported timeline of [[w:solar cell|solar cell]] energy conversion efficiencies since 1976 ([[w:National Renewable Energy Laboratory|National Renewable Energy Laboratory]]). (click for higher resolution image)]]
The cost of installed photovoltaics (calculated on a per-watt basis) has dropped over the past decade at a rate of about 13% per year, and has already reached [[w:Grid_parity|grid parity]] in Germany and a number of other countries.<ref name="Fraunhofer-recentfacts-2015-01-07">
{{cite web
|publisher=Fraunhofer ISE
|url=http://www.ise.fraunhofer.de/en/publications/veroeffentlichungen-pdf-dateien-en/studien-und-konzeptpapiere/recent-facts-about-photovoltaics-in-germany.pdf
|title=Recent facts about photovoltaics in Germany
|date=7 January 2015
|accessdate=17 February 2015
}}</ref> Photovoltaic grid parity was anticipated in U.S. power markets in the 2020 timeframe.<ref>Kamran M., Fazal M.R., Mudassar M., Ahmed S.R., Adnan M., Abid I., Randhawa F.J.S., Shams H. Solar photovoltaic grid parity: a review of issues and challenges and status of different PV markets. Int. J. Renew. Energy Resour. 2019;9:244–260.</ref> <ref>It is important to note that "grid parity" in this context refers to the cost of producing electricity, but not to the total cost of providing electrical energy upon demand. Electric power generation from renewable sources such as solar or wind follows diurnal and seasonal cycles, and is also intermittent. The transition to renewably sourced grid power requires energy storage solutions that help match generation with demand.</ref>A major driver in the progressively lower cost of photovoltaic power is the steadily increasing efficiency of solar cells, which is shown in the graphic at the right. Progress towards higher efficiency reflects improved processes for making photovoltaic materials such as silicon and gallium arsenide, as well as the discovery of new materials.
Looking at historical development, silicon solar cells were first invented at Bell Labs in the 1950s. By the 1980s, silicon technology had largely plateaued, reaching maximum efficiencies around 25% for single-crystal devices, so they are now in the flat part of the learning curve and are approaching their maximum theoretical efficiencies. Newer technologies such as organic photovoltaics, quantum dot solar cells, and lead halide perovskite cells are still in the rising part of the learning curve, and promising results that could potentially surpass traditional silicon's performance.
==   10.8 Field Effect Transistors ==
A '''[[w:Field-effect transistor| field effect transistor (FET)]]''' is a transistor that uses an electric field to control the width of a conducting channel and thus the current in a semiconductor material. It is classified as unipolar transistor, in contrast to [[w:Bipolar junction transistor|bipolar transistors]]. [[File:Lateral_mosfet.svg|thumb|Cross section of an n-type MOSFET|right|300px]] Field effect transistors function as current amplifiers. The typical structure of Si-based FETs is one in which two n-type regions (the source and the drain) are separated by a p-type region. An oxide insulator over the p-type region separates a metal gate lead from the semiconductor. This structure is called a [[w:MOSFET|metal-oxide-semiconductor FET (or MOSFET)]]. When voltage is applied between source and drain, current cannot flow because either the n-p or the p-n junction is back-biased. When a positive potential is applied to the gate, however, electrons are driven towards the gate, and locally the semiconductor is "inverted" to n-type. Then the current flows easily between the n-type source and drain through the n-channel. The current flow between the source and drain is many times larger than the current through the gate, and thus the FET can act as an amplifier. Current flow can also represent a logical "1," so FETs are also used in digital logic.
In electronic devices such as microprocessors, field-effect transistors are kept in the off-state most of the time in order to minimize background current and power consumption. The FET shown above, which has n-type source and drain regions, is called an NMOS transistor. In a PMOS transistor, the source and drain regions are p-type and the gate is n-type. In [[w:CMOS|'''CMOS''']] (complementary metal-oxide semiconductor) integrated circuits, both NMOS and PMOS transistors are used. CMOS circuits are constructed in such a way that all PMOS transistors must have either an input from the voltage source or from another PMOS transistor. Similarly, all NMOS transistors must have either an input from ground or from another NMOS transistor. This arrangement results in low static power consumption.
[[File:Vg vs. source-drain conductance.jpg|left|300px]]
Transistors are most useful in the range of gate voltage (indicated by the red circle in the figure at the left) where the source-drain current changes rapidly. In this region it is possible to effect a large change in current between source and drain when a small signal is applied to the gate. An important figure of merit for FETs is the [[w:subthreshold_slope|'''subthreshold slope''']], which is the slope a plot of log(current) vs. V<sub>gate</sub>. An ideal subthreshold slope is one decade of current per 60 mV of gate bias. Typically, a decade change in source-drain current can be achieved with a change in gate voltage of ~70 mV. The performance of FETs as switches and amplifiers is limited by the subthreshold slope, which in turn is limited by the capacitance of the gate. It is desirable to have a very high gate capacitance, which requires a thin insulating oxide, but also to have a small leakage current, which requires a thick oxide. A current challenge in the semiconductor industry is to continue to scale FETs to even smaller nanoscale dimensions while maintaining acceptable values of these parameters. This is being done by developing new gate insulator materials that have higher dielectric constants than silicon oxide and do not undergo redox reactions with silicon or with metal gate leads. Only a few known materials (such as hafnium oxynitride and hafnium silicates) currently meet these stringent requirements.
<br />
==   10.9 Amorphous semiconductors==
[[file:a-Si_structure.jpg|right|430px|thumb|Schematic illustration of the structures of crystalline silicon (left), amorphous silicon (middle), and amorphous hydrogenated silicon (right)]][[File:Energy diagram depending on degree of state.jpg|right|thumb|Energy vs. DOS for an amorphous semiconductor. Disorder and dangling bonds result in localized mid-gap states.|430px]]'''Amorphous semiconductors''' are disordered or glassy forms of crystalline semiconductor materials. Like non-conducting glasses, they are network structures with primarily covalent bonding. Crystalline silicon, which has the diamond structure, is an ordered arrangement of fused six-membered silicon rings, all in the "chair" conformation, as we saw in Ch. 8. The local bonding environment of the silicon atoms is tetrahedral. The silicon atoms in amorphous silicon (a-Si) are also predominantly tetrahedrally coordinated, but there is no long-range order in the structure. In addition to six-membered rings, there are five- and seven-membered rings, as well as some "dangling bond" sites in which Si atoms have only three nearest neighbors.
Two of the most widely studied amorphous semiconductors are a-Si and amorphous selenium, a-Se. Si and Se can both be made in glassy form, usually by sputtering or evaporation at relatively low temperature. In a-Se, as in a-Si, locally, most of the atoms have their "normal" valence, but there are many defects and irregularities in the structure. Dangling bonds in amorphous semiconductors have orbital energies in the middle of gap, and electrons in these states are effectively non-bonding. Because these dangling bond sites are far apart from each other, there is little orbital overlap between them, and they also exist over a range of energies. Electrons in these mid-gap states are therefore '''localized''', a phenomenon known as [[w:Anderson localization|Anderson localizaton]]. Amorphous Si is insulating because electrons the Fermi level (in the middle of the gap) are not mobile in the lattice. These localized states create a mobility gap, and only electrons in states that are strongly bonding or antibonding are delocalized. Therefore, unmodified a-Si is not very useful as a semiconductor. However, by hydrogenating the material as it is formed (typically in a plasma of H atoms), the under-coordinated Si atoms are bonded to hydrogen atoms. This generates filled bonding and empty antibonding orbitals, the energies of which are outside the mobility gap. Hydrogenation thus lowers the density of states in the mobility gap. Hydrogenated amorphous silicon (a-Si:H) is insulating in the dark, but is a good photoconductor because light absorption creates electrons and holes in mobile states that are outside the mobility gap.
[[File:Xerographic photocopy process en.svg|200px|left|thumb|Charging of amorphous Se and pattern transfer in the xerographic cycle.]][[File:Solar-calculator.jpg|thumb|250px|right|A calculator that runs on solar and battery power]][[file:HIT_cell.jpg|250px|right|thumb|Layered structure of a HIT solar cell. The layers are not drawn to scale. A thick crystalline n-silicon layer is the light absorber, and photogenerated holes, which are the minority carriers, are reflected away from the aluminum back contact by the thin intrinsic a-Si layer there.]]
The photoconductivity of '''amorphous Se''' is exploited in [[w:Xerography|xerography]]. A conductive drum coated with a-Se, which is insulating, is charged with static electricity by corona discharge from a wire. When the drum is exposed to a pattern of light and dark (the image to be duplicated), the illuminated a-Se areas become conductive and the static charge is dissipated from those parts of the drum. Carbon-containing toner particles then adhere via static charge to the areas that were not exposed to light, and are transferred and bonded to paper to make the copy. The speed of the process and the high resolution of pattern transfer depend on the very low conductivity of a-Se in the dark and its high conductivity under illumination.
</br></br>
'''[[w:Amorphous silicon|Amorphous hydrogenated Si]]''' is used in inexpensive thin film solar cells. The mobility gap is about 1.7 eV, which is larger than the bandgap crystalline of Si (1.1 eV). a-Si:H is a direct-gap material, and therefore thin films are good light absorbers. a-Si:H solar cells can be vapor-deposited in large-area sheets. p<sup>+</sup>Si-a-Si:H-n<sup>+</sup>Si cells have around 10% power conversion efficiency. However amorphous Si solar cells gradually lose efficiency as they are exposed to light. The mechanism of this efficiency loss, called the [[w:Staebler–Wronski_effect|Staebler-Wronski effect]],<ref>Staebler, D. L. and Wronski, C. R. Optically induced conductivity changes in discharge-produced hydrogenated amorphous silicon. J. Appl. Physics. 51(6), June 1980.</ref>, involves photogenerated electron-hole pairs which have sufficient energy to cause chemical changes in the material. While the exact mechanism is still unclear, it has been proposed that the energy of electron-hole recombination breaks a weak Si-Si bond, and that one of the resulting dangling bonds abstracts a H atom, leaving a passivated Si-H center and a permanent dangling bond. The effect is minimized by hydrogenating a-Si and can be partially reversed by annealing.
</br>
Thin layers of amorphous silicon are used in conjunction with crystalline silicon in heterojunction intrinsic thin-layer (HIT) solar cells.<ref>Mishima, T., Taguchi, M., Sakata, H., Maruyama, E., 2011. Development status of high efficiency HIT solar cells. Sol. Energy Mater. Sol. Cell. 95, 18–21. doi:10.1016/j.solmat.2010.04.030</ref> Because the mobility gap of a-Si is wider than the bandgap of c-Si, there is a potential energy barrier at the amorphous-crystalline interface that reflects electrons and holes away from that interface. At the p<sup>+</sup> contact, only holes can tunnel through the barrier, whereas only electrons can tunnel through the barrier to the n<sup>+</sup> contact. The passivation of surface defects that are sites of electron-hole recombination prevents a major loss mechanism in solar cells, increasing both the photovoltage and the photocurrent relative to conventional c-Si p-n junction cells. Panasonic and Sanyo have announced the production of HIT cells with power conversion efficiencies as high as 23%.
</br>
</br>
</br>
==   10.10 Discussion questions==
* How is magnetic ordering in the 3d transition metals (Fe, Co, Ni) and the absence of magnetism in the elements just below them (Ru, Ir, Pd) related to the metal-insulator transition?
* Why are good metals bad superconductors and vice-versa?
* Discuss why semiconducting oxides of early transition metals such as TiO<sub>2</sub> and Nb<sub>2</sub>O<sub>5</sub> can be doped n-type but not p-type. Conversely, semiconducting late transition metal oxides such as NiO and Cu<sub>2</sub>O can be doped p-type but not n-type.
==   10.11 Problems==
[[File:LSCO_xtal_structure.png|thumb|250px]]1. The structure of a superconductor containing lanthanum, copper, and oxygen is shown at the right in sections along the tetragonal c-axis. This compound (with some of the lanthanum replaced by strontium) was the first high temperature cuprate superconductor discovered, and its discoverers received a Nobel Prize in physics for their work.
The "z" dimension is approximately 1/2 a, and the c/a ratio is 2.44. What is the stoichiometry of the compound, and what are the coordination environments of Cu and La? This structure is actually closely related to perovskite, ABO<sub>3</sub>. Explain the relationship between this structure and the ideal perovskite structure.
2. VO<sub>2</sub> can exist in insulating or metallic form, depending on temperature and pressure. Which form would be stabilized by increasing the temperature? Explain your answer.
3. Explain briefly how and why the bandgaps for octet p-block semiconductors vary (1) with the average principal quantum number, and (2) with the electronegativity difference between anion and cation.
4. Indicate the type of conduction (n or p) in the following: (a) Se-doped GaAs, (b) InAs<sub>1-x</sub>, where x << 1, (c) Li<sub>0.05</sub>Ni<sub>0.95</sub>O, (d) Li<sub>x</sub>WO<sub>3</sub>, where x << 1.
<br/>
[[file:copper_indium_selenide.png|250px|right|thumb]]
5. The structure of copper indium selenide, a semiconductor used in thin film solar cells, is shown at the right in sections.<br/>
(a) What is the stoichiometry of the compound?
(b) What kind of doping (n or p) will occur if a small amount of iodine is substituted for selenium?
(c) What kind of doping (n or p) will occur if a small fraction of the indium sites are occupied by copper atoms?
<br />
<br />
6. The relationship between band gap and the wavelength of light absorbed is lambda (nm) = 1240/E<sub>g</sub> (eV). Predict the colors of anatase TiO<sub>2</sub> (E<sub>g</sub> = 3.1 eV), SiC (2.0 eV), ZnSnP<sub>2</sub> (1.7 eV), ZnGeP<sub>2</sub> (1.9 eV), and InP (1.27 eV). In other words, what color do they appear to the eye?
7. The conductivity of a certain intrinsic (undoped) semiconductor increases by a factor of two when the temperature is raised from 300 to 330 K. What is the bandgap (in eV)? R = 8.314 J/mol-K, 1 eV/atom = 96.52 kJ/mole.
8. Pure Ge is much more conductive than pure Si. Given their bandgaps (0.74 and 1.15 eV, respectively), estimate the ratio of their conductivities at room temperature.
[[file:semiconductor_conductivity_vs_T.png|250px|right|thumb]]
9. The figure at the right illustrates the trends in conductivity vs. inverse temperature for Si, Ge, and As-doped Ge. Identify lines (i), (ii), and (iii) with the appropriate materials. Explain why the slope of line (i) is close to zero.
10. Sketch a silicon p-n junction, showing the depletion region, band bending, and the Fermi level in the absence of light or applied potential. In the dark, the p-n junction acts as a rectifier. (a) Which way do electrons and holes flow most easily in the dark? (b) Does the built in electric field increase or decrease under forward bias? (c) In the light, the junction acts as a photodiode. In this case, under short circuit conditions, do electrons flow in the same direction or in the opposite direction as in (a)? Explain.
<br />
<br />
==  10.10 References==
{{reflist|colwidth=30em}}
{{BookCat}}
9gctosmcdb7zlaptjfany9ey52equ3a
OpenSCAD User Manual/Text
0
301482
4656381
4655902
2026-08-05T08:44:52Z
~2026-43271-73
3619330
Changed the path taken from toolbar to display the font list.
4656381
wikitext
text/x-wiki
== text() ==
The <code>text</code> module creates text as a 2D geometric object,
using fonts installed on the local system or provided as separate font file.
{{requires|2015.03}}
===Parameters===
; text : String. The text to generate.
; size : Number. In a western script, capital letters will be approximately this tall. Default is 10. Sets the em size of the font to 100/72 times the value specified. See '''em''' and the note on font sizes below.
; font : String. The name of the font that should be used. This is not the name of the font file, but the logical font name (internally handled by the fontconfig library). This can also include a style parameter, see below. A list of installed fonts & styles can be obtained using the font list dialog (Help -> Font List). The default is "Liberation Sans".
; direction: String. Direction of the text flow. Possible values are "ltr" (left-to-right), "rtl" (right-to-left), "ttb" (top-to-bottom) and "btt" (bottom-to-top). Default is "ltr".
; language: String. The language of the text (e.g., "en", "ar", "ch"). Default is "en".
; script: String. The script of the text (e.g., "latin", "arabic", "hani"). Default is "latin".
; halign : String. The horizontal alignment for the text. Possible values are "left", "center" and "right". Default is "left".
; valign : String. The vertical alignment for the text. Possible values are "top", "center", "baseline" and "bottom". Default is "baseline".
; spacing : Number. Factor to increase/decrease the character spacing. The default value of 1 results in the normal spacing for the font, giving a value greater than 1 causes the letters to be spaced further apart.
; em : Number. Specifies the size of an em-square. This is the conventional measurement used for font sizing; see the note on font sizing below. {{requires|Development snapshot}}
; $fn, $fs, and $fa: used for subdividing curved segments of the glyphs.
'''Example'''
[[File:OpenSCAD text() example.png|thumb|Example 1: Result.]]
text("OpenSCAD");
=== Alignment ===
==== Vertical alignment ====
; top : The text is aligned so the top of the tallest character in your text is at the given Y coordinate.
; center: The text is aligned with the center of the bounding box at the given Y coordinate. This bounding box is based on the actual sizes of the letters, so taller letters and descenders will affect the positioning.
; baseline: The text is aligned with the font baseline at the given Y coordinate. This is the default, and is the only option that makes ''different'' pieces of text align vertically, as if they were written on lined paper, regardless of character heights and descenders.
; bottom: The text is aligned so the bottom of the lowest-reaching character in your text is at the given Y coordinate.
[[File:OpenSCAD text align vertical.png|thumb|OpenSCAD vertical text alignment]]
text = "Align";
font = "Liberation Sans";
valign = [
[ 0, "top"],
[ 40, "center"],
[ 75, "baseline"],
[110, "bottom"]
];
for (a = valign) {
translate([10, 120 - a[0], 0]) {
color("red") cube([135, 1, 0.1]);
color("blue") cube([1, 20, 0.1]);
linear_extrude(height = 0.5) {
text(text = str(text,"_",a[1]), font = font, size = 20, valign = a[1]);
}
}
}
{{clear}}
The <code>text()</code> module doesn't support multi-line text, but you can make a separate call for each line, using <code>translate()</code> to space them. A spacing of 1.4*'''size''' is the minimum required to prevent lines overlapping (if they include descenders). 1.6*'''size''' is approximately the default single-spacing in many word processing programs. To get evenly spaced lines, use "baseline" vertical alignment; otherwise, lines may be lower or higher depending on their contents.
==== Horizontal alignment ====
; left : The text is aligned with the left side of the bounding box at the given X coordinate. This is the default.
; center : The text is aligned with the center of the bounding box at the given X coordinate.
; right : The text is aligned with the right of the bounding box at the given X coordinate.
[[File:OpenSCAD text align horizontal.png|thumb|OpenSCAD horizontal text alignment]]
text = "Align";
font = "Liberation Sans";
halign = [
[10, "left"],
[50, "center"],
[90, "right"]
];
for (a = halign) {
translate([140, a[0], 0]) {
color("red") cube([115, 2,0.1]);
color("blue") cube([2, 20,0.1]);
linear_extrude(height = 0.5) {
text(text = str(text,"_",a[1]), font = font, size = 20, halign = a[1]);
}
}
}
=== Using Fonts & Styles ===
Fonts are specified by their logical font name; in addition a style parameter can be added to select a specific font style like "'''bold'''" or "''italic''", such as:
font="Liberation Sans:style=Bold Italic"
The font list dialog (available under Window > Font List) shows the font name and the font style for each available font. For reference, the dialog also displays the location of the font file.
You can drag a font in the font list into the editor window to use in the text() statement.
[[File:OpenSCAD font list dialog.png|thumb|center|400px|OpenSCAD font list dialog]]
OpenSCAD includes the fonts ''Liberation Mono'', ''Liberation Sans'', <!-- ''Liberation Sans Narrow'' isn't included --> and ''Liberation Serif''. Hence, as fonts in general differ by platform type, use of these included fonts is likely to be portable across platforms.
For common/casual text usage, the specification of one of these fonts is <strong>recommended</strong> for this reason. Liberation Sans is the default font to encourage this.
In addition to the installed fonts ( for windows only fonts installed as admin for all users ), it's possible to add project specific font files. Supported font file formats are [[:w:TrueType|TrueType]] Fonts (*.ttf) and [[:w:OpenType|OpenType]] Fonts (*.otf). The files need to be registered with use<>.
use <ttf/paratype-serif/PTF55F.ttf>
After the registration, the font is listed in the font list dialog, so in case logical name of a font is unknown, it can be looked up as it was registered.
'''Example'''
[[File:OpenSCAD text() font style example.png|thumb|Example 2: Result.]]
square(10);
translate([15, 15]) {
text("OpenSCAD", font = "Liberation Sans");
}
translate([15, 0]) {
text("OpenSCAD", font = "Liberation Sans:style=Bold Italic");
}
== Metrics ==
{{requires|Development snapshot}}
=== textmetrics() ===
The <code>textmetrics()</code> function accepts the same parameters as <code>text()</code>, and returns an [[OpenSCAD_User_Manual/General#Objects|object]] describing how the text would be rendered.
The returned object has these members:
* '''position''': the position of the lower-left corner of the generated text.
* '''size''': the size of the generated text.
* '''ascent''': the amount that the text extends above the baseline.
* '''descent''': the amount that the text extends below the baseline.
* '''offset''': the origin of the text after aligning. Text typically starts slightly right of this point.
* '''advance''': the "other end" of the text, the point at which additional text should be positioned, relative to "offset". Text generally ends slightly left of this point.
s = "Hello, World!";
size = 20;
font = "Liberation Serif";
tm = textmetrics(s, size=size, font=font);
echo(tm);
translate([0,0,1]) text("Hello, World!", size=size, font=font);
color("black") translate(tm.position) square(tm.size);
yields (reformatted for readability):
[[File:OpenSCAD textmetrics.png|thumb|Using textmetrics() to draw a box around text]]
ECHO: {
position = [0.7936, -4.2752];
size = [149.306, 23.552];
ascent = 19.2768;
descent = -4.2752;
offset = [0, 0];
advance = [153.09, 0];
}
=== fontmetrics() ===
The <code>fontmetrics()</code> function accepts a font size and a font name, both optional, and returns an [[OpenSCAD_User_Manual/General#Objects|object]] describing global characteristics of the font.
'''Parameters'''
; size : Number, optional. The approximate height of capital letters, as described above for <code>text()</code>.
; font : String, optional. The name of the font, as described above.
; em: Number, optional. The font size, the size of the em-square, as described above.
Note that omitting the size and/or font may be useful to get information about the default font.
Returns an object:
* '''nominal''': usual dimensions for a glyph:
** '''ascent''': height above the baseline
** '''descent''': depth below the baseline
* '''max''': maximum dimensions for a glyph:
** '''ascent''': height above the baseline
** '''descent''': depth below the baseline
* '''interline''': design distance from one baseline to the next
* '''font''': identification information about the font:
** '''family''': the font family name
** '''style''': the style (Regular, Italic, et cetera)
echo(fontmetrics(font="Liberation Serif"));
yields (reformatted for readability):
ECHO: {
nominal = {
ascent = 12.3766;
descent = -3.0043;
};
max = {
ascent = 13.6312;
descent = -4.2114;
};
interline = 15.9709;
font = {
family = "Liberation Serif";
style = "Regular";
};
}
== Notes ==
=== Font sizing ===
==== Parameters: size and em ====
'''size''' sets the size of the text in a convenient way: it sets, approximately, the height of a capital letter in a western script.
'''em''' sets the size of the text in the industry-standard way: it sets the size of the [[w:Em_(typography)|em-square]].
If you try to precisely correlate either of these measurements to any particular dimension of the generated text, you are likely to be unsatisfied.
'''size''' is based on a miscalculation that is now maintained for compatibility. By accident, the result is that '''size''' approximately sets the size of capital letters. Fonts vary and may be a different height, typically slightly smaller.
'''em''' is the conventional way to specify font size. Its behavior - its relationship with other measurements - matches the behavior seen in other applications and typography conventions. However, because historically it specified the size of the block of metal used to print the text, it's considerably larger than most letters. The exact relationship between the nominal font size and the actual size of glyphs depends on the design of the font. For most western fonts, the height of capital letters is about 70% of the font size.
'''textmetrics()''' can be used to measure the dimensions of any particular text; '''fontmetrics()''' will return general information about the font. You can use those results to scale when you need the actual text to be a particular size.
==== Units: points, millimeters, or...? ====
A common point of confusion is in the units used to specify font sizes. Conventional usage specifies font sizes in points, at 72 points per inch. This yields convenient numbers like 10 for typical text sizes, but there is nothing special about points; those sizes could equally be specified in inches, millimeters, or miles.
OpenSCAD has no units. There may be units specified in exported file formats, or inferred by downstream tools, but OpenSCAD proper does not define how large a 10-unit cube is in physical units. Similarly, the size of text in OpenSCAD is specified in OpenSCAD units - which might be interpreted as millimeters or feet. If you use '''em''' to specify a font size of 10, you will typically get text where, as noted above, capital letters are about 7 units tall.
It is common for users to interpret OpenSCAD units as millimeters. When interpreting OpenSCAD units as millimeters, if you want to specify text sizes in points you'll want to multiply the desired size in points by 25.4/72 to get the equivalent size in millimeters.
=== 3D text ===
[[File:Openscad Text 3dText.jpg|thumb|3D text example]]
Text can be changed from a 2 dimensional object into a 3D object by using [[OpenSCAD User Manual/2D to 3D Extrusion#Linear_Extrude|linear_extrude]].
//3d Text Example
linear_extrude(4)
text("Text");
=== Unicode ===
To allow specification of particular [[w:Unicode|Unicode]] characters, you can specify them in a string with the following escape codes;
* <code>\x<em>03 </em></code> - hex char-value (only hex values from <code>01</code> to <code>7f</code> are supported)
* <code>\u<em>0123 </em></code> - Unicode char with 4 hexadecimal digits (note: lowercase <code>\u</code>)
* <code>\U<em>012345</em></code> - Unicode char with 6 hexadecimal digits (note: uppercase <code>\U</code>)
The null character (NUL) is mapped to the space character (SP).
assert(version() == [2019, 5, 0]);
assert(ord(" ") == 32);
assert(ord("\x00") == 32);
assert(ord("\u0000") == 32);
assert(ord("\U000000") == 32);
'''Example'''
t="\u20AC10 \u263A"; // 10 euro and a smiley
=== Font management ===
OpenSCAD uses fontconfig to find and manage fonts, so it's possible to list the system configured fonts on command line using the fontconfig tools in a format similar to the GUI dialog.
<syntaxhighlight lang="bash">
$ fc-list -f "%-60{{%{family[0]}%{:style[0]=}}}%{file}\n" | sort
...
Liberation Mono:style=Bold Italic /usr/share/fonts/truetype/liberation2/LiberationMono-BoldItalic.ttf
Liberation Mono:style=Bold /usr/share/fonts/truetype/liberation2/LiberationMono-Bold.ttf
Liberation Mono:style=Italic /usr/share/fonts/truetype/liberation2/LiberationMono-Italic.ttf
Liberation Mono:style=Regular /usr/share/fonts/truetype/liberation2/LiberationMono-Regular.ttf
...
</syntaxhighlight>
Under Windows, fonts are stored in the Windows Registry. To get a file with the font file names, use the command:
<code>reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /s > List_Fonts_Windows.txt</code>
{{BookCat}}
7t09e8u7fjyyefk3n23z9a2x8r1czan
Fractals/Iterations in the complex plane/MandelbrotSetExterior
0
367335
4656270
4654556
2026-08-04T17:56:54Z
Aokoroko
3059689
/* C++ High-Precision Perturbation CLI Renderer */
4656270
wikitext
text/x-wiki
[[Fractals/color_mandelbrot|Colouring]] of exterior of Mandelbrot set can be :
* non-smooth = Escape Time = dwell
** Boolean/binary Escape Time Method ( bETM/M )
** discrete = Level Set Method = LSM/M = integer ETM = iETM/M
* Smooth :
** radial measures
*** Real Escape Time Method( rETM/M )
*** Distance Estimation Method( DEM/M )
*** radius of complex potential = Complex Potential Method ( CPM/M )
** angular measures
*** argument of complex potential
*** SAC = stripe average coloring
*** other
**** "triangle inequality"<ref>[http://www.hiddendimension.com/fractalmath/divergent_fractals_main.html Mathematics of Divergent Fractals by ]</ref><ref>[http://jussiharkonen.com/gallery/coloring-techniques/ jussi harkonen : coloring-techniques]</ref>
**** Orbit trap <ref>[[w:Orbit trap|wikipedia : Orbit trap]]</ref><ref>[https://www.youtube.com/watch?v=tnMNamKPy6k Mandelbrot Orbit Trap Rendering! Programming How-To Video by DKM101]</ref>
One can also draw curves :
* external rays
* equipotential lines ( closed curves - quasi circles)
Similar projects:
* [http://mathr.co.uk/blog/2014-03-06_mandelbrot_notebook.html Mandelbrot Notebook by Claude Heiland-Allen ]
** [https://code.mathr.co.uk/mandelbrot-book mandelbrot-book]
** [https://gitlab.com/adammajewski/mandelbrot-book_book mandelbrot-book/book : one file c programs , images and description]
** [https://gitlab.com/adammajewski/my-book fork of the mandelbrot-book] and [https://gitlab.com/adammajewski/git-book-pdf book in pdf format]
* [https://www.math.univ-toulouse.fr/~cheritat/wiki-draw/index.php/Main_Page different drawing techniques and algorithms by Arnaud Cheritat ]
** [https://www.math.univ-toulouse.fr/~cheritat/wiki-draw/index.php/Mandelbrot_set Mandelbrot set] and [https://gitlab.com/adammajewski/mandelbrot_wiki_ACh example C programs ( not by A Cheritat)]
* Linas Vepstas' Art Gallery:
** [http://linas.org/art-gallery/index.html original site]
** [https://gitlab.com/adammajewski/LinasArtGallery_MandelbrotSet fork at gitlab]
=='''Escape time''' or dwell==
Here for given point c on parameter plane one checks how critical point <math> z = 0.0 </math> behaves on dynamical plane under [[Fractals/Iterations in the complex plane/q-iterations#Forward iteration|forward iteration]]. If you change initial point you will get different result <ref>[http://mathesim.degruyter.de/jws_en/show_simulation.php?id=1052&type=RoessMa&lang=en Java program by Dieter Röß showing result of changing initial point of Mandelbrot iterations]</ref>
To draw given plane one needs to [[Fractals/Computer graphic techniques/2D#Scanning|check/scan]] (all) its points. See [[Fractals/Iterations in the complex plane/Mandelbrot set#Period detection|here for more details ( optimisation)]]
Read [[Fractals/Iterations in the complex plane/def cqp|definitions]] first.
===How to find the number of iterations required to escape the mandelbrot set ?===
* [https://math.stackexchange.com/questions/4056809/is-there-an-equation-for-the-number-of-iterations-required-to-escape-the-mandelb/4059340 math.stackexchange question: is-there-an-equation-for-the-number-of-iterations-required-to-escape-the-mandelb]
* [https://math.stackexchange.com/questions/16970/a-way-to-determine-the-ideal-number-of-maximum-iterations-for-an-arbitrary-zoom?rq=1 math.stackexchange question: a-way-to-determine-the-ideal-number-of-maximum-iterations-for-an-arbitrary-zoom?]
===Boolean escape time ===
This algorithm answers the question: “For which values of c will the Julia fractal, J(c), be line-like and for which dust-like?”<ref>[https://www.ntg.nl/maps/45/03.pdf Julia fractals in PostScript by Kees van der Laan, EUROTEX 2012 & 6CM PROCEEDINGS 47]</ref>
Here complex plane consists of 2 sets : Mandelbrot set <math>M\,</math> and its complement <math>M^c\,</math> :
<math>\mathbb{C}= M \cup M^c</math>
====ASCI graphic ( on screen) ====
[[File:Mandel.png|right|thumb|ASCI graphic : Boolean escape time in text mode]]
<syntaxhighlight lang=c>
// http://mrl.nyu.edu/~perlin/
main(k){float i,j,r,x,y=-16;while(puts(""),y++<15)for(x
=0;x++<84;putchar(" .:-;!/>)|&IH%*#"[k&15]))for(i=k=r=0;
j=r*r-i*i-2+x/25,i=2*r*i+y/10,j*j+i*i<11&&k++<111;r=j);}
</syntaxhighlight>
<syntaxhighlight lang=haskell>
-- Haskell code by Ochronus
-- http://blog.mostof.it/mandelbrot-set-in-ruby-and-haskell/
import Data.Complex
mandelbrot a = iterate (\z -> z^2 + a) a !! 500
main = mapM_ putStrLn [[if magnitude (mandelbrot (x :+ y)) < 2 then '*' else ' '
| x <- [-2, -1.9685 .. 0.5]]
| y <- [1, 0.95 .. -1]]
</syntaxhighlight>
<syntaxhighlight lang=lisp>
; common lisp
(loop for y from -1.5 to 1.5 by 0.05 do
(loop for x from -2.5 to 0.5 by 0.025 do
(let* ((c (complex x y)) ; parameter
(z (complex 0 0))
(iMax 20) ; maximal number of iterations
(i 0)) ; iteration number
(loop while (< i iMax ) do
(setq z (+ (* z z) c)) ; iteration
(incf i)
(when (> (abs z) 2) (return i)))
; color of pixel
(if (= i iMax) (princ (code-char 42)) ; inside M
(princ (code-char 32))))) ; outside M
(format t "~%")) ; new line
</syntaxhighlight>
Comparison programs in various languages <ref>[http://www.timestretch.com/tag/mandelbrot Fractal Benchmark by Erik Wrenholt]</ref><ref>[http://www.righto.com/2015/03/12-minute-mandelbrot-fractals-on-50.html 12-minute Mandelbrot: fractals on a 50 year old IBM 1401 mainframe]</ref>
==== Graphic file ( PPM ) ====
Here are various programs for creating pbm file <ref>[https://benchmarksgame-team.pages.debian.net/benchmarksgame/description/mandelbrot.html#mandelbrotThe Computer Language Benchmarks Game ]</ref>
* GLSL using [[Fractals/shadertoy#Boolean escape time|shadertoy]]
* short c programs by ed Burke<ref>[https://batchloaf.wordpress.com/2016/02/13/example-code-from-presentation-ways-of-seeing-julia-sets/ example-code-from-presentation-ways-of-seeing-julia-sets by ed Burke]</ref>
=====C=====
This is complete code of C one file program.
*It makes a ppm file which consists an image. To see the file (image) use external application ( graphic viewer).
*Program consists of 3 loops:
** iY and iX, which are used to scan rectangle area of parameter plane
**iterations.
For each point of screen (iX,iY) it's complex value is computed c=cx+cy*i.
For each point c is computed iterations of critical point <math>z_0 = z_{cr} = 0 \,</math>
It uses some [[Fractals/Iterations in the complex plane/Mandelbrot set#Speed improvements - optimisation|speed_improvement]]. Instead of checking :
sqrt(Zx2+Zy2)<ER
it checks :
(Zx2+Zy2)<ER2 // ER2 = ER*ER
It gives the same result but is faster.
<syntaxhighlight lang=C>
/*
c program:
--------------------------------
1. draws Mandelbrot set for Fc(z)=z*z +c
using Mandelbrot algorithm ( boolean escape time )
-------------------------------
2. technique of creating ppm file is based on the code of Claudio Rocchini
http://en.wikipedia.org/wiki/Image:Color_complex_plot.jpg
create 24 bit color graphic file , portable pixmap file = PPM
see http://en.wikipedia.org/wiki/Portable_pixmap
to see the file use external application ( graphic viewer)
*/
#include <stdio.h>
#include <math.h>
int main()
{
/* screen ( integer) coordinate */
int iX,iY;
const int iXmax = 800;
const int iYmax = 800;
/* world ( double) coordinate = parameter plane*/
double Cx,Cy;
const double CxMin=-2.5;
const double CxMax=1.5;
const double CyMin=-2.0;
const double CyMax=2.0;
/* */
double PixelWidth=(CxMax-CxMin)/iXmax;
double PixelHeight=(CyMax-CyMin)/iYmax;
/* color component ( R or G or B) is coded from 0 to 255 */
/* it is 24 bit color RGB file */
const int MaxColorComponentValue=255;
FILE * fp;
char *filename="new1.ppm";
char *comment="# ";/* comment should start with # */
static unsigned char color[3];
/* Z=Zx+Zy*i ; Z0 = 0 */
double Zx, Zy;
double Zx2, Zy2; /* Zx2=Zx*Zx; Zy2=Zy*Zy */
/* */
int Iteration;
const int IterationMax=200;
/* bail-out value , radius of circle ; */
const double EscapeRadius=2;
double ER2=EscapeRadius*EscapeRadius;
/*create new file,give it a name and open it in binary mode */
fp= fopen(filename,"wb"); /* b - binary mode */
/*write ASCII header to the file*/
fprintf(fp,"P6\n %s\n %d\n %d\n %d\n",comment,iXmax,iYmax,MaxColorComponentValue);
/* compute and write image data bytes to the file*/
for(iY=0;iY<iYmax;iY++)
{
Cy=CyMin + iY*PixelHeight;
if (fabs(Cy)< PixelHeight/2) Cy=0.0; /* Main antenna */
for(iX=0;iX<iXmax;iX++)
{
Cx=CxMin + iX*PixelWidth;
/* initial value of orbit = critical point Z= 0 */
Zx=0.0;
Zy=0.0;
Zx2=Zx*Zx;
Zy2=Zy*Zy;
/* */
for (Iteration=0;Iteration<IterationMax && ((Zx2+Zy2)<ER2);Iteration++)
{
Zy=2*Zx*Zy + Cy;
Zx=Zx2-Zy2 +Cx;
Zx2=Zx*Zx;
Zy2=Zy*Zy;
};
/* compute pixel color (24 bit = 3 bytes) */
if (Iteration==IterationMax)
{ /* interior of Mandelbrot set = black */
color[0]=0;
color[1]=0;
color[2]=0;
}
else
{ /* exterior of Mandelbrot set = white */
color[0]=255; /* Red*/
color[1]=255; /* Green */
color[2]=255;/* Blue */
};
/*write color to the file*/
fwrite(color,1,3,fp);
}
}
fclose(fp);
return 0;
}
</syntaxhighlight >
===Integer escape time = LSM/M = dwell bands===
<gallery>
File:Mandelbrot seq.png|Number of details is proportional to maximal number of iterations
File:Animation of the growth of the Mandelbrot set as you iterate towards infinity.gif|Mandelbrot animation based on a static number of iterations per pixel. Here you can see why '''offset''' is sometimes used ( because - color gradient changes : for high MaxIteration disapears.
</gallery>
Here color is proportional to last iteration ( of final_n, final iteration).<ref>[http://plus.maths.org/content/computing-mandelbrot-set Computing the Mandelbrot set by Andrew Williams]</ref>
This is also called [[w:Level Set Method|Level Set Method]] ( LSM )
<math>L_n= \{ c : z_n \in T ~~\mbox{and} ~~ z_k \notin T ~~\mbox{where}~~ k<n \}\,</math>
====C====
[[Image:Mandel_lsm_bw.jpg|thumb|LSM/M image with full code in C]]
Difference between Mandelbrot algorithm and LSM/M is in only in part instruction, which computes pixel color of exterior of Mandelbrot set. In LSM/M is :
<syntaxhighlight lang=C>
if (Iteration==IterationMax)
{ /* interior of Mandelbrot set = black */
color[0]=0;
color[1]=0;
color[2]=0;
}
/* exterior of Mandelbrot set = LSM */
else if ((Iteration%2)==0)
{ /* even number = black */
color[0]=0; /* Red */
color[1]=0; /* Green */
color[2]=0; /* Blue */
}
else
{/* odd number = white */
color[0]=255; /* Red */
color[1]=255; /* Green */
color[2]=255; /* Blue */
};
</syntaxhighlight>
Here is [[w:C (programming language)|C]] function whithout explicit complex numbers, only doubles:
<syntaxhighlight lang="c">
int GiveEscapeTime(double C_x, double C_y, int iMax, double _ER2)
{
int i;
double Zx, Zy;
double Zx2, Zy2; /* Zx2=Zx*Zx; Zy2=Zy*Zy */
Zx=0.0; /* initial value of orbit = critical point Z= 0 */
Zy=0.0;
Zx2=Zx*Zx;
Zy2=Zy*Zy;
for (i=0;i<iMax && ((Zx2+Zy2)<_ER2);i++)
{
Zy=2*Zx*Zy + C_y;
Zx=Zx2-Zy2 +C_x;
Zx2=Zx*Zx;
Zy2=Zy*Zy;
};
return i;
}
</syntaxhighlight>
here a short code with complex numbers:
<syntaxhighlight lang=c>
// https://gitlab.com/adammajewski/mandelbrot_wiki_ACh/blob/master/betm.c
int iterate(double complex C , int iMax)
{
int i;
double complex Z= 0.0; // initial value for iteration Z0
for(i=0;i<iMax;i++)
{
Z=Z*Z+C; // https://stackoverflow.com/questions/6418807/how-to-work-with-complex-numbers-in-c
if(cabs(Z)>EscapeRadius) break;
}
return i;
}
</syntaxhighlight>
====C++====
Here is C++ function which can be used to draw LSM/M :
<syntaxhighlight lang=Cpp>
int iterate_mandel(complex C , int imax, int bailout)
{
int i;
std::complex Z(0,0); // initial value for iteration Z0
for(i=0;i<=imax-1;i++)
{
Z=Z*Z+C; // overloading of operators
if(abs(Z)>bailout)break;
}
return i;
}
</syntaxhighlight>
I think that it can't be coded simpler (it looks better than pseudocode), but it can be coded in other way which can be executed faster .
Here is faster code :
<syntaxhighlight lang=Cpp>
// based on cpp code by Geek3
inline int fractal(double cx, double cy, int max_iters)
// gives last iteration
{
double zx = 0, zy = 0;
if (zx * zx + zy * zy > 4) return(0); // it=0
for (int it = 1; it < max_iters; it++)
{ double zx_old = zx;
zx = zx * zx - zy * zy;
zy = 2 * zx_old * zy;
zx += cx;
zy += cy;
if (zx * zx + zy * zy > 4.0) return(it);
}
return(max_iters);
}
</syntaxhighlight>
A touch more optimised :
<syntaxhighlight lang=Cpp>
// optimised from cpp code by Geek3
inline int fractal(double cReal, double cImg, int max_iters)
// gives last iteration
{
double zReal = 0, zImg = 0, zReal2 = 0, zImg2 = 0;
//iteration zero is always 0^2+0^2, it will never escape
for (int it = 1; it < max_iters; it++)
{ //because we have zReal^2 and zImg^2 pre-calculated
//we can calculate zImg first
//then we don't need to calculate/store the "old" zReal
zImg = (2 * zReal * zImg ) + cImg;
zReal = zReal2 - zImg2 + cReal;
// calculate next iteration: zReal^2 and zImg^2
// they are used twice so calculate them once
zReal2 = zReal * zReal;
zImg2 = zImg * zImg;
if (zReal2 + zImg2 > 4.0) return(it);
}
return(max_iters);
}
</syntaxhighlight>
See also :
* [https://www.youtube.com/watch?v=nkf6icQln7w Rendering The Mandelbrot Set In C++: Part 1 - Saving Images , Video by Superdavo0001]
====C++ High-Precision Perturbation CLI Renderer====
[[Image:Mandelbrot_Set_Image_106.png|thumb|Mandelbrot set fragment using perturbation theory. 4.31e-51]]
[[Image:Mandelbrot_Set_Image_107.png|thumb|Mandelbrot set fragment using perturbation theory. 2.4e-57]]
[[Image:Mandelbrot_Set_Image_108.png|thumb|Mandelbrot set fragment using perturbation theory. 1.01e-55]]
[[Image:Mandelbrot_Set_Image_109.png|thumb|Mandelbrot set fragment using perturbation theory. 7.17e-36]]
[[Image:Mandelbrot_Set_Image_110.png|thumb|Mandelbrot set fragment using perturbation theory. 1.53e-62]]
[[Image:Mandelbrot_Set_Image_111.png|thumb|Mandelbrot set fragment using perturbation theory. 2.84e-82]]
[[Image:Mandelbrot_Set_Image_112.png|thumb|Mandelbrot set fragment using perturbation theory. 1.15e-119]]
Here is a complete, highly optimized C++ implementation for high-precision rendering of the Mandelbrot set using perturbation theory, 8x8 Super-Sampling Anti-Aliasing (SSAA), and OpenMP multi-threading. Created by [[User:Aokoroko]].
<syntaxhighlight lang="cpp">
#include <atomic>
#include <cmath>
#include <cstdint>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <mpfr.h>
#include <omp.h>
using std::vector;
using std::min;
const char * CENTER_RE = "-1.99999543561201124623198345433951143502785679245726844745821388800402678499411681518036306219179273434395557574279985918047221291197081186140687781560831995";
const char * CENTER_IM = "-0.00000000000000000000000026198152173811047783694060060607013913873144250985383083459221663448338433592617272786772587281530484110756597337683912309313885172";
const char * VIEW_SIZE = "1.15e-119";
const int WIDTH = 2160;
const int HEIGHT = 2160;
const int AA = 8;
const int MAX_ITER = 50000;
const double ESCAPE_RADIUS_SQUARED = 50000.0;
const int PALETTE_FRAME = 200;
const char * OUTPUT_FILE = "Mandelbrot Set Image 112.bmp";
const mpfr_prec_t PRECISION_BITS = 1000;
struct Complex {
double re;
double im;
};
#pragma pack(push, 1)
struct BMPHeader {
uint16_t type{0x4D42};
uint32_t size{0};
uint32_t reserved{0};
uint32_t offBits{54};
uint32_t structSize{40};
int32_t width{0};
int32_t height{0};
uint16_t planes{1};
uint16_t bitCount{24};
uint32_t compression{0};
uint32_t sizeImage{0};
int32_t xPixelsPerMeter{2834};
int32_t yPixelsPerMeter{2834};
uint32_t colorsUsed{0};
uint32_t colorsImportant{0};
};
#pragma pack(pop)
int main() {
const double startTime = omp_get_wtime();
const long rawWidth = static_cast<long>(WIDTH) * AA;
const long rawHeight = static_cast<long>(HEIGHT) * AA;
mpfr_t centerRe, centerIm, zReMp, zImMp, tmp1, tmp2, viewSizeMp;
mpfr_inits2(PRECISION_BITS, centerRe, centerIm, zReMp, zImMp, tmp1, tmp2, viewSizeMp, static_cast<mpfr_ptr>(nullptr));
mpfr_set_str(centerRe, CENTER_RE, 10, MPFR_RNDN);
mpfr_set_str(centerIm, CENTER_IM, 10, MPFR_RNDN);
mpfr_set_str(viewSizeMp, VIEW_SIZE, 10, MPFR_RNDN);
const double sampleStep = mpfr_get_d(viewSizeMp, MPFR_RNDN) / rawWidth;
vector<Complex> referenceOrbit;
referenceOrbit.reserve(MAX_ITER + 200);
mpfr_set_ui(zReMp, 0, MPFR_RNDN);
mpfr_set_ui(zImMp, 0, MPFR_RNDN);
for (int iter = 0; iter <= MAX_ITER + 150; ++iter) {
Complex z{mpfr_get_d(zReMp, MPFR_RNDN), mpfr_get_d(zImMp, MPFR_RNDN)};
referenceOrbit.push_back(z);
if (z.re * z.re + z.im * z.im > ESCAPE_RADIUS_SQUARED && iter > MAX_ITER) {
break;
}
mpfr_mul(tmp1, zReMp, zImMp, MPFR_RNDN);
mpfr_sqr(tmp2, zReMp, MPFR_RNDN);
mpfr_sqr(zReMp, zImMp, MPFR_RNDN);
mpfr_sub(zReMp, tmp2, zReMp, MPFR_RNDN);
mpfr_add(zReMp, zReMp, centerRe, MPFR_RNDN);
mpfr_mul_2ui(tmp1, tmp1, 1, MPFR_RNDN);
mpfr_add(zImMp, tmp1, centerIm, MPFR_RNDN);
}
const int referenceLength = static_cast<int>(referenceOrbit.size());
mpfr_clears(centerRe, centerIm, zReMp, zImMp, tmp1, tmp2, viewSizeMp, static_cast<mpfr_ptr>(nullptr));
std::fprintf(stderr, "Reference orbit: %d points\n", referenceLength);
std::fprintf(stderr, "Precomputing skip100 matrices...\n");
vector<Complex> coeff_A(referenceLength, {1.0, 0.0});
vector<Complex> coeff_B(referenceLength, {0.0, 0.0});
vector<double> rad_R(referenceLength, 2.0);
#pragma omp parallel for
for (int i = 0; i < MAX_ITER; ++i) {
double min_r = 2.0;
for (int k = 0; k < 100; ++k) {
if (i + k >= referenceLength) break;
double r_re = referenceOrbit[i + k].re;
double r_im = referenceOrbit[i + k].im;
double abs_s = std::sqrt(r_re * r_re + r_im * r_im);
double aS = (abs_s < 2.0) ? abs_s : 0.0;
min_r = min(min_r, aS);
double next_A_re = 2.0 * (r_re * coeff_A[i].re - r_im * coeff_A[i].im);
double next_A_im = 2.0 * (r_re * coeff_A[i].im + r_im * coeff_A[i].re);
double next_B_re = 2.0 * (r_re * coeff_B[i].re - r_im * coeff_B[i].im) + 1.0;
double next_B_im = 2.0 * (r_re * coeff_B[i].im + r_im * coeff_B[i].re);
coeff_A[i].re = next_A_re; coeff_A[i].im = next_A_im;
coeff_B[i].re = next_B_re; coeff_B[i].im = next_B_im;
}
rad_R[i] = min_r;
}
const double PI = 3.14159265358979323846;
uint8_t palette[256][3];
for (int i = 0; i < 255; ++i) {
palette[i][0] = static_cast<uint8_t>(std::lround(127.0 + 127.0 * std::cos(2.0 * PI * i / 255.0)));
palette[i][1] = static_cast<uint8_t>(std::lround(127.0 + 127.0 * std::sin(2.0 * PI * i / 255.0)));
palette[i][2] = palette[i][1];
}
palette[255][0] = 255; palette[255][1] = 255; palette[255][2] = 255;
const int rowBytes = (WIDTH * 3 + 3) & ~3;
vector<uint8_t> image(static_cast<size_t>(rowBytes) * HEIGHT, 0);
std::atomic<int> completedRows{0};
const Complex * reference = referenceOrbit.data();
#pragma omp parallel for schedule(dynamic)
for (int y = 0; y < HEIGHT; ++y) {
uint8_t * row = image.data() + static_cast<size_t>(y) * rowBytes;
for (int x = 0; x < WIDTH; ++x) {
unsigned blueSum = 0; unsigned greenSum = 0; unsigned redSum = 0;
for (int sampleY = 0; sampleY < AA; ++sampleY) {
const double deltaCIm = (static_cast<long>(y) * AA + sampleY - rawHeight / 2) * sampleStep;
for (int sampleX = 0; sampleX < AA; ++sampleX) {
const double deltaCRe = (static_cast<long>(x) * AA + sampleX - rawWidth / 2) * sampleStep;
double deltaRe = 0.0; double deltaIm = 0.0;
double zRe = 0.0; double zIm = 0.0;
int referenceIndex = 0;
int iter = 0;
while (iter < MAX_ITER) {
if (zRe * zRe + zIm * zIm >= ESCAPE_RADIUS_SQUARED) {
break;
}
double eps_abs2 = deltaRe * deltaRe + deltaIm * deltaIm;
double limit_r2 = 1e-60 * rad_R[referenceIndex] * rad_R[referenceIndex];
if (eps_abs2 < limit_r2 && (referenceIndex + 100 < referenceLength - 1) && (iter + 100 < MAX_ITER)) {
double backup_deltaRe = deltaRe; double backup_deltaIm = deltaIm;
int backup_refIdx = referenceIndex; int backup_iter = iter;
double next_eps_re = (coeff_A[referenceIndex].re * deltaRe - coeff_A[referenceIndex].im * deltaIm) +
(coeff_B[referenceIndex].re * deltaCRe - coeff_B[referenceIndex].im * deltaCIm);
double next_eps_im = (coeff_A[referenceIndex].re * deltaIm + coeff_A[referenceIndex].im * deltaRe) +
(coeff_B[referenceIndex].re * deltaCIm + coeff_B[referenceIndex].im * deltaCRe);
deltaRe = next_eps_re; deltaIm = next_eps_im;
referenceIndex += 100; iter += 100;
zRe = reference[referenceIndex].re + deltaRe;
zIm = reference[referenceIndex].im + deltaIm;
if (zRe * zRe + zIm * zIm >= ESCAPE_RADIUS_SQUARED) {
deltaRe = backup_deltaRe; deltaIm = backup_deltaIm;
referenceIndex = backup_refIdx; iter = backup_iter;
} else {
continue;
}
}
const double a = 2.0 * reference[referenceIndex].re + deltaRe;
const double b = 2.0 * reference[referenceIndex].im + deltaIm;
const double nextDeltaRe = a * deltaRe - b * deltaIm + deltaCRe;
deltaIm = a * deltaIm + b * deltaRe + deltaCIm;
deltaRe = nextDeltaRe;
++referenceIndex; ++iter;
zRe = reference[referenceIndex].re + deltaRe;
zIm = reference[referenceIndex].im + deltaIm;
if (zRe * zRe + zIm * zIm < deltaRe * deltaRe + deltaIm * deltaIm || referenceIndex == referenceLength - 1) {
deltaRe = zRe; deltaIm = zIm; referenceIndex = 0;
}
}
const int remaining = MAX_ITER - iter;
const uint8_t colorIndex = (remaining == 0) ? 255 : static_cast<uint8_t>(remaining % 254);
const int paletteIndex = (colorIndex == 255) ? 255 : (colorIndex - PALETTE_FRAME + 255) % 255;
blueSum += palette[paletteIndex][0];
greenSum += palette[paletteIndex][1];
redSum += palette[paletteIndex][2];
}
}
const int samples = AA * AA;
row[x * 3 + 0] = static_cast<uint8_t>(blueSum / samples);
row[x * 3 + 1] = static_cast<uint8_t>(greenSum / samples);
row[x * 3 + 2] = static_cast<uint8_t>(redSum / samples);
}
const int done = ++completedRows;
if (done % 50 == 0 || done == HEIGHT) {
std::fprintf(stderr, "\rProgress: %d/%d rows (%.1f%%)", done, HEIGHT, 100.0 * done / HEIGHT);
}
}
BMPHeader header;
header.width = WIDTH; header.height = HEIGHT;
header.sizeImage = static_cast<uint32_t>(image.size());
header.size = header.sizeImage + 54;
FILE * file = std::fopen(OUTPUT_FILE, "wb");
if (!file) { std::perror(OUTPUT_FILE); return 1; }
std::fwrite(&header, sizeof header, 1, file);
std::fwrite(image.data(), 1, image.size(), file);
std::fclose(file);
std::fprintf(stderr, "\nDone: \"%s\" saved in %.1f s\n", OUTPUT_FILE, omp_get_wtime() - startTime);
return 0;
}
</syntaxhighlight>
See the full project and compiled releases on the official [https://github.com/Divetoxx/Mandelbrot Mandelbrot CLI GitHub repository].
* [https://rosettacode.org/wiki/Mandelbrot_set#Perturbation_Theory C++ Perturbation Theory Optimization] showcased in the global algorithm repository on Rosetta Code.
====GLSL====
* [[Fractals/shadertoy#LSM|shadertoy]]
====Java ====
<syntaxhighlight lang="java">
//Java code by Josef Jelinek
// http://java.rubikscube.info/
int mandel(double cx, double cy) {
double zx = 0.0, zy = 0.0;
double zx2 = 0.0, zy2 = 0.0;
int iter = 0;
while (iter < iterMax && zx2 + zy2 < 4.0) {
zy = 2.0 * zx * zy + cy;
zx = zx2 - zy2 + cx;
zx2 = zx * zx;
zy2 = zy * zy;
iter++;
}
return iter;
}
</syntaxhighlight>
====Java Script====
Here is JavaScript function which does not give last iteration but LastIteration modulo maxCol. It makes colour cycling ( if maxCol < maxIt ).
<syntaxhighlight lang="javascript">
function iterate(Cr,Ci) {
// JavaScript function by Evgeny Demidov
// http://www.ibiblio.org/e-notes/html5/fractals/mandelbrot.htm
var I=0, R=0, I2=0, R2=0, n=0;
if (R2+I2 > max) return 0;
do { I=(R+R)*I+Ci; R=R2-I2+Cr; R2=R*R; I2=I*I; n++;
} while ((R2+I2 < max) && (n < maxIt) );
if (n == maxIt) return maxCol; else return n % maxCol;
}
</syntaxhighlight>
Above functions do not use explicit definition of [[w:complex number|complex number]].
====Khan Academy====
* [https://www.khanacademy.org/computer-programming/mandelbrot-set/1274517860 khan academy mandelbrot-set]
====Lisp program ====
Whole Lisp program making ASCII graphic based on code by [http://www.frank-buss.de/ Frank Buss]
<ref>[http://groups.google.com/group/comp.lang.lisp/msg/dd505fd509fc8512 LIsp Program by Frank Buss]</ref>
<ref>[http://bc.tech.coop/blog/040811.html Mandelbrot Set ASCII art at Bill Clementson's blog]</ref>
<syntaxhighlight lang=lisp>
; common lisp
(loop for y from -1.5 to 1.5 by 0.1 do
(loop for x from -2.5 to 0.5 by 0.04 do
(let* ((i 0)
(z (complex x y))
(c z))
(loop while (< (abs
(setq z (+ (* z z) c)))
2)
while (< (incf i) 32))
(princ (code-char (+ i 32))))) ; ASCII chars <= 32 contains non-printing characters
(format t "~%"))
</syntaxhighlight>
====MathMap plugin for [[GIMP|Gimp]]====
<pre>
filter mandelbrot (gradient coloration)
c=ri:(xy/xy:[X,X]*1.5-xy:[0.5,0]);
z=ri:[0,0]; # initial value z0 = 0
# iteration of z
iter=0;
while abs(z)<2 && iter<31
do
z=z*z+c; # z(n+1) = fc(zn)
iter=iter+1
end;
coloration(iter/32) # color of pixel
end
</pre>
====Pov-Ray====
Pov-Ray has a built-in function mandel<ref>[http://www.povray.org/documentation/view/3.6.1/377/ mandel function from 2.5.11.14 Fractal Patterns at Pov-Ray docs]</ref>
====Wolfram Mathematica====
Here is [http://www.bugman123.com/Fractals/index.html code by Paul Nylander]
===Level Curves of escape time Method = LCM/M===
[[Image:LCMM.jpg|right|thumb|edge detection of Level sets]]
[[Image:Lemniscates5.png|thumb|right|Lemniscates of Mandelbrot set]]
Lemniscates are boundaries of Level Sets of escape time ( LSM/M ). They can be drawn using :
* edge detection of Level sets.
** Algorithm described in paper by M. Romera et al.<ref>[http://www.iec.csic.es/~miguel/Preprint3.ps Drawing the Mandelbrot set by the method of escape lines. M. Romera et al.]</ref> This method is fast and allows looking for high iterations.
*boundary trace<ref>http://www.metabit.org/~rfigura/figura-fractal/math.html boundary trace by Robert Figura</ref>
* drawing curves <math>L_n(T)=\{c: abs(z_n)=ER \}\,</math>, see [[:Image:Lemniscates5.png| explanation and source code]]. This method is very complicated for iterations > 5.
===Decomposition of target set for Mandelbrot set drawing===
Decomposition is modification of escape time algorithm.
The '''target set''' is divided into parts (2 or more).
Very large escape radius is used, for example ER = 12.
====Binary decomposition of LSM/M====
[[Image:Mandel_bd.png|thumb|binary decomposition: image with full code in C]]
Here target set <math>T\,</math> on dynamic plane is divided into 2 parts (binary decomposition = 2-decomposition ):
* upper half ( white) <math>T_u = \{ z : |z| > ER ~~\mbox{and}~~ Im (z) > 0\}\,</math>
* lower half (black) <math>T_l = \{ z : |z| > ER ~~\mbox{and}~~ Im (z) \le 0 \}\,</math>
Division of target set induces decomposition of level sets <math>L_n\,</math> into <math>2^{n+1}\,</math> parts ( cells, subsets):
* <math>L_{n,u} =\{ c: |z_n| > ER ~~\mbox{and}~~ Im (z_n) > 0 \}\,</math> which is colored white,
* <math>L_{n,l} = \{ c : |z_n| > ER ~~\mbox{and}~~ Im (z_n) \le 0 \}\,</math> which is colored black.
"The Level Sets and Field Lines are superimposed, creating a sort of grid, and the "squares" of the grid are filled with N-digit binary numbers giving the first N binary digits of the external angles of field lines passing through the square. (Alternately, only the Nth binary digit is used.) Each level set is divided into 2n squares. It is easy to "read" the external arguments of points in the boundary of the Mandelbrot Set using a binary decomposition." Robert P. Munafo
For binary decomposition use exp(pi) as escape radius, so that the boxes appear square (a tip from mrob).
External rays of angles (measured in turns):
<math>angle = (k / 2^n ) ~~\mbox{mod }~1\,</math>
can be seen as borders of subsets.
Difference between binary decomposition algorithm and Mandel or LSM/M is in only in part of instruction , which computes pixel color of exterior of Mandelbrot set. In binary decomposition is :
<syntaxhighlight lang=C>
if (Iteration==IterationMax)
{ /* interior of Mandelbrot set = black */
color[0]=0;
color[1]=0;
color[2]=0;
}
/* exterior of Mandelbrot set = LSM */
else if (Zy>0)
{
color[0]=0; /* Red */
color[1]=0; /* Green */
color[2]=0; /* Blue */
}
else
{
color[0]=255; /* Red */
color[1]=255; /* Green */
color[2]=255; /* Blue */
};
</syntaxhighlight>
also GLSL code from [[Fractals/fragmentarium|Fragmentarium]] :
<syntaxhighlight lang=GLSL>
#include "2D.frag"
#group Simple Mandelbrot
// maximal number of iterations
uniform int iMax; slider[1,100,1000] // increase iMax
// er2= er^2 wher er= escape radius = bailout
uniform float er2; slider[4.0,1000,10000] // increase er2
// compute color of pixel
vec3 color(vec2 c) {
vec2 z = vec2(0.0); // initial value
// iteration
for (int i = 0; i < iMax; i++) {
z = vec2(z.x*z.x-z.y*z.y,2*z.x*z.y) + c; // z= z^2+c
if (dot(z,z)> er2) // escape test
// exterior
if (z.x>0){ return vec3( 1.0);} // upper part of the target set
else return vec3(0.0); //lower part of the target set
}
return vec3(0.0); //interior
}
</syntaxhighlight>
<syntaxhighlight lang=GLSL>
// zoomasm -- zoom video assembler
// (c) 2019,2020,2021,2022 Claude Heiland-Allen
// SPDX-License-Identifier: AGPL-3.0-only
// recommended KF bailout settings: linear smoothing, custom radius 25
vec3 colour(void)
{
if (getInterior())
{
return vec3(1.0, 0.0, 0.0);
}
bool decomp = getT() < 0.5;
return vec3(decomp ? 0.0 : 1.0);
}
</syntaxhighlight>
Point c is plotting white or black if [[w:complex number|imaginary value]] of last iteration ( Zy) is positive or negative.<ref>http://web.archive.org/20010415125044/www.geocities.com/CapeCanaveral/Launchpad/5113/fr27.htm| An open letter to Dr. Meech from Joyce Haslam in FRACTAL REPORT 27</ref>
==== nth-decomposition ====
This method is extension of binary decomposition.
The target set T = { z : |zn| > R } with a very large escape radius ( for example R = 12 ) is divided into more than 2 parts ( for example 8).<ref>[http://fraktal.republika.pl/mset_decomposition.html mandelbrot set n-th-decomposition ]</ref>
===Real Escape Time===
Other names of this method/algorithm are :
* the fully-renormalized fractional iteration count ( by Linas Vepstas in 1997)<ref>[http://linas.org/art-gallery/escape/escape.html linas.org : Renormalizing the Mandelbrot Escape]</ref>
* smooth iteration count for generalized Mandelbrot sets ( by Inigo Quilez in 2016)<ref>[http://www.iquilezles.org/www/articles/mset_smooth/mset_smooth.htm I Quilez : mset_smooth]</ref>
* continuous iteration count for the Mandelbrot set
* Normalized Iteration Count Algorithm
* Continuous coloring
* smooth colour gradient
* fractional iterations
* fractional escape time
Here color of exterior of Mandelbrot set is proportional not to Last Iteration ( which is integer number) but to real number :
: <math>\nu(z) = \lim_{i \to \infty} (i - \log_2 \log_2 |z_i|)\,</math>
Other methods and speedups
Colouring formula in Ultrafractal :<ref>[http://www.fractalforums.com/programming/what-rangeprecision-for-fractional-escape-counts-for-mandelbrotjulia-sets/ fractalforums : What range/precision for fractional escape counts for Mandelbrot/Julia sets? ]</ref>
smooth iter = iter + 1 + ( log(log(bailout)-log(log(cabs(z))) )/log(2)
where :
* log(log(bailout) can be precalculated
*
====theory====
Description by Claude :
'''First description :'''
If R is large, the first z to escape satisfies (approximately)<ref>[https://fractalforums.org/noobs-corner/76/gradient-pallet-with-two-colors/4498 fractalforums : gradient-pallet-with-two-colors]</ref>
<math>R < |z| < R^p</math>
so taking logs
<math>\log(R) < \log(|z|) < p \log(R)</math>
so taking logs again
<math>\log(\log(R)) < \log(\log(|z|)) < \log(p) + \log(\log(R))</math>
so by algebra
<math>0 < \frac{\log(\log(|z|)) - \log(\log(R))}{\log(p)} < 1</math>
when <math>|z|</math> at escape is bigger, the smooth iteration count should be smaller, so this value needs to be subtracted from the integer iteration count
Alternatively this fraction can be used for interpolation, or used with arg(z) for exterior tiling / binary decomposition.
'''Second description'''<ref>[https://fractalforums.org/programming/11/can-anyone-help-me-understand-smooth-coloring/4597/msg37885 fractalforums.org : can-anyone-help-me-understand-smooth-coloring]</ref>
pick a radius R > 2, then |Z| > R implies that |Z^2 + C| > |Z| and more generally that |Z| -> infinity, this gives R the name escape radius. proof is on math.stackexchange.com somewhere
now suppose R is large, and n is the first iteration where |Z_n| > R.
consider what happens when |Z_n| increases as you move the point C a bit further from the Mandelbrot set boundary.
eventually |Z_n| > R^2, but then |Z_{n-1}| > R, so the iteration count should be n - 1.
for smoothing, we want a value to add to n that is 0 when |Z_n| = R and -1 when |Z_n| = R^2.
taking logs, get log |Z| is between log(R) and 2 log(R)
taking logs again, get log log |Z| is between log log R and log log R + log 2
dividing by log 2, get log_2 log |Z| is between log_2 log R and log_2 log R + 1
subtracting log_2 log R gives (log_2 log |Z| - log_2 log R) is between 0 and 1
negating it gives a value between 0 and -1, as desired
so the smooth iteration count is
<math>n - (log_2 log |Z| - log_2 log R)</math>
(replace 2 by P if you do Z^P + C)
see also http://linas.org/art-gallery/escape/escape.html which makes a value independent of R, but that is not so useful for some colouring algorithms (e.g. smooth part of escape count doesn't align with angle of final iterate)
====C====
To use log2 function add :
<nowiki> #include <math.h> </nowiki>
at the beginning of program.
<syntaxhighlight lang=C>
if (Iteration==IterationMax)
{ /* interior of Mandelbrot set = black */
color[0]=0;
color[1]=0;
color[2]=0;
}
/* exterior of Mandelbrot set */
else GiveRainbowColor((double)(Iteration- log2(log2(sqrt(Zx2+Zy2))))/IterationMax,color);
</syntaxhighlight>
where :
* Zx2 = Zx*Zx
* Zy2 = Zy*Zy
Here is another version by Tony Finch<ref>[http://dotat.at/prog/mandelbrot/ Making Mandelbrot Set Movies by Tony Finch]</ref>
<syntaxhighlight lang=C>
while (n++ < max &&
x2+y2 < inf) {
y = 2*x*y + b;
x = x2-y2 + a;
y2 = y*y;
x2 = x*x;
}
nu = n - log(log(x2+y2)/2)/ log(2);
</syntaxhighlight >
based on equation <ref>[http://linas.org/art-gallery/escape/escape.html Linas Vepstas. Renormalizing the mandelbrot escape.]</ref>
: <math>\nu(z) = n - \log_2 \log (z_n)\,</math>
====C++====
<syntaxhighlight lang=cpp>
// based on cpp code by Geek3 from http://en.wikibooks.org/wiki/File:Mandelbrot_set_rainbow_colors.png
sqrxy = x * x + y * y;
double m = LastIteration + 1.5 - log2(log2(sqrxy));
</syntaxhighlight>
====java====
<syntaxhighlight lang=java>
/**
Smooth coloring algorithm
https://gitlab.com/shreyas.siravara/mandelbrot-with-smooth-coloring/blob/master/Mandelbrot.java
Mandelbrot with Smooth Coloring by Shreyas Siravara
*/
double nsmooth = (iterations + 1 - Math.log(Math.log(Zn.getMagnitude())) / Math.log(ESCAPE_RADIUS));
double smoothcolor = nsmooth / MAX_ITERATIONS;
if (iterations < MAX_ITERATIONS) {
int rgb = Color.HSBtoRGB((float) (0.99f + 1.9 * smoothcolor), 0.9f, 0.9f);
g2d.setColor(new Color(rgb));
} else {
g2d.setColor(Color.black.darker());
}
</syntaxhighlight>
====Matemathica====
Here is [http://www.bugman123.com/Fractals/index.html code by Paul Nylander]. It uses different formula :
<math>cet = n + log_2ln(R) - log_2ln|z|</math>
====Python====
Python code using mpmath library<ref>[http://code.google.com/p/mpmath/ mpmath Python library]</ref>
<syntaxhighlight lang=python>
def mandelbrot(z):
c = z
for i in xrange(ITERATIONS):
zprev = z
z = z*z + c
if abs(z) > ESCAPE_RADIUS:
return ctx.exp(1j*(i + 1 - ctx.log(ctx.log(abs(z)))/ctx.log(2)))
return 0
</syntaxhighlight>
==Distance estimation DEM/M==
<gallery>
File:Demm_2000_Mandelbrot_set.jpg|Exterior DEM/M
File:Boundary mandelbrot set.png|simple boundary with DEM/M
File:Mandelbrot DEM Sobel.png|Boundary with DEM/M and Sobel filter
</gallery>
Variants :
* exterior DEM/M
* interior DEM/M
[[Fractals/Iterations in the complex plane/demm|Description]]
==Complex potential==
[[Fractals/Iterations_in_the_complex_plane/MandelbrotSetExteriorComplex_potential|Description]]
=See also=
* https://web.archive.org/web/20071008112609/http://rgba.scenesp.org/iq/trastero/fieldlines/
* http://fraktal.republika.pl/mset_bottcher.html
=References=
<references/>
{{BookCat}}
9wievjvmh2kbka3g5f8u2ozqrckt6li
4656279
4656270
2026-08-04T18:13:21Z
Aokoroko
3059689
/* C++ High-Precision Perturbation CLI Renderer */
4656279
wikitext
text/x-wiki
[[Fractals/color_mandelbrot|Colouring]] of exterior of Mandelbrot set can be :
* non-smooth = Escape Time = dwell
** Boolean/binary Escape Time Method ( bETM/M )
** discrete = Level Set Method = LSM/M = integer ETM = iETM/M
* Smooth :
** radial measures
*** Real Escape Time Method( rETM/M )
*** Distance Estimation Method( DEM/M )
*** radius of complex potential = Complex Potential Method ( CPM/M )
** angular measures
*** argument of complex potential
*** SAC = stripe average coloring
*** other
**** "triangle inequality"<ref>[http://www.hiddendimension.com/fractalmath/divergent_fractals_main.html Mathematics of Divergent Fractals by ]</ref><ref>[http://jussiharkonen.com/gallery/coloring-techniques/ jussi harkonen : coloring-techniques]</ref>
**** Orbit trap <ref>[[w:Orbit trap|wikipedia : Orbit trap]]</ref><ref>[https://www.youtube.com/watch?v=tnMNamKPy6k Mandelbrot Orbit Trap Rendering! Programming How-To Video by DKM101]</ref>
One can also draw curves :
* external rays
* equipotential lines ( closed curves - quasi circles)
Similar projects:
* [http://mathr.co.uk/blog/2014-03-06_mandelbrot_notebook.html Mandelbrot Notebook by Claude Heiland-Allen ]
** [https://code.mathr.co.uk/mandelbrot-book mandelbrot-book]
** [https://gitlab.com/adammajewski/mandelbrot-book_book mandelbrot-book/book : one file c programs , images and description]
** [https://gitlab.com/adammajewski/my-book fork of the mandelbrot-book] and [https://gitlab.com/adammajewski/git-book-pdf book in pdf format]
* [https://www.math.univ-toulouse.fr/~cheritat/wiki-draw/index.php/Main_Page different drawing techniques and algorithms by Arnaud Cheritat ]
** [https://www.math.univ-toulouse.fr/~cheritat/wiki-draw/index.php/Mandelbrot_set Mandelbrot set] and [https://gitlab.com/adammajewski/mandelbrot_wiki_ACh example C programs ( not by A Cheritat)]
* Linas Vepstas' Art Gallery:
** [http://linas.org/art-gallery/index.html original site]
** [https://gitlab.com/adammajewski/LinasArtGallery_MandelbrotSet fork at gitlab]
=='''Escape time''' or dwell==
Here for given point c on parameter plane one checks how critical point <math> z = 0.0 </math> behaves on dynamical plane under [[Fractals/Iterations in the complex plane/q-iterations#Forward iteration|forward iteration]]. If you change initial point you will get different result <ref>[http://mathesim.degruyter.de/jws_en/show_simulation.php?id=1052&type=RoessMa&lang=en Java program by Dieter Röß showing result of changing initial point of Mandelbrot iterations]</ref>
To draw given plane one needs to [[Fractals/Computer graphic techniques/2D#Scanning|check/scan]] (all) its points. See [[Fractals/Iterations in the complex plane/Mandelbrot set#Period detection|here for more details ( optimisation)]]
Read [[Fractals/Iterations in the complex plane/def cqp|definitions]] first.
===How to find the number of iterations required to escape the mandelbrot set ?===
* [https://math.stackexchange.com/questions/4056809/is-there-an-equation-for-the-number-of-iterations-required-to-escape-the-mandelb/4059340 math.stackexchange question: is-there-an-equation-for-the-number-of-iterations-required-to-escape-the-mandelb]
* [https://math.stackexchange.com/questions/16970/a-way-to-determine-the-ideal-number-of-maximum-iterations-for-an-arbitrary-zoom?rq=1 math.stackexchange question: a-way-to-determine-the-ideal-number-of-maximum-iterations-for-an-arbitrary-zoom?]
===Boolean escape time ===
This algorithm answers the question: “For which values of c will the Julia fractal, J(c), be line-like and for which dust-like?”<ref>[https://www.ntg.nl/maps/45/03.pdf Julia fractals in PostScript by Kees van der Laan, EUROTEX 2012 & 6CM PROCEEDINGS 47]</ref>
Here complex plane consists of 2 sets : Mandelbrot set <math>M\,</math> and its complement <math>M^c\,</math> :
<math>\mathbb{C}= M \cup M^c</math>
====ASCI graphic ( on screen) ====
[[File:Mandel.png|right|thumb|ASCI graphic : Boolean escape time in text mode]]
<syntaxhighlight lang=c>
// http://mrl.nyu.edu/~perlin/
main(k){float i,j,r,x,y=-16;while(puts(""),y++<15)for(x
=0;x++<84;putchar(" .:-;!/>)|&IH%*#"[k&15]))for(i=k=r=0;
j=r*r-i*i-2+x/25,i=2*r*i+y/10,j*j+i*i<11&&k++<111;r=j);}
</syntaxhighlight>
<syntaxhighlight lang=haskell>
-- Haskell code by Ochronus
-- http://blog.mostof.it/mandelbrot-set-in-ruby-and-haskell/
import Data.Complex
mandelbrot a = iterate (\z -> z^2 + a) a !! 500
main = mapM_ putStrLn [[if magnitude (mandelbrot (x :+ y)) < 2 then '*' else ' '
| x <- [-2, -1.9685 .. 0.5]]
| y <- [1, 0.95 .. -1]]
</syntaxhighlight>
<syntaxhighlight lang=lisp>
; common lisp
(loop for y from -1.5 to 1.5 by 0.05 do
(loop for x from -2.5 to 0.5 by 0.025 do
(let* ((c (complex x y)) ; parameter
(z (complex 0 0))
(iMax 20) ; maximal number of iterations
(i 0)) ; iteration number
(loop while (< i iMax ) do
(setq z (+ (* z z) c)) ; iteration
(incf i)
(when (> (abs z) 2) (return i)))
; color of pixel
(if (= i iMax) (princ (code-char 42)) ; inside M
(princ (code-char 32))))) ; outside M
(format t "~%")) ; new line
</syntaxhighlight>
Comparison programs in various languages <ref>[http://www.timestretch.com/tag/mandelbrot Fractal Benchmark by Erik Wrenholt]</ref><ref>[http://www.righto.com/2015/03/12-minute-mandelbrot-fractals-on-50.html 12-minute Mandelbrot: fractals on a 50 year old IBM 1401 mainframe]</ref>
==== Graphic file ( PPM ) ====
Here are various programs for creating pbm file <ref>[https://benchmarksgame-team.pages.debian.net/benchmarksgame/description/mandelbrot.html#mandelbrotThe Computer Language Benchmarks Game ]</ref>
* GLSL using [[Fractals/shadertoy#Boolean escape time|shadertoy]]
* short c programs by ed Burke<ref>[https://batchloaf.wordpress.com/2016/02/13/example-code-from-presentation-ways-of-seeing-julia-sets/ example-code-from-presentation-ways-of-seeing-julia-sets by ed Burke]</ref>
=====C=====
This is complete code of C one file program.
*It makes a ppm file which consists an image. To see the file (image) use external application ( graphic viewer).
*Program consists of 3 loops:
** iY and iX, which are used to scan rectangle area of parameter plane
**iterations.
For each point of screen (iX,iY) it's complex value is computed c=cx+cy*i.
For each point c is computed iterations of critical point <math>z_0 = z_{cr} = 0 \,</math>
It uses some [[Fractals/Iterations in the complex plane/Mandelbrot set#Speed improvements - optimisation|speed_improvement]]. Instead of checking :
sqrt(Zx2+Zy2)<ER
it checks :
(Zx2+Zy2)<ER2 // ER2 = ER*ER
It gives the same result but is faster.
<syntaxhighlight lang=C>
/*
c program:
--------------------------------
1. draws Mandelbrot set for Fc(z)=z*z +c
using Mandelbrot algorithm ( boolean escape time )
-------------------------------
2. technique of creating ppm file is based on the code of Claudio Rocchini
http://en.wikipedia.org/wiki/Image:Color_complex_plot.jpg
create 24 bit color graphic file , portable pixmap file = PPM
see http://en.wikipedia.org/wiki/Portable_pixmap
to see the file use external application ( graphic viewer)
*/
#include <stdio.h>
#include <math.h>
int main()
{
/* screen ( integer) coordinate */
int iX,iY;
const int iXmax = 800;
const int iYmax = 800;
/* world ( double) coordinate = parameter plane*/
double Cx,Cy;
const double CxMin=-2.5;
const double CxMax=1.5;
const double CyMin=-2.0;
const double CyMax=2.0;
/* */
double PixelWidth=(CxMax-CxMin)/iXmax;
double PixelHeight=(CyMax-CyMin)/iYmax;
/* color component ( R or G or B) is coded from 0 to 255 */
/* it is 24 bit color RGB file */
const int MaxColorComponentValue=255;
FILE * fp;
char *filename="new1.ppm";
char *comment="# ";/* comment should start with # */
static unsigned char color[3];
/* Z=Zx+Zy*i ; Z0 = 0 */
double Zx, Zy;
double Zx2, Zy2; /* Zx2=Zx*Zx; Zy2=Zy*Zy */
/* */
int Iteration;
const int IterationMax=200;
/* bail-out value , radius of circle ; */
const double EscapeRadius=2;
double ER2=EscapeRadius*EscapeRadius;
/*create new file,give it a name and open it in binary mode */
fp= fopen(filename,"wb"); /* b - binary mode */
/*write ASCII header to the file*/
fprintf(fp,"P6\n %s\n %d\n %d\n %d\n",comment,iXmax,iYmax,MaxColorComponentValue);
/* compute and write image data bytes to the file*/
for(iY=0;iY<iYmax;iY++)
{
Cy=CyMin + iY*PixelHeight;
if (fabs(Cy)< PixelHeight/2) Cy=0.0; /* Main antenna */
for(iX=0;iX<iXmax;iX++)
{
Cx=CxMin + iX*PixelWidth;
/* initial value of orbit = critical point Z= 0 */
Zx=0.0;
Zy=0.0;
Zx2=Zx*Zx;
Zy2=Zy*Zy;
/* */
for (Iteration=0;Iteration<IterationMax && ((Zx2+Zy2)<ER2);Iteration++)
{
Zy=2*Zx*Zy + Cy;
Zx=Zx2-Zy2 +Cx;
Zx2=Zx*Zx;
Zy2=Zy*Zy;
};
/* compute pixel color (24 bit = 3 bytes) */
if (Iteration==IterationMax)
{ /* interior of Mandelbrot set = black */
color[0]=0;
color[1]=0;
color[2]=0;
}
else
{ /* exterior of Mandelbrot set = white */
color[0]=255; /* Red*/
color[1]=255; /* Green */
color[2]=255;/* Blue */
};
/*write color to the file*/
fwrite(color,1,3,fp);
}
}
fclose(fp);
return 0;
}
</syntaxhighlight >
===Integer escape time = LSM/M = dwell bands===
<gallery>
File:Mandelbrot seq.png|Number of details is proportional to maximal number of iterations
File:Animation of the growth of the Mandelbrot set as you iterate towards infinity.gif|Mandelbrot animation based on a static number of iterations per pixel. Here you can see why '''offset''' is sometimes used ( because - color gradient changes : for high MaxIteration disapears.
</gallery>
Here color is proportional to last iteration ( of final_n, final iteration).<ref>[http://plus.maths.org/content/computing-mandelbrot-set Computing the Mandelbrot set by Andrew Williams]</ref>
This is also called [[w:Level Set Method|Level Set Method]] ( LSM )
<math>L_n= \{ c : z_n \in T ~~\mbox{and} ~~ z_k \notin T ~~\mbox{where}~~ k<n \}\,</math>
====C====
[[Image:Mandel_lsm_bw.jpg|thumb|LSM/M image with full code in C]]
Difference between Mandelbrot algorithm and LSM/M is in only in part instruction, which computes pixel color of exterior of Mandelbrot set. In LSM/M is :
<syntaxhighlight lang=C>
if (Iteration==IterationMax)
{ /* interior of Mandelbrot set = black */
color[0]=0;
color[1]=0;
color[2]=0;
}
/* exterior of Mandelbrot set = LSM */
else if ((Iteration%2)==0)
{ /* even number = black */
color[0]=0; /* Red */
color[1]=0; /* Green */
color[2]=0; /* Blue */
}
else
{/* odd number = white */
color[0]=255; /* Red */
color[1]=255; /* Green */
color[2]=255; /* Blue */
};
</syntaxhighlight>
Here is [[w:C (programming language)|C]] function whithout explicit complex numbers, only doubles:
<syntaxhighlight lang="c">
int GiveEscapeTime(double C_x, double C_y, int iMax, double _ER2)
{
int i;
double Zx, Zy;
double Zx2, Zy2; /* Zx2=Zx*Zx; Zy2=Zy*Zy */
Zx=0.0; /* initial value of orbit = critical point Z= 0 */
Zy=0.0;
Zx2=Zx*Zx;
Zy2=Zy*Zy;
for (i=0;i<iMax && ((Zx2+Zy2)<_ER2);i++)
{
Zy=2*Zx*Zy + C_y;
Zx=Zx2-Zy2 +C_x;
Zx2=Zx*Zx;
Zy2=Zy*Zy;
};
return i;
}
</syntaxhighlight>
here a short code with complex numbers:
<syntaxhighlight lang=c>
// https://gitlab.com/adammajewski/mandelbrot_wiki_ACh/blob/master/betm.c
int iterate(double complex C , int iMax)
{
int i;
double complex Z= 0.0; // initial value for iteration Z0
for(i=0;i<iMax;i++)
{
Z=Z*Z+C; // https://stackoverflow.com/questions/6418807/how-to-work-with-complex-numbers-in-c
if(cabs(Z)>EscapeRadius) break;
}
return i;
}
</syntaxhighlight>
====C++====
Here is C++ function which can be used to draw LSM/M :
<syntaxhighlight lang=Cpp>
int iterate_mandel(complex C , int imax, int bailout)
{
int i;
std::complex Z(0,0); // initial value for iteration Z0
for(i=0;i<=imax-1;i++)
{
Z=Z*Z+C; // overloading of operators
if(abs(Z)>bailout)break;
}
return i;
}
</syntaxhighlight>
I think that it can't be coded simpler (it looks better than pseudocode), but it can be coded in other way which can be executed faster .
Here is faster code :
<syntaxhighlight lang=Cpp>
// based on cpp code by Geek3
inline int fractal(double cx, double cy, int max_iters)
// gives last iteration
{
double zx = 0, zy = 0;
if (zx * zx + zy * zy > 4) return(0); // it=0
for (int it = 1; it < max_iters; it++)
{ double zx_old = zx;
zx = zx * zx - zy * zy;
zy = 2 * zx_old * zy;
zx += cx;
zy += cy;
if (zx * zx + zy * zy > 4.0) return(it);
}
return(max_iters);
}
</syntaxhighlight>
A touch more optimised :
<syntaxhighlight lang=Cpp>
// optimised from cpp code by Geek3
inline int fractal(double cReal, double cImg, int max_iters)
// gives last iteration
{
double zReal = 0, zImg = 0, zReal2 = 0, zImg2 = 0;
//iteration zero is always 0^2+0^2, it will never escape
for (int it = 1; it < max_iters; it++)
{ //because we have zReal^2 and zImg^2 pre-calculated
//we can calculate zImg first
//then we don't need to calculate/store the "old" zReal
zImg = (2 * zReal * zImg ) + cImg;
zReal = zReal2 - zImg2 + cReal;
// calculate next iteration: zReal^2 and zImg^2
// they are used twice so calculate them once
zReal2 = zReal * zReal;
zImg2 = zImg * zImg;
if (zReal2 + zImg2 > 4.0) return(it);
}
return(max_iters);
}
</syntaxhighlight>
See also :
* [https://www.youtube.com/watch?v=nkf6icQln7w Rendering The Mandelbrot Set In C++: Part 1 - Saving Images , Video by Superdavo0001]
====C++ High-Precision Perturbation CLI Renderer====
[[Image:Mandelbrot_Set_Image_106.png|thumb|Mandelbrot set fragment using perturbation theory. 4.31e-51]]
[[Image:Mandelbrot_Set_Image_107.png|thumb|Mandelbrot set fragment using perturbation theory. 2.4e-57]]
[[Image:Mandelbrot_Set_Image_108.png|thumb|Mandelbrot set fragment using perturbation theory. 1.01e-55]]
[[Image:Mandelbrot_Set_Image_109.png|thumb|Mandelbrot set fragment using perturbation theory. 7.17e-36]]
[[Image:Mandelbrot_Set_Image_110.png|thumb|Mandelbrot set fragment using perturbation theory. 1.53e-62]]
[[Image:Mandelbrot_Set_Image_111.png|thumb|Mandelbrot set fragment using perturbation theory. 2.84e-82]]
[[Image:Mandelbrot_Set_Image_112.png|thumb|Mandelbrot set fragment using perturbation theory. 1.15e-119]]
Here is a complete, highly optimized C++ implementation for high-precision rendering of the Mandelbrot set using perturbation theory, 8x8 Super-Sampling Anti-Aliasing (SSAA), and OpenMP multi-threading. The calculation can be performed significantly faster by using bilinear approximation. Created by [[User:Aokoroko]].
<syntaxhighlight lang="cpp">
#include <atomic>
#include <cmath>
#include <cstdint>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <mpfr.h>
#include <omp.h>
using std::vector;
using std::min;
const char * CENTER_RE = "-1.99999543561201124623198345433951143502785679245726844745821388800402678499411681518036306219179273434395557574279985918047221291197081186140687781560831995";
const char * CENTER_IM = "-0.00000000000000000000000026198152173811047783694060060607013913873144250985383083459221663448338433592617272786772587281530484110756597337683912309313885172";
const char * VIEW_SIZE = "1.15e-119";
const int WIDTH = 2160;
const int HEIGHT = 2160;
const int AA = 8;
const int MAX_ITER = 50000;
const double ESCAPE_RADIUS_SQUARED = 50000.0;
const int PALETTE_FRAME = 200;
const char * OUTPUT_FILE = "Mandelbrot Set Image 112.bmp";
const mpfr_prec_t PRECISION_BITS = 1000;
struct Complex {
double re;
double im;
};
#pragma pack(push, 1)
struct BMPHeader {
uint16_t type{0x4D42};
uint32_t size{0};
uint32_t reserved{0};
uint32_t offBits{54};
uint32_t structSize{40};
int32_t width{0};
int32_t height{0};
uint16_t planes{1};
uint16_t bitCount{24};
uint32_t compression{0};
uint32_t sizeImage{0};
int32_t xPixelsPerMeter{2834};
int32_t yPixelsPerMeter{2834};
uint32_t colorsUsed{0};
uint32_t colorsImportant{0};
};
#pragma pack(pop)
int main() {
const double startTime = omp_get_wtime();
const long rawWidth = static_cast<long>(WIDTH) * AA;
const long rawHeight = static_cast<long>(HEIGHT) * AA;
mpfr_t centerRe, centerIm, zReMp, zImMp, tmp1, tmp2, viewSizeMp;
mpfr_inits2(PRECISION_BITS, centerRe, centerIm, zReMp, zImMp, tmp1, tmp2, viewSizeMp, static_cast<mpfr_ptr>(nullptr));
mpfr_set_str(centerRe, CENTER_RE, 10, MPFR_RNDN);
mpfr_set_str(centerIm, CENTER_IM, 10, MPFR_RNDN);
mpfr_set_str(viewSizeMp, VIEW_SIZE, 10, MPFR_RNDN);
const double sampleStep = mpfr_get_d(viewSizeMp, MPFR_RNDN) / rawWidth;
vector<Complex> referenceOrbit;
referenceOrbit.reserve(MAX_ITER + 200);
mpfr_set_ui(zReMp, 0, MPFR_RNDN);
mpfr_set_ui(zImMp, 0, MPFR_RNDN);
for (int iter = 0; iter <= MAX_ITER + 150; ++iter) {
Complex z{mpfr_get_d(zReMp, MPFR_RNDN), mpfr_get_d(zImMp, MPFR_RNDN)};
referenceOrbit.push_back(z);
if (z.re * z.re + z.im * z.im > ESCAPE_RADIUS_SQUARED && iter > MAX_ITER) {
break;
}
mpfr_mul(tmp1, zReMp, zImMp, MPFR_RNDN);
mpfr_sqr(tmp2, zReMp, MPFR_RNDN);
mpfr_sqr(zReMp, zImMp, MPFR_RNDN);
mpfr_sub(zReMp, tmp2, zReMp, MPFR_RNDN);
mpfr_add(zReMp, zReMp, centerRe, MPFR_RNDN);
mpfr_mul_2ui(tmp1, tmp1, 1, MPFR_RNDN);
mpfr_add(zImMp, tmp1, centerIm, MPFR_RNDN);
}
const int referenceLength = static_cast<int>(referenceOrbit.size());
mpfr_clears(centerRe, centerIm, zReMp, zImMp, tmp1, tmp2, viewSizeMp, static_cast<mpfr_ptr>(nullptr));
std::fprintf(stderr, "Reference orbit: %d points\n", referenceLength);
std::fprintf(stderr, "Precomputing skip100 matrices...\n");
vector<Complex> coeff_A(referenceLength, {1.0, 0.0});
vector<Complex> coeff_B(referenceLength, {0.0, 0.0});
vector<double> rad_R(referenceLength, 2.0);
#pragma omp parallel for
for (int i = 0; i < MAX_ITER; ++i) {
double min_r = 2.0;
for (int k = 0; k < 100; ++k) {
if (i + k >= referenceLength) break;
double r_re = referenceOrbit[i + k].re;
double r_im = referenceOrbit[i + k].im;
double abs_s = std::sqrt(r_re * r_re + r_im * r_im);
double aS = (abs_s < 2.0) ? abs_s : 0.0;
min_r = min(min_r, aS);
double next_A_re = 2.0 * (r_re * coeff_A[i].re - r_im * coeff_A[i].im);
double next_A_im = 2.0 * (r_re * coeff_A[i].im + r_im * coeff_A[i].re);
double next_B_re = 2.0 * (r_re * coeff_B[i].re - r_im * coeff_B[i].im) + 1.0;
double next_B_im = 2.0 * (r_re * coeff_B[i].im + r_im * coeff_B[i].re);
coeff_A[i].re = next_A_re; coeff_A[i].im = next_A_im;
coeff_B[i].re = next_B_re; coeff_B[i].im = next_B_im;
}
rad_R[i] = min_r;
}
const double PI = 3.14159265358979323846;
uint8_t palette[256][3];
for (int i = 0; i < 255; ++i) {
palette[i][0] = static_cast<uint8_t>(std::lround(127.0 + 127.0 * std::cos(2.0 * PI * i / 255.0)));
palette[i][1] = static_cast<uint8_t>(std::lround(127.0 + 127.0 * std::sin(2.0 * PI * i / 255.0)));
palette[i][2] = palette[i][1];
}
palette[255][0] = 255; palette[255][1] = 255; palette[255][2] = 255;
const int rowBytes = (WIDTH * 3 + 3) & ~3;
vector<uint8_t> image(static_cast<size_t>(rowBytes) * HEIGHT, 0);
std::atomic<int> completedRows{0};
const Complex * reference = referenceOrbit.data();
#pragma omp parallel for schedule(dynamic)
for (int y = 0; y < HEIGHT; ++y) {
uint8_t * row = image.data() + static_cast<size_t>(y) * rowBytes;
for (int x = 0; x < WIDTH; ++x) {
unsigned blueSum = 0; unsigned greenSum = 0; unsigned redSum = 0;
for (int sampleY = 0; sampleY < AA; ++sampleY) {
const double deltaCIm = (static_cast<long>(y) * AA + sampleY - rawHeight / 2) * sampleStep;
for (int sampleX = 0; sampleX < AA; ++sampleX) {
const double deltaCRe = (static_cast<long>(x) * AA + sampleX - rawWidth / 2) * sampleStep;
double deltaRe = 0.0; double deltaIm = 0.0;
double zRe = 0.0; double zIm = 0.0;
int referenceIndex = 0;
int iter = 0;
while (iter < MAX_ITER) {
if (zRe * zRe + zIm * zIm >= ESCAPE_RADIUS_SQUARED) {
break;
}
double eps_abs2 = deltaRe * deltaRe + deltaIm * deltaIm;
double limit_r2 = 1e-60 * rad_R[referenceIndex] * rad_R[referenceIndex];
if (eps_abs2 < limit_r2 && (referenceIndex + 100 < referenceLength - 1) && (iter + 100 < MAX_ITER)) {
double backup_deltaRe = deltaRe; double backup_deltaIm = deltaIm;
int backup_refIdx = referenceIndex; int backup_iter = iter;
double next_eps_re = (coeff_A[referenceIndex].re * deltaRe - coeff_A[referenceIndex].im * deltaIm) +
(coeff_B[referenceIndex].re * deltaCRe - coeff_B[referenceIndex].im * deltaCIm);
double next_eps_im = (coeff_A[referenceIndex].re * deltaIm + coeff_A[referenceIndex].im * deltaRe) +
(coeff_B[referenceIndex].re * deltaCIm + coeff_B[referenceIndex].im * deltaCRe);
deltaRe = next_eps_re; deltaIm = next_eps_im;
referenceIndex += 100; iter += 100;
zRe = reference[referenceIndex].re + deltaRe;
zIm = reference[referenceIndex].im + deltaIm;
if (zRe * zRe + zIm * zIm >= ESCAPE_RADIUS_SQUARED) {
deltaRe = backup_deltaRe; deltaIm = backup_deltaIm;
referenceIndex = backup_refIdx; iter = backup_iter;
} else {
continue;
}
}
const double a = 2.0 * reference[referenceIndex].re + deltaRe;
const double b = 2.0 * reference[referenceIndex].im + deltaIm;
const double nextDeltaRe = a * deltaRe - b * deltaIm + deltaCRe;
deltaIm = a * deltaIm + b * deltaRe + deltaCIm;
deltaRe = nextDeltaRe;
++referenceIndex; ++iter;
zRe = reference[referenceIndex].re + deltaRe;
zIm = reference[referenceIndex].im + deltaIm;
if (zRe * zRe + zIm * zIm < deltaRe * deltaRe + deltaIm * deltaIm || referenceIndex == referenceLength - 1) {
deltaRe = zRe; deltaIm = zIm; referenceIndex = 0;
}
}
const int remaining = MAX_ITER - iter;
const uint8_t colorIndex = (remaining == 0) ? 255 : static_cast<uint8_t>(remaining % 254);
const int paletteIndex = (colorIndex == 255) ? 255 : (colorIndex - PALETTE_FRAME + 255) % 255;
blueSum += palette[paletteIndex][0];
greenSum += palette[paletteIndex][1];
redSum += palette[paletteIndex][2];
}
}
const int samples = AA * AA;
row[x * 3 + 0] = static_cast<uint8_t>(blueSum / samples);
row[x * 3 + 1] = static_cast<uint8_t>(greenSum / samples);
row[x * 3 + 2] = static_cast<uint8_t>(redSum / samples);
}
const int done = ++completedRows;
if (done % 50 == 0 || done == HEIGHT) {
std::fprintf(stderr, "\rProgress: %d/%d rows (%.1f%%)", done, HEIGHT, 100.0 * done / HEIGHT);
}
}
BMPHeader header;
header.width = WIDTH; header.height = HEIGHT;
header.sizeImage = static_cast<uint32_t>(image.size());
header.size = header.sizeImage + 54;
FILE * file = std::fopen(OUTPUT_FILE, "wb");
if (!file) { std::perror(OUTPUT_FILE); return 1; }
std::fwrite(&header, sizeof header, 1, file);
std::fwrite(image.data(), 1, image.size(), file);
std::fclose(file);
std::fprintf(stderr, "\nDone: \"%s\" saved in %.1f s\n", OUTPUT_FILE, omp_get_wtime() - startTime);
return 0;
}
</syntaxhighlight>
See the full project and compiled releases on the official [https://github.com/Divetoxx/Mandelbrot Mandelbrot CLI GitHub repository].
* [https://rosettacode.org/wiki/Mandelbrot_set#Perturbation_Theory C++ Perturbation Theory Optimization] showcased in the global algorithm repository on Rosetta Code.
====GLSL====
* [[Fractals/shadertoy#LSM|shadertoy]]
====Java ====
<syntaxhighlight lang="java">
//Java code by Josef Jelinek
// http://java.rubikscube.info/
int mandel(double cx, double cy) {
double zx = 0.0, zy = 0.0;
double zx2 = 0.0, zy2 = 0.0;
int iter = 0;
while (iter < iterMax && zx2 + zy2 < 4.0) {
zy = 2.0 * zx * zy + cy;
zx = zx2 - zy2 + cx;
zx2 = zx * zx;
zy2 = zy * zy;
iter++;
}
return iter;
}
</syntaxhighlight>
====Java Script====
Here is JavaScript function which does not give last iteration but LastIteration modulo maxCol. It makes colour cycling ( if maxCol < maxIt ).
<syntaxhighlight lang="javascript">
function iterate(Cr,Ci) {
// JavaScript function by Evgeny Demidov
// http://www.ibiblio.org/e-notes/html5/fractals/mandelbrot.htm
var I=0, R=0, I2=0, R2=0, n=0;
if (R2+I2 > max) return 0;
do { I=(R+R)*I+Ci; R=R2-I2+Cr; R2=R*R; I2=I*I; n++;
} while ((R2+I2 < max) && (n < maxIt) );
if (n == maxIt) return maxCol; else return n % maxCol;
}
</syntaxhighlight>
Above functions do not use explicit definition of [[w:complex number|complex number]].
====Khan Academy====
* [https://www.khanacademy.org/computer-programming/mandelbrot-set/1274517860 khan academy mandelbrot-set]
====Lisp program ====
Whole Lisp program making ASCII graphic based on code by [http://www.frank-buss.de/ Frank Buss]
<ref>[http://groups.google.com/group/comp.lang.lisp/msg/dd505fd509fc8512 LIsp Program by Frank Buss]</ref>
<ref>[http://bc.tech.coop/blog/040811.html Mandelbrot Set ASCII art at Bill Clementson's blog]</ref>
<syntaxhighlight lang=lisp>
; common lisp
(loop for y from -1.5 to 1.5 by 0.1 do
(loop for x from -2.5 to 0.5 by 0.04 do
(let* ((i 0)
(z (complex x y))
(c z))
(loop while (< (abs
(setq z (+ (* z z) c)))
2)
while (< (incf i) 32))
(princ (code-char (+ i 32))))) ; ASCII chars <= 32 contains non-printing characters
(format t "~%"))
</syntaxhighlight>
====MathMap plugin for [[GIMP|Gimp]]====
<pre>
filter mandelbrot (gradient coloration)
c=ri:(xy/xy:[X,X]*1.5-xy:[0.5,0]);
z=ri:[0,0]; # initial value z0 = 0
# iteration of z
iter=0;
while abs(z)<2 && iter<31
do
z=z*z+c; # z(n+1) = fc(zn)
iter=iter+1
end;
coloration(iter/32) # color of pixel
end
</pre>
====Pov-Ray====
Pov-Ray has a built-in function mandel<ref>[http://www.povray.org/documentation/view/3.6.1/377/ mandel function from 2.5.11.14 Fractal Patterns at Pov-Ray docs]</ref>
====Wolfram Mathematica====
Here is [http://www.bugman123.com/Fractals/index.html code by Paul Nylander]
===Level Curves of escape time Method = LCM/M===
[[Image:LCMM.jpg|right|thumb|edge detection of Level sets]]
[[Image:Lemniscates5.png|thumb|right|Lemniscates of Mandelbrot set]]
Lemniscates are boundaries of Level Sets of escape time ( LSM/M ). They can be drawn using :
* edge detection of Level sets.
** Algorithm described in paper by M. Romera et al.<ref>[http://www.iec.csic.es/~miguel/Preprint3.ps Drawing the Mandelbrot set by the method of escape lines. M. Romera et al.]</ref> This method is fast and allows looking for high iterations.
*boundary trace<ref>http://www.metabit.org/~rfigura/figura-fractal/math.html boundary trace by Robert Figura</ref>
* drawing curves <math>L_n(T)=\{c: abs(z_n)=ER \}\,</math>, see [[:Image:Lemniscates5.png| explanation and source code]]. This method is very complicated for iterations > 5.
===Decomposition of target set for Mandelbrot set drawing===
Decomposition is modification of escape time algorithm.
The '''target set''' is divided into parts (2 or more).
Very large escape radius is used, for example ER = 12.
====Binary decomposition of LSM/M====
[[Image:Mandel_bd.png|thumb|binary decomposition: image with full code in C]]
Here target set <math>T\,</math> on dynamic plane is divided into 2 parts (binary decomposition = 2-decomposition ):
* upper half ( white) <math>T_u = \{ z : |z| > ER ~~\mbox{and}~~ Im (z) > 0\}\,</math>
* lower half (black) <math>T_l = \{ z : |z| > ER ~~\mbox{and}~~ Im (z) \le 0 \}\,</math>
Division of target set induces decomposition of level sets <math>L_n\,</math> into <math>2^{n+1}\,</math> parts ( cells, subsets):
* <math>L_{n,u} =\{ c: |z_n| > ER ~~\mbox{and}~~ Im (z_n) > 0 \}\,</math> which is colored white,
* <math>L_{n,l} = \{ c : |z_n| > ER ~~\mbox{and}~~ Im (z_n) \le 0 \}\,</math> which is colored black.
"The Level Sets and Field Lines are superimposed, creating a sort of grid, and the "squares" of the grid are filled with N-digit binary numbers giving the first N binary digits of the external angles of field lines passing through the square. (Alternately, only the Nth binary digit is used.) Each level set is divided into 2n squares. It is easy to "read" the external arguments of points in the boundary of the Mandelbrot Set using a binary decomposition." Robert P. Munafo
For binary decomposition use exp(pi) as escape radius, so that the boxes appear square (a tip from mrob).
External rays of angles (measured in turns):
<math>angle = (k / 2^n ) ~~\mbox{mod }~1\,</math>
can be seen as borders of subsets.
Difference between binary decomposition algorithm and Mandel or LSM/M is in only in part of instruction , which computes pixel color of exterior of Mandelbrot set. In binary decomposition is :
<syntaxhighlight lang=C>
if (Iteration==IterationMax)
{ /* interior of Mandelbrot set = black */
color[0]=0;
color[1]=0;
color[2]=0;
}
/* exterior of Mandelbrot set = LSM */
else if (Zy>0)
{
color[0]=0; /* Red */
color[1]=0; /* Green */
color[2]=0; /* Blue */
}
else
{
color[0]=255; /* Red */
color[1]=255; /* Green */
color[2]=255; /* Blue */
};
</syntaxhighlight>
also GLSL code from [[Fractals/fragmentarium|Fragmentarium]] :
<syntaxhighlight lang=GLSL>
#include "2D.frag"
#group Simple Mandelbrot
// maximal number of iterations
uniform int iMax; slider[1,100,1000] // increase iMax
// er2= er^2 wher er= escape radius = bailout
uniform float er2; slider[4.0,1000,10000] // increase er2
// compute color of pixel
vec3 color(vec2 c) {
vec2 z = vec2(0.0); // initial value
// iteration
for (int i = 0; i < iMax; i++) {
z = vec2(z.x*z.x-z.y*z.y,2*z.x*z.y) + c; // z= z^2+c
if (dot(z,z)> er2) // escape test
// exterior
if (z.x>0){ return vec3( 1.0);} // upper part of the target set
else return vec3(0.0); //lower part of the target set
}
return vec3(0.0); //interior
}
</syntaxhighlight>
<syntaxhighlight lang=GLSL>
// zoomasm -- zoom video assembler
// (c) 2019,2020,2021,2022 Claude Heiland-Allen
// SPDX-License-Identifier: AGPL-3.0-only
// recommended KF bailout settings: linear smoothing, custom radius 25
vec3 colour(void)
{
if (getInterior())
{
return vec3(1.0, 0.0, 0.0);
}
bool decomp = getT() < 0.5;
return vec3(decomp ? 0.0 : 1.0);
}
</syntaxhighlight>
Point c is plotting white or black if [[w:complex number|imaginary value]] of last iteration ( Zy) is positive or negative.<ref>http://web.archive.org/20010415125044/www.geocities.com/CapeCanaveral/Launchpad/5113/fr27.htm| An open letter to Dr. Meech from Joyce Haslam in FRACTAL REPORT 27</ref>
==== nth-decomposition ====
This method is extension of binary decomposition.
The target set T = { z : |zn| > R } with a very large escape radius ( for example R = 12 ) is divided into more than 2 parts ( for example 8).<ref>[http://fraktal.republika.pl/mset_decomposition.html mandelbrot set n-th-decomposition ]</ref>
===Real Escape Time===
Other names of this method/algorithm are :
* the fully-renormalized fractional iteration count ( by Linas Vepstas in 1997)<ref>[http://linas.org/art-gallery/escape/escape.html linas.org : Renormalizing the Mandelbrot Escape]</ref>
* smooth iteration count for generalized Mandelbrot sets ( by Inigo Quilez in 2016)<ref>[http://www.iquilezles.org/www/articles/mset_smooth/mset_smooth.htm I Quilez : mset_smooth]</ref>
* continuous iteration count for the Mandelbrot set
* Normalized Iteration Count Algorithm
* Continuous coloring
* smooth colour gradient
* fractional iterations
* fractional escape time
Here color of exterior of Mandelbrot set is proportional not to Last Iteration ( which is integer number) but to real number :
: <math>\nu(z) = \lim_{i \to \infty} (i - \log_2 \log_2 |z_i|)\,</math>
Other methods and speedups
Colouring formula in Ultrafractal :<ref>[http://www.fractalforums.com/programming/what-rangeprecision-for-fractional-escape-counts-for-mandelbrotjulia-sets/ fractalforums : What range/precision for fractional escape counts for Mandelbrot/Julia sets? ]</ref>
smooth iter = iter + 1 + ( log(log(bailout)-log(log(cabs(z))) )/log(2)
where :
* log(log(bailout) can be precalculated
*
====theory====
Description by Claude :
'''First description :'''
If R is large, the first z to escape satisfies (approximately)<ref>[https://fractalforums.org/noobs-corner/76/gradient-pallet-with-two-colors/4498 fractalforums : gradient-pallet-with-two-colors]</ref>
<math>R < |z| < R^p</math>
so taking logs
<math>\log(R) < \log(|z|) < p \log(R)</math>
so taking logs again
<math>\log(\log(R)) < \log(\log(|z|)) < \log(p) + \log(\log(R))</math>
so by algebra
<math>0 < \frac{\log(\log(|z|)) - \log(\log(R))}{\log(p)} < 1</math>
when <math>|z|</math> at escape is bigger, the smooth iteration count should be smaller, so this value needs to be subtracted from the integer iteration count
Alternatively this fraction can be used for interpolation, or used with arg(z) for exterior tiling / binary decomposition.
'''Second description'''<ref>[https://fractalforums.org/programming/11/can-anyone-help-me-understand-smooth-coloring/4597/msg37885 fractalforums.org : can-anyone-help-me-understand-smooth-coloring]</ref>
pick a radius R > 2, then |Z| > R implies that |Z^2 + C| > |Z| and more generally that |Z| -> infinity, this gives R the name escape radius. proof is on math.stackexchange.com somewhere
now suppose R is large, and n is the first iteration where |Z_n| > R.
consider what happens when |Z_n| increases as you move the point C a bit further from the Mandelbrot set boundary.
eventually |Z_n| > R^2, but then |Z_{n-1}| > R, so the iteration count should be n - 1.
for smoothing, we want a value to add to n that is 0 when |Z_n| = R and -1 when |Z_n| = R^2.
taking logs, get log |Z| is between log(R) and 2 log(R)
taking logs again, get log log |Z| is between log log R and log log R + log 2
dividing by log 2, get log_2 log |Z| is between log_2 log R and log_2 log R + 1
subtracting log_2 log R gives (log_2 log |Z| - log_2 log R) is between 0 and 1
negating it gives a value between 0 and -1, as desired
so the smooth iteration count is
<math>n - (log_2 log |Z| - log_2 log R)</math>
(replace 2 by P if you do Z^P + C)
see also http://linas.org/art-gallery/escape/escape.html which makes a value independent of R, but that is not so useful for some colouring algorithms (e.g. smooth part of escape count doesn't align with angle of final iterate)
====C====
To use log2 function add :
<nowiki> #include <math.h> </nowiki>
at the beginning of program.
<syntaxhighlight lang=C>
if (Iteration==IterationMax)
{ /* interior of Mandelbrot set = black */
color[0]=0;
color[1]=0;
color[2]=0;
}
/* exterior of Mandelbrot set */
else GiveRainbowColor((double)(Iteration- log2(log2(sqrt(Zx2+Zy2))))/IterationMax,color);
</syntaxhighlight>
where :
* Zx2 = Zx*Zx
* Zy2 = Zy*Zy
Here is another version by Tony Finch<ref>[http://dotat.at/prog/mandelbrot/ Making Mandelbrot Set Movies by Tony Finch]</ref>
<syntaxhighlight lang=C>
while (n++ < max &&
x2+y2 < inf) {
y = 2*x*y + b;
x = x2-y2 + a;
y2 = y*y;
x2 = x*x;
}
nu = n - log(log(x2+y2)/2)/ log(2);
</syntaxhighlight >
based on equation <ref>[http://linas.org/art-gallery/escape/escape.html Linas Vepstas. Renormalizing the mandelbrot escape.]</ref>
: <math>\nu(z) = n - \log_2 \log (z_n)\,</math>
====C++====
<syntaxhighlight lang=cpp>
// based on cpp code by Geek3 from http://en.wikibooks.org/wiki/File:Mandelbrot_set_rainbow_colors.png
sqrxy = x * x + y * y;
double m = LastIteration + 1.5 - log2(log2(sqrxy));
</syntaxhighlight>
====java====
<syntaxhighlight lang=java>
/**
Smooth coloring algorithm
https://gitlab.com/shreyas.siravara/mandelbrot-with-smooth-coloring/blob/master/Mandelbrot.java
Mandelbrot with Smooth Coloring by Shreyas Siravara
*/
double nsmooth = (iterations + 1 - Math.log(Math.log(Zn.getMagnitude())) / Math.log(ESCAPE_RADIUS));
double smoothcolor = nsmooth / MAX_ITERATIONS;
if (iterations < MAX_ITERATIONS) {
int rgb = Color.HSBtoRGB((float) (0.99f + 1.9 * smoothcolor), 0.9f, 0.9f);
g2d.setColor(new Color(rgb));
} else {
g2d.setColor(Color.black.darker());
}
</syntaxhighlight>
====Matemathica====
Here is [http://www.bugman123.com/Fractals/index.html code by Paul Nylander]. It uses different formula :
<math>cet = n + log_2ln(R) - log_2ln|z|</math>
====Python====
Python code using mpmath library<ref>[http://code.google.com/p/mpmath/ mpmath Python library]</ref>
<syntaxhighlight lang=python>
def mandelbrot(z):
c = z
for i in xrange(ITERATIONS):
zprev = z
z = z*z + c
if abs(z) > ESCAPE_RADIUS:
return ctx.exp(1j*(i + 1 - ctx.log(ctx.log(abs(z)))/ctx.log(2)))
return 0
</syntaxhighlight>
==Distance estimation DEM/M==
<gallery>
File:Demm_2000_Mandelbrot_set.jpg|Exterior DEM/M
File:Boundary mandelbrot set.png|simple boundary with DEM/M
File:Mandelbrot DEM Sobel.png|Boundary with DEM/M and Sobel filter
</gallery>
Variants :
* exterior DEM/M
* interior DEM/M
[[Fractals/Iterations in the complex plane/demm|Description]]
==Complex potential==
[[Fractals/Iterations_in_the_complex_plane/MandelbrotSetExteriorComplex_potential|Description]]
=See also=
* https://web.archive.org/web/20071008112609/http://rgba.scenesp.org/iq/trastero/fieldlines/
* http://fraktal.republika.pl/mset_bottcher.html
=References=
<references/>
{{BookCat}}
miifd1wtteoyd8qo5ag227didjasrd7
A-level Computing/AQA/Paper 2/Fundamentals of communication and networking/TCP-IP
0
381579
4656297
3751083
2026-08-05T02:50:45Z
~2026-42964-50
3619272
Devices }
4656297
wikitext
text/x-wiki
<NOINCLUDE>
{{CPTPageNavigationP2|
| Prev = Internet security
| Next = Standard application layer protocols}}
{{DISPLAYTITLE:Structure of the Internet: TCP IP protocol stack}}
</NOINCLUDE>
== MAC Address ==
{{Dbox|MAC Address|a unique identifier assigned to network connections, embedded into every Network Interface Card during production}}
IP addresses change, for example if you connect your laptop to the internet at home you get one IP address. If you were then to take it around a friends and connect there, you would be given another IP address. [[w:MAC address|MAC address]]es are unique to the device they are given to and every network interface has a MAC address, including mobile phones, games consoles and wireless cards. This is important when you consider that a computer can have more than one network interface. For example with a laptop you might have a [[w:Category 6 cable|cat-6]] network card and a wireless card, one handling BitTorrent and the other web browsing. When you receive a message, which network interface should it be sent to? The MAC address would mean that messages can be directed to a particular network interface, namely the wireless card or the cat-6 card. In a moment you will see how we use MAC addresses with the TCP/IP stack.
{{CPTExtension|title=Extension: Access your MAC Address}}
*In order to view your device's MAC address in a Windows OS, go to Control panel >> Network and Sharing Center >> Click on your connection (This can be Ethernet, WLAN (Wi-Fi) etc...)
*Click on the "Details" button and you will find a label called "Physical Address". This is your MAC Address
{{Robox/Close}}
[[File:MAC address barcode 00-17-4F-08-5D-69.jpg|thumb|center|Each networkable device has its own unique MAC address]]
== TCP/IP stack ==
The most common protocol on the internet is the Transmission Control Protocol/Internet Protocol (TCP/IP). To send data over a TCP/IP network requires four steps or layers:
{| class="wikitable"
|-
! Layer Name !! Description
|-
| '''Application''' || Encodes the data being sent
|-
| '''Transport''' || Splits the data into manageable chunks, adds port number information
|-
| '''Network/Internet''' || Adds IP addresses stating where the data is from and where it is going
|-
| '''Link''' || Adds MAC address information to specify which hardware device the message came from, and which hardware device the message is going to
|}
[[Image:UDP encapsulation.svg|thumb|center|300px|Successive encapsulation (wrapping) of application data descending through the protocol stack before transmission on the local network link]]
To show you how the TCP/IP stack works we going to use the following data as an example:
Matt, Mark, Luke, John
=== Application ===
The application layer makes sure that the data is sent in a format that will be understandable by the recipient. This will mean formatting data to be sent in a standard way applicable to that application, for example HTTP, FTP etc. In this case we are going to wrap each piece of data in XML tags.
<gospel>Matt</gospel><gospel>Mark</gospel><gospel>Luke</gospel><gospel>John</gospel>
=== Transport ===
The transport layer looks at the data to be sent and splits it into chunks that can fit into data packets. It then attaches a number to each, specifying that packet's order, this allows the recipient to place the data back together correctly at the other end. To each packet it then attaches a port number dependent on the application being used. For the example we'll send data to port 60
* Splits the data into chunks and adds order number
* Adds port numbers
{| class="wikitable"
|-
! Transport Header !! Data
|-
| <nowiki>:60 |</nowiki> 1/4 || <gospel>Matt</gospel>
|-
| <nowiki>:60 |</nowiki> 2/4 || <gospel>Mark</gospel>
|-
| <nowiki>:60 |</nowiki> 3/4 || <gospel>Luke</gospel>
|-
| <nowiki>:60 |</nowiki> 4/4 || <gospel>John</gospel>
|}
=== Network/Internet ===
The network layer attaches the IP address of the sender, so that the recipient will know who sent it and who to send a confirmation message to. It must also attach the IP address of the host that it is sending the data to so it doesn't get lost! In this case we are sending to 102.231.4.189 and sending from 98.1.232.99. Combined with the port number this creates a '''socket''' that data is being sent from and a socket that data is being sent to, namely ''102.231.4.189:60''
* Attaches sender IP address
* Attaches destination IP address to create a socket
{| class="wikitable"
|-
! Network Header !! Transport Header !! Data
|-
| 102.231.4.189<br/>98.1.232.99 ||<nowiki>:60 |</nowiki> 1/4 || <gospel>Matt</gospel>
|-
| 102.231.4.189<br/>98.1.232.99 || <nowiki>:60 |</nowiki> 2/4 || <gospel>Mark</gospel>
|-
| 102.231.4.189<br/>98.1.232.99 || <nowiki>:60 |</nowiki> 3/4 || <gospel>Luke</gospel>
|-
| 102.231.4.189<br/>98.1.232.99 ||<nowiki>:60 |</nowiki> 4/4 || <gospel>John</gospel>
|}
=== Link ===
Finally the link layer attaches the MAC address of the sender and the recipient, allowing the packets to be directed to a specific network interface on the IP Address host machine. In this case the sender is using a wireless card with MAC address: 00-17-4F-08-5D-69 and the destination MAC address is: 11-22-33-44-55
* Attaches sender MAC address
* Attaches destination MAC address
{| class="wikitable"
|-
! Link Header !! Network Header !! Transport Header !! Data
|-
| 11-22-33-44-55<br/>00-17-4F-08-5D-69 || 102.231.4.189<br/>98.1.232.99 ||<nowiki>:60 |</nowiki> 1/4 || Gospel
|-
| 11-22-33-44-55<br/>00-17-4F-08-5D-69 || 102.231.4.189<br/>98.1.232.99 ||<nowiki>:60 |</nowiki> 2/4 || <gospel>
|-
| 11-22-33-44-55<br/>00-17-4F-08-5D-69 || 102.231.4.189<br/>98.1.232.99 ||<nowiki>:60 |</nowiki> 3/4 || <gospel>
|-
| 11-22-33-44-55<br/>00-17-4F-08-5D-69 || 102.231.4.189<br/>98.1.232.99 ||<nowiki>:60 |</nowiki> 4/4 || <gospel>
|}
These four packets can then be sent across the internet holding enough information for them to:
# reach their destination
# find the correct network interference
# find the correct service
# be reassembled in the correct order
# (data from the Application )
{{BookCat}}
[[fr:Réseaux TCP/IP/La pile TCP/IP]]
dxg5y8k0v41ldn3z8be1ryvz7ujpl16
4656304
4656297
2026-08-05T04:33:16Z
Codename Noreste
3441010
[[WB:REVERT|Reverted]] edit by [[Special:Contributions/~2026-42964-50|~2026-42964-50]] ([[User talk:~2026-42964-50|talk]]) to last version by Pluke
3494872
wikitext
text/x-wiki
<NOINCLUDE>
{{CPTPageNavigationP2|
| Prev = Internet security
| Next = Standard application layer protocols}}
{{DISPLAYTITLE:Structure of the Internet: TCP IP protocol stack}}
</NOINCLUDE>
== MAC Address ==
{{Dbox|MAC Address|a unique identifier assigned to network connections, embedded into every Network Interface Card during production}}
IP addresses change, for example if you connect your laptop to the internet at home you get one IP address. If you were then to take it around a friends and connect there, you would be given another IP address. [[w:MAC address|MAC address]]es are unique to the device they are given to and every network interface has a MAC address, including mobile phones, games consoles and wireless cards. This is important when you consider that a computer can have more than one network interface. For example with a laptop you might have a [[w:Category 6 cable|cat-6]] network card and a wireless card, one handling BitTorrent and the other web browsing. When you receive a message, which network interface should it be sent to? The MAC address would mean that messages can be directed to a particular network interface, namely the wireless card or the cat-6 card. In a moment you will see how we use MAC addresses with the TCP/IP stack.
{{CPTExtension|title=Extension: Access your MAC Address}}
*In order to view your device's MAC address in a Windows OS, go to Control panel >> Network and Sharing Center >> Click on your connection (This can be Ethernet, WLAN (Wi-Fi) etc...)
*Click on the "Details" button and you will find a label called "Physical Address". This is your MAC Address
{{Robox/Close}}
[[File:MAC address barcode 00-17-4F-08-5D-69.jpg|thumb|center|Each networkable device has its own unique MAC address]]
== TCP/IP stack ==
The most common protocol on the internet is the Transmission Control Protocol/Internet Protocol (TCP/IP). To send data over a TCP/IP network requires four steps or layers:
{| class="wikitable"
|-
! Layer Name !! Description
|-
| '''Application''' || Encodes the data being sent
|-
| '''Transport''' || Splits the data into manageable chunks, adds port number information
|-
| '''Network/Internet''' || Adds IP addresses stating where the data is from and where it is going
|-
| '''Link''' || Adds MAC address information to specify which hardware device the message came from, and which hardware device the message is going to
|}
[[Image:UDP encapsulation.svg|thumb|center|300px|Successive encapsulation (wrapping) of application data descending through the protocol stack before transmission on the local network link]]
To show you how the TCP/IP stack works we going to use the following data as an example:
Matt, Mark, Luke, John
=== Application ===
The application layer makes sure that the data is sent in a format that will be understandable by the recipient. This will mean formatting data to be sent in a standard way applicable to that application, for example HTTP, FTP etc. In this case we are going to wrap each piece of data in XML tags.
<gospel>Matt</gospel><gospel>Mark</gospel><gospel>Luke</gospel><gospel>John</gospel>
=== Transport ===
The transport layer looks at the data to be sent and splits it into chunks that can fit into data packets. It then attaches a number to each, specifying that packet's order, this allows the recipient to place the data back together correctly at the other end. To each packet it then attaches a port number dependent on the application being used. For the example we'll send data to port 60
* Splits the data into chunks and adds order number
* Adds port numbers
{| class="wikitable"
|-
! Transport Header !! Data
|-
| <nowiki>:60 |</nowiki> 1/4 || <gospel>Matt</gospel>
|-
| <nowiki>:60 |</nowiki> 2/4 || <gospel>Mark</gospel>
|-
| <nowiki>:60 |</nowiki> 3/4 || <gospel>Luke</gospel>
|-
| <nowiki>:60 |</nowiki> 4/4 || <gospel>John</gospel>
|}
=== Network/Internet ===
The network layer attaches the IP address of the sender, so that the recipient will know who sent it and who to send a confirmation message to. It must also attach the IP address of the host that it is sending the data to so it doesn't get lost! In this case we are sending to 102.231.4.189 and sending from 98.1.232.99. Combined with the port number this creates a '''socket''' that data is being sent from and a socket that data is being sent to, namely ''102.231.4.189:60''
* Attaches sender IP address
* Attaches destination IP address to create a socket
{| class="wikitable"
|-
! Network Header !! Transport Header !! Data
|-
| 102.231.4.189<br/>98.1.232.99 ||<nowiki>:60 |</nowiki> 1/4 || <gospel>Matt</gospel>
|-
| 102.231.4.189<br/>98.1.232.99 || <nowiki>:60 |</nowiki> 2/4 || <gospel>Mark</gospel>
|-
| 102.231.4.189<br/>98.1.232.99 || <nowiki>:60 |</nowiki> 3/4 || <gospel>Luke</gospel>
|-
| 102.231.4.189<br/>98.1.232.99 ||<nowiki>:60 |</nowiki> 4/4 || <gospel>John</gospel>
|}
=== Link ===
Finally the link layer attaches the MAC address of the sender and the recipient, allowing the packets to be directed to a specific network interface on the IP Address host machine. In this case the sender is using a wireless card with MAC address: 00-17-4F-08-5D-69 and the destination MAC address is: 11-22-33-44-55
* Attaches sender MAC address
* Attaches destination MAC address
{| class="wikitable"
|-
! Link Header !! Network Header !! Transport Header !! Data
|-
| 11-22-33-44-55<br/>00-17-4F-08-5D-69 || 102.231.4.189<br/>98.1.232.99 ||<nowiki>:60 |</nowiki> 1/4 || <gospel>Matt</gospel>
|-
| 11-22-33-44-55<br/>00-17-4F-08-5D-69 || 102.231.4.189<br/>98.1.232.99 ||<nowiki>:60 |</nowiki> 2/4 || <gospel>Mark</gospel>
|-
| 11-22-33-44-55<br/>00-17-4F-08-5D-69 || 102.231.4.189<br/>98.1.232.99 ||<nowiki>:60 |</nowiki> 3/4 || <gospel>Luke</gospel>
|-
| 11-22-33-44-55<br/>00-17-4F-08-5D-69 || 102.231.4.189<br/>98.1.232.99 ||<nowiki>:60 |</nowiki> 4/4 || <gospel>John</gospel>
|}
These four packets can then be sent across the internet holding enough information for them to:
# reach their destination (socket from the Network and Transport Layers)
# find the correct network interface (MAC address from the Link Layer)
# find the correct service(Port number from the Transport Layer)
# be reassembled in the correct order (Order information from the Transport Layer)
# deliver the intended message (data from the Application Layer)
{{CPTExtension|title=Extension: UDP}}
TCP/IP does a great job of ensuring that the data you request is sent correctly and the data you send is received. However, as you have seen, sometimes data can get lost on the internet or packets can arrive in an order differing to the one you sent them in. With something like a computer game or telecommunications you can't wait for a slow packet to find its way across the internet. This would result in voice messages slowing down and computer games becoming unresponsive. There is another protocol called [[w:User Datagram Protocol|UDP]] that doesn't ask for a confirmation that data packets have been received. This protocol is used heavily in networked computer games and voice over IP, as [[w:Packet loss|losing a packet]] here and there won't impact too badly on the overall game experience or voice conversation. When you play computer games, you might see something that says "lost packets = xyz" or when having a web meeting the quality of voice or video might briefly degrade. This is packet loss in action and a result of using UDP.
{{Robox/Close}}
{{CPTExercise|title=Exercise TCP/IP Stack}}
{{CPTQuestion|Name and describe the four levels of the TCP/IP stack:}}
{{CPTAnswer|1=
{{{!}} class="wikitable"
{{!}}-
! Layer Name !! Description
{{!}}-
{{!}} '''Application''' {{!}}{{!}} Encodes the data being sent
{{!}}-
{{!}} '''Transport''' {{!}}{{!}} Splits the data into manageable chunks, adds port number information
{{!}}-
{{!}} '''Internet''' {{!}}{{!}} Adds IP addresses stating where the data is from and where it is going
{{!}}-
{{!}} '''Link''' {{!}}{{!}} Adds MAC address information to specify which hardware device the message came from, and which hardware device the message is going to
{{!}}}
}}
{{CPTQuestion|Combined, the IP address and Port Number make up a what?}}
{{CPTAnswer|Socket}}
{{CPTQuestion|What is the MAC Address for in the TCP/IP stack?}}
{{CPTAnswer|A MAC address is a unique identifier assigned to a network device. It is used by the Link layer to direct messages to a particular network interface at the designated IP address}}
{{CPTQuestionTab}}
Show the steps involved in sending the following data:
* data = Hello (this will fit in one packet)
* from IP = 12.32.72.2 | MAC = 43.65.FF.23
* to IP = 98.125.43.88 | Port = 80 | MAC = A0.3D.EF.00
{{CPTQuestionTabEnd}}
{{CPTAnswerTab}}
* '''Application'''
* "Hello"
* '''Transport'''
** :80
** 1/1
** "Hello"
* '''Internet'''
** To=98.125.43.88
** From=12.32.72.2
** :80
** 1/1
** "Hello"
* '''Link'''
** From MAC = 43.65.FF.23
** To MAC = A0.3D.EF.00
** To=98.125.43.88
** From=12.32.72.2
** :80
** 1/1
** "Hello"
{{CPTAnswerTabEnd}}
{{Robox/Close}}
{{BookCat}}
[[fr:Réseaux TCP/IP/La pile TCP/IP]]
0sl1ov43pgyorwsaurvmgrabfk7sxtb
Maxima/Operators
0
438289
4656301
4656212
2026-08-05T03:24:17Z
Idavidmiller
3577687
Work in progress. Saving Changes.
4656301
wikitext
text/x-wiki
== Maxima Operators ==
<blockquote>''"Standards are great! That's why there are so many of them, and they change so often."''
''"What once was forbidden is now required."''
– Unknown</blockquote>
=== Mathematical Notation and Operators ===
Mathematical notation was conceived of by different contributors and adopted over a period of time until the present . Standards are important. They help ensure that efforts are consistent and predictable. But if there are standards for notation, then these tend to be ''de facto'' in the absence of some imposed or adopted contextual guidance. Notation is important as this is the means by which mathematical expressions are composed.
Much of what is now considered "standard" notation was in use before the advent of computers and programming software. Software such as Maxima that has as its purpose "doing" at least some of what is meant by "mathematics," must provide the means by which mathematical expressions can be composed. Standard or conventional mathematical notation in general is not well-suited for this purpose.
Hence, there has been the effort to "shoe horn" expressions into a form that is better suited for composing expressions that conforms to software programming syntax, instead of developing software systems that can compose and interpret the full spectrum of existing mathematical expressions, presumably because the former is technically simpler. There has been more success in the form of output expressions in terms of conforming to standard mathematical notation.
Maxima is mostly about mathematical expressions, and these expressions are composed of operators and atoms. Atoms are relatively the simpler ingredient for use in composing expressions – numerical and string data types, but also identifiers, especially those that are not assigned a value, and hence may be considered variables.
Operators are the ingredient where much of the "heavy lifting" occurs with respect to expression composition, and operators need some means to be expressed. Maxima operators are all some sort of "function" (or in Lisp, a procedure) in the programming language sense of the word. This is important to understand. Even something as simple as the expression of a sum is a based on a function.
For example, consider the Maxima expressions:<syntaxhighlight lang="maxima">
(%i1) e+3;
(%o1) e+3
(%i2) :lisp #$[e+3]$
((MLIST SIMP) ((MPLUS SIMP) 3 $E))
</syntaxhighlight>
Notice that a sum is simply the Lisp procedure <code>MPLUS</code>. What is true here for the <code>+</code> operator is true in general – operators are either implicitly or explicitly a function in the programming sense of the word. For those used to conventional mathematical notation, this fact can take some getting used to.
What this means in practice when composing Maxima expressions is that the form of the input may often not resemble what looks like conventional mathematical notation regardless of how well the output or value of the expressions represents the form of conventional mathematical notation. Maxima user interfaces such as ''wxMaxima'' and ''GNU TeXmacs'' are capable of rendering the output of Maxima expressions in a way that represents conventional mathematical notation quite well.
However, once again, the input expressions in these and similar user interfaces always are explicitly and literally composed of Maxima atoms and operators. There is a sense in which then, Maxima imposes an alternative form of mathematical notation for input purposes. This quite simply put is the current state of affairs with respect to doing what Maxima does using a language and syntax that is compatible with computers. Maxima users have to get used to the fact that, in general, they are in a sense constrained to use a different species of mathematical notation for composing input expressions. Operators are the ingredient where this fact becomes most obvious.
There is a last subsection of this section that provides some insight into the issue of conventional mathematical notation and mathematical computer software systems such as Maxima. This subsection is included for those that have an interest.
=== Maxima Operators ===
Maxima operators can be considered as belonging to the same categories as expressions:
* Mathematical operators
* Programming operators
* Object operators
The technical details for some of these operators are found in sections of this book devoted to each of these categories of expressions.
It is worth repeating that built-in Maxima operators and operators defined in packages are, for better or worse, often referred to as ''functions'' and not ''operators''. This practice can lead to some confusion as there are also user-defined functions in the programming sense of the word, and then there is the mathematical concept of a function. For the sake of clarity and simplicity, in this book, Maxima operators and operators defined in packages are referred to simply as ''operators''.
Having made that point, it should be noted that users can define new operators with specified precedence, <code>remove</code> or <code>kill</code> existing operator properties, or redefine the precedence of existing operators. Refer to the Maxima Documentation (section '''9.1 Introduction to operators''') for more information.
The general form of most Maxima operators is: <code>foo (args)</code> where <code>args</code> is a comma separated sequence of ''arguments'' – zero, one or many. For example:<syntaxhighlight lang="maxima">(%i3) to_lisp (); /* an operator with zero arguments */
Type (to-maxima) to restart, ($quit) to quit Maxima.
:LISP-QUIET
NIL
MAXIMA> (to-maxima)
Returning to Maxima
(%o3) true
(%i4) op ([1,arg]); /* an operator with one argument - a list object */
(%o4) [
(%i5) apply(f, [a1, a2, a3]); /* an operator with multiple arguments */
(%o5) f(a1,a2,a3)
/* A list operator ( [ ) with two operators (op and args) as arguments */
(%i6) [op (%i5), args (%i5)];
(%o6) [apply,[f,[a1,a2,a3]]]</syntaxhighlight>The operators <code>op(expr)</code> and <code>args(expr)</code> can be useful for checking the "main" operator of expressions and the arguments of expressions.
=== Operators as Verbs and Nouns ===
In Maxima, "verbs" are operators that do what is expected – evaluate their arguments and return a value, while "nouns" are inert names of operators that act simply as data or display symbols without any of the evaluations that would otherwise be expected.
==== Verbs (Evaluation As Expected) ====
* Maxima operators are verbs by default
* As verbs, operators evaluate arguments and return a value
* Example: <code>diff(x^</code><code>3, x)</code> evaluates to <code>2*x</code><code>^2</code>
==== Nouns (Inert Names) ====
* Formed by prefixing a single quote ' to an operator (e.g., 'diff or 'integrate) or by using the <code>nounify(f)</code> operator
* Operators as nouns can be changed into verbs by applying the <code>verbify</code><code>(f)</code> operator
* Operators as nouns in expressions can be displayed or manipulated by preventing automatic evaluation or simplification
* The evaluation flag <code>nouns</code> used with <code>ev</code> causes <code>ev</code> to evaluate nouns in an expression
* Example: <code>'diff(x^2, x)</code> outputs the inert form <math display="inline">\frac{d}{dx}(x^2)</math> rather than <code>2*x</code>
Refer to the Maxima documentation for the technical details of the <code>noun</code>, <code>nouns</code>, <code>nounify</code>, <code>verbify</code>. and <code>noundisp</code> operators and flags
=== Some Typical Categories, Descriptions and Examples of Maxima Operators ===
Maxima often-used operators include a colon ( <code>:</code> ) for assignment, <code>:=</code> and <code>define()</code> for function definitions, and <code>block()</code> for multi-line code. Examples include '''assignments''', '''function definitions''', '''loops''' '''or conditionals, and object expressions''', as exemplified below: [1, 2, 3]
===== Variable Assignment and Basic Math Expression Operators: =====
* <code>a : 5;</code> — assigns the value <code>5</code> to the name <code>a</code> using a single colon.
* <code>poly : expand((x + y)^3);</code> — expands a binomial expression and assigns the value to the name <code>poly</code>.
* <code>subst(</code><code>x = 2, x^2 + y);</code> — substitutes a value into an algebraic expression. [1, 2, 7]
===== User-Defined Functions and Built-In Operator Expressions: =====
* <code>f(x) := x^2 - 3*x + 2;</code> — defines a single-line function using the <code>:=</code> operator.
* <code>integrate(f(x), x, 0, 1);</code> — the definite integral of the expression <code>f(x)</code> from <code>0</code> to <code>1</code>.
* <code>diff(f(x), x, 2);</code> — calculates the second derivative of <code>f(x)</code> with respect to <code>x</code>. [1, 8, 9, 10]
===== Control Flow and Block Programming Operator Expressions: =====
* <code>if x > 0 then print("Positive") else print("Non-positive");</code>— conditional branching expression.
* <code>for i : 1 thru 5 do display(i^2);</code> — a standard loop iterating from <code>1</code> to <code>5</code>.
* <code>block([s : 0], for i : 1 thru 10 do s : s + i, s);</code> — a local variable <code>block</code> operator that sums numbers from <code>1</code> to <code>10</code> and returns the final value <code>s</code> . [1, 2, 3, 11]
===== Object Operator Expressions: =====
* '''Lists''' '''and Sets:''' <code>[1, 2, x, y]</code> builds a list object, while <code>{a, b, c}</code> denotes a set object.
* '''Matrices:''' <code>matrix([1, 2], [3, 4])</code> defines a 2x2 matrix object using nested rows of list objects. [12, 13, 14, 15, 16]
[1] <nowiki>https://mathblog.com/a-10-minute-tutorial-for-solving-math-problems-with-maxima/</nowiki>
[2] <nowiki>https://docs.stack-assessment.org/en/CAS/Maxima_background/</nowiki>
[3] <nowiki>https://maxima.sourceforge.io/docs/tutorial/en/gaertner-tutorial-revision/Pages/Programming0002.htm</nowiki>
[4] <nowiki>https://maxima.sourceforge.io/documentation.html</nowiki>
[5] <nowiki>https://staff.tu.kielce.pl/sk/media/downloads/pi/pi-maxima-calculus-i.pdf</nowiki>
[6] <nowiki>http://michel.gosse.free.fr/documentation/fichiers/maxima_sg.pdf</nowiki>
[7] <nowiki>https://maxima.sourceforge.io/docs/manual/intromax.html</nowiki>
[8] <nowiki>https://maxima.sourceforge.io/docs/manual/intromax.pdf</nowiki>
[9] <nowiki>https://medium.com/@bragadeeshs/how-to-navigate-maxima-and-minima-in-machine-learning-optimization-5eee9bc67303</nowiki>
[10] <nowiki>https://blogs.sas.com/content/sgf/2018/11/13/customize-your-casl-code-with-built-in-and-user-defined-functions/</nowiki>
[11] <nowiki>https://maths.cnam.fr/Membres/wilk/MathMax/help/Maxima/maxima_6.html</nowiki>
[12] <nowiki>https://moodle.hft-stuttgart.de/question/type/stack/doc/doc.php/CAS/Maxima_background.md</nowiki>
[13] <nowiki>https://docs.stack-assessment.org/en/CAS/Maxima_background/</nowiki>
[14] <nowiki>https://maths.cnam.fr/Membres/wilk/MathMax/help/Maxima/maxima_6.html</nowiki>
[15] <nowiki>https://maxima.sourceforge.io/docs/manual/Expressions.html</nowiki>
[16] <nowiki>https://maxima.sourceforge.io/docs/tutorial/en/minimal-maxima.pdf</nowiki>
=== Some Additional Examples of Maxima Operators ===
==== <u>Mathematical Operators</u>: ====
<syntaxhighlight lang="maxima">
(%i7) subst(x = 2, x^2 + y);
(%o7) y+4
(%i8) 40^40/100^20;
(%o8) 1208925819614629174706176
(%i9) factor(%);
(%o9) 2^80
(%i10) diff((a+2)/(a+x),x,1);
(%o10) -((a+2)/(x+a)^2)
(%i11) %,x=2;
(%o11) -(1/(a+2))
(%i12) simp:false;
(simp) false
(%i13) %e^(%i*%pi)+1=0;
(%o13) %e^(%i*%pi)+1=0
(%i14) simp:true;
(simp) true
(%i15) 'integrate(%e^(-x^2),x);
(%o15) integrate(%e^(-x^2),x)
(%i16) test(f):=block([u],u:integrate(f,x),ratsimp(f-diff(u,x)))
(%o16) test(f):=block([u],u:integrate(f,x),ratsimp(f-'diff(u,x)))
(%i17) test(sin(x))
(%o17) 0
(%i18) test(1/(1+x))
(%o18) 0
(%i19) test(1/(1+x^2))
(%o19) 0
(%i20) integrate(sin(x)^3,x)
(%o20) cos(x)^3/3-cos(x)
(%i21) kill(q)$
(%i22) integrate(%e^x/(%e^x+2),x)
(%o22) log(%e^x+2)
(%i23) integrate(1/(x*log(x)),x)
(%o23) log(log(x))
(%i24) integrate(sin(2*x+3),x)
(%o24) -(cos(2*x+3)/2)
(%i25) integrate(%e^x*erf(x),x)
(%o25) %e^x*erf(x)-%e^(1/4)*erf(x-1/2)
(%i26) integrate(x/(x^3+1),x)
(%o26) log(x^2-x+1)/6+atan((2*x-1)/sqrt(3))/sqrt(3)-log(x+1)/3
(%i27) diff(%,x)
(%o27) 2/(3*((2*x-1)^2/3+1))+(2*x-1)/(6*(x^2-x+1))-1/(3*(x+1))
(%i28) ratsimp(%)
(%o28) x/(x^3+1)
(%i29) integrate(x^(5/4)/(x+1)^(5/2),x,0,inf)
(%o29) beta(1/4,9/4)
(%i30) gradef(q(x),sin(x^2))
(%o30) q(x)
(%i31) diff(log(q(r(x))),x)
(%o31) (('diff(r(x),x))*sin(r(x)^2))/q(r(x))
(%i32) integrate(%,x)
(%o32) log(q(r(x)))
</syntaxhighlight>
==== <u>Programming Operators</u>: ====
<syntaxhighlight lang="maxima">(%i33) for c:2 next 3*c thru 20 do display (c)$
c=2
c=6
c=18
(%i34) for i:1 thru 10 do if i=3 then return(i);
(%o34) 3
(%i35) t:0$
(%i36) for i:1 while i <= 15 do t:2*t+i;
(%o36) done
(%i37) t;
(%o37) 65519
(%i38) fib[n]:=if n=1 or n=2 then 1 else fib[n-1]+fib[n-2];
(%o38) fib[n]:=if n=1 or n=2 then 1 else fib[n-1]+fib[n-2]
(%i38) fib[1]+fib[2];
(%o38) 2
(%i39) fib[3];
(%o39) 2
(%i40) fib[5];
(%o40) 5
(%i41) eta(mu,nu):=if mu=nu then mu else (if mu>nu then mu-nu else mu+nu);
(%o41) eta(mu,nu):=if mu=nu then mu else if mu>nu then mu-nu else mu+nu
(%i42) eta(5,6);
(%o42) 11
(%i43) eta(eta(7,7),eta(1,2));
(%o43) 4
(%i44) if not 5 >= 2 and 6 <= 5 or 4+1 > 3 then a else b;
(%o44) a
</syntaxhighlight>
==== <u>Object Operators</u>: ====
<syntaxhighlight lang="maxima">
/* List Objects */
(%i1) my_list: [1, 2, 3, 4, 5];
(my_list) [1,2,3,4,5]
(%i2) op(my_list);
(%o2) "["
(%i3) p:[1,1,2,x^2];
(p) [1,1,2,x^2]
(%i4) args(p);
(%o4) [1,1,2,x^2]
(%i5) nested: [1, [2, 3], [4, [5, 6]]];
(nested) [1,[2,3],[4,[5,6]]]
(%i7) nested[3];
(%o7) [4,[5,6]]
(%i8) op(%);
(%o8) "["
(%i9) first(my_list);
(%o9) 1
(%i10) third(my_list);
(%o10) 3
(%i11) last(my_list);
(%o11) 5
(%i12) L: create_list(i * x, x, [a, b, c], i, [1, 2, 3, 4]);
(L) [a,2*a,3*a,4*a,b,2*b,3*b,4*b,c,2*c,3*c,4*c]
(%i13) apply("+", [1, 2, 3]);
(%o13) 6
(%i17) args('apply("+", [1, 2, 3]));
(%o17) ["+",[1,2,3]]
(%i18) %[2];
(%o18) [1,2,3]
(%i19) A(s):=(3*sqrt(3)/2)*s^2$
(%i20) map(A,my_list);
(%o20) [3^(3/2)/2,2*3^(3/2),3^(7/2)/2,8*3^(3/2),(25*3^(3/2))/2]
/* Declared Arrays */
(%i23) array (y, fixnum, 3);
(%o23) y
(%i25) arrayinfo(y);
(%o25) [complete,1,[3]]
(%i24) array(M, flonum, 3, 3);
(%o24) M
(%i26) arrayinfo(M);
(%o26) [complete,2,[3,3]]
(%i27) y[2]: %pi;
(y[2]) %pi
(%i28) y[3]: %e;
(y[3]) %e
(%i29) listarray(y);
(%o29) [0,0,%pi,%e]
/* Hashed (undeclared) Arrays */
(%i30) a_hashed_array[8] : 998;
(a_hashed_array[8]) 998
(%i31) arrayinfo(a_hashed_array);
(%o31) [hashed,1,[8]]
(%i32) listarray(a_hashed_array);
(%o32) [998]
(%i33) a_hashed_array[12] : x^2;
(a_hashed_array[12]) x^2
(%i34) listarray(a_hashed_array);
(%o34) [998,x^2]
(%i35) another_hashed_array[3^(1/3)]:1;
(%o35) 1
(%i36) arrayinfo(another_hashed_array);
(%o36) [hashed,1,[3^(1/3)]]
(%i37) subvarp (another_hashed_array[1]);
(%o37) true
(%i38) remarray (y,another_hashed_array);
(%o38) [y,another_hashed_array]
/* Lisp Arrays */
(%i39) :lisp (defvar $lisparray (make-array '(3 3) :initial-element 0.0))
$LISPARRAY
(%i40) :lisp (setq $lisparray (make-array '(3 3) :initial-element 0.0))
#2A((0.0 0.0 0.0) (0.0 0.0 0.0) (0.0 0.0 0.0))
(%i41) arrayinfo(lisparray);
(%o41) [declared,2,[2,2]]
(%i42) :lisp (aref $lisparray 0 0)
0.0
(%i42) :lisp (aref $lisparray 2 2)
0.0
(%i43) lisparray[2,2]:77;
(%o43) 77
(%i44) :lisp (aref $lisparray 2 2)
77
(%i45) :lisp (setf (aref $lisparray 2 2) 88)
88
(%i46) :lisp (aref $lisparray 2 2)
88
(%i47) :lisp (defvar $lisparray2 (make-array '(2 3) :initial-contents '((1 2 3) (4 5 6))))
$LISPARRAY2
(%i48) listarray(lisparray2);
(%o48) [1,2,3,4,5,6]
(%i49) :lisp (write $lisparray2)
#2A((1 2 3) (4 5 6))
#2A((1 2 3) (4 5 6))
/* Structures */
(%i50) defstruct(vector3d(x, y, z));
(%o50) [vector3d(x,y,z)]
(%i51) v1:new(vector3d(1.5, -2.0, 3.2));
(v1) vector3d(x=1.5,y=-2.0,z=3.2)
(%i52) v2:vector3d(x = 5, y = 10, z = 15);
(v2) vector3d(x=(x=5),y=(y=10),z=(z=15))
(%i53) v1@x;
(%o53) 1.5
(%i54) v2@z : 7.4;
(%o54) 7.4
</syntaxhighlight>
Official documentation and guides for operators are available through the Maxima Manual and the Maxima SourceForge Documentation Hub. [4, 5, 6]
=== Some Information Related to Mathematical Notation ===
There is no single, universal standard that dictates mathematical notation across all branches of math. Instead, notation varies by discipline, publisher, and sub-field. There are widely accepted conventions and formal frameworks that serve as references. The general topic of mathematical notation is beyond the scope of this book. However, mathematical notation does have some relevance in the context of Maxima as a computer algebra system.
Stephen Wolfram’s perspective in ''Mathematical Notation: Past and Future'' traces how symbols evolved from static, human-readable shorthand into active, executable computational language. The historical development moved from additive numerals and natural language prose toward structured operators and variables, while the future shifts toward programmatic, interactive, and "computable" expressions. [1, 2, 3, 4]
===== <u>The Past of Mathematical Notation</u>: =====
* '''Evolution of Symbols:''' Early counting relied on unary notches and additive systems (like Egyptian hieroglyphs), eventually shifting to Hindu-Arabic base-10 positional numerals.
* '''Introduction of Operators:''' Algebraic variables, plus/minus signs, and calculus notations (such as Leibniz's <math display="inline">\operatorname{d}\!y/\operatorname{d}\!x
</math> and <math display="inline">\int</math> ) emerged primarily during the 16th and 17th centuries to replace cumbersome natural language descriptions.
* '''Standardization Limits:''' Traditional notation worked well for manual formula writing, but lacked any native capability to generalize into automated, multi-step computations or algorithmic processes. [3, 7]
===== <u>The Future of Mathematical Notation:</u> =====
* '''Computational Language:''' Transitioning from passive text on paper to active, uniform symbolic structures.
* '''Programmatic Models:''' Replacing traditional passive equations with active programs capable of executing models across physics, biology, and social sciences.
* '''Universal Access:''' Utilizing interactive, graphical, and automated systems to democratize complex technical thinking much like mass literacy changed society centuries ago. [1, 4]
[1] <nowiki>https://www.stephenwolfram.com/publications/mathematical-notation-past-future/</nowiki>
[2] <nowiki>https://lukegilson.co/2020/04/05/quick-notes-on-wolframs-mathematic-notation-past-and-future/</nowiki>
[3] <nowiki>https://www.wolframscience.com/nks/notes-12-10--mathematical-notation/</nowiki>
[4] <nowiki>https://writings.stephenwolfram.com/2020/10/our-mission-and-the-opportunity-of-artifacts-from-the-future/</nowiki>
[5] <nowiki>https://library.wolfram.com/infocenter/Demos/4952/</nowiki>
[6] <nowiki>https://writings.stephenwolfram.com/2013/05/dropping-in-on-gottfried-leibniz/</nowiki>
[7] <nowiki>https://sites.math.rutgers.edu/~zeilberg/Opinion64.html</nowiki>
[8] <nowiki>https://physicsworld.com/a/exploring-the-computational-universe-with-stephen-wolfram/</nowiki>
'''The Future of Notation:''' Read Stephen Wolfram's ''Mathematical Notation: Past and Future'' to learn how the history of notation shapes modern computation. [1]<blockquote>
''"Now I have to tell you that I had always assumed that mathematical notation was too haphazard to be used as any kind of thing that a computer could reasonably interpret in a rigorous way. But at the beginning of the 1990s we got interested in making Mathematica be able to interact with mathematical notation. And so we realized that we really had to figure out what was going on with mathematical notation.''
''Neil Soiffer had spent quite a number of years working on editing and interpreting mathematical notation, and when he joined our company in 1991, he started trying to convince me that one really could work with mathematical notation in a reasonable way, for both output and input.''
''The output side was pretty straightforward: after all, TROFF and TeX already did a moderately good job with that.''
''The issue was input.''
''Well, actually, one already learned something from output. One learned that at least at some level, a lot of mathematical notation could be represented in some kind of context-free form. Because one knew that in TeX, for instance, one could set things up in a tree of nested boxes.''
''But how about input? Well, one of the biggest things was something that always comes up in parsing: if you have a string of text, with operands and operators, how do you tell what groups with what?"<br />''
– Stephen Wolfram</blockquote>{{Bookcat}}
{{Status|0%}}
c55gv41xu0b9rynx1t5ma0872jaqx8z
Wikibooks:Sandbox
4
464822
4656255
4656228
2026-08-04T12:00:39Z
JackBot
396820
Bot: Automatically cleaned
4656255
wikitext
text/x-wiki
{{Sandbox heading}}
<!-- Hello! Feel free to try your formatting and editing skills below this line. As this page is for editing experiments, this page will automatically be cleaned every 12 hours. -->
efa5udpbb942msq2oco4mlj2yz47q14
User:JJPMaster (bot)/markAdmins-Data.json
2
471107
4656265
4656219
2026-08-04T13:49:14Z
JJPMaster (bot)
3488561
Bot: Updating markAdmins data
4656265
json
application/json
{
".snoopy.": [
"global-rollbacker",
"editor"
],
"1234qwer1234qwer4": [
"editor",
"steward"
],
"157yagz5r48a5f1a1f": [
"editor"
],
"1997kB": [
"global-rollbacker",
"global-renamer",
"editor"
],
"1F616EMO": [
"global-renamer"
],
"1exec1": [
"transwiki",
"editor"
],
"1sfoerster": [
"editor"
],
"20041027 tatsu": [
"global-rollbacker"
],
"2005-Fan": [
"transwiki",
"editor",
"uploader"
],
"331dot": [
"global-renamer"
],
"33rogers": [
"editor"
],
"3MMPEYTON": [
"editor"
],
"4PlayerChess": [
"autoreview"
],
"4pillars": [
"editor"
],
"511KeV": [
"global-rollbacker"
],
"94rain": [
"global-rollbacker",
"editor"
],
"A R King": [
"editor"
],
"A Sulaiman Z": [
"editor"
],
"A.K.Karthikeyan": [
"editor"
],
"A09": [
"steward"
],
"AFBorchert": [
"vrt-permissions"
],
"AIProf": [
"editor"
],
"ALittleSlow": [
"autoreview"
],
"AManWithNoPlan": [
"editor"
],
"ATannedBurger": [
"global-renamer"
],
"AVRS": [
"editor"
],
"Aafi": [
"vrt-permissions"
],
"Abenwagner": [
"editor"
],
"Abigor": [
"editor"
],
"Abitt002": [
"editor"
],
"Abyssal": [
"editor"
],
"Acagastya": [
"autoreview"
],
"Acalamari": [
"global-renamer"
],
"Acarologiste": [
"editor"
],
"AcidBat": [
"editor"
],
"Acrow005": [
"editor"
],
"Actualist": [
"editor"
],
"Adalvis": [
"editor"
],
"Adart001": [
"editor"
],
"Adavyd": [
"global-renamer"
],
"Addihockey10": [
"editor"
],
"Addihockey10 (automated)": [
"editor"
],
"Adrignola": [
"editor"
],
"AdventureWriter": [
"editor"
],
"Aelxen": [
"global-renamer"
],
"Aferg006": [
"editor"
],
"Afett001": [
"editor"
],
"Affe2011": [
"global-rollbacker"
],
"Agnerf": [
"editor",
"uploader"
],
"Agpires": [
"editor"
],
"Agricola": [
"editor"
],
"Agusbou2015": [
"editor"
],
"Ah3kal": [
"editor"
],
"Ahecht": [
"global-renamer",
"vrt-permissions"
],
"Ahonc": [
"global-renamer",
"vrt-permissions"
],
"AiClassEland": [
"editor"
],
"Ainz Ooal Gown": [
"editor"
],
"Airpmb": [
"editor"
],
"Ajraddatz": [
"editor",
"steward"
],
"Aka": [
"vrt-permissions"
],
"Alanah.97": [
"autoreview"
],
"Albertoleoncio": [
"steward",
"vrt-permissions"
],
"Albmont": [
"editor"
],
"Alchimista": [
"vrt-permissions"
],
"Aldnonymous": [
"editor"
],
"Aledownload": [
"editor"
],
"Alexlatham96": [
"editor"
],
"Alextejthompson": [
"editor"
],
"Alison": [
"global-rollbacker"
],
"AllenZh": [
"editor"
],
"Alphama": [
"global-renamer"
],
"AlvaroMolina": [
"editor"
],
"AmandaNP": [
"steward"
],
"Ambrevar": [
"editor"
],
"Amcgail": [
"editor"
],
"Ameisenigel": [
"global-rollbacker",
"global-sysop",
"ombuds",
"editor",
"vrt-permissions"
],
"AmieKim": [
"editor"
],
"Amire80": [
"global-sysop"
],
"Anachronist": [
"editor",
"vrt-permissions"
],
"Ancient9983": [
"editor"
],
"Andrei Stroe": [
"vrt-permissions"
],
"Andrew janke": [
"editor"
],
"Andriy.v": [
"vrt-permissions"
],
"Andyross": [
"editor"
],
"Anil Shaligram": [
"editor"
],
"Animajosser": [
"editor"
],
"Anne Correia": [
"editor"
],
"Anonim Şahıs": [
"editor"
],
"Anonymity": [
"editor"
],
"AnotherEditor144": [
"autoreview"
],
"Antanana": [
"vrt-permissions"
],
"Antandrus": [
"editor"
],
"Anthere": [
"editor"
],
"AntiCompositeNumber": [
"steward",
"vrt-permissions"
],
"Antonizoon": [
"editor"
],
"Antonw": [
"editor"
],
"Apfelmus": [
"editor"
],
"Aphoneyclimber": [
"editor"
],
"Apocheir": [
"editor"
],
"Aqurs1": [
"global-rollbacker",
"global-renamer",
"global-sysop"
],
"AramilFeraxa": [
"steward"
],
"Arch dude": [
"editor"
],
"Archolman": [
"editor"
],
"Arcticocean": [
"ombuds"
],
"ArdentPerf": [
"editor",
"uploader"
],
"Arlen22": [
"transwiki",
"editor"
],
"Armchair": [
"editor"
],
"Arno-nl": [
"editor"
],
"Arrow303": [
"vrt-permissions"
],
"Arthurvogel": [
"editor"
],
"Artoria2e5": [
"editor"
],
"Arturoiochoam": [
"editor"
],
"Arunreginald": [
"editor"
],
"AshLin": [
"editor"
],
"Atcovi": [
"sysop",
"global-rollbacker"
],
"Athrash": [
"editor"
],
"Atiedebee": [
"editor"
],
"Atlas.Spheres": [
"editor"
],
"Atsme": [
"vrt-permissions"
],
"Auremel": [
"editor"
],
"Austncorp": [
"editor"
],
"AuthorsAndContributorsBot": [
"autoreview"
],
"Avicennasis": [
"editor"
],
"Avraham": [
"global-renamer",
"editor"
],
"Awesome Princess": [
"editor"
],
"Axpde": [
"editor"
],
"Az1568": [
"global-rollbacker"
],
"Az2008": [
"editor"
],
"Azotochtli": [
"editor"
],
"B.Korlah": [
"editor"
],
"BD2412": [
"editor"
],
"BORGATO Pierandrea": [
"editor"
],
"BRPever": [
"global-rollbacker",
"global-sysop"
],
"BRUTE": [
"editor"
],
"Backfromquadrangle": [
"editor"
],
"Baiji": [
"global-rollbacker"
],
"Bakasakali": [
"editor"
],
"Balaji.md au": [
"editor"
],
"BarkingFish": [
"editor"
],
"Barras": [
"steward"
],
"Base": [
"steward",
"vrt-permissions"
],
"Bastique": [
"editor"
],
"Bautsch": [
"editor"
],
"BeardMD": [
"editor"
],
"Beetstra": [
"global-rollbacker"
],
"BenTels": [
"editor"
],
"Bencemac": [
"global-rollbacker",
"global-renamer",
"vrt-permissions"
],
"Benjamin J. Burger": [
"editor"
],
"Benjamin.doe": [
"editor"
],
"Benrattray": [
"editor"
],
"Benson Muite": [
"editor"
],
"Bentbracke": [
"editor"
],
"Bequw": [
"editor"
],
"Bert Niehaus": [
"autoreview"
],
"BethNaught": [
"editor"
],
"Beuc": [
"editor"
],
"Bhardwaj Anil": [
"autoreview"
],
"BiT": [
"editor"
],
"Bigdelboy": [
"transwiki"
],
"Bignose~enwikibooks": [
"editor"
],
"Billinghurst": [
"global-rollbacker",
"editor"
],
"Billymac00": [
"editor"
],
"Biplab Anand": [
"global-rollbacker",
"global-sysop"
],
"Birdofadozentides": [
"editor"
],
"BitterAsianMan": [
"editor"
],
"Bluefoxicy": [
"editor"
],
"Bluerasberry": [
"vrt-permissions"
],
"BobChan2": [
"editor"
],
"Bodhisattwa": [
"vrt-permissions"
],
"BoldLuis": [
"editor"
],
"Borhan": [
"global-rollbacker",
"vrt-permissions"
],
"Boris1951zz": [
"editor"
],
"Bpenn005": [
"editor"
],
"Brewster239": [
"global-rollbacker"
],
"Bridget": [
"global-rollbacker",
"editor"
],
"Brienna.Hall77": [
"editor"
],
"Brim": [
"editor"
],
"Brittanys": [
"editor"
],
"Bronwynh": [
"editor"
],
"Bsadowski1": [
"editor",
"steward"
],
"Buddpaul": [
"editor"
],
"Bullercruz1": [
"editor"
],
"Buncic": [
"editor"
],
"Bunnypranav": [
"global-renamer"
],
"BurakD53": [
"editor"
],
"Burkep": [
"editor"
],
"ByGrace": [
"editor"
],
"Bykim2012": [
"editor"
],
"C1203sc": [
"editor"
],
"CJakes1": [
"editor"
],
"CKWG - Ada Magica": [
"editor"
],
"Cabayi": [
"global-renamer"
],
"CaitlinCarbury": [
"autoreview"
],
"CalciumTetraoxide": [
"editor"
],
"CalendulaAsteraceae": [
"editor"
],
"Caliburn": [
"editor"
],
"CallumPoole": [
"editor"
],
"Calvin.Andrus": [
"editor"
],
"Cameron11598": [
"editor"
],
"Camouflaged Mirage": [
"editor"
],
"Captain-tucker": [
"vrt-permissions"
],
"Carlo.milanesi": [
"editor"
],
"Caro de Segeda": [
"editor"
],
"CarsracBot": [
"editor"
],
"Catermark": [
"editor"
],
"Cecila123": [
"autoreview"
],
"Cedar101": [
"editor"
],
"Champion": [
"editor"
],
"Chaojidage": [
"editor"
],
"Chaojoker": [
"editor"
],
"Chaotic Enby": [
"autoreview",
"global-renamer"
],
"Chapka": [
"editor"
],
"Charidri": [
"editor"
],
"Charleneabeana": [
"autoreview"
],
"Charles Jeffrey Danoff": [
"editor"
],
"CharlesHoffman": [
"editor"
],
"Chazz": [
"editor"
],
"Chelseafan528": [
"editor"
],
"Cheryl2012": [
"editor"
],
"Chescargot": [
"vrt-permissions"
],
"Chi Sigma": [
"editor"
],
"Chinmayee Mishra": [
"ombuds"
],
"Chongkian": [
"editor"
],
"Chowbok": [
"editor"
],
"ChrisHodgesUK": [
"editor"
],
"ChrisWallace": [
"editor"
],
"Chriswaterguy": [
"editor"
],
"Chuckhoffmann": [
"editor"
],
"Church of emacs": [
"global-rollbacker"
],
"Cic": [
"editor"
],
"Ciell": [
"vrt-permissions"
],
"Cilantrohead": [
"editor"
],
"Cintilo": [
"editor"
],
"Circuit dreamer": [
"editor"
],
"Circuit-fantasist": [
"editor"
],
"Civvì": [
"global-rollbacker",
"global-renamer"
],
"Ckwalker": [
"editor"
],
"Clairerusselll": [
"autoreview"
],
"Cloidl": [
"autoreview"
],
"Cmsmcq": [
"editor"
],
"Cnrowley": [
"editor"
],
"CocoaZen": [
"editor"
],
"CoconutOctopus": [
"global-renamer"
],
"Codename Noreste": [
"sysop",
"global-rollbacker",
"interface-admin"
],
"Codename Noroeste": [
"editor"
],
"Codinghead": [
"editor"
],
"CommonsDelinker": [
"autoreview"
],
"Comp.arch": [
"editor"
],
"Conan": [
"editor"
],
"Cormullion": [
"editor"
],
"Count Count": [
"steward"
],
"Coupe": [
"editor"
],
"Courcelles": [
"global-rollbacker",
"editor"
],
"CptViraj": [
"global-rollbacker",
"global-renamer",
"global-sysop"
],
"Craignewland": [
"editor"
],
"Craxd1": [
"editor"
],
"CrazyEddy": [
"editor"
],
"Cremastra": [
"editor"
],
"Cremastra (JWB)": [
"autoreview"
],
"Cromium": [
"editor"
],
"Cromwellt": [
"editor"
],
"Crystal East": [
"editor"
],
"Cttcraig": [
"editor"
],
"Cultures17": [
"editor"
],
"Cultures33": [
"editor"
],
"Cultures4": [
"editor"
],
"Cultures92": [
"editor"
],
"CunninghamJohn": [
"autoreview"
],
"Curtaintoad": [
"editor"
],
"Cyberpower678": [
"global-rollbacker"
],
"Céréales Killer": [
"global-renamer"
],
"D1n05aur5 4ever": [
"editor"
],
"DARIO SEVERI": [
"autoreview",
"global-rollbacker",
"global-sysop"
],
"DC Slagel": [
"editor"
],
"DCB": [
"vrt-permissions"
],
"DD 8630": [
"editor"
],
"DGerman": [
"editor"
],
"DVD206": [
"editor"
],
"DZadventiste": [
"editor"
],
"DaB.": [
"vrt-permissions"
],
"DaGizza": [
"editor"
],
"Dagana4": [
"autoreview"
],
"Dallas1278": [
"editor"
],
"Dan Koehl": [
"editor"
],
"Dan Polansky": [
"editor"
],
"Dan-aka-jack": [
"editor"
],
"DanCherek": [
"autoreview"
],
"Danarwaller": [
"editor"
],
"DanielWhernchend": [
"editor"
],
"Danielravennest": [
"editor"
],
"Danilka5469": [
"editor"
],
"Daniuu": [
"steward",
"vrt-permissions"
],
"DannyS712": [
"editor"
],
"Darklama": [
"editor"
],
"Darklilac": [
"editor"
],
"Darrelljon": [
"editor"
],
"DarwIn": [
"vrt-permissions"
],
"Dave Braunschweig": [
"editor"
],
"David L Davis": [
"editor"
],
"DavidCary": [
"editor"
],
"DavidLevinson": [
"editor"
],
"Davidbena": [
"editor"
],
"Dayshade": [
"editor"
],
"Dchmelik": [
"editor"
],
"Dcljr": [
"editor"
],
"Dcondon": [
"editor"
],
"Deepfriedokra": [
"global-renamer"
],
"DejaVu": [
"global-rollbacker"
],
"DennisDaniels": [
"editor"
],
"Dennisblu": [
"uploader"
],
"Denniss": [
"editor"
],
"DerHexer": [
"editor",
"steward",
"vrt-permissions"
],
"Derek Andrews": [
"editor"
],
"Designermadsen": [
"editor"
],
"Deu": [
"global-rollbacker"
],
"Dexxor": [
"editor"
],
"Dezedien": [
"vrt-permissions"
],
"Diandramartin": [
"autoreview"
],
"Didym": [
"vrt-permissions"
],
"Dino Bronto Rex": [
"editor"
],
"Dirk Hünniger": [
"editor"
],
"Divinations": [
"global-rollbacker"
],
"Djb": [
"editor"
],
"Djbrown": [
"editor"
],
"Dlrohrer2003": [
"editor"
],
"Dmccreary": [
"editor"
],
"Doc Taxon": [
"vrt-permissions"
],
"Doctorxgc": [
"editor"
],
"Dom walden": [
"editor"
],
"Domdomegg": [
"editor"
],
"DominikTurner": [
"autoreview"
],
"DonaldKronos": [
"editor"
],
"DoubleGrazing": [
"global-renamer"
],
"Doubleotoo": [
"editor"
],
"Downdate": [
"editor"
],
"Dr-Taher": [
"global-renamer"
],
"Dr.Unclear": [
"editor"
],
"DreamRimmer": [
"global-renamer",
"global-sysop"
],
"Dreftymac": [
"editor"
],
"Drpundir": [
"editor"
],
"Drummingman": [
"global-rollbacker",
"global-renamer",
"vrt-permissions"
],
"DuLithgow": [
"editor"
],
"Dungodung": [
"vrt-permissions"
],
"Duplode": [
"editor"
],
"DustDFG": [
"editor"
],
"Dyolf77": [
"vrt-permissions"
],
"EDCU320RHT": [
"editor"
],
"EDUC320 Sylvialiang": [
"editor"
],
"EE JRW": [
"editor"
],
"EMAD KAYYAM": [
"editor"
],
"EPIC": [
"steward"
],
"EarlGrey2005": [
"autoreview"
],
"Ebe123": [
"editor"
],
"Ecarew": [
"editor"
],
"Edgar181": [
"editor"
],
"Edit filter": [
"sysop"
],
"EdoDodo": [
"editor"
],
"Edornbush": [
"editor"
],
"Edriiic": [
"editor"
],
"Efex": [
"editor"
],
"Efex3": [
"editor"
],
"Effeietsanders": [
"editor",
"vrt-permissions"
],
"EggRoll97": [
"editor"
],
"Egil": [
"editor"
],
"Eihel": [
"global-rollbacker",
"editor"
],
"Ejs-80": [
"global-renamer"
],
"Ekaroleski": [
"editor"
],
"Elaurier": [
"editor"
],
"Elcobbola": [
"vrt-permissions"
],
"Electro": [
"editor"
],
"ElfSnail123": [
"editor"
],
"Eli bubo4ka": [
"editor"
],
"Eliarani": [
"editor"
],
"Elli": [
"global-renamer",
"vrt-permissions"
],
"Ellywa": [
"vrt-permissions"
],
"Elmacenderesi": [
"vrt-permissions"
],
"Elton": [
"editor",
"steward"
],
"Emha": [
"vrt-permissions"
],
"EmilymDaniel": [
"autoreview"
],
"Empire3131": [
"editor"
],
"Encik Tekateki": [
"editor"
],
"Enzomartinelli": [
"editor"
],
"Eric Evers": [
"editor"
],
"Erigena": [
"editor"
],
"Erik Baas": [
"editor"
],
"ErinNik": [
"editor"
],
"Erinamukuta": [
"editor"
],
"ErrantX": [
"editor"
],
"EruannoVG": [
"editor"
],
"Espen180": [
"editor"
],
"Eta Carinae": [
"global-renamer"
],
"Ethacke1": [
"editor"
],
"Eumolpo": [
"editor"
],
"Euphydryas": [
"global-renamer"
],
"Eurodyne": [
"editor"
],
"EvDawg93": [
"editor"
],
"EvanCarroll": [
"editor"
],
"Ewen": [
"editor"
],
"Exusiai": [
"global-renamer"
],
"Ezarate": [
"global-rollbacker",
"vrt-permissions"
],
"Fabartus": [
"editor",
"uploader"
],
"Faendalimas": [
"ombuds"
],
"Fasten": [
"editor"
],
"Faster than Thunder": [
"editor"
],
"Fathoms Below": [
"global-renamer"
],
"Fcorthay": [
"editor"
],
"Fdena": [
"editor"
],
"Federhalter": [
"editor"
],
"Fehufanga": [
"global-rollbacker",
"global-sysop"
],
"Fekarp": [
"editor"
],
"Fephisto": [
"editor"
],
"Ferien": [
"global-rollbacker"
],
"Fernando2812l": [
"editor"
],
"Fernly": [
"editor"
],
"Ffion B Thompson": [
"autoreview"
],
"Fimatic": [
"editor"
],
"FischX": [
"editor"
],
"Fishpi": [
"editor"
],
"Flattail": [
"editor"
],
"FlightTime": [
"global-renamer"
],
"Flolit": [
"editor"
],
"Fluffernutter": [
"vrt-permissions"
],
"FlyingAce": [
"global-rollbacker"
],
"Fountain Pen": [
"editor"
],
"Fr33kman": [
"editor"
],
"FrancisFromGaspesie": [
"editor"
],
"Frantsch": [
"autoreview"
],
"Fredericknortje": [
"editor"
],
"Fritzlein~enwikibooks": [
"editor"
],
"Frozen Wind": [
"transwiki",
"editor"
],
"Ftaljaard": [
"editor"
],
"Ftiercel": [
"editor"
],
"Furrykef": [
"editor"
],
"GKFX": [
"editor"
],
"Galahad": [
"global-rollbacker"
],
"Gampe": [
"vrt-permissions"
],
"Ganímedes": [
"vrt-permissions"
],
"Gary Dorman Wiggins": [
"editor",
"uploader"
],
"Garygaryj": [
"editor"
],
"Gat lombard": [
"editor"
],
"Gc211": [
"editor"
],
"Geagea": [
"vrt-permissions"
],
"Geekgirl": [
"editor"
],
"GemmaCampbell": [
"autoreview"
],
"Geoff Plourde": [
"editor"
],
"Geofferybard": [
"transwiki",
"editor"
],
"GerbenRienk": [
"editor"
],
"Gerges": [
"global-rollbacker",
"global-renamer"
],
"Germany Poul Ah": [
"editor"
],
"Gertbuschmann": [
"editor"
],
"Ggee0621": [
"editor"
],
"Gifnk dlm 2020": [
"editor",
"uploader"
],
"Girdi": [
"editor"
],
"Glaisher": [
"editor"
],
"Glane23": [
"vrt-permissions"
],
"Gleb713": [
"autoreview"
],
"Glich": [
"editor"
],
"Gllyons": [
"editor"
],
"Gmasterman": [
"editor"
],
"GoblinInventor": [
"editor"
],
"Godsy": [
"autoreview"
],
"Good afternoon": [
"editor"
],
"GoreyCat": [
"editor"
],
"GorgeUbuasha": [
"editor"
],
"GorillaWarfare": [
"vrt-permissions"
],
"Gott wisst": [
"editor"
],
"Goulart": [
"editor"
],
"Gpkp": [
"editor"
],
"Gracebaysinger": [
"editor"
],
"Graeme E. Smith": [
"editor"
],
"Greatswrd": [
"editor"
],
"GreenC": [
"editor"
],
"Greenbreen": [
"editor"
],
"Greenman": [
"editor"
],
"GregXenon01": [
"editor"
],
"Gretski247": [
"editor"
],
"GreyCat": [
"editor"
],
"Grin": [
"vrt-permissions"
],
"Growl41": [
"editor"
],
"Guaka": [
"editor"
],
"Guanaco": [
"editor"
],
"GuillermoHazebrouck": [
"editor"
],
"Guus": [
"editor"
],
"Guy vandegrift": [
"editor"
],
"Guywan": [
"editor"
],
"Gzuufy": [
"editor"
],
"HJ Mitchell": [
"autoreview"
],
"HLand": [
"editor"
],
"HYanWong": [
"editor"
],
"Ha98574": [
"editor"
],
"Hagindaz": [
"editor"
],
"HakanIST": [
"editor",
"steward"
],
"Hamish": [
"global-rollbacker",
"global-renamer",
"vrt-permissions"
],
"Hanay": [
"vrt-permissions"
],
"Hannes Röst": [
"editor"
],
"Hans Adler": [
"editor"
],
"Haoreima": [
"editor"
],
"Happy-melon": [
"editor"
],
"Harry Wood": [
"editor"
],
"Harrybrowne1986": [
"editor"
],
"Harv4": [
"editor"
],
"Hasley": [
"editor"
],
"Hazard-SJ": [
"global-rollbacker"
],
"He7d3r": [
"editor"
],
"HenkvD": [
"editor"
],
"Herbythyme": [
"editor"
],
"Hercule": [
"editor"
],
"Herman darman": [
"editor"
],
"HerrHartmuth": [
"editor"
],
"Hethrir": [
"editor"
],
"HgDeviasse": [
"editor"
],
"Hippias": [
"editor"
],
"Hliow": [
"autoreview"
],
"Holder": [
"global-rollbacker",
"global-sysop"
],
"Holdoffhunger": [
"editor"
],
"Hoo man": [
"editor",
"steward"
],
"HouseBlaster": [
"global-renamer"
],
"Howard Beale": [
"editor"
],
"Hpon": [
"editor"
],
"Hrkalona": [
"autoreview"
],
"Hskeet": [
"editor",
"uploader"
],
"Htm": [
"vrt-permissions"
],
"Hugetim": [
"editor"
],
"Humaira Ali": [
"editor"
],
"Huntertur": [
"editor"
],
"Hydriz": [
"global-rollbacker"
],
"Ibidthewriter": [
"editor"
],
"Ibrahim Sani Mustapha": [
"editor"
],
"Ibrahim.ID": [
"global-renamer",
"vrt-permissions"
],
"Icetruck": [
"editor"
],
"Icodense": [
"global-rollbacker",
"global-sysop"
],
"Idavidmiller": [
"editor"
],
"Ideasman42": [
"editor"
],
"Igna": [
"editor"
],
"Ijon": [
"vrt-permissions"
],
"Illusional": [
"editor"
],
"Iluvatar": [
"global-rollbacker",
"vrt-permissions"
],
"Indiana": [
"editor"
],
"Inductiveload": [
"editor"
],
"Inertia6084": [
"autoreview"
],
"Inferno986return": [
"editor"
],
"Infinite0694": [
"global-rollbacker",
"global-sysop"
],
"Ingolemo": [
"editor"
],
"Insignificantwrangler": [
"editor"
],
"Internoob": [
"transwiki",
"editor"
],
"InverseHypercube": [
"editor"
],
"Isenhand": [
"editor"
],
"Ish ishwar": [
"editor"
],
"Iste Praetor": [
"editor"
],
"ItsNyoty": [
"vrt-permissions"
],
"Itsmeyash31": [
"autoreview"
],
"Itswikisam": [
"editor"
],
"Itti": [
"global-renamer",
"vrt-permissions"
],
"Ixfd64": [
"editor"
],
"J ansari": [
"global-rollbacker"
],
"J.palacios.jean": [
"editor"
],
"J36miles": [
"editor"
],
"JBW": [
"global-renamer"
],
"JCrue": [
"editor"
],
"JJ12880": [
"editor"
],
"JJMC89": [
"vrt-permissions"
],
"JJPMaster": [
"sysop",
"global-rollbacker",
"global-renamer",
"interface-admin",
"vrt-permissions"
],
"JJPMaster (test 1)": [
"autoreview"
],
"JJohnson": [
"editor"
],
"JJohnson1701": [
"editor"
],
"JPPINTO": [
"editor"
],
"Jack Frost": [
"vrt-permissions"
],
"JackBot": [
"editor"
],
"JackPotte": [
"sysop",
"interface-admin"
],
"Jackhand1": [
"autoreview"
],
"Jacob J. Walker": [
"editor"
],
"Jafeluv": [
"global-rollbacker",
"editor"
],
"Jake Park": [
"global-renamer"
],
"Jakec": [
"editor"
],
"JamesCrook": [
"editor"
],
"JamesNZ": [
"editor"
],
"Jamesofur": [
"global-rollbacker"
],
"Jamesssss": [
"editor"
],
"Jamzze": [
"editor"
],
"Jan Myšák": [
"global-rollbacker"
],
"Jan.duggan": [
"autoreview"
],
"Janbery": [
"global-rollbacker",
"vrt-permissions"
],
"Janpha": [
"editor"
],
"Janschejbal": [
"editor"
],
"Jason.Cozens": [
"editor"
],
"Jaspalkaler": [
"editor"
],
"Jasper Deng": [
"global-rollbacker"
],
"JavaHurricane": [
"global-rollbacker",
"editor"
],
"Javier Carro": [
"editor"
],
"JavierCantero": [
"editor"
],
"Jay Bolero": [
"editor"
],
"Jazzmanian": [
"editor"
],
"Jcb": [
"editor",
"vrt-permissions"
],
"Jcwf": [
"editor"
],
"Jeff G.": [
"global-rollbacker",
"editor"
],
"Jeff1138": [
"editor"
],
"Jellysandwich0": [
"editor"
],
"JenVan": [
"editor"
],
"JenniferPalacios": [
"editor"
],
"Jenniferjkidd": [
"editor"
],
"Jens Østergaard Petersen": [
"editor"
],
"JeremyMcCracken": [
"editor"
],
"Jeroenr": [
"editor"
],
"Jerome Charles Potts": [
"editor"
],
"Jerry vlntn": [
"editor"
],
"Jesdisciple": [
"editor"
],
"Jfmantis": [
"editor"
],
"Jianhui67": [
"global-rollbacker",
"editor"
],
"Jianhui67 public": [
"editor"
],
"Jim Ashby": [
"autoreview"
],
"JimKillock": [
"editor"
],
"Jimbotyson": [
"editor"
],
"Jimmy Xu": [
"vrt-permissions"
],
"Jkauf007": [
"editor"
],
"Jmdeschamps": [
"uploader"
],
"Jnanaranjan sahu": [
"ombuds"
],
"Jnewh001": [
"editor"
],
"Jobin RV": [
"editor"
],
"Joewiz": [
"editor"
],
"Johannes Bo": [
"editor"
],
"Johannnes89": [
"steward"
],
"John Cross": [
"editor"
],
"JohnMarcelo": [
"editor"
],
"Johnkn63": [
"editor"
],
"Johnwhelan": [
"editor"
],
"Jokes Free4Me": [
"editor"
],
"Jomegat": [
"editor"
],
"Jon Harald Søby": [
"vrt-permissions"
],
"Jon Kolbert": [
"steward",
"vrt-permissions"
],
"Jonathan Webley": [
"editor"
],
"Jordan Brown": [
"editor"
],
"JorisvS": [
"editor"
],
"Josve05a": [
"vrt-permissions"
],
"Jrincayc": [
"editor"
],
"Jsnaree": [
"editor"
],
"Jtneill": [
"editor"
],
"JuethoBot": [
"autoreview"
],
"Jugandi": [
"editor"
],
"Jules*": [
"global-renamer"
],
"Juliancolton": [
"global-rollbacker",
"editor"
],
"Jumark27": [
"editor"
],
"JustTheFacts33": [
"editor"
],
"Justlettersandnumbers": [
"global-renamer",
"vrt-permissions"
],
"K6ka": [
"global-rollbacker",
"global-renamer"
],
"Kadı": [
"global-renamer",
"vrt-permissions"
],
"Kai Burghardt": [
"editor"
],
"Kaltenmeyer": [
"editor"
],
"Kambai Akau": [
"editor"
],
"Kanjy": [
"global-rollbacker",
"editor"
],
"Kapooht": [
"editor"
],
"Karl Wick": [
"editor"
],
"Karosent": [
"editor"
],
"Kashkhan": [
"editor"
],
"Kathryn Mary Nicholson": [
"autoreview"
],
"Katiemgeorge": [
"editor"
],
"Katyauchter": [
"editor"
],
"Kaushlendratripathi": [
"editor"
],
"Kaw8yh": [
"editor"
],
"Kayau": [
"transwiki",
"editor"
],
"Kellen": [
"editor"
],
"Kelti": [
"editor"
],
"Kiefer.Wolfowitz": [
"editor"
],
"Killarnee": [
"editor"
],
"King of Hearts": [
"vrt-permissions"
],
"Kingaustin07": [
"editor"
],
"Kingofnuthin": [
"editor"
],
"Kirito": [
"global-rollbacker",
"editor"
],
"Kittycataclysm": [
"sysop"
],
"Kj cheetham": [
"global-renamer"
],
"Kkmurray": [
"editor"
],
"Kl-robertson": [
"editor"
],
"Klaas van Buiten": [
"editor"
],
"Knittedbees": [
"transwiki",
"editor"
],
"Knoppson": [
"autoreview"
],
"Koantum": [
"editor"
],
"Koavf": [
"sysop",
"global-rollbacker"
],
"Kodos": [
"editor"
],
"KonstantinaG07": [
"editor",
"steward"
],
"Kowey": [
"editor"
],
"KrakatoaKatie": [
"vrt-permissions"
],
"Krd": [
"vrt-permissions"
],
"Krdbot": [
"vrt-permissions"
],
"Kri": [
"editor"
],
"Krinkle": [
"global-rollbacker"
],
"Kropotkine 113": [
"vrt-permissions"
],
"Kruusamägi": [
"vrt-permissions"
],
"Ktucker": [
"editor"
],
"Kwamikagami": [
"editor"
],
"Kwhitefoot": [
"editor"
],
"Kylu": [
"editor"
],
"Kızıl": [
"global-renamer"
],
"L10nM4st3r": [
"editor"
],
"LABoyd2": [
"editor"
],
"LR0725": [
"global-rollbacker",
"global-sysop"
],
"Ladislav": [
"editor"
],
"Ladsgroup": [
"global-renamer"
],
"Ladybug62": [
"editor"
],
"Lagoset": [
"editor"
],
"Larsnooden": [
"editor"
],
"Laurianedani": [
"editor"
],
"Lcraw005": [
"editor"
],
"Ldo": [
"editor"
],
"Leaderboard": [
"sysop",
"global-renamer",
"interface-admin"
],
"Learnerktm": [
"editor"
],
"Lechatjaune": [
"vrt-permissions"
],
"Leighblackall": [
"editor"
],
"Lengel46": [
"editor"
],
"Lentokonefani": [
"global-renamer"
],
"LeoChiukl": [
"editor"
],
"Leonard64": [
"uploader"
],
"Leonidlednev": [
"autoreview",
"global-rollbacker"
],
"Leovanderven": [
"editor"
],
"Lesless": [
"vrt-permissions"
],
"Leyo": [
"global-rollbacker"
],
"Lgriot": [
"editor"
],
"Liam987": [
"editor"
],
"Liao": [
"editor"
],
"Libperry": [
"editor"
],
"Limiza": [
"editor"
],
"Lionel Cristiano": [
"editor"
],
"Litlok": [
"global-renamer"
],
"Little Sunshine": [
"global-renamer"
],
"Llakew": [
"editor"
],
"LlamaAl": [
"editor"
],
"Lobsteroh": [
"editor"
],
"LodestarChariot2": [
"editor"
],
"Lofty abyss": [
"global-rollbacker",
"editor",
"vrt-permissions"
],
"Logictheo": [
"editor"
],
"Lomita": [
"vrt-permissions"
],
"Londonjackbooks": [
"editor"
],
"Lovepeacejoy404": [
"editor"
],
"Lp0 on fire": [
"autoreview",
"global-rollbacker"
],
"Lubaochuan": [
"editor"
],
"Luckas Blade": [
"editor"
],
"Lucystewpid": [
"autoreview"
],
"Ludovic Brenta": [
"editor"
],
"Ludovicocaldara": [
"editor",
"uploader"
],
"Lukas²³": [
"editor"
],
"LukeCEL": [
"editor"
],
"Lvova": [
"vrt-permissions"
],
"Lwill031": [
"editor"
],
"M7": [
"steward"
],
"MARKELLOS": [
"vrt-permissions"
],
"MBq": [
"global-renamer"
],
"MF-Warburg": [
"global-rollbacker",
"global-sysop",
"editor"
],
"MGA73": [
"vrt-permissions"
],
"MIacono": [
"editor"
],
"MNeuschaefer": [
"editor"
],
"MS Sakib": [
"global-renamer",
"vrt-permissions"
],
"Mabdul": [
"transwiki",
"editor",
"uploader"
],
"Madisonhen": [
"autoreview"
],
"Magda.dagda": [
"editor"
],
"Magnus Manske": [
"editor"
],
"Mahagaja": [
"editor"
],
"MaikoM93": [
"editor"
],
"Maire": [
"global-renamer"
],
"Malarz pl": [
"global-renamer"
],
"Manchiu": [
"global-renamer"
],
"MandoRachovitsa": [
"autoreview"
],
"Mandy Hopkins": [
"editor"
],
"ManuelGR": [
"editor"
],
"MarcGarver": [
"sysop",
"checkuser",
"steward"
],
"Marco Klunder": [
"editor"
],
"MarcoAurelio": [
"editor"
],
"Marcus Cyron": [
"vrt-permissions"
],
"Mardus": [
"editor"
],
"MarkJFernandes": [
"editor"
],
"MarkTraceur": [
"editor"
],
"Markcwm": [
"editor"
],
"Markhobley": [
"editor"
],
"MarsRover": [
"editor"
],
"Marshman~enwikibooks": [
"editor"
],
"Martin Kraus": [
"editor"
],
"Martin Sauter": [
"editor"
],
"Martin Urbanec": [
"editor",
"steward",
"vrt-permissions"
],
"MartinPoulter": [
"editor"
],
"Martinwguy2": [
"editor"
],
"MarygoldRules": [
"editor"
],
"Master tongue": [
"editor"
],
"Masti": [
"steward",
"vrt-permissions"
],
"Math buff": [
"editor"
],
"MathXplore": [
"global-rollbacker",
"editor"
],
"Mathildem16": [
"autoreview"
],
"Mathmensch": [
"editor"
],
"Mathmensch-Smalledits": [
"editor"
],
"Mathmogeek": [
"editor"
],
"Maths314": [
"editor"
],
"Matiia": [
"editor"
],
"Matrix": [
"autoreview",
"vrt-permissions"
],
"Matsievsky": [
"editor"
],
"Mattb112885": [
"editor"
],
"Mattbarton.exe": [
"editor"
],
"Matttest": [
"autoreview"
],
"Max Milas": [
"editor"
],
"Maxim": [
"editor"
],
"Maximillion Pegasus": [
"global-rollbacker",
"editor"
],
"Maxint2": [
"editor"
],
"Mazbel": [
"global-rollbacker"
],
"Mbch331": [
"vrt-permissions"
],
"Mbrickn": [
"transwiki",
"editor"
],
"Mcdonnkm": [
"editor"
],
"Mcld": [
"editor"
],
"Mdkoch84": [
"editor"
],
"Mdmckenzie": [
"editor"
],
"MdsShakil": [
"steward",
"vrt-permissions"
],
"Mdupont": [
"editor"
],
"Me Lendroz": [
"editor"
],
"Meanmicio": [
"editor"
],
"Mecanismo": [
"editor"
],
"MediaKyle": [
"editor"
],
"Meditation": [
"editor"
],
"Meev0": [
"editor"
],
"Mehman": [
"ombuds",
"vrt-permissions"
],
"Melos": [
"steward",
"vrt-permissions"
],
"MemicznyJanusz": [
"global-renamer"
],
"Mendelivia~enwikibooks": [
"editor"
],
"Meniktah": [
"editor"
],
"Mercy": [
"global-rollbacker",
"editor"
],
"MerlLinkBot": [
"editor"
],
"Mfield": [
"global-renamer"
],
"Mh7kJ": [
"editor"
],
"Michael Romanov": [
"editor"
],
"MichaelFrey": [
"editor"
],
"Michaelbluett": [
"editor",
"uploader"
],
"Mido": [
"vrt-permissions"
],
"MihalOrela": [
"editor"
],
"MiiCii": [
"editor"
],
"Mike Hayes": [
"editor"
],
"Mike.lifeguard": [
"editor"
],
"Mild Bill Hiccup": [
"editor"
],
"Mill3315": [
"editor"
],
"Millbart": [
"vrt-permissions"
],
"Mimarx": [
"editor"
],
"Min1996": [
"autoreview"
],
"Minorax": [
"global-rollbacker",
"global-sysop",
"editor"
],
"Mirinano": [
"global-rollbacker"
],
"Mithridates": [
"editor"
],
"Mjbt": [
"editor"
],
"Mjchael": [
"editor"
],
"Mjkaye": [
"editor"
],
"Mkline": [
"autoreview"
],
"Mlipl001": [
"editor"
],
"Moby-Dick4000": [
"editor"
],
"Mohean": [
"editor"
],
"Money-lover-12345": [
"editor"
],
"Moonriddengirl": [
"autoreview",
"vrt-permissions"
],
"Mortense": [
"editor"
],
"Mpfau": [
"editor"
],
"Mr. Stradivarius": [
"editor"
],
"MrAlanKoh": [
"editor"
],
"MrJaroslavik": [
"global-rollbacker",
"ombuds"
],
"Mrajcok": [
"editor"
],
"Mrjulesd": [
"editor"
],
"Mrwojo": [
"editor"
],
"Mschrag": [
"editor"
],
"Msmithma": [
"editor"
],
"MtPenguinMonster": [
"editor"
],
"Mtarch11": [
"global-rollbacker",
"global-sysop",
"editor"
],
"Musical Inquisit": [
"editor"
],
"Mussklprozz": [
"vrt-permissions"
],
"Mvolz": [
"editor"
],
"Mwtoews": [
"editor"
],
"Mxn": [
"editor"
],
"Myklaw": [
"editor"
],
"Mykola7": [
"steward"
],
"Mys 721tx": [
"global-renamer",
"vrt-permissions"
],
"NDG": [
"global-rollbacker",
"editor"
],
"Nadzik": [
"global-rollbacker",
"global-renamer"
],
"NahidSultan": [
"vrt-permissions"
],
"Nangkhan Magar": [
"editor"
],
"Natuur12": [
"vrt-permissions"
],
"Nbarth": [
"editor"
],
"Nbro": [
"editor"
],
"Nehaoua": [
"ombuds"
],
"Neils51": [
"editor"
],
"Nemoralis": [
"vrt-permissions"
],
"Neojacob": [
"editor"
],
"Neriah": [
"global-rollbacker",
"global-renamer"
],
"Nesbit": [
"editor"
],
"Newlisp": [
"editor"
],
"Nfgdayton": [
"editor"
],
"NguoiDungKhongDinhDanh": [
"global-rollbacker",
"editor"
],
"NhacNy2412": [
"global-renamer"
],
"Nick.anderegg": [
"editor"
],
"NickPenguin": [
"editor"
],
"NicoScribe": [
"editor"
],
"Nicole Sharp": [
"editor"
],
"Nieuwsgierige Gebruiker": [
"editor"
],
"Nigos": [
"autoreview"
],
"Nihonjoe": [
"global-renamer"
],
"Nikai": [
"editor"
],
"Ninjastrikers": [
"vrt-permissions"
],
"NipplesMeCool": [
"editor"
],
"Njardarlogar": [
"editor"
],
"Nobody60": [
"editor"
],
"Nolispanmo": [
"vrt-permissions"
],
"Nomstuff": [
"autoreview"
],
"Nonenmac": [
"editor"
],
"Norton": [
"editor"
],
"Npettiaux": [
"editor"
],
"Nsaa": [
"vrt-permissions"
],
"Nthep": [
"vrt-permissions"
],
"NuclearWarfare": [
"global-rollbacker",
"editor"
],
"OMSMike": [
"editor"
],
"Officer781": [
"editor"
],
"Oleander": [
"editor"
],
"Oliviacatherall": [
"autoreview"
],
"Omphalographer": [
"editor"
],
"OnBeyondZebrax": [
"editor"
],
"Onsen": [
"editor"
],
"Ontzak": [
"global-renamer"
],
"Orderud": [
"editor"
],
"OrenBochman": [
"editor"
],
"Oshwah": [
"global-renamer"
],
"Ottawahitech": [
"editor"
],
"Owain.davies": [
"editor"
],
"PAC": [
"editor"
],
"PAC2": [
"editor"
],
"PK 97": [
"editor"
],
"PNW Raven": [
"editor"
],
"Pac8612": [
"editor"
],
"Paloi Sciurala": [
"global-rollbacker"
],
"Panic2k4": [
"transwiki",
"editor"
],
"Pascal Pignard": [
"editor"
],
"Pastbury": [
"editor"
],
"Pathfinders": [
"editor"
],
"Pathoschild": [
"editor"
],
"Patrik": [
"editor"
],
"PauSix": [
"editor"
],
"Paul James": [
"editor"
],
"Pavroo": [
"editor"
],
"PbakerODU": [
"editor"
],
"Pbrower2a": [
"editor"
],
"Pearts": [
"editor"
],
"Peeragogia": [
"editor"
],
"Peri Coleman": [
"editor"
],
"Perl~enwikibooks": [
"editor"
],
"Peter1180": [
"editor"
],
"PeterEasthope": [
"editor"
],
"Peyton09": [
"editor"
],
"Phan M. Nhat": [
"autoreview"
],
"PhilKnight": [
"global-renamer"
],
"Phoebe": [
"editor"
],
"Phosgram": [
"editor"
],
"Pi zero": [
"editor"
],
"PieWriter": [
"editor"
],
"Piotrus": [
"editor"
],
"Pithikos": [
"editor"
],
"Pittsburgh Poet": [
"editor"
],
"Pjpearce": [
"editor"
],
"Pkkao": [
"editor"
],
"Planotse": [
"editor"
],
"Platonides": [
"vrt-permissions"
],
"Pluke": [
"editor"
],
"PlyrStar93": [
"global-rollbacker",
"editor"
],
"Pminh141": [
"global-renamer"
],
"Pmlineditor": [
"editor"
],
"Pmw57": [
"editor"
],
"Poetcsw": [
"editor"
],
"PoizonMyst": [
"editor"
],
"Pola 2607": [
"autoreview"
],
"Polimerek": [
"vrt-permissions"
],
"Polluks": [
"editor"
],
"Pookiyama": [
"editor"
],
"Popski": [
"editor"
],
"Povigna": [
"editor"
],
"Ppolar bear": [
"global-rollbacker",
"global-renamer"
],
"Pppery": [
"autoreview"
],
"Prahlad balaji": [
"editor"
],
"Pratyeka": [
"editor"
],
"Praxidicae": [
"global-rollbacker",
"global-sysop",
"editor"
],
"Primefac": [
"vrt-permissions"
],
"Prince Kassad~enwikibooks": [
"editor"
],
"Pronesto": [
"editor"
],
"Prototyperspective": [
"autoreview"
],
"Psoup": [
"editor"
],
"Psr1909": [
"editor"
],
"PullUpYourSocks": [
"editor"
],
"PurpleBuffalo": [
"global-renamer"
],
"PurplePieman": [
"editor"
],
"Purplebackpack89": [
"editor"
],
"Putukas01": [
"editor"
],
"Qenalcu": [
"autoreview"
],
"Quebecguy": [
"global-rollbacker"
],
"QueerEcofeminist": [
"global-rollbacker",
"global-renamer",
"editor"
],
"Quinlan83": [
"global-rollbacker",
"editor"
],
"Quintucket": [
"editor"
],
"Qwerty number1": [
"editor"
],
"Qwertyus": [
"editor"
],
"Qədir": [
"global-rollbacker",
"global-renamer",
"vrt-permissions"
],
"R. Henrik Nilsson": [
"editor"
],
"RAdimer-WMF": [
"global-rollbacker"
],
"RDBury": [
"editor"
],
"RJHall": [
"editor"
],
"Ra'ike": [
"vrt-permissions"
],
"Rachboots": [
"editor"
],
"Rachel": [
"editor"
],
"Rachmat04": [
"global-renamer",
"vrt-permissions"
],
"RadiX": [
"editor",
"steward",
"vrt-permissions"
],
"Raffaela Kunz": [
"editor"
],
"Rahulkepapa": [
"editor"
],
"Ramac": [
"editor"
],
"Rambam rashi": [
"editor"
],
"Randykitty": [
"autoreview",
"global-rollbacker"
],
"RatónMístico176": [
"editor"
],
"Ravichandar84": [
"editor"
],
"Rawheatley": [
"editor"
],
"Ray Trygstad": [
"editor"
],
"RayeChellMahela": [
"editor"
],
"Raymond": [
"vrt-permissions"
],
"Razr Nation": [
"editor"
],
"Rchaswms01": [
"editor"
],
"Rcragun": [
"editor",
"uploader"
],
"Readyokaygo": [
"editor"
],
"Recent Runes": [
"editor"
],
"Redlentil": [
"editor"
],
"Refcanimm": [
"editor"
],
"Regasterios": [
"vrt-permissions"
],
"Reinhard Kraasch": [
"vrt-permissions"
],
"RenaissanceMan2144": [
"autoreview"
],
"Renamed user 242094acfb1a5b2f08e9e78f2e021a40": [
"editor"
],
"Renamed user 5f91ca71739b07cfce8397eed758fe13": [
"editor",
"uploader"
],
"Renamed user f26394dcb19bd7bdad78f0d752896653": [
"editor"
],
"Renvoy": [
"global-rollbacker",
"global-sysop"
],
"Reseletti": [
"editor"
],
"Retropunk": [
"editor"
],
"Reuben1508": [
"autoreview"
],
"Revi C.": [
"global-rollbacker",
"global-renamer",
"ombuds",
"editor",
"vrt-permissions"
],
"Reyk": [
"editor"
],
"Rfc1394": [
"editor"
],
"Rgdboer": [
"editor"
],
"Rgreenone": [
"editor"
],
"Rhole2001": [
"autoreview"
],
"Rich Farmbrough": [
"editor"
],
"Rickstambaugh": [
"editor"
],
"Riggwelter": [
"vrt-permissions"
],
"Risk": [
"editor"
],
"Risteall": [
"editor"
],
"Ritjesman": [
"editor"
],
"RoMancer": [
"editor"
],
"Robbiemorrison": [
"editor"
],
"Robert Huber~enwikibooks": [
"editor"
],
"Roberto Mura": [
"editor"
],
"Robertsky": [
"global-renamer",
"vrt-permissions"
],
"RobinH": [
"editor"
],
"Rodasmith": [
"editor"
],
"Rodrigo": [
"editor"
],
"Rodrigo.Argenton": [
"vrt-permissions"
],
"Rogerborrell": [
"editor"
],
"Rogerdpack": [
"editor"
],
"RogueScholar": [
"editor"
],
"Romainbehar": [
"editor"
],
"RomaineBot": [
"vrt-permissions"
],
"RonaldB": [
"vrt-permissions"
],
"Rosser1954": [
"editor"
],
"Rotlink": [
"editor"
],
"RoySmith": [
"ombuds"
],
"Rozzychan": [
"editor"
],
"Rplano": [
"editor"
],
"Rreagan007": [
"autoreview"
],
"Rrgreen": [
"editor"
],
"Rschen7754": [
"global-rollbacker",
"editor"
],
"RshieldsVA": [
"editor"
],
"Rsjaffe": [
"global-renamer"
],
"Rtaisis": [
"editor"
],
"Ruakh": [
"editor"
],
"Rudolpho~enwikibooks": [
"editor"
],
"Runfellow": [
"editor"
],
"Runner4lyfe": [
"editor"
],
"RunningBlind": [
"editor"
],
"Ruthven": [
"vrt-permissions"
],
"Ruud Koot": [
"transwiki",
"editor"
],
"Rzuwig": [
"autoreview",
"global-rollbacker"
],
"S8321414": [
"global-renamer"
],
"SB Johnny": [
"editor"
],
"SCP-2000": [
"global-rollbacker",
"global-renamer",
"vrt-permissions"
],
"SHB2000": [
"sysop",
"steward"
],
"SPM": [
"editor"
],
"Sae1962": [
"editor"
],
"Safuan12616": [
"editor"
],
"SahniM": [
"editor"
],
"Sakretsu": [
"steward"
],
"Sakura emad": [
"global-rollbacker"
],
"Salil Kumar Mukherjee": [
"editor"
],
"Samat": [
"vrt-permissions"
],
"Sammy2012": [
"editor"
],
"Samuel.dellit": [
"editor"
],
"Samuele2002": [
"global-rollbacker",
"editor"
],
"Samwilson": [
"editor"
],
"SanBonne": [
"global-rollbacker",
"global-renamer",
"vrt-permissions"
],
"Sandbergja": [
"editor"
],
"Sannita": [
"vrt-permissions"
],
"Sante Caserio~enwikibooks": [
"editor"
],
"SarahFatimaK": [
"editor"
],
"Sargoth": [
"vrt-permissions"
],
"Saroj": [
"global-rollbacker"
],
"Sascha Lill 95": [
"editor"
],
"Satdeep Gill": [
"vrt-permissions"
],
"Savh": [
"global-rollbacker",
"editor"
],
"Sbb1413": [
"editor"
],
"Scention": [
"editor"
],
"Schniggendiller": [
"steward"
],
"SchreiberBike": [
"editor"
],
"Scott.beckman": [
"editor"
],
"Sebastian Wallroth": [
"vrt-permissions"
],
"Seewolf": [
"global-rollbacker",
"vrt-permissions"
],
"Sekidoki": [
"vrt-permissions"
],
"Selden": [
"editor"
],
"Sennecaster": [
"vrt-permissions"
],
"Serinap": [
"editor"
],
"Seth Miller": [
"editor"
],
"SevenSpheres": [
"editor"
],
"Sfan00 IMG": [
"editor"
],
"Sfoerster": [
"editor"
],
"Sgarrigan": [
"editor"
],
"Sgowal": [
"editor"
],
"Shaitand": [
"editor"
],
"ShakespeareFan00": [
"editor"
],
"SharingNotes": [
"editor"
],
"Shawntanchinyang": [
"editor"
],
"Shdwninja8": [
"editor"
],
"ShelleyAdams": [
"autoreview"
],
"ShifaYT": [
"global-rollbacker"
],
"Shii": [
"editor"
],
"Shira the Mogul": [
"editor"
],
"Shlomif": [
"editor"
],
"ShuBraque": [
"editor"
],
"Sidelight12": [
"editor"
],
"Sidorkin": [
"editor"
],
"Sidpatil": [
"editor"
],
"Siebengang": [
"editor"
],
"Sigma 7": [
"editor"
],
"Simon Peter Hughes": [
"editor"
],
"Sinus46": [
"editor"
],
"Sir Beluga": [
"editor"
],
"Sir Lestaty de Lioncourt": [
"vrt-permissions"
],
"SixWingedSeraph": [
"editor"
],
"Sj": [
"editor"
],
"Sjc~enwikibooks": [
"editor"
],
"Sjlegg": [
"editor"
],
"Sjone101": [
"editor"
],
"Sjö": [
"global-rollbacker"
],
"Skymath": [
"editor"
],
"Slava Ukraini Heroyam Slava 123": [
"editor",
"uploader"
],
"Slava Ukrajini Heroyam Slava": [
"editor"
],
"Sluffs": [
"editor"
],
"Smjg": [
"editor"
],
"SnappyDragonPennyroyal": [
"editor"
],
"SocialKnowledge": [
"editor"
],
"SoftwareEngineerMoose": [
"autoreview"
],
"Sonia": [
"editor"
],
"Sophie Cheng": [
"editor"
],
"Sotiale": [
"steward"
],
"Soul windsurfer": [
"editor"
],
"SouthParkFan65": [
"editor"
],
"SoylentGreen": [
"editor"
],
"Spamduck": [
"editor"
],
"Spaynton": [
"editor"
],
"Spender2001": [
"editor"
],
"Speregrination": [
"editor"
],
"Spiderworm": [
"editor"
],
"Spoon!": [
"editor"
],
"Squasher": [
"global-renamer"
],
"Srhat": [
"editor"
],
"Stang": [
"global-rollbacker",
"editor",
"vrt-permissions"
],
"Stanglavine": [
"editor"
],
"Steinsplitter": [
"global-renamer",
"vrt-permissions"
],
"StephT0704": [
"autoreview"
],
"Stepheng3": [
"editor"
],
"Stepro": [
"vrt-permissions"
],
"Steve M": [
"editor"
],
"Stilfehler": [
"editor"
],
"Stockywood": [
"editor"
],
"Storeye": [
"editor"
],
"Strainu": [
"vrt-permissions"
],
"Strange quark": [
"editor"
],
"Stryn": [
"global-rollbacker",
"editor"
],
"Stïnger": [
"global-rollbacker",
"editor"
],
"Suchenwi": [
"editor"
],
"Sumone10154": [
"editor"
],
"SunCreator": [
"editor"
],
"Sunny Cryolite": [
"global-rollbacker"
],
"Sunshineconnelly": [
"editor"
],
"SuperTyphoonNoru": [
"editor"
],
"Superbass": [
"vrt-permissions"
],
"Superpes15": [
"global-rollbacker",
"global-renamer",
"global-sysop",
"vrt-permissions"
],
"Supertoff": [
"vrt-permissions"
],
"Superzerocool": [
"vrt-permissions"
],
"SupremeUmanu": [
"editor"
],
"Suruena": [
"editor"
],
"Sutambe": [
"editor"
],
"Sutton Publishing": [
"editor"
],
"Sué González Hauck": [
"editor"
],
"Svartava": [
"global-rollbacker",
"global-renamer",
"global-sysop",
"editor"
],
"SweetCanadianMullet": [
"editor"
],
"Swift": [
"editor"
],
"SyG": [
"editor"
],
"Sylvesterchukwu04": [
"editor"
],
"Sylvialim": [
"editor"
],
"Sylviaread": [
"editor"
],
"Synoman Barris": [
"global-rollbacker",
"transwiki",
"editor"
],
"Syum90": [
"global-rollbacker",
"editor"
],
"Syunsyunminmin": [
"global-rollbacker",
"global-renamer",
"global-sysop",
"editor"
],
"T.seppelt": [
"editor"
],
"TDang": [
"editor"
],
"TTWIDEE": [
"editor"
],
"Tahmid": [
"editor"
],
"Taketa": [
"global-renamer"
],
"Takipoint123": [
"vrt-permissions"
],
"TakuyaMurata": [
"editor"
],
"Tamzin": [
"global-renamer"
],
"Tanbiruzzaman": [
"global-rollbacker",
"global-renamer",
"global-sysop",
"editor",
"vrt-permissions"
],
"Tannertsf": [
"editor"
],
"Taoheedah": [
"editor"
],
"Tapsevarg": [
"editor"
],
"TaronjaSatsuma": [
"vrt-permissions"
],
"Taxman": [
"editor"
],
"Tchoř": [
"global-renamer"
],
"Tdkehoe": [
"editor"
],
"Tdvorak": [
"editor"
],
"Techman224": [
"editor"
],
"Tegel": [
"editor",
"steward"
],
"Teles": [
"ombuds",
"steward",
"vrt-permissions"
],
"Tem5psu": [
"editor"
],
"Tempodivalse": [
"editor"
],
"TenWhile6": [
"global-rollbacker",
"global-renamer",
"global-sysop",
"editor"
],
"Tenshi Hinanawi": [
"autoreview",
"global-rollbacker"
],
"Terence Kearey": [
"editor"
],
"Ternarius": [
"global-renamer"
],
"Ternera": [
"global-rollbacker",
"global-renamer",
"global-sysop",
"editor"
],
"Tesleemah": [
"editor"
],
"Tevfik AKTUĞLU": [
"editor"
],
"Tgregtregretgtr": [
"editor"
],
"ThatBPengineer": [
"autoreview"
],
"Thatonewikiguy": [
"editor"
],
"The Squirrel Conspiracy": [
"vrt-permissions"
],
"The labs": [
"editor"
],
"TheGoodEndedHappily": [
"vrt-permissions"
],
"ThePCKid": [
"editor"
],
"TheSandDoctor": [
"global-renamer",
"vrt-permissions"
],
"Theknightwho": [
"editor"
],
"Thenub314": [
"editor"
],
"Theo Hughes": [
"editor"
],
"Theornamentalist": [
"editor"
],
"Thereen": [
"editor"
],
"Thewinster": [
"editor"
],
"Thierry Dugnolle": [
"editor"
],
"Thinkglobalnow": [
"editor"
],
"Thirunavukkarasye-Raveendran": [
"editor"
],
"Thomas Simpson": [
"editor"
],
"Thomas.haslwanter": [
"editor"
],
"Thomas.lochmatter": [
"editor"
],
"Tibetologist": [
"editor"
],
"Tigerzeng": [
"global-rollbacker"
],
"Tiled": [
"editor"
],
"TimBorgNetzWerk": [
"editor"
],
"Timothy Gu": [
"editor"
],
"Timpo": [
"editor"
],
"Tiptoety": [
"editor"
],
"Tjyang": [
"editor"
],
"Tlustulimu": [
"editor"
],
"Tmvogel": [
"editor"
],
"Tom Morris": [
"editor"
],
"Tomato86": [
"editor"
],
"Tomt87": [
"editor"
],
"Tomybrz": [
"editor"
],
"Tonyvall": [
"autoreview"
],
"Tp42": [
"editor"
],
"Tracklayingninja": [
"editor"
],
"Tradimus": [
"editor"
],
"Tropicalkitty": [
"global-rollbacker",
"editor"
],
"TrulyShruti": [
"editor"
],
"Ts12rAc": [
"global-rollbacker"
],
"Tsarina CatarinaToo": [
"autoreview"
],
"TunnelESON": [
"sysop"
],
"Turbojet": [
"vrt-permissions"
],
"Turkmen": [
"editor"
],
"TwoThirty": [
"editor"
],
"Tyoyafud": [
"editor"
],
"Túrelio": [
"autoreview"
],
"U$3rname008": [
"editor"
],
"USSR-Slav": [
"global-rollbacker"
],
"Uf.hun2201": [
"editor"
],
"Uncitoyen": [
"global-rollbacker",
"global-renamer"
],
"Uncle G": [
"editor"
],
"Unixxx": [
"editor"
],
"User01938": [
"editor"
],
"Username222": [
"editor"
],
"Utcursch": [
"vrt-permissions"
],
"Uziel302": [
"editor"
],
"Uzume": [
"editor"
],
"V0lkanic": [
"global-renamer"
],
"VIGNERON": [
"steward"
],
"Valery Starikov": [
"editor"
],
"Van der Hoorn": [
"editor"
],
"Varnent": [
"vrt-permissions"
],
"Vdolar": [
"autoreview"
],
"VectorVoyager": [
"editor"
],
"Venzz": [
"vrt-permissions"
],
"Verfassungsfreund": [
"editor"
],
"Veritas Sapientiae": [
"global-rollbacker",
"global-renamer",
"vrt-permissions"
],
"Vermont": [
"editor",
"steward",
"vrt-permissions"
],
"Victor Stefan Stoica": [
"autoreview"
],
"Victor Trevor": [
"autoreview"
],
"Victoria.sandeman": [
"autoreview"
],
"Vincent Vega": [
"global-renamer"
],
"Vito Genovese": [
"editor"
],
"Vituzzu": [
"editor"
],
"Vladimir Solovjev": [
"global-renamer",
"vrt-permissions"
],
"Vogone": [
"global-rollbacker",
"editor"
],
"Vossman": [
"editor"
],
"Vrinda": [
"editor"
],
"VulcanWikiEdit": [
"editor"
],
"Vwanweb": [
"editor"
],
"WOSlinker": [
"autoreview"
],
"Waihorace": [
"global-rollbacker"
],
"Waldyrious": [
"editor"
],
"WalshDay": [
"editor"
],
"Wargo": [
"editor"
],
"Wbjimmyd": [
"editor"
],
"Wcoole": [
"editor"
],
"WeelkyWikiReader": [
"editor"
],
"Wekeepwhatwekill": [
"autoreview"
],
"WereSpielChequers": [
"editor"
],
"What no2000": [
"editor"
],
"WhatamIdoing": [
"editor"
],
"WhitePhosphorus": [
"global-rollbacker",
"global-sysop"
],
"Whiteknight": [
"editor"
],
"Whoop whoop pull up": [
"editor"
],
"Whym": [
"editor",
"vrt-permissions"
],
"Wiki13": [
"editor"
],
"WikiBayer": [
"global-rollbacker",
"global-sysop",
"editor"
],
"WikiFer": [
"vrt-permissions"
],
"Wikimi-dhiann": [
"editor"
],
"Wikiotics": [
"editor"
],
"Wikiwau": [
"autoreview",
"editor"
],
"WillNess": [
"editor"
],
"Willscrlt": [
"editor"
],
"Wim b": [
"global-rollbacker",
"global-sysop",
"editor"
],
"Wisden": [
"editor"
],
"Withinfocus": [
"editor"
],
"Wj32": [
"editor"
],
"Wkee4ager": [
"editor"
],
"Wobbit": [
"editor"
],
"Wojciech Pędzich": [
"vrt-permissions"
],
"Wooze": [
"global-rollbacker"
],
"Wundermacht": [
"editor"
],
"Wutsje": [
"global-rollbacker",
"editor"
],
"Ww2censor": [
"vrt-permissions"
],
"Wüstenspringmaus": [
"global-rollbacker",
"global-renamer"
],
"XXBlackburnXx": [
"editor",
"steward"
],
"Xandradi": [
"editor"
],
"Xania": [
"sysop",
"checkuser"
],
"Xaosflux": [
"editor",
"steward"
],
"XenonX3": [
"vrt-permissions"
],
"Xerol": [
"editor"
],
"Xeverything11": [
"editor",
"uploader"
],
"Xhungab": [
"editor"
],
"Xinkai Wu": [
"editor"
],
"Xixtas": [
"editor"
],
"Xqt": [
"global-rollbacker"
],
"Xxagile": [
"editor"
],
"Xypron": [
"editor"
],
"Xz64": [
"editor"
],
"Y-S.Ko": [
"editor"
],
"YMS": [
"editor"
],
"Yahya": [
"steward",
"vrt-permissions"
],
"Yamla": [
"global-renamer"
],
"Yann": [
"editor"
],
"Yerpo": [
"global-renamer",
"vrt-permissions"
],
"Yikrazuul": [
"editor"
],
"Ymblanter": [
"global-rollbacker"
],
"Yndesai": [
"editor"
],
"Youssefsan": [
"editor"
],
"Ysangkok": [
"editor"
],
"Yvelik": [
"uploader"
],
"Yzmo": [
"editor"
],
"ZI Jony": [
"editor"
],
"Zabe": [
"global-rollbacker"
],
"Zafer": [
"ombuds"
],
"Zedshort": [
"editor"
],
"ZeroOne": [
"editor"
],
"Zetud": [
"global-rollbacker",
"vrt-permissions"
],
"Ziv": [
"editor"
],
"Zoeannl": [
"editor"
],
"Zollerriia": [
"editor"
],
"Zoohouse": [
"editor"
],
"Zoot": [
"editor"
],
"Zsohl": [
"autoreview",
"editor"
],
"Zvsmith": [
"editor"
],
"Zweighaft": [
"editor"
],
"ZxxZxxZ": [
"editor"
],
"~riley": [
"global-rollbacker",
"editor"
],
"Érico": [
"global-renamer"
],
"Виктор Пинчук": [
"editor"
],
"Воображение": [
"editor"
],
"Всевидящий": [
"global-rollbacker"
],
"Д.Ильин": [
"editor"
],
"Л.П. Джепко": [
"editor"
],
"יהודה שמחה ולדמן": [
"editor"
],
"מקף": [
"global-rollbacker",
"global-renamer"
],
"د. فارس الجويلي": [
"global-renamer"
],
"روتانا": [
"global-renamer"
],
"علاء": [
"steward",
"vrt-permissions"
],
"فيصل": [
"global-renamer",
"vrt-permissions"
],
"सीमा1": [
"editor"
],
"タチコマ robot": [
"editor"
],
"ネイ": [
"global-renamer"
],
"一隻北極熊": [
"editor"
],
"人间百态": [
"global-rollbacker"
],
"臺灣象象": [
"autoreview"
],
"范": [
"vrt-permissions"
],
"青子守歌": [
"vrt-permissions"
],
"魔琴": [
"global-rollbacker"
],
"ꠢꠣꠍꠘ ꠞꠣꠎꠣ": [
"editor"
],
"기나ㅏㄴ": [
"global-rollbacker",
"global-renamer"
]
}
do2i69ptocsyrp3ygtmv74if0x31eqe
User:SimpleObjects-9ei
2
481188
4656291
4632263
2026-08-05T00:34:58Z
SimpleObjects-9ei
3549933
rmv cards (these are actually displayed as files and thus show up in Google Images
4656291
wikitext
text/x-wiki
{{Short description|SimpleObjects-9ei user account. You're welcome.}}
<big>Hello.</big>
This is me, and [https://www.google.com/search?q=SimpleObjects-9ei&cvid=b0d68f94120b4dc2b8b68af2d8ee78f0&gs_lcrp=EgRlZGdlKgYIABBFGDkyBggAEEUYOTIGCAEQRRg8MgYIAhBFGDwyBggDEEUYPNIBBzg3N2owajGoAgCwAgA&FORM=ANNTA1&PC=PCMEDGEDP&sei=S_q5adL5HsyCwbkP0-yT6QY I tried searching myself on Google], because I thought my [[:wikipedia:User:SimpleObjects-9ei|English Wikipedia account]] would appear first. But that was not the case... instead, my Wikibooks account APPEARS FIRST? That's ''it''. I'm leaving Wikipedia to contribute to Wikibooks and see if the search result will change, especially because I was using files Playing card heart A.svg, Playing card diamond 2.svg, Playing card spade 3.svg and Playing card club 4.svg (and especially Google being so attracted to the Blender userbox in this page despite literally asking for it for my English Wikipedia userpage).
Thanks.
I, or I, may enter at UTC-5.
{{Infobox user
}}
{{User language|en|N}}
{{User language|es|5}}
{{User language|en-GB|4}}
{{User language|cs|1}}
{{User language|de|1}}
{{User language|pt|1}}
{{User language|ja|0}}
{{User language|ko|0}}
{{User language|no|0}}
{{User language|sv|0}}
{{User language|ady|0}}
== Other Stuff ==
{{wikibreak|This user|anytime soon.}}
=== Besides that... ===
Oh yes, questionably I forgot to say, you can find me at other wikis by typing "User:SimpleObjects-9ei" or checking [[Special:CentralAuth/SimpleObjects-9ei|CentralAuth]].
=== Fun Stuff ===
{{chess position
| |nd| | |kd|bd|nd|rd|=
| |pd| | |pd|pd|pd|pd|=
| | |pd|pd|qd| | | |=
| | | | | | | |ql|=
| | | | | | | |pl|=
|nl| | | | | | | |=
| | |pl|pl| |pl|bl| |=
|rl| | | |kl| | |rl|=
|desc=The middle of a chess match.
}}
{{Sudoku Board
| | |2| | |3| | |5
| |5| | | | |1| |
| | | | |7| | |2|8
| | |6| |5| | |1|
| |1| |9| |7| |6|
| |9| | |2| |3| |
|6|7| | |8| | | |
| | |3| | | | |8|
|8| | |5| | |9| | }}
== Userboxes which are not on the top of the Page ==
{{User video games}}
{{User fries}}
{{User chrome}}
{{User Windows}}
{{User blender}}
{{User js-1}}
{{User computers}}
{{User coke pepsi}}
==Contributions==
{{Special:Contributions/SimpleObjects-9ei}}
6cl875vgx8775aqt3y3t7nhqmste9se
Fractals/Mandelbrot CLI: Renderer with Perturbation Theory
0
484105
4656271
4654555
2026-08-04T18:01:30Z
Aokoroko
3059689
/* C++ Source Code */
4656271
wikitext
text/x-wiki
< [[Fractals|Back to Fractals book]]
== Introduction ==
This page contains the original C++ source code used to render high-precision fragments of the Mandelbrot set using perturbation theory and 8x8 Super-Sampling Anti-Aliasing (SSAA). Created by [[User:Aokoroko]].
== Key Features ==
* '''High-Precision Reference:''' The 5000-bit reference trajectory is computed exactly once per zoom layer.
* '''Hardware-Native Performance:''' Blazing-fast math for billions of pixels utilizing hardware-native double registers.
* When using double-precision floating-point numbers (on the order of 10⁻¹⁵), perturbation theory only allows you to zoom down to the '''10⁻³⁰⁸ level—no further.'''
* '''Innovative Algorithm:''' Revolutionary *Reference Reset to Zero* implementation.
* '''True 8x8 SSAA:''' Pristine, anti-aliased image quality with 64 independent samples per pixel.
* '''OpenMP Multi-threading:''' High-speed parallel computing to maximize CPU utilization.
== C++ Source Code ==
<syntaxhighlight lang="cpp">
#include <atomic>
#include <cmath>
#include <cstdint>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <mpfr.h>
#include <omp.h>
using std::vector;
using std::min;
const char * CENTER_RE = "-1.99999543561201124623198345433951143502785679245726844745821388800402678499411681518036306219179273434395557574279985918047221291197081186140687781560831995";
const char * CENTER_IM = "-0.00000000000000000000000026198152173811047783694060060607013913873144250985383083459221663448338433592617272786772587281530484110756597337683912309313885172";
const char * VIEW_SIZE = "1.15e-119";
const int WIDTH = 2160;
const int HEIGHT = 2160;
const int AA = 8;
const int MAX_ITER = 50000;
const double ESCAPE_RADIUS_SQUARED = 50000.0;
const int PALETTE_FRAME = 200;
const char * OUTPUT_FILE = "Mandelbrot Set Image 112.bmp";
const mpfr_prec_t PRECISION_BITS = 1000;
struct Complex {
double re;
double im;
};
#pragma pack(push, 1)
struct BMPHeader {
uint16_t type{0x4D42};
uint32_t size{0};
uint32_t reserved{0};
uint32_t offBits{54};
uint32_t structSize{40};
int32_t width{0};
int32_t height{0};
uint16_t planes{1};
uint16_t bitCount{24};
uint32_t compression{0};
uint32_t sizeImage{0};
int32_t xPixelsPerMeter{2834};
int32_t yPixelsPerMeter{2834};
uint32_t colorsUsed{0};
uint32_t colorsImportant{0};
};
#pragma pack(pop)
int main() {
const double startTime = omp_get_wtime();
const long rawWidth = static_cast<long>(WIDTH) * AA;
const long rawHeight = static_cast<long>(HEIGHT) * AA;
mpfr_t centerRe, centerIm, zReMp, zImMp, tmp1, tmp2, viewSizeMp;
mpfr_inits2(PRECISION_BITS, centerRe, centerIm, zReMp, zImMp, tmp1, tmp2, viewSizeMp, static_cast<mpfr_ptr>(nullptr));
mpfr_set_str(centerRe, CENTER_RE, 10, MPFR_RNDN);
mpfr_set_str(centerIm, CENTER_IM, 10, MPFR_RNDN);
mpfr_set_str(viewSizeMp, VIEW_SIZE, 10, MPFR_RNDN);
const double sampleStep = mpfr_get_d(viewSizeMp, MPFR_RNDN) / rawWidth;
vector<Complex> referenceOrbit;
referenceOrbit.reserve(MAX_ITER + 200);
mpfr_set_ui(zReMp, 0, MPFR_RNDN);
mpfr_set_ui(zImMp, 0, MPFR_RNDN);
for (int iter = 0; iter <= MAX_ITER + 150; ++iter) {
Complex z{mpfr_get_d(zReMp, MPFR_RNDN), mpfr_get_d(zImMp, MPFR_RNDN)};
referenceOrbit.push_back(z);
if (z.re * z.re + z.im * z.im > ESCAPE_RADIUS_SQUARED && iter > MAX_ITER) {
break;
}
mpfr_mul(tmp1, zReMp, zImMp, MPFR_RNDN);
mpfr_sqr(tmp2, zReMp, MPFR_RNDN);
mpfr_sqr(zReMp, zImMp, MPFR_RNDN);
mpfr_sub(zReMp, tmp2, zReMp, MPFR_RNDN);
mpfr_add(zReMp, zReMp, centerRe, MPFR_RNDN);
mpfr_mul_2ui(tmp1, tmp1, 1, MPFR_RNDN);
mpfr_add(zImMp, tmp1, centerIm, MPFR_RNDN);
}
const int referenceLength = static_cast<int>(referenceOrbit.size());
mpfr_clears(centerRe, centerIm, zReMp, zImMp, tmp1, tmp2, viewSizeMp, static_cast<mpfr_ptr>(nullptr));
std::fprintf(stderr, "Reference orbit: %d points\n", referenceLength);
std::fprintf(stderr, "Precomputing skip100 matrices...\n");
vector<Complex> coeff_A(referenceLength, {1.0, 0.0});
vector<Complex> coeff_B(referenceLength, {0.0, 0.0});
vector<double> rad_R(referenceLength, 2.0);
#pragma omp parallel for
for (int i = 0; i < MAX_ITER; ++i) {
double min_r = 2.0;
for (int k = 0; k < 100; ++k) {
if (i + k >= referenceLength) break;
double r_re = referenceOrbit[i + k].re;
double r_im = referenceOrbit[i + k].im;
double abs_s = std::sqrt(r_re * r_re + r_im * r_im);
double aS = (abs_s < 2.0) ? abs_s : 0.0;
min_r = min(min_r, aS);
double next_A_re = 2.0 * (r_re * coeff_A[i].re - r_im * coeff_A[i].im);
double next_A_im = 2.0 * (r_re * coeff_A[i].im + r_im * coeff_A[i].re);
double next_B_re = 2.0 * (r_re * coeff_B[i].re - r_im * coeff_B[i].im) + 1.0;
double next_B_im = 2.0 * (r_re * coeff_B[i].im + r_im * coeff_B[i].re);
coeff_A[i].re = next_A_re; coeff_A[i].im = next_A_im;
coeff_B[i].re = next_B_re; coeff_B[i].im = next_B_im;
}
rad_R[i] = min_r;
}
const double PI = 3.14159265358979323846;
uint8_t palette[256][3];
for (int i = 0; i < 255; ++i) {
palette[i][0] = static_cast<uint8_t>(std::lround(127.0 + 127.0 * std::cos(2.0 * PI * i / 255.0)));
palette[i][1] = static_cast<uint8_t>(std::lround(127.0 + 127.0 * std::sin(2.0 * PI * i / 255.0)));
palette[i][2] = palette[i][1];
}
palette[255][0] = 255; palette[255][1] = 255; palette[255][2] = 255;
const int rowBytes = (WIDTH * 3 + 3) & ~3;
vector<uint8_t> image(static_cast<size_t>(rowBytes) * HEIGHT, 0);
std::atomic<int> completedRows{0};
const Complex * reference = referenceOrbit.data();
#pragma omp parallel for schedule(dynamic)
for (int y = 0; y < HEIGHT; ++y) {
uint8_t * row = image.data() + static_cast<size_t>(y) * rowBytes;
for (int x = 0; x < WIDTH; ++x) {
unsigned blueSum = 0; unsigned greenSum = 0; unsigned redSum = 0;
for (int sampleY = 0; sampleY < AA; ++sampleY) {
const double deltaCIm = (static_cast<long>(y) * AA + sampleY - rawHeight / 2) * sampleStep;
for (int sampleX = 0; sampleX < AA; ++sampleX) {
const double deltaCRe = (static_cast<long>(x) * AA + sampleX - rawWidth / 2) * sampleStep;
double deltaRe = 0.0; double deltaIm = 0.0;
double zRe = 0.0; double zIm = 0.0;
int referenceIndex = 0;
int iter = 0;
while (iter < MAX_ITER) {
if (zRe * zRe + zIm * zIm >= ESCAPE_RADIUS_SQUARED) {
break;
}
double eps_abs2 = deltaRe * deltaRe + deltaIm * deltaIm;
double limit_r2 = 1e-60 * rad_R[referenceIndex] * rad_R[referenceIndex];
if (eps_abs2 < limit_r2 && (referenceIndex + 100 < referenceLength - 1) && (iter + 100 < MAX_ITER)) {
double backup_deltaRe = deltaRe; double backup_deltaIm = deltaIm;
int backup_refIdx = referenceIndex; int backup_iter = iter;
double next_eps_re = (coeff_A[referenceIndex].re * deltaRe - coeff_A[referenceIndex].im * deltaIm) +
(coeff_B[referenceIndex].re * deltaCRe - coeff_B[referenceIndex].im * deltaCIm);
double next_eps_im = (coeff_A[referenceIndex].re * deltaIm + coeff_A[referenceIndex].im * deltaRe) +
(coeff_B[referenceIndex].re * deltaCIm + coeff_B[referenceIndex].im * deltaCRe);
deltaRe = next_eps_re; deltaIm = next_eps_im;
referenceIndex += 100; iter += 100;
zRe = reference[referenceIndex].re + deltaRe;
zIm = reference[referenceIndex].im + deltaIm;
if (zRe * zRe + zIm * zIm >= ESCAPE_RADIUS_SQUARED) {
deltaRe = backup_deltaRe; deltaIm = backup_deltaIm;
referenceIndex = backup_refIdx; iter = backup_iter;
} else {
continue;
}
}
const double a = 2.0 * reference[referenceIndex].re + deltaRe;
const double b = 2.0 * reference[referenceIndex].im + deltaIm;
const double nextDeltaRe = a * deltaRe - b * deltaIm + deltaCRe;
deltaIm = a * deltaIm + b * deltaRe + deltaCIm;
deltaRe = nextDeltaRe;
++referenceIndex; ++iter;
zRe = reference[referenceIndex].re + deltaRe;
zIm = reference[referenceIndex].im + deltaIm;
if (zRe * zRe + zIm * zIm < deltaRe * deltaRe + deltaIm * deltaIm || referenceIndex == referenceLength - 1) {
deltaRe = zRe; deltaIm = zIm; referenceIndex = 0;
}
}
const int remaining = MAX_ITER - iter;
const uint8_t colorIndex = (remaining == 0) ? 255 : static_cast<uint8_t>(remaining % 254);
const int paletteIndex = (colorIndex == 255) ? 255 : (colorIndex - PALETTE_FRAME + 255) % 255;
blueSum += palette[paletteIndex][0];
greenSum += palette[paletteIndex][1];
redSum += palette[paletteIndex][2];
}
}
const int samples = AA * AA;
row[x * 3 + 0] = static_cast<uint8_t>(blueSum / samples);
row[x * 3 + 1] = static_cast<uint8_t>(greenSum / samples);
row[x * 3 + 2] = static_cast<uint8_t>(redSum / samples);
}
const int done = ++completedRows;
if (done % 50 == 0 || done == HEIGHT) {
std::fprintf(stderr, "\rProgress: %d/%d rows (%.1f%%)", done, HEIGHT, 100.0 * done / HEIGHT);
}
}
BMPHeader header;
header.width = WIDTH; header.height = HEIGHT;
header.sizeImage = static_cast<uint32_t>(image.size());
header.size = header.sizeImage + 54;
FILE * file = std::fopen(OUTPUT_FILE, "wb");
if (!file) { std::perror(OUTPUT_FILE); return 1; }
std::fwrite(&header, sizeof header, 1, file);
std::fwrite(image.data(), 1, image.size(), file);
std::fclose(file);
std::fprintf(stderr, "\nDone: \"%s\" saved in %.1f s\n", OUTPUT_FILE, omp_get_wtime() - startTime);
return 0;
}
</syntaxhighlight>
== Rendered Examples ==
<gallery mode="packed" heights="200">
File:Mandelbrot Set Image 107.png|Mandelbrot set fragment using perturbation theory. Final resolution 10,000 x 10,000 pixels.
File:Mandelbrot Set Image 108.png|Mandelbrot set fragment using perturbation theory. Final resolution 10,000 x 10,000 pixels.
File:Mandelbrot Set Image 109.png|Mandelbrot set fragment using perturbation theory. Final resolution 10,000 x 10,000 pixels.
File:Mandelbrot Set Image 110.png|Mandelbrot set fragment using perturbation theory. Final resolution 10,000 x 10,000 pixels.
</gallery>
== External Links ==
* [https://github.com/Divetoxx/Mandelbrot Official Mandelbrot CLI Repository on GitHub] — source code, documentation, and pre-compiled releases.
* [https://rosettacode.org/wiki/Mandelbrot_set#Perturbation_Theory C++ Perturbation Theory Optimization] showcased in the global algorithm repository on Rosetta Code.
[[Category:Book:Fractals]]
kem702vr3ckmxfngg7iogyvmvv5u1q8
4656276
4656271
2026-08-04T18:11:39Z
Aokoroko
3059689
/* Key Features */
4656276
wikitext
text/x-wiki
< [[Fractals|Back to Fractals book]]
== Introduction ==
This page contains the original C++ source code used to render high-precision fragments of the Mandelbrot set using perturbation theory and 8x8 Super-Sampling Anti-Aliasing (SSAA). Created by [[User:Aokoroko]].
== Key Features ==
* '''High-Precision Reference:''' The 1000-bit reference trajectory is computed exactly once per zoom layer.
* '''Hardware-Native Performance:''' Blazing-fast math for billions of pixels utilizing hardware-native double registers.
* '''Bilinear approximation:''' The calculation can be performed significantly faster by using bilinear approximation.
* When using double-precision floating-point numbers (on the order of 10⁻¹⁵), perturbation theory only allows you to zoom down to the '''10⁻³⁰⁸ level—no further.'''
* '''Innovative Algorithm:''' Revolutionary *Reference Reset to Zero* implementation.
* '''True 8x8 SSAA:''' Pristine, anti-aliased image quality with 64 independent samples per pixel.
* '''OpenMP Multi-threading:''' High-speed parallel computing to maximize CPU utilization.
== C++ Source Code ==
<syntaxhighlight lang="cpp">
#include <atomic>
#include <cmath>
#include <cstdint>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <mpfr.h>
#include <omp.h>
using std::vector;
using std::min;
const char * CENTER_RE = "-1.99999543561201124623198345433951143502785679245726844745821388800402678499411681518036306219179273434395557574279985918047221291197081186140687781560831995";
const char * CENTER_IM = "-0.00000000000000000000000026198152173811047783694060060607013913873144250985383083459221663448338433592617272786772587281530484110756597337683912309313885172";
const char * VIEW_SIZE = "1.15e-119";
const int WIDTH = 2160;
const int HEIGHT = 2160;
const int AA = 8;
const int MAX_ITER = 50000;
const double ESCAPE_RADIUS_SQUARED = 50000.0;
const int PALETTE_FRAME = 200;
const char * OUTPUT_FILE = "Mandelbrot Set Image 112.bmp";
const mpfr_prec_t PRECISION_BITS = 1000;
struct Complex {
double re;
double im;
};
#pragma pack(push, 1)
struct BMPHeader {
uint16_t type{0x4D42};
uint32_t size{0};
uint32_t reserved{0};
uint32_t offBits{54};
uint32_t structSize{40};
int32_t width{0};
int32_t height{0};
uint16_t planes{1};
uint16_t bitCount{24};
uint32_t compression{0};
uint32_t sizeImage{0};
int32_t xPixelsPerMeter{2834};
int32_t yPixelsPerMeter{2834};
uint32_t colorsUsed{0};
uint32_t colorsImportant{0};
};
#pragma pack(pop)
int main() {
const double startTime = omp_get_wtime();
const long rawWidth = static_cast<long>(WIDTH) * AA;
const long rawHeight = static_cast<long>(HEIGHT) * AA;
mpfr_t centerRe, centerIm, zReMp, zImMp, tmp1, tmp2, viewSizeMp;
mpfr_inits2(PRECISION_BITS, centerRe, centerIm, zReMp, zImMp, tmp1, tmp2, viewSizeMp, static_cast<mpfr_ptr>(nullptr));
mpfr_set_str(centerRe, CENTER_RE, 10, MPFR_RNDN);
mpfr_set_str(centerIm, CENTER_IM, 10, MPFR_RNDN);
mpfr_set_str(viewSizeMp, VIEW_SIZE, 10, MPFR_RNDN);
const double sampleStep = mpfr_get_d(viewSizeMp, MPFR_RNDN) / rawWidth;
vector<Complex> referenceOrbit;
referenceOrbit.reserve(MAX_ITER + 200);
mpfr_set_ui(zReMp, 0, MPFR_RNDN);
mpfr_set_ui(zImMp, 0, MPFR_RNDN);
for (int iter = 0; iter <= MAX_ITER + 150; ++iter) {
Complex z{mpfr_get_d(zReMp, MPFR_RNDN), mpfr_get_d(zImMp, MPFR_RNDN)};
referenceOrbit.push_back(z);
if (z.re * z.re + z.im * z.im > ESCAPE_RADIUS_SQUARED && iter > MAX_ITER) {
break;
}
mpfr_mul(tmp1, zReMp, zImMp, MPFR_RNDN);
mpfr_sqr(tmp2, zReMp, MPFR_RNDN);
mpfr_sqr(zReMp, zImMp, MPFR_RNDN);
mpfr_sub(zReMp, tmp2, zReMp, MPFR_RNDN);
mpfr_add(zReMp, zReMp, centerRe, MPFR_RNDN);
mpfr_mul_2ui(tmp1, tmp1, 1, MPFR_RNDN);
mpfr_add(zImMp, tmp1, centerIm, MPFR_RNDN);
}
const int referenceLength = static_cast<int>(referenceOrbit.size());
mpfr_clears(centerRe, centerIm, zReMp, zImMp, tmp1, tmp2, viewSizeMp, static_cast<mpfr_ptr>(nullptr));
std::fprintf(stderr, "Reference orbit: %d points\n", referenceLength);
std::fprintf(stderr, "Precomputing skip100 matrices...\n");
vector<Complex> coeff_A(referenceLength, {1.0, 0.0});
vector<Complex> coeff_B(referenceLength, {0.0, 0.0});
vector<double> rad_R(referenceLength, 2.0);
#pragma omp parallel for
for (int i = 0; i < MAX_ITER; ++i) {
double min_r = 2.0;
for (int k = 0; k < 100; ++k) {
if (i + k >= referenceLength) break;
double r_re = referenceOrbit[i + k].re;
double r_im = referenceOrbit[i + k].im;
double abs_s = std::sqrt(r_re * r_re + r_im * r_im);
double aS = (abs_s < 2.0) ? abs_s : 0.0;
min_r = min(min_r, aS);
double next_A_re = 2.0 * (r_re * coeff_A[i].re - r_im * coeff_A[i].im);
double next_A_im = 2.0 * (r_re * coeff_A[i].im + r_im * coeff_A[i].re);
double next_B_re = 2.0 * (r_re * coeff_B[i].re - r_im * coeff_B[i].im) + 1.0;
double next_B_im = 2.0 * (r_re * coeff_B[i].im + r_im * coeff_B[i].re);
coeff_A[i].re = next_A_re; coeff_A[i].im = next_A_im;
coeff_B[i].re = next_B_re; coeff_B[i].im = next_B_im;
}
rad_R[i] = min_r;
}
const double PI = 3.14159265358979323846;
uint8_t palette[256][3];
for (int i = 0; i < 255; ++i) {
palette[i][0] = static_cast<uint8_t>(std::lround(127.0 + 127.0 * std::cos(2.0 * PI * i / 255.0)));
palette[i][1] = static_cast<uint8_t>(std::lround(127.0 + 127.0 * std::sin(2.0 * PI * i / 255.0)));
palette[i][2] = palette[i][1];
}
palette[255][0] = 255; palette[255][1] = 255; palette[255][2] = 255;
const int rowBytes = (WIDTH * 3 + 3) & ~3;
vector<uint8_t> image(static_cast<size_t>(rowBytes) * HEIGHT, 0);
std::atomic<int> completedRows{0};
const Complex * reference = referenceOrbit.data();
#pragma omp parallel for schedule(dynamic)
for (int y = 0; y < HEIGHT; ++y) {
uint8_t * row = image.data() + static_cast<size_t>(y) * rowBytes;
for (int x = 0; x < WIDTH; ++x) {
unsigned blueSum = 0; unsigned greenSum = 0; unsigned redSum = 0;
for (int sampleY = 0; sampleY < AA; ++sampleY) {
const double deltaCIm = (static_cast<long>(y) * AA + sampleY - rawHeight / 2) * sampleStep;
for (int sampleX = 0; sampleX < AA; ++sampleX) {
const double deltaCRe = (static_cast<long>(x) * AA + sampleX - rawWidth / 2) * sampleStep;
double deltaRe = 0.0; double deltaIm = 0.0;
double zRe = 0.0; double zIm = 0.0;
int referenceIndex = 0;
int iter = 0;
while (iter < MAX_ITER) {
if (zRe * zRe + zIm * zIm >= ESCAPE_RADIUS_SQUARED) {
break;
}
double eps_abs2 = deltaRe * deltaRe + deltaIm * deltaIm;
double limit_r2 = 1e-60 * rad_R[referenceIndex] * rad_R[referenceIndex];
if (eps_abs2 < limit_r2 && (referenceIndex + 100 < referenceLength - 1) && (iter + 100 < MAX_ITER)) {
double backup_deltaRe = deltaRe; double backup_deltaIm = deltaIm;
int backup_refIdx = referenceIndex; int backup_iter = iter;
double next_eps_re = (coeff_A[referenceIndex].re * deltaRe - coeff_A[referenceIndex].im * deltaIm) +
(coeff_B[referenceIndex].re * deltaCRe - coeff_B[referenceIndex].im * deltaCIm);
double next_eps_im = (coeff_A[referenceIndex].re * deltaIm + coeff_A[referenceIndex].im * deltaRe) +
(coeff_B[referenceIndex].re * deltaCIm + coeff_B[referenceIndex].im * deltaCRe);
deltaRe = next_eps_re; deltaIm = next_eps_im;
referenceIndex += 100; iter += 100;
zRe = reference[referenceIndex].re + deltaRe;
zIm = reference[referenceIndex].im + deltaIm;
if (zRe * zRe + zIm * zIm >= ESCAPE_RADIUS_SQUARED) {
deltaRe = backup_deltaRe; deltaIm = backup_deltaIm;
referenceIndex = backup_refIdx; iter = backup_iter;
} else {
continue;
}
}
const double a = 2.0 * reference[referenceIndex].re + deltaRe;
const double b = 2.0 * reference[referenceIndex].im + deltaIm;
const double nextDeltaRe = a * deltaRe - b * deltaIm + deltaCRe;
deltaIm = a * deltaIm + b * deltaRe + deltaCIm;
deltaRe = nextDeltaRe;
++referenceIndex; ++iter;
zRe = reference[referenceIndex].re + deltaRe;
zIm = reference[referenceIndex].im + deltaIm;
if (zRe * zRe + zIm * zIm < deltaRe * deltaRe + deltaIm * deltaIm || referenceIndex == referenceLength - 1) {
deltaRe = zRe; deltaIm = zIm; referenceIndex = 0;
}
}
const int remaining = MAX_ITER - iter;
const uint8_t colorIndex = (remaining == 0) ? 255 : static_cast<uint8_t>(remaining % 254);
const int paletteIndex = (colorIndex == 255) ? 255 : (colorIndex - PALETTE_FRAME + 255) % 255;
blueSum += palette[paletteIndex][0];
greenSum += palette[paletteIndex][1];
redSum += palette[paletteIndex][2];
}
}
const int samples = AA * AA;
row[x * 3 + 0] = static_cast<uint8_t>(blueSum / samples);
row[x * 3 + 1] = static_cast<uint8_t>(greenSum / samples);
row[x * 3 + 2] = static_cast<uint8_t>(redSum / samples);
}
const int done = ++completedRows;
if (done % 50 == 0 || done == HEIGHT) {
std::fprintf(stderr, "\rProgress: %d/%d rows (%.1f%%)", done, HEIGHT, 100.0 * done / HEIGHT);
}
}
BMPHeader header;
header.width = WIDTH; header.height = HEIGHT;
header.sizeImage = static_cast<uint32_t>(image.size());
header.size = header.sizeImage + 54;
FILE * file = std::fopen(OUTPUT_FILE, "wb");
if (!file) { std::perror(OUTPUT_FILE); return 1; }
std::fwrite(&header, sizeof header, 1, file);
std::fwrite(image.data(), 1, image.size(), file);
std::fclose(file);
std::fprintf(stderr, "\nDone: \"%s\" saved in %.1f s\n", OUTPUT_FILE, omp_get_wtime() - startTime);
return 0;
}
</syntaxhighlight>
== Rendered Examples ==
<gallery mode="packed" heights="200">
File:Mandelbrot Set Image 107.png|Mandelbrot set fragment using perturbation theory. Final resolution 10,000 x 10,000 pixels.
File:Mandelbrot Set Image 108.png|Mandelbrot set fragment using perturbation theory. Final resolution 10,000 x 10,000 pixels.
File:Mandelbrot Set Image 109.png|Mandelbrot set fragment using perturbation theory. Final resolution 10,000 x 10,000 pixels.
File:Mandelbrot Set Image 110.png|Mandelbrot set fragment using perturbation theory. Final resolution 10,000 x 10,000 pixels.
</gallery>
== External Links ==
* [https://github.com/Divetoxx/Mandelbrot Official Mandelbrot CLI Repository on GitHub] — source code, documentation, and pre-compiled releases.
* [https://rosettacode.org/wiki/Mandelbrot_set#Perturbation_Theory C++ Perturbation Theory Optimization] showcased in the global algorithm repository on Rosetta Code.
[[Category:Book:Fractals]]
ak8vp8yww5mw09u1dmeawyshpl84uvt
Wikibooks:Reading room/Administrative Assistance/Archives/2026/July
4
484829
4656355
4656236
2026-08-05T08:10:16Z
ArchiverBot
1227662
Bot: Archiving 1 thread from [[Wikibooks:Reading room/Administrative Assistance]]
4656355
wikitext
text/x-wiki
{{talk archive}}
== Bestdealsautofla reported by MathXplore ==
* {{userlinks|Bestdealsautofla}}
Spam <!-- USERREPORTED:/Bestdealsautofla/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:19, 2 July 2026 (UTC)
:{{done}} —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 01:26, 3 July 2026 (UTC)
== Cthrucleaningsolutionso reported by MathXplore ==
* {{userlinks|Cthrucleaningsolutionso}}
advertising <!-- USERREPORTED:/Cthrucleaningsolutionso/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 22:19, 2 July 2026 (UTC)
:{{done|Sandbox deleted}} —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 01:26, 3 July 2026 (UTC)
:: The user was blocked indefinitely as a spam-only account. [[User:Codename Noreste|<span style="color:#0024FF">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 01:47, 3 July 2026 (UTC)
== Prudhvifmsdh reported by MathXplore ==
* {{userlinks|Prudhvifmsdh}}
Spam <!-- USERREPORTED:/Prudhvifmsdh/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:39, 8 July 2026 (UTC)
: {{done}}. [[User:Codename Noreste|<span style="color:#0024FF">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 13:07, 8 July 2026 (UTC)
== Protecting Pages ==
Hello, Admins,
My name is Kayden Swanson, and I have proudly created ''[[The Geoguide]].'' But I would like to remove the ability for fellow users to edit it to prevent vandalism and preserve my prized creation I have made for school. Could you permanently lock it so others cant edit it while I still can? [[User:Kayden Swanson|Kayden Swanson]] ([[User talk:Kayden Swanson|discuss]] • [[Special:Contributions/Kayden Swanson|contribs]]) 02:41, 6 July 2026 (UTC)
:Hi @[[User:Kayden Swanson|Kayden Swanson]]! Unfortunately, that is not an appropriate justification for protecting a page here at Wikibooks per the [[Wikibooks:Protection policy|protection policy]]. Notably, {{tq|"Preemptive full protection of pages is contrary to the open nature of Wikibooks"}}. Cheers —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 19:15, 6 July 2026 (UTC)
::NOOOOOOOOOOOOOOOOOOOOOOOOOOOOO okay that's fine [[User:Kayden Swanson|Kayden Swanson]] ([[User talk:Kayden Swanson|discuss]] • [[Special:Contributions/Kayden Swanson|contribs]]) 00:26, 8 July 2026 (UTC)
::: I'm sorry, but that's not within the scope of the protection policy. [[User:Codename Noreste|<span style="color:#0024FF">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 12:39, 8 July 2026 (UTC)
:::If you really want a stable version, you can make a PDF of the existing content and link it. See [[Help:Print versions]] and {{tl|Print version}}/{{tl|PDF version}}. ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''<span style="color:black">v</span>f</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 19:15, 10 July 2026 (UTC)
== I'm unable to create a page ==
Hello, I wanted to created the page [[English in Use/Agreement]]. I thought I would use a modified version of a Wikipedia article (https://en.wikipedia.org/wiki/Agreement_in_the_English_language). It's already written like a textbook, so I did some improvements and clicked "published", but I got the error:
<blockquote>Welcome to Wikibooks!Your edit has triggered an automated filter and has been disallowed. It looks like your edit has added a large amount of content to this page.If you copied the content from another website, please do not add it without rewriting it in your own words. Unless the content is in the public domain (published before 1923), it is almost certainly copyrighted and cannot be added to Wikibooks.If all of the content is your own work and you cannot find anything to link, feel free to ask for the edit to be performed at the reading room. If you have received this message in error, you may report it here.</blockquote>
What should I do? Can you help me? [[User:Justtocreateapage|Justtocreateapage]] ([[User talk:Justtocreateapage|discuss]] • [[Special:Contributions/Justtocreateapage|contribs]]) 20:43, 10 July 2026 (UTC)
:@[[User:Justtocreateapage|Justtocreateapage]] An editfilter is preventing your edit. In my opinion, you did not do anything wrong and the filter is wrong, but an admin (=not me) would need to fix it. [[User:Der-Wir-Ing|Der-Wir-Ing]] ([[User talk:Der-Wir-Ing|discuss]] • [[Special:Contributions/Der-Wir-Ing|contribs]]) 20:52, 10 July 2026 (UTC)
:: {{re|Justtocreateapage}} As a new user you face harsher requirements. You should make useful edits to Wikibooks first. If you want to use a modified version of a WP article, [[Wikibooks: Requests for import|requesting an import]] is the proper venue. This [[Help: Importing|preserves the edit history]]. ‑‑[[User:Kai Burghardt|Kai Burghardt]] ([[User talk:Kai Burghardt|discuss]] • [[Special:Contributions/Kai Burghardt|contribs]]) 21:15, 10 July 2026 (UTC)
:::Okay, thanks you all. I'll request for an import then [[User:Justtocreateapage|Justtocreateapage]] ([[User talk:Justtocreateapage|discuss]] • [[Special:Contributions/Justtocreateapage|contribs]]) 21:39, 10 July 2026 (UTC)
::::{{done}} ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''<span style="color:black">v</span>f</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 21:50, 10 July 2026 (UTC)
== Unprotection/edit request ==
Hi, would an admin please temporarily unprotect the non-MediaWiki pages at [[User:TenshiBot/Errors]]? As for the MediaWiki pages, would an admin go through them and replace the <nowiki><center></nowiki> tags and replace it with <nowiki><div style="text-align: center"></nowiki>? [[User:Tenshi Hinanawi|Tenshi Hinanawi]] ([[User talk:Tenshi Hinanawi|discuss]] • [[Special:Contributions/Tenshi Hinanawi|contribs]]) 23:10, 11 July 2026 (UTC)
: Unprotecting, fixing, and protecting back would take too long—I know just the thing, which is using JWB. [[User:Codename Noreste|<span style="color:#0024FF">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 02:35, 12 July 2026 (UTC)
: [[User:Tenshi Hinanawi|Tenshi Hinanawi]], I've done what JWB could process; should there be way more in your bot's error log, let me know. [[User:Codename Noreste|<span style="color:#0024FF">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 03:02, 12 July 2026 (UTC)
::There's still a lot of the <nowiki><font></nowiki> tags which need replacing in the talk page archives. [[User:Tenshi Hinanawi|Tenshi Hinanawi]] ([[User talk:Tenshi Hinanawi|discuss]] • [[Special:Contributions/Tenshi Hinanawi|contribs]]) 10:11, 12 July 2026 (UTC)
::: I can replace those, but should it be <code>div</code> or <code>span</code>? [[User:Codename Noreste|<span style="color:#0024FF">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 14:35, 12 July 2026 (UTC)
::::Span, though the font tag's parameters need to be converted as well, see [https://github.com/TenshiSWR/TenshiBot/blob/958b59d1a5e14a31ab8b46f66db54ebdba63e101/tasks/linterrors/obsolete_HTML_tags.py#L15-L52 the code] and the [https://html.spec.whatwg.org/multipage/rendering.html#:~:text=When%20a%20font%20element%20has%20a%20color,%27color%27%20property%20to%20the%20resulting%20color. HTML spec] for this. [[User:Tenshi Hinanawi|Tenshi Hinanawi]] ([[User talk:Tenshi Hinanawi|discuss]] • [[Special:Contributions/Tenshi Hinanawi|contribs]]) 14:56, 12 July 2026 (UTC)
== Emirati yahzota reported by MathXplore ==
* {{userlinks|Emirati yahzota}}
Long-term abuse, [[:w:Wikipedia:Sockpuppet investigations/Muhammad Ali Rajab]] <!-- USERREPORTED:/Emirati yahzota/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:18, 2 July 2026 (UTC)
:I deleted their page addition. @[[User:MarcGarver|MarcGarver]] could we get a CU here? Thanks! —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 01:28, 3 July 2026 (UTC)
::Nothing to see on CU. [[User:MarcGarver|MarcGarver]] ([[User talk:MarcGarver|discuss]] • [[Special:Contributions/MarcGarver|contribs]]) 11:07, 13 July 2026 (UTC)
== NSSGGuarding reported by MathXplore ==
* {{userlinks|NSSGGuarding}}
Spam <!-- USERREPORTED:/NSSGGuarding/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:17, 13 July 2026 (UTC)
:{{done}} ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''<span style="color:black">v</span>f</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 16:45, 13 July 2026 (UTC)
== Tanzeemdigital reported by MathXplore ==
* {{userlinks|Tanzeemdigital}}
Spam, [[Special:AbuseLog/314706]] <!-- USERREPORTED:/Tanzeemdigital/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:08, 15 July 2026 (UTC)
== Faisalorakzaii reported by MathXplore ==
* {{userlinks|Faisalorakzaii}}
cross-wiki abuse, [[:w:WP:AB]]. <!-- USERREPORTED:/Faisalorakzaii/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:13, 15 July 2026 (UTC)
:{{done|Page deleted}} —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 12:56, 15 July 2026 (UTC)
== Drpriyajaganathan reported by MathXplore ==
* {{userlinks|Drpriyajaganathan}}
Spam <!-- USERREPORTED:/Drpriyajaganathan/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 10:46, 18 July 2026 (UTC)
:What do you find as spam ? [[Special:Contributions/~2026-40412-29|~2026-40412-29]] ([[User talk:~2026-40412-29|talk]]) 12:20, 18 July 2026 (UTC)
== WinniJoy reported by MathXplore ==
* {{userlinks|WinniJoy}}
Spam <!-- USERREPORTED:/WinniJoy/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 10:48, 18 July 2026 (UTC)
: {{done}}. [[User:Codename Noreste|Codename Noreste]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 19:00, 19 July 2026 (UTC)
== ~2026-40144-05 reported by MathXplore ==
* {{userlinks|~2026-40144-05}}
Spam <!-- USERREPORTED:/~2026-40144-05/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 11:17, 19 July 2026 (UTC)
: I blocked them for creating out of scope pages. [[User:Codename Noreste|Codename Noreste]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 18:59, 19 July 2026 (UTC)
== Tkdesigner34 reported by MathXplore ==
* {{userlinks|Tkdesigner34}}
Spam <!-- USERREPORTED:/Tkdesigner34/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:08, 20 July 2026 (UTC)
:{{done}} ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''<span style="color:black">v</span>f</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 19:37, 20 July 2026 (UTC)
== Samanthajagan reported by MathXplore ==
* {{userlinks|Samanthajagan}}
Spam, [[Special:AbuseLog/314786]] <!-- USERREPORTED:/Samanthajagan/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:30, 21 July 2026 (UTC)
:{{done}} —[[User:Atcovi|Atcovi]] [[User talk:Atcovi|(Talk]] - [[Special:Contributions/Atcovi|Contribs)]] 12:47, 21 July 2026 (UTC)
c9qb368huv9ohl25p8jtkmkkyaz7k9v
History : Alorre Gorge
0
485036
4656296
4656190
2026-08-05T01:00:11Z
JackBot
396820
Formatting, [[Special:UncategorizedPages]]
4656296
wikitext
text/x-wiki
Alorre Gorge is a steep ravine in Tanzania and a paleoanthropological locality.
Chapters include
Geology
Paleoanthropology
===Geology===
Millions of years ago, the region had a paleo lake (Lake Alorre). Around 600,000 to 500,000 years ago, there was a seismic (earthquake - related) event that created the gorge we know today.
===Paleoanthropology===
In 1975, there was a fossilized hominid found in the locality, known as Alorre Hominin 1 (AH 1). It was fragmentary, just a collection of teeth, and was the holotype for the species. AH 2 was found in 1994 and was a cranium.
{{shelves}}
9r661voi7vvuanyyewmmg739ee70eob
Scratch Virtual Machine/Blocks
0
485064
4656294
4656166
2026-08-05T00:59:29Z
Some helpful person
3510188
4656294
wikitext
text/x-wiki
The following lists every Scratch block that should be implemented in a Scratch VM. Each category of blocks has a subpage, with each block having a description, list of steps, and pseudocode. ({{Abbr|WIP.|Work in progress.}})
==[[/Motion|Motion]]==
* [[/Motion#movesteps|move (STEPS) steps]]
* [[/Motion#turnright|turn {{Abbr|⟳|clockwise, right}} (DEGREES) degrees]]
* [[/Motion#turnleft|turn {{Abbr|⟲|counterclockwise, left}} (DEGREES) degrees]]
* [[/Motion#goto|go to (TO)]]
* [[/Motion#gotoxy|go to x: (X) y: (Y)]]
* [[/Motion#glideto|glide (SECS) secs to (TO)]]
* [[/Motion#glidesecstoxy|glide (SECS) secs to x: (X) y: (Y)]]
* [[/Motion#pointindirection|point in direction (DIRECTION)]]
* [[/Motion#pointtowards|point towards (TOWARDS)]]
* [[/Motion#changexby|change x by (DX)]]
* [[/Motion#setx|set x to (X)]]
* [[/Motion#changeyby|change y by (DY)]]
* [[/Motion#sety|set y to (Y)]]
* [[/Motion#ifonedgebounce|if on edge, bounce]]
* [[/Motion#setrotationstyle|set rotation style (STYLE)]]
* [[/Motion#xposition|x position]]
* [[/Motion#yposition|y position]]
* [[/Motion#direction|direction]]
* [[/Motion#scroll_right|scroll right ()]]
* [[/Motion#scroll_up|scroll up ()]]
* [[/Motion#align_scene|align scene ()]]
* [[/Motion#xscroll|x scroll]]
* [[/Motion#yscroll|y scroll]]
==[[/Looks|Looks]]==
TODO
* [[/Looks#goforwardbackwardlayers|go (FORWARD_BACKWARD) (NUM) layers]]
* [[/Looks#costumenumbername|costume (NUMBER_NAME)]]
* [[/Looks#backdropnumbername|backdrop (NUMBER_NAME)]]
* [[/Looks#size|size]]
==Sound==
==Events==
==Control==
==Sensing==
==Operators==
==Data==
==Procedures==
==<span class="anchor" id="coreExample"></span><span class="anchor" id="coreExample_"></span> Core Example==
==<span class="anchor" id="music"></span><span class="anchor" id="music_"></span> Music==
==<span class="anchor" id="pen"></span><span class="anchor" id="pen_"></span> Pen==
==<span class="anchor" id="videoSensing"></span><span class="anchor" id="videoSensing_"></span> Video Sensing==
==<span class="anchor" id="faceSensing"></span><span class="anchor" id="faceSensing_"></span> Face Sensing==
==<span class="anchor" id="text2speech"></span><span class="anchor" id="text2speech_"></span> Text to Speech==
==<span class="anchor" id="translate"></span><span class="anchor" id="translate_"></span> Translate==
==<span class="anchor" id="makeymakey"></span><span class="anchor" id="makeymakey_"></span> Makey Makey==
==<span class="anchor" id="microbit"></span><span class="anchor" id="microbit_"></span> micro:bit==
==<span class="anchor" id="gdxfor"></span><span class="anchor" id="gdxfor_"></span> Go Direct Force & Acceleration==
==<span class="anchor" id="ev3"></span><span class="anchor" id="ev3_"></span> LEGO MINDSTORMS EV3==
==<span class="anchor" id="boost"></span><span class="anchor" id="boost_"></span> LEGO BOOST==
==<span class="anchor" id="wedo2"></span><span class="anchor" id="wedo2_"></span> LEGO Education WeDo 2.0==
==References==
{{BookCat}}
f85v4xyaj67vtgu1d4qoq9gr48tl3bh
Awakening the Countryside: Battle of April 1775
0
485076
4656260
4656225
2026-08-04T12:38:33Z
MathXplore
3097823
Adding {{qr-scope}} tag
4656260
wikitext
text/x-wiki
{{qr-scope}}
Although Paul Revere and William Dawes left Boston by different routes on the night of April 18, they both arrived in Lexington around midnight. Sam Adams and John Hancock, leaders of the Massachusetts rebellion, were staying at the home of Reverend Jonas Clarke.
Outside the house, approximately ten militiamen stood guard. When the energetic Revere was ordered to stop making noise, he replied, “Noise! You’ll have noise enough before long! The Regulars are coming out.” Then, he banged on the door. Within an hour, the Lexington town bell was ringing, and both Revere and Dawes were riding west to Concord. They came upon Dr. Samuel Prescott, returning home after a night of courting. Prescott, an ardent patriot, offered to join the two riders.
As they passed through nearby Lincoln, the three men encountered a British ambush. “Stop! If you go an inch further, you are a dead man,” a British officer commanded. Bravely, the three riders tried to escape, Prescott jumping a stone wall, Dawes making for the road, and Revere cutting across a pasture. Only Revere was recaptured.
Ordered to dismount, Revere was interrogated. Shortly afterwards, the British patrol heard gunfire and church bells from Lexington.
ly3gq3ae93ogxqpsb22upud859ujam9
4656295
4656260
2026-08-05T01:00:09Z
JackBot
396820
Formatting, [[Special:UncategorizedPages]]
4656295
wikitext
text/x-wiki
{{qr-scope}}
Although Paul Revere and William Dawes left Boston by different routes on the night of April 18, they both arrived in Lexington around midnight. Sam Adams and John Hancock, leaders of the Massachusetts rebellion, were staying at the home of Reverend Jonas Clarke.
Outside the house, approximately ten militiamen stood guard. When the energetic Revere was ordered to stop making noise, he replied, “Noise! You’ll have noise enough before long! The Regulars are coming out.” Then, he banged on the door. Within an hour, the Lexington town bell was ringing, and both Revere and Dawes were riding west to Concord. They came upon Dr. Samuel Prescott, returning home after a night of courting. Prescott, an ardent patriot, offered to join the two riders.
As they passed through nearby Lincoln, the three men encountered a British ambush. “Stop! If you go an inch further, you are a dead man,” a British officer commanded. Bravely, the three riders tried to escape, Prescott jumping a stone wall, Dawes making for the road, and Revere cutting across a pasture. Only Revere was recaptured.
Ordered to dismount, Revere was interrogated. Shortly afterwards, the British patrol heard gunfire and church bells from Lexington.
{{shelves}}
g3ekr70vrhcyxk5nj04tcx5lqxbwvwf
User:Pinddaanpujagayaji/sandbox
2
485080
4656254
2026-08-04T12:00:06Z
Pinddaanpujagayaji
3619119
Created page with " == About Me == Hello and welcome to my user page. I have a strong interest in documenting and learning about Indian culture, Hindu traditions, and Vedic rituals. One of the topics I regularly study is Pind Daan Puja Gaya Ji, including its historical background, religious significance, and the traditions associated with ancestral rituals in Gaya. My areas of interest include: * Pind Daan * Shraddh * Pitru Paksha * Vedic Rituals * Gaya Ji Pilgrimage * Hindu Scriptures..."
4656254
wikitext
text/x-wiki
== About Me ==
Hello and welcome to my user page.
I have a strong interest in documenting and learning about Indian culture, Hindu traditions, and Vedic rituals. One of the topics I regularly study is Pind Daan Puja Gaya Ji, including its historical background, religious significance, and the traditions associated with ancestral rituals in Gaya.
My areas of interest include:
* Pind Daan
* Shraddh
* Pitru Paksha
* Vedic Rituals
* Gaya Ji Pilgrimage
* Hindu Scriptures
* Indian Cultural Heritage
I enjoy reading, researching, and organizing educational information to help others better understand these traditional practices. My goal is to contribute useful and well-structured content while continuing to learn about India's rich spiritual and cultural heritage.
Thank you for visiting my user page.
i4s7tz3v76tvvu6apjauwtjw91i16hl
User talk:~2026-42829-06
3
485082
4656261
2026-08-04T12:38:34Z
MathXplore
3097823
Notifying author about page tagging
4656261
wikitext
text/x-wiki
== I have added a tag to a page you created ==
Hi! I'm MathXplore, and I recently reviewed your page, [[:Awakening the Countryside: Battle of April 1775]]. I have added a tag to the page, because it <strong>has some problems that need to be looked at.</strong> If you have any questions or concerns, please [[User talk:MathXplore|let me know]]. Thank you! <!-- Substituted from User:JJPMaster/CurateThisPage/authorMsg --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:38, 4 August 2026 (UTC)
2s8vi7hviapwiev8p7scxt5njhplppq
Scratch Virtual Machine/Blocks/Looks
0
485083
4656293
2026-08-05T00:52:50Z
Some helpful person
3510188
Created page with "Looks blocks affect the size and appearance of a sprite.<ref>{{Cite web |last= |title=scratch3_looks.js |url=https://github.com/scratchfoundation/scratch-editor/blob/develop/packages/scratch-vm/src/blocks/scratch3_looks.js |access-date=2026-08-03 |publisher=[[:w:Scratch Foundation|Scratch Foundation]] |language=en |via=[[:w:GitHub|GitHub]]}}</ref> =={{subst:Anchor|looks_sayforsecs|sayforsecs}} say () for () seconds== =={{subst:Anchor|looks_say|say}} say ()== =={{subst..."
4656293
wikitext
text/x-wiki
Looks blocks affect the size and appearance of a sprite.<ref>{{Cite web |last= |title=scratch3_looks.js |url=https://github.com/scratchfoundation/scratch-editor/blob/develop/packages/scratch-vm/src/blocks/scratch3_looks.js |access-date=2026-08-03 |publisher=[[:w:Scratch Foundation|Scratch Foundation]] |language=en |via=[[:w:GitHub|GitHub]]}}</ref>
==<span class="anchor" id="looks_sayforsecs"></span><span class="anchor" id="sayforsecs"></span> say () for () seconds==
==<span class="anchor" id="looks_say"></span><span class="anchor" id="say"></span> say ()==
==<span class="anchor" id="looks_thinkforsecs"></span><span class="anchor" id="thinkforsecs"></span> think () for () seconds==
==<span class="anchor" id="looks_think"></span><span class="anchor" id="think"></span> think ()==
==<span class="anchor" id="looks_switchcostumeto"></span><span class="anchor" id="switchcostumeto"></span> switch costume to ()==
==<span class="anchor" id="looks_nextcostume"></span><span class="anchor" id="nextcostume"></span> next costume==
==<span class="anchor" id="looks_switchbackdropto"></span><span class="anchor" id="switchbackdropto"></span> switch backdrop to ()==
==<span class="anchor" id="looks_nextbackdrop"></span><span class="anchor" id="nextbackdrop"></span> next backdrop==
==<span class="anchor" id="looks_changesizeby"></span><span class="anchor" id="changesizeby"></span> change size by ()==
==<span class="anchor" id="looks_setsizeto"></span><span class="anchor" id="setsizeto"></span> set size to ()%==
==<span class="anchor" id="looks_seteffectto"></span><span class="anchor" id="seteffectto"></span> set () effect to ()==
==<span class="anchor" id="looks_changeeffectby"></span><span class="anchor" id="changeeffectby"></span> change () effect by ()==
==<span class="anchor" id="looks_cleargraphiceffects"></span><span class="anchor" id="cleargraphiceffects"></span> clear graphic effects==
==<span class="anchor" id="looks_show"></span><span class="anchor" id="show"></span> show==
==<span class="anchor" id="looks_hide"></span><span class="anchor" id="hide"></span> hide==
==<span class="anchor" id="looks_gotofrontback"></span><span class="anchor" id="gotofrontback"></span> go to () layer==
==<span class="anchor" id="looks_goforwardbackwardlayers"></span><span class="anchor" id="goforwardbackwardlayers"></span> go (FORWARD_BACKWARD) (NUM) layers==
Moves the sprite forward or backward (as determined by FORWARD_BACKWARD) a certain NUMber of layers.
* If the target is the stage:
** Does nothing.
* Otherwise:
** If FORWARD_BACKWARD is the string <code>forward</code>:
*** Casts NUM to a number. (NUM)
*** Brings the sprite forward NUM layers.
** Otherwise:
*** Casts NUM to a number. (NUM)
*** Brings the sprite back NUM layers.
<syntaxhighlight lang=py>
looks_goforwardbackwardlayers(FORWARD_BACKWARD, NUM):
if target is not stage
if FORWARD_BACKWARD is "forward"
NUM = castToNumber(NUM)
goForwardLayers(NUM)
else
NUM = castToNumber(NUM)
goBackwardLayers(NUM)
</syntaxhighlight>
==<span class="anchor" id="looks_costumenumbername"></span><span class="anchor" id="costumenumbername"></span> costume (NUMBER_NAME)==
Reports the target's costume number or name as determined by NUMBER_NAME.
* If NUMBER_NAME is the string <code>number</code>, reports the target's costume number.
* Otherwise, reports the target's costume name.
<syntaxhighlight lang=py>
looks_costumenumbername(NUMBER_NAME):
if NUMBER_NAME is "number"
return target.costume.number
else
return target.costume.name
</syntaxhighlight>
==<span class="anchor" id="looks_backdropnumbername"></span><span class="anchor" id="backdropnumbername"></span> backdrop (NUMBER_NAME)==
Reports the stage's costume number or name as determined by NUMBER_NAME.
* If NUMBER_NAME is the string <code>number</code>, reports the stage's costume number.
* Otherwise, reports the stage's costume name.
<syntaxhighlight lang=py>
looks_backdropnumbername(NUMBER_NAME):
if NUMBER_NAME is "number"
return stage.costume.number
else
return stage.costume.name
</syntaxhighlight>
==<span class="anchor" id="looks_size"></span><span class="anchor" id="size"></span> size==
Reports the target's size.
* Reports the target's size as a percentage rounded to the nearest integer.
<syntaxhighlight lang=py>
looks_size():
return round(target.size)
</syntaxhighlight>
==References==
rxnb873n30asupp72md3ak92eg2wf8p
4656303
4656293
2026-08-05T03:59:46Z
Some helpful person
3510188
4656303
wikitext
text/x-wiki
Looks blocks affect the size and appearance of a target.<ref>{{Cite web |last= |title=scratch3_looks.js |url=https://github.com/scratchfoundation/scratch-editor/blob/develop/packages/scratch-vm/src/blocks/scratch3_looks.js |access-date=2026-08-03 |publisher=[[:w:Scratch Foundation|Scratch Foundation]] |language=en |via=[[:w:GitHub|GitHub]]}}</ref>
==<span class="anchor" id="looks_sayforsecs"></span><span class="anchor" id="sayforsecs"></span> say () for () seconds==
==<span class="anchor" id="looks_say"></span><span class="anchor" id="say"></span> say ()==
==<span class="anchor" id="looks_thinkforsecs"></span><span class="anchor" id="thinkforsecs"></span> think () for () seconds==
==<span class="anchor" id="looks_think"></span><span class="anchor" id="think"></span> think ()==
==<span class="anchor" id="looks_switchcostumeto"></span><span class="anchor" id="switchcostumeto"></span> switch costume to ()==
==<span class="anchor" id="looks_nextcostume"></span><span class="anchor" id="nextcostume"></span> next costume==
==<span class="anchor" id="looks_switchbackdropto"></span><span class="anchor" id="switchbackdropto"></span> switch backdrop to ()==
==<span class="anchor" id="looks_nextbackdrop"></span><span class="anchor" id="nextbackdrop"></span> next backdrop==
==<span class="anchor" id="looks_changesizeby"></span><span class="anchor" id="changesizeby"></span> change size by ()==
==<span class="anchor" id="looks_setsizeto"></span><span class="anchor" id="setsizeto"></span> set size to ()%==
==<span class="anchor" id="looks_seteffectto"></span><span class="anchor" id="seteffectto"></span> set () effect to ()==
==<span class="anchor" id="looks_changeeffectby"></span><span class="anchor" id="changeeffectby"></span> change () effect by ()==
==<span class="anchor" id="looks_cleargraphiceffects"></span><span class="anchor" id="cleargraphiceffects"></span> clear graphic effects==
==<span class="anchor" id="looks_show"></span><span class="anchor" id="show"></span> show==
Makes the sprite visible.
* If the target is the stage:
** Does nothing.
* Otherwise:
** Sets the sprite's visibility to true.
** Requests to redraw the screen.
* If the target is not visible or the target's speech bubble does not have text, removes the target's speech bubble.
* Otherwise, renders the target's speech bubble.
* Requests to redraw the screen.
<syntaxhighlight lang=py>
looks_show():
if target is not stage
target.visible = true
requestRedraw()
if not target.visible or target.bubble.text is ""
removeBubble()
else
renderBubble()
requestRedraw()
</syntaxhighlight>
==<span class="anchor" id="looks_hide"></span><span class="anchor" id="hide"></span> hide==
Makes the sprite invisible.
* If the target is the stage, does nothing.
* Otherwise, sets the sprite's visibility to false.
* If the target is not visible or the target's speech bubble does not have text, removes the target's speech bubble.
* Otherwise, renders the target's speech bubble.
* Requests to redraw the screen.
<syntaxhighlight lang=py>
looks_hide():
if target is not stage
target.visible = false
if not target.visible or target.bubble.text is ""
removeBubble()
else
renderBubble()
requestRedraw()
</syntaxhighlight>
==<span class="anchor" id="looks_gotofrontback"></span><span class="anchor" id="gotofrontback"></span> go to (FRONT_BACK) layer==
Moves the sprite to the front or back layer as determined by FRONT_BACK.
* If the target is the stage:
** Does nothing.
* Otherwise:
** If FRONT_BACK is the string <code>front</code>, brings the sprite to the front layer.
** Otherwise, brings the sprite to the back layer.
<syntaxhighlight lang=py>
looks_gotofrontback(FRONT_BACK):
if target is not stage
if FRONT_BACK is "front"
goToFront()
else
goToBack()
</syntaxhighlight>
==<span class="anchor" id="looks_goforwardbackwardlayers"></span><span class="anchor" id="goforwardbackwardlayers"></span> go (FORWARD_BACKWARD) (NUM) layers==
Moves the sprite forward or backward (as determined by FORWARD_BACKWARD) a certain NUMber of layers.
* If the target is the stage:
** Does nothing.
* Otherwise:
** If FORWARD_BACKWARD is the string <code>forward</code>:
*** Casts NUM to a number. (NUM)
*** Brings the sprite forward NUM layers.
** Otherwise:
*** Casts NUM to a number. (NUM)
*** Brings the sprite back NUM layers.
<syntaxhighlight lang=py>
looks_goforwardbackwardlayers(FORWARD_BACKWARD, NUM):
if target is not stage
if FORWARD_BACKWARD is "forward"
NUM = castToNumber(NUM)
goForwardLayers(NUM)
else
NUM = castToNumber(NUM)
goBackwardLayers(NUM)
</syntaxhighlight>
==<span class="anchor" id="looks_costumenumbername"></span><span class="anchor" id="costumenumbername"></span> costume (NUMBER_NAME)==
Reports the target's costume number or name as determined by NUMBER_NAME.
* If NUMBER_NAME is the string <code>number</code>, reports the target's costume number.
* Otherwise, reports the target's costume name.
<syntaxhighlight lang=py>
looks_costumenumbername(NUMBER_NAME):
if NUMBER_NAME is "number"
return target.costume.number
else
return target.costume.name
</syntaxhighlight>
==<span class="anchor" id="looks_backdropnumbername"></span><span class="anchor" id="backdropnumbername"></span> backdrop (NUMBER_NAME)==
Reports the stage's costume number or name as determined by NUMBER_NAME.
* If NUMBER_NAME is the string <code>number</code>, reports the stage's costume number.
* Otherwise, reports the stage's costume name.
<syntaxhighlight lang=py>
looks_backdropnumbername(NUMBER_NAME):
if NUMBER_NAME is "number"
return stage.costume.number
else
return stage.costume.name
</syntaxhighlight>
==<span class="anchor" id="looks_size"></span><span class="anchor" id="size"></span> size==
Reports the target's size.
* Reports the target's size as a percentage rounded to the nearest integer.
<syntaxhighlight lang=py>
looks_size():
return round(target.size)
</syntaxhighlight>
==<span class="anchor" id="looks_hideallsprites"></span><span class="anchor" id="hideallsprites"></span> hide all sprites==
Does nothing. This is a legacy block retained for backwards compatibility with previous Scratch versions and is not visible in the block palette. In said versions, it [[#looks_hide|hid]] all sprites simultaneously.
<syntaxhighlight lang=py>
looks_hideallsprites():
(do nothing)
</syntaxhighlight>
==<span class="anchor" id="looks_changestretchby"></span><span class="anchor" id="changestretchby"></span> change stretch by ()==
Does nothing. This is a legacy block retained for backwards compatibility with previous Scratch versions and is not visible in the block palette.
<syntaxhighlight lang=py>
looks_changestretchby():
(do nothing)
</syntaxhighlight>
==<span class="anchor" id="looks_setstretchto"></span><span class="anchor" id="setstretchto"></span> set stretch to ()%==
Does nothing. This is a legacy block retained for backwards compatibility with previous Scratch versions and is not visible in the block palette.
<syntaxhighlight lang=py>
looks_setstretchto():
(do nothing)
</syntaxhighlight>
==References==
8ojupn06lqvj7aan33iix2xbmwpfthn
User:PETER A. SAUL
2
485084
4656312
2026-08-05T06:50:31Z
PETER A. SAUL
3619239
Created page with "= Personal Development and Mindset Anthology = ''An open-source educational series compiled and written by '''Peter A. Saul'''.'' == Overview == This textbook acts as an open-source mental manual created by author Peter A. Saul, distilling concepts of self-mastery, cognitive focus, and wealth psychology into actionable frameworks. It serves as a study guide for developing personal development principles and overcoming limiting beliefs. == Modules & Book Outlines == Thi..."
4656312
wikitext
text/x-wiki
= Personal Development and Mindset Anthology =
''An open-source educational series compiled and written by '''Peter A. Saul'''.''
== Overview ==
This textbook acts as an open-source mental manual created by author Peter A. Saul, distilling concepts of self-mastery, cognitive focus, and wealth psychology into actionable frameworks. It serves as a study guide for developing personal development principles and overcoming limiting beliefs.
== Modules & Book Outlines ==
This anthology is divided into four core educational volumes written by Peter A. Saul. Select a volume below to read the concepts and study chapters:
=== Volume 1: You Become What You Think ===
* Summary: An analysis of cognitive-behavioral frameworks and how thought patterns shape daily reality.*
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 1|Chapter 1: Understanding Mental Energy]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 2|Chapter 2: Breaking Limiting Beliefs]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 3|Chapter 3: Engineering a Peaceful Mind]]
=== Volume 2: The Book of Concentration ===
* Summary: Exploring attention economics, modern digital distractions, and deep focus methodologies.*
* [[Peter A. Saul: Personal Development and Mindset Anthology/The Book of Concentration/Chapter 1|Chapter 1: Why We Lose Focus in the Modern World]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/The Book of Concentration/Chapter 2|Chapter 2: Dopamine Detox for the Mind]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/The Book of Concentration/Chapter 3|Chapter 3: Practicing Deep Work]]
=== Volume 3: The Secret to Accessing the Hidden Heavenly Realms ===
* Summary: A philosophical exploration of inner stillness, mindfulness, and consciousness levels.*
* [[Peter A. Saul: Personal Development and Mindset Anthology/The Secret to Accessing the Hidden Heavenly Realms/Chapter 1|Chapter 1: Finding Inner Stillness]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/The Secret to Accessing the Hidden Heavenly Realms/Chapter 2|Chapter 2: Levels of Consciousness]]
=== Volume 4: Mastering the Art of Wealth ===
* Summary: An educational guide to financial literacy, wealth psychology, and the math behind compound interest.*
* [[Peter A. Saul: Personal Development and Mindset Anthology/Mastering the Art of Wealth/Chapter 1|Chapter 1: The Psychology of Wealth]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/Mastering the Art of Wealth/Chapter 2|Chapter 2: Compound Interest and Asset Allocation]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/Mastering the Art of Wealth/Chapter 3|Chapter 3: Avoiding Emotional Investing Traps]]
j9a9ypy9zxnpz6emeuoy3siq9mgbxkz
4656313
4656312
2026-08-05T06:55:38Z
PETER A. SAUL
3619239
4656313
wikitext
text/x-wiki
= Personal Development and Mindset Anthology =
''An open-source educational series compiled and written by '''Peter A. Saul'''.''
== Overview ==
This textbook acts as an open-source mental manual created by author Peter A. Saul, distilling concepts of cognitive-behavioral transformation, focus engineering, and wealth psychology into actionable frameworks. It serves as a comprehensive study guide for mastering personal development principles, overcoming limiting beliefs, and aligning thoughts with physical actions.
== Volume 1: You Become What You Think ==
''The Secret to Transforming Your Life''
This volume explores the science of neuroplasticity and the core principles of cognitive alignment, showing how dominant thought frequencies attract and shape real-world experiences.
=== Part I: Mindset Awareness and Weeding ===
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 1|Chapter 1: Unleash Your Inner Powerhouse: Thoughts Become Things]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 2|Chapter 2: Identifying Negative Thought Patterns: The Weeds in Your Garden]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 3|Chapter 3: Cultivating Positive Mental Habits: Your Garden of Thoughts]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 4|Chapter 4: Tapping into the Subconscious Powerhouse]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 5|Chapter 5: Visualizing Your Ideal Future]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 6|Chapter 6: Affirmations: Rewire Your Brain, Transform Your Life]]
=== Part II: Breaking Barriers and Mind-Body Sync ===
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 7|Chapter 7: Overcoming Limiting Beliefs: Breaking Free from the Chains of Doubt]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 8|Chapter 8: Mindfulness and Present Moment Focus: Your Key to Unlocking Power]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 9|Chapter 9: Harnessing the Law of Attraction]]
* [[Peter A. Saul: Personal Development和 Mindset Anthology/You Become What You Think/Chapter 10|Chapter 10: Aligning Your Thoughts and Actions: Building Your Dream Life Brick by Brick]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 11|Chapter 11: Manifesting Abundance and Prosperity]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 12|Chapter 12: The Untapped Power of Your Mind-Body Connection]]
=== Part III: Empowerment and Inner Healing ===
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 13|Chapter 13: Developing an Empowered Mindset: Taking Control of Your Destiny]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 14|Chapter 14: Embracing a Growth Mindset: Unleash Your Limitless Potential]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 15|Chapter 15: Releasing Emotional Baggage: Unlocking Your True Potential]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 16|Chapter 16: Practicing Gratitude and Appreciation]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 17|Chapter 17: Incorporating Meditation and Reflection]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 18|Chapter 18: Reframing Challenges as Opportunities]]
=== Part IV: Advanced Integration and Balance ===
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 19|Chapter 19: Cultivating Self-Love and Acceptance]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 20|Chapter 20: Surrounding Yourself with Positive Influences]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 21|Chapter 21: Consistency and Commitment to Change]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 22|Chapter 22: Integrating Learned Principles into Daily Life]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 23|Chapter 23: Achieving Work-Life Balance Through the Power of Your Mind]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 24|Chapter 24: Sharing Your Transformative Journey]]
o4kdc5w025lckndmaxmbdja2k16vd9o
4656322
4656313
2026-08-05T07:14:26Z
PETER A. SAUL
3619239
4656322
wikitext
text/x-wiki
= Personal Development and Mindset Anthology =
''An open-source educational series compiled and written by '''Peter A. Saul'''.''
== Overview ==
This textbook acts as an open-source mental manual created by author Peter A. Saul, distilling concepts of cognitive-behavioral transformation, focus engineering, and wealth psychology into actionable frameworks. It serves as a comprehensive study guide for mastering personal development principles, overcoming limiting beliefs, and aligning thoughts with physical actions.
== Volume 1: You Become What You Think ==
''The Secret to Transforming Your Life''
This volume explores the science of neuroplasticity and the core principles of cognitive alignment, showing how dominant thought frequencies attract and shape real-world experiences.
=== Part I: Mindset Awareness and Weeding ===
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 1|Chapter 1: Unleash Your Inner Powerhouse: Thoughts Become Things]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 2|Chapter 2: Identifying Negative Thought Patterns: The Weeds in Your Garden]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 3|Chapter 3: Cultivating Positive Mental Habits: Your Garden of Thoughts]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 4|Chapter 4: Tapping into the Subconscious Powerhouse]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 5|Chapter 5: Visualizing Your Ideal Future]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 6|Chapter 6: Affirmations: Rewire Your Brain, Transform Your Life]]
=== Part II: Breaking Barriers and Mind-Body Sync ===
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 7|Chapter 7: Overcoming Limiting Beliefs: Breaking Free from the Chains of Doubt]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 8|Chapter 8: Mindfulness and Present Moment Focus: Your Key to Unlocking Power]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 9|Chapter 9: Harnessing the Law of Attraction]]
* [[Peter A. Saul: Personal Development和 Mindset Anthology/You Become What You Think/Chapter 10|Chapter 10: Aligning Your Thoughts and Actions: Building Your Dream Life Brick by Brick]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 11|Chapter 11: Manifesting Abundance and Prosperity]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 12|Chapter 12: The Untapped Power of Your Mind-Body Connection]]
=== Part III: Empowerment and Inner Healing ===
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 13|Chapter 13: Developing an Empowered Mindset: Taking Control of Your Destiny]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 14|Chapter 14: Embracing a Growth Mindset: Unleash Your Limitless Potential]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 15|Chapter 15: Releasing Emotional Baggage: Unlocking Your True Potential]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 16|Chapter 16: Practicing Gratitude and Appreciation]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 17|Chapter 17: Incorporating Meditation and Reflection]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 18|Chapter 18: Reframing Challenges as Opportunities]]
=== Part IV: Advanced Integration and Balance ===
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 19|Chapter 19: Cultivating Self-Love and Acceptance]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 20|Chapter 20: Surrounding Yourself with Positive Influences]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 21|Chapter 21: Consistency and Commitment to Change]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 22|Chapter 22: Integrating Learned Principles into Daily Life]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 23|Chapter 23: Achieving Work-Life Balance Through the Power of Your Mind]]
* [[Peter A. Saul: Personal Development and Mindset Anthology/You Become What You Think/Chapter 24|Chapter 24: Sharing Your Transformative Journey]]
== Official Digital Profiles ==
* Peter A. Saul on Goodreads
* Peter A. Saul on Amazon
* Peter A. Saul on Substack
* Peter A. Saul on YouTubePeter A. Saul | Self-Help Audiobooks on YouTube
* Audiobooks Hub on YouTube
* Mindset Audiobooks Mastery on YouTube
4upslpsfznc85f6vllg9k16d3w9zjlt
4656348
4656322
2026-08-05T07:43:48Z
PETER A. SAUL
3619239
4656348
wikitext
text/x-wiki
= Peter A. Saul =
Welcome to my official author portal on Wikibooks. I am an author specializing in personal development literature, practical philosophy, and wealth psychology.
== Master Book Catalog ==
Below are the master links to my official educational volumes, organized by subject series. Click on any volume to view its full chapter outlines and read the contents:
=== 1. Mindset & Cognitive Transformation Series ===
* '''[[User:PETER A. SAUL/You Become What You Think: Transform Your Life|Volume 1: You Become What You Think: Transform Your Life]]'''
* '''[[User:PETER A. SAUL/Why 95 Percent of Your Life Is a Lie: How to Control Your Mind|Volume 2: Why 95% of Your Life Is a Lie: How to Control Your Mind]]'''
* '''[[User:PETER A. SAUL/Why 99 Percent of People Can't Control Their Thoughts|Volume 3: Why 99% of People Can't Control Their Thoughts]]'''
* '''[[User:PETER A. SAUL/Rewire Your Brain for Success: Why You're Stuck|Volume 4: Rewire Your Brain for Success: Why You're Stuck]]'''
* '''[[User:PETER A. SAUL/The Power of Positive Thinking|Volume 5: The Power of Positive Thinking]]'''
* '''[[User:PETER A. SAUL/25 Rules to Become Mentally Unstoppable|Volume 6: 25 Rules to Become Mentally Unstoppable]]'''
* '''[[User:PETER A. SAUL/Why You Must Be Alone to Succeed: Destroy the Old You|Volume 7: Why You Must Be Alone to Succeed: Destroy the Old You]]'''
* '''[[User:PETER A. SAUL/The 6-Month Life Audit: Destroy Your Old Self|Volume 8: The 6-Month Life Audit: Destroy Your Old Self]]'''
* '''[[User:PETER A. SAUL/The 6-Month Challenge: Destroy Your Old Life|Volume 9: The 6-Month Challenge: Destroy Your Old Life]]'''
=== 2. Focus & Productivity Series ===
* '''[[User:PETER A. SAUL/Why Your Brain Can't Focus: The Book of Concentration|Volume 10: Why Your Brain Can't Focus: The Book of Concentration]]'''
* '''[[User:PETER A. SAUL/Why You're Losing Before 8 AM: The 5 AM Habit|Volume 11: Why You're Losing Before 8 AM: The 5 AM Habit]]'''
* '''[[User:PETER A. SAUL/Build the System: Effortless Growth|Volume 12: Build the System: Effortless Growth]]'''
=== 3. Emotional Mastery & Practical Philosophy Series ===
* '''[[User:PETER A. SAUL/How to Control Your Emotions: The Power of Not Reacting|Volume 13: How to Control Your Emotions: The Power of Not Reacting]]'''
* '''[[User:PETER A. SAUL/The Power of Not Reacting: Emotional Control Guide|Volume 14: The Power of Not Reacting: Emotional Control Guide]]'''
* '''[[User:PETER A. SAUL/How to Solve Any Problem: The Peaceful Mind Formula|Volume 15: How to Solve Any Problem: The Peaceful Mind Formula]]'''
* '''[[User:PETER A. SAUL/Why You Never Get What You Want: The Art of Asking|Volume 16: Why You Never Get What You Want: The Art of Asking]]'''
=== 4. Wealth & Financial Freedom Series ===
* '''[[User:PETER A. SAUL/The Wealth Blueprint: 20 Personal Finance Principles|Volume 17: The Wealth Blueprint: 20 Personal Finance Principles]]'''
* '''[[User:PETER A. SAUL/The Law of Money: 26 Principles to Master Wealth|Volume 18: The Law of Money: 26 Principles to Master Wealth]]'''
* '''[[User:PETER A. SAUL/The Law of Money Attraction: 33 Wealth Principles|Volume 19: The Law of Money Attraction: 33 Wealth Principles]]'''
* '''[[User:PETER A. SAUL/Why You're Still Not Rich: 50 Rules of Money|Volume 20: Why You're Still Not Rich: 50 Rules of Money]]'''
* '''[[User:PETER A. SAUL/Why Your Bank Account Is Stuck: Think Like a Millionaire|Volume 21: Why Your Bank Account Is Stuck: Think Like a Millionaire]]'''
* '''[[User:PETER A. SAUL/How to Think Like a Millionaire: The Wealth Mindset Guide|Volume 22: How to Think Like a Millionaire: The Wealth Mindset Guide]]'''
* '''[[User:PETER A. SAUL/Thinking Like a Millionaire: Wealth Mindset eBook|Volume 23: Thinking Like a Millionaire: Wealth Mindset]]'''
* '''[[User:PETER A. SAUL/40 Laws of Compounding: Double Your Money Rule of 72|Volume 24: 40 Laws of Compounding: Double Your Money (Rule of 72)]]'''
* '''[[User:PETER A. SAUL/How to Start Investing: A Beginner's Personal Finance Guide|Volume 25: How to Start Investing: A Beginner's Personal Finance Guide]]'''
* '''[[User:PETER A. SAUL/How to Invest Smarter: The 7 Rules of the 1 Percent|Volume 26: How to Invest Smarter: The 7 Rules of the 1%]]'''
* '''[[User:PETER A. SAUL/How to Achieve Financial Freedom: Escape the 9-5 Grind|Volume 27: How to Achieve Financial Freedom: Escape the 9-5 Grind]]'''
=== 5. Strategy, Leadership & Communication Series ===
* '''[[User:PETER A. SAUL/The Art of Strategic Thinking: Chess Not Checkers|Volume 28: The Art of Strategic Thinking: Chess Not Checkers]]'''
* '''[[User:PETER A. SAUL/How to Talk Like a Leader: Speak with Authority|Volume 29: How to Talk Like a Leader: Speak with Authority]]'''
* '''[[User:PETER A. SAUL/Public Speaking Mastery: Why People Don't Listen to You|Volume 30: Public Speaking Mastery: Why People Don't Listen to You]]'''
* '''[[User:PETER A. SAUL/The Power of Silence: Why Powerful People Talk Less|Volume 31: The Power of Silence: Why Powerful People Talk Less]]'''
* '''[[User:PETER A. SAUL/How to Become Smarter Every Day: 25 Habits|Volume 32: How to Become Smarter Every Day: 25 Habits]]'''
=== 6. Esoteric & Spiritual Laws Series ===
* '''[[User:PETER A. SAUL/The 6 Akashic Laws: Karma, Timing and Soul|Volume 33: The 6 Akashic Laws: Karma, Timing & Soul]]'''
== Official Digital Profiles ==
* Goodreads Profile: Peter A. Saul
* Amazon Author Page: PETER A. SAUL
* Substack Newsletter: @PeterASaul
* YouTube Channel: Peter A. Saul | Self-Help Audiobooks
* YouTube Channel: Audiobooks Hub
* YouTube Channel: Mindset Audiobooks Mastery
8gi87fwcw5verg9ca5w2d6h7ddnr2o4