
Adventures of putting 16 GB of RAM in a motherboard that doesn’t support it - zdw
https://www.downtowndougbrown.com/2019/04/adventures-of-putting-16-gb-of-ram-in-a-motherboard-that-doesnt-support-it/
======
CharlesColeman
> In order for the document to help me, I clearly needed to find the four
> error parameters that used to be displayed with the blue screen on older
> versions of Windows. Windows 10 hides all the information by default, but I
> discovered that it’s possible to re-enable display of the extra error
> information by adding an entry to your registry.

I hate stuff like this. What's the point of hiding the parameters, instead of
tucking them away in the corner of the screen or something? It just makes
things needlessly difficult.

I know the answer is going to be "but it makes the UI look beautiful and most
users don't know what the parameters mean anyway!" Error UIs don't need to be
beautiful, they need to be functional. Definitely have a nice, clear user-
friendly error message, _but keep the overall screen technically informative_.
I can imagine that the only thing more infuriating than having a computer that
won't boot, is having one that won't tell you the problem unless you change
registry settings (which you _can 't_, because it _can 't boot_). Leaving the
extra information there does not harm, and it give people something to Google
if they do run into a problem.

~~~
spuz
Yes. What I can't understand is why this extra diagnostic information is not
available with a keyboard shortcut, rather than with a change to the registry.
If you get a blue screen on boot, you typically have no way to alter the
registry. Holding shift or something would make much more sense.

~~~
tareqak
Something similar is how remapping the Capslock key in Windows to another one
has to be done via registry edit instead of a Control Panel setting. Given the
renewed drive from Microsoft to become the developer’s OS of choice over the
last five to ten years, choosing to not offer a more a accessible solution
than a registry edit seems contrary to that drive for me.

~~~
HeWhoLurksLate
Honestly, it's probably something that just got overlooked. I've only ever
hated my caps lock key enough on a keyboard to rebind it once.

~~~
lbotos
Seems like you aren't using Vim Then. Caps to escape is a common binding. It's
not about hate, it's about ease of modal editing.

~~~
thaumasiotes
I use caps-to-ctrl. Ctrl is so common that not being able to hit caps lock for
it is now a major usability issue for me on other people's computers.

~~~
cheschire
Older Sun keyboards used to have control in that location labelled by default.
I remember buying a happy hacker keyboard back in the early 2000's that also
had that as the default configuration, with a dip switch to flip it.

------
uranium
Man, this gave me flashbacks to trying to put 3.5-4GB of RAM into motherboards
in 2003. After a bunch of iterations of telling the motherboard manufacturers
what we wanted, and having them hack the BIOS to work for _exactly_ one DIMM
configuration, then fail on anything else, I eventually gave up expecting most
of the BIOS to work at all. I added code to the Linux startup sequence that
ignored everything the BIOS said about memory maps, queried what physical
DIMMS were there, and rebuilt my maps by hand.

It's been so long that I can't tell an e820 map from an MTRR, but this was
still a fun read.

~~~
JoshTriplett
> I added code to the Linux startup sequence that ignored everything the BIOS
> said about memory maps, queried what physical DIMMS were there, and rebuilt
> my maps by hand.

I'd love to see this code; doing memory management _entirely_ in the OS and
ignoring the BIOS sounds like fun (modulo working around BIOS-specific memory
reservations so the OS doesn't get its memory stomped on by the BIOS).

~~~
ianai
Post-UEFI I wish this were more of a viable option.

~~~
josephg
I agree.

I spent some time last year running various scripts to get an NVIDIA GPU
working over thunderbolt in windows on a macbook pro. The problem is the DSDT
table in many macbooks doesn't allocate enough space for pci-e devices. The
NVIDIA driver in windows tries to allocate memory via that table to talk to
the eGPU and it fails.

For some reason it works fine under MacOS - either macos ignores the DSDT
table completely, or it allocates memory a bit differently than windows. In
any case, the answer is to use obscure tools to download and patch the DSDT
tables to allocate more RAM toward PCI-e. Doing this through UEFI feels very
magic.

I don't know why so much of this stuff is up to the hardware vendor. Maybe
there's a good reason, but I would expect the windows memory manager could do
a much better job if it didn't have a bunch of memory range sizes hardcoded by
apple.

------
userbinator
One of the things you'll quickly learn from working in IT (and probably other
fields) is that "not supported" can mean anything from "physically impossible"
to "we don't want you to".

In the case of RAM, "physically impossible" would mean something like the CPU
not having that many address bits or the PCB traces not routed, but there are
a lot of different not-well-advertised configurations of DIMMs available with
the same size[1], so it could be that the manufacturer specified a lower
maximum just to avoid having to answer subtle questions. For example, 2x8GB
may be OK but 1x16GB not.

It could also be a "X if Y except Z else B" situation, and they just couldn't
be bothered to document all the possible combinations and/or explain the
details of the PC system architecture that result in such limitations.

To test if all the memory is present (and if it all works correctly), running
something like MemTest86 might be sufficient.

[1]
[https://en.wikipedia.org/wiki/Memory_geometry](https://en.wikipedia.org/wiki/Memory_geometry)

~~~
anonoholic
> "not supported" can mean anything from "physically impossible" to "we don't
> want you to"

More like:

from "physically impossible" to "we haven't tested that"

> they just couldn't be bothered to document all the possible combinations

Each combination adds exponential testing and documentation requirements.

Not tested != doesn't work. But that doesn't make not supporting it malicious.
There are practical and financial cost to testing every combination,
ultimately born by the consumer.

~~~
HeWhoLurksLate
My favorite is when they say "not supported" and it's easy to make it work and
is just their way of scaring Enterprise customers to their bread & butter.
(One example that comes to mind is a bunch of Rigol oscilloscopes that, _even
though they have FPGA 's on them_, can still have more functionality enabled
with resistors.)

~~~
SmellyGeekBoy
As an owner of a lower-end Rigol oscilloscope, this is very interesting to
me...

------
alchemism
My Dad bought us an IBM PCjr with 256KB of RAM, which was kind of elite in
1984.

But he wanted more. So, he purchased a pair of thick memory expansion board
that brought it up to an unheard-of 640KB of RAM.

Of course, these slabs generated an impressive amount of heat, so we had to
set up a series of cooling fans, or else computations would go awry and weird
bugs would appear in programs as it overheated.

It had all manner of strange behaviors, and IBM engineers on the support
contract would dutifully visit and give us stacks of floppies containing
custom builds of MS-DOS to try and help us out when he called about problems
with his mods.

Today, incidentally, I’m a sysadmin.

~~~
benj111
So was the memory expansion official?

I would guess not? But then IBM were supporting it???

OT. I now have visions of young engineers joining IBM with dreams of working
on big iron, but ending up in the burbs fixing PC jrs.

------
dev_dull
I love this line:

> _All I know is it passes my RAM tests. Since Linux has been working fine
> with the 16 gigs of RAM installed, I am not too worried. It’s possible I
> would have problems if I had more PCI /PCIe cards installed or something,
> but in my use case, it seems to behave fine. Obviously, your mileage may
> vary_

I run into this so often. "Look, it works for me. Don't try it at home. Who
knows if it keeps working? What can I say I'm going to ride it until the
wheels fall off".

~~~
ivanhoe
Well, it's not like you're in any real danger for trying it, if your system
becomes unstable you just take out that extra ram. It's exactly the same as
overclocking, your box might not work as stable as before, but you get the
extra speed, so thousands of people do it...

------
PaulHoule
It's a long term difference between the Unix culture and the Windows NT
culture (which date back to VMS) that Windows will give up when things are
wrong and Unix will barrel ahead anyway.

~~~
toast0
I think there's reasons that either approach is the right one, but Microsoft
has the benefit that if they panic on boot, there's a good chance the issue
will be fixed, and most likely before the product is released. (In this case,
the fix was apparently just to list a smaller maximum ram size though)

~~~
duxup
In another career I sat on a conf call where an engineering manager was really
upset and went off on a tangent about how X code should not "freak out" every
time it sees something unexpected.

I was not writing code at the time and had nothing to contribute.

So apparently they fixed it later.... then came the security issues,
unexpected behavior, shit going sideways.

Sometimes a straight crash is not such a bad thing.

~~~
meddlepal
I would rather something crash and log than continue silently most of the
time, especially with backend and server systems.

One of the things I like about Kubernetes is that the ecosystem (generally)
tries to adhere to the "Not healthy? Then crash and keep crashing" mantra when
something doesn't work. If I see something is in a CrashLoopBackoff I at least
know its b0rked. Stuff that reports its up and running when it's actually
hosed is really annoying.

~~~
duxup
I'm inclined to agree.

The worst sort of thing to track down is working ... but not. God knows when
it started or what it has impacted.

Worse if it impacts real data or data goes where it shouldn't.

------
jchw
Love this. I've got an old Pentium box I thought I was going to have to hack
up the BIOS to get larger IDE disks working, but don't you know it the
motherboard manufacturer (AOpen) still had the BIOS update files on their site
and after updating I could boot 32 GB disks on a board that only claims to
support up to 8 GB. I think the lesson is, _at least_ check for BIOS updates
before you throw in the towel :) Maybe not everyone needs to go as far as
hacking ACPI tables in memory, but it sure sounds like fun.

~~~
anyfoo
In that era, you could often just ensure that the BIOS could load the
bootloader/kernel by placing it into the region still reachable by the BIOS.
OSes like Linux (and anything Windows NT based) practically completely
disabled[1] the BIOS anyway, and their own IDE drivers would be recent enough
to understand how to address the full disk.

It was not uncommon to have a small boot partition at the beginning of the
disk for that purpose.

[1] Bit of a simplification. In reality, the BIOS being 16bit real mode code
meant that you had to jump through very elaborate hoops if you wanted to use
it in your protected mode OS in any way, and then for questionable gain.

~~~
nisa
> It was not uncommon to have a small boot partition at the beginning of the
> disk for that purpose.

still had to that a few weeks ago because on a dell r720 grub did not want to
boot my zfsonlinux rootfs on a 6tb pool - it's either the dell hba controller,
grub oder some other limitation but once you go beyond 2tb or 4tb disk I
always run into strange behavoir.

Maybe UEFI solves that, I don't know.

~~~
jchw
EFI doesn't solve it directly, but GPT does. Regular MBR can't handle more
than 2tb disks. Of course when running EFI you always want to use GPT. Linux
might be able to handle >2tb MBR somehow, but in doing so it might be
confusing your BIOS perhaps.

------
equalunique
My HP N40L "MicroServer" only supports up to 8GB RAM, but I have it running
now with 16GB. Sometimes FreeNAS will boot saying there is 16GB, and other
times it will boot saying there is only 8GB. I'm unwilling to risk loosing
that old reliable system via a potentially dangerous BIOS hack, but it sure
would be nice not have to reboot it until I win the lucky 16GB jackpot.

~~~
orev
I would be concerned that there’s some electrical reason why it’s detected
intermittently, and that the extra 8GB could easily disappear while the system
is running.

~~~
segfaultbuserr
Low-level software is responsible for most memory issues, but there are
definitely electrical reasons, too.

For example, I have a devboard that only support 1 GiB of DDR2 RAM, but it's a
64-bit system and the memory controller on the CPU was supposed to support at
least 2 GiB of RAM. Meanwhile, another board that uses the identical chip runs
2 GiB RAM without problems.

The engineers of the devboard briefly explained that the problem was
electrical. The memory controller itself has inadequate drive strength, adding
more RAMs would increase the load on the DDR bus and destabilize the system.
On the other hand, the other board had better PCB layout so the problem did
not occur.

~~~
equalunique
I would sure like to find an inexpensive Mini-ITX motherboard in 2019 that
could run my 2x8GB sticks of 204-pin DDR3 ECC UDIMMs properly.

~~~
remlov
Holy smokes. I thought finding an ITX board for 2x8GB sticks of full size
240-pin DDR3 ECC UDIMMs was hard.

~~~
segfaultbuserr
I have a Mini-ITX board, I noticed that if I activate XMP, the board will
cease to work, but it works with 4 GiB of RAM at standard frequency.

So it seems memory is a general problem among Mini-ITX boards? Perhaps the
reason is that these boards have less available space for routing, fewer
layers, and targets a lower price, so they trend to have worse electrical
characteristics?

~~~
remlov
Quality of the PCB and the number of layers definitely plays a factor I'm sure
it isn't limited to ITX though. I have noticed compatible differences between
super robust Intel ITX boards vs ECS thin and wobbly ITX boards, with the ECS
board having more issues, quirks and what not.

------
anonlapwarmer
The workhorse oldie-but-goodie A1278 MBP mid-2012 non-Retina supports 16 GiB
and two SSD's (one in the optical bay, and one in the HDD bay).

The Lenovo T480 supports 64 GiB. A 13" hackintosh-friendly laptop with:

\- dual m.2 slots

\- WQHD 2560 x 1440

\- Thunderbolt 3

\- water-resistant keyboard with drains

\- 9 hours of battery life with the second, extended battery

\- officially user-serviceable parts/guides

\- & 64 GB!

The iPhone 6S, even with the headphone jack, is IP67 in all but name but
didn't sell it as a feature... it has all the gaskets of the 7 but supposedly
the headphone jack was an issue... mine's been in the shower a few times for
YouTube morning news and still works.

You can make any data & charging connector USB-C magnetic & right-angle for
$30. [https://www.aliexpress.com/item/USB-C-L-Tip-Magnetic-
Adapter...](https://www.aliexpress.com/item/USB-C-L-Tip-Magnetic-
Adapter-5A-87W-Type-C-PD-Dongle-Converter-for-
MacBook/32920845652.html?spm=a2g0s.9042311.0.0.27424c4drJr85M)

~~~
drudru11
Thx for the tip on the Lenovo. I have been on the lookout for a Linux laptop.

~~~
anonlapwarmer
Videos from Louis Rossmann convinced me modern MBPs are beyond awful:
[https://www.youtube.com/user/rossmanngroup](https://www.youtube.com/user/rossmanngroup)

macOS and most apps have nice UX and mostly work well together. Docker usually
works on top of the built-in macOS intel-origin hypervisor. (VMware Fusion is
another $olid option for $$; had problems with VirtualBox.)

What's neat about the T480 is there's an utility on the Windows partition to
flash the BIOS startup boot logo from red "Lenovo" to whatever you want.

------
somacert
As far as I can tell there are three acpi stacks/interpreters

Intel, This is the reference, most operating systems use this (linux, freebsd,
macos)

Microsoft

Openbsd, yes the openbsd project is crazy enough to build their own acpi
implementation, keep fighting the good fight openbsd.

Because have you seen the spec? good lord what a train wreak.

------
smartmic
A true hacker. And a wonderful read. Reminds me that the ability to really
understand and control your system is one of the biggest achievements and
power of Linux and FOSS.

------
saagarjha
> I clearly needed to find the four error parameters that used to be displayed
> with the blue screen on older versions of Windows. Windows 10 hides all the
> information by default

A somewhat disappointing trend in user interface design…

------
dmarlow
I love articles like these. It's an amazing skill to be able to do what was
done here.

------
VectorLock
Now thats the kind of deep dive you don't see very often in the rarified cloud
computing world I live in now.

------
tombert
About six years ago I updated a laptop to 16gb of RAM that only officially
supported 8gb, and I remember thinking "the greedy manufacturers lied! It
works fine!" However, I was running Linux, and now upon reading this I wonder
if I would have had the same issues if I had tried booting into Windows.

~~~
Tsiklon
My old 2011 MacBook supports only 8GB officially - though the Intel chipset
onboard will support 16GB - It's run happily with 16GB of RAM since 2012...

~~~
tombert
Oh yeah, I actually might have had that same model of MacBook, and I also
think I put 16gb in there with an SSD; gave it to my brother in law. Amazing
how well those things can hold up long term.

------
madrox
I remember being 14 years old playing with my NEC PC because IRQ conflicts
caused it to reboot at unexpected times. My dad might have fixed it, but he
didn't have time so I had to rely on myself if I wanted to play Warcraft ever
again. I didn't really know what I was doing, but it was the first time I took
something apart trying to figure it out. I explored BIOS and all the hidden
parts that Windows tries to hide from casual users. Looking back, that's
really where my perseverance in working through hard problems began.

I was expecting this to be "Linux roolz, Microsoft droolz," but I really
enjoyed this. It's been a while since such simple, fun hardware exploration
came across my desk.

------
Nr7
I have a kind of opposite problem on an old Lenovo laptop where Windows boots
just fine every time but any Linux distro I try randomly fails to boot with an
ACPI error.

It's not a RAM issue though. AFAIK there's some bug in the UEFI/BIOS even on
the latest version which Windows handles just fine but Linux randomly doesn't.
I can boot Linux every time if I disable ACPI at boot but then I lose power
management and battery percentage. Latest kernels (can't remember the version
exactly, 4.somethingoranother) should handle the issue according to some forum
posts I found but it doesn't for me.

------
bluedino
I wonder what the Mac equivalant 'fix' would be? The 2010 15" MacBook Pros
only supported 8GB, where the 13" models supported 16GB. They used this same
i5 chip.

~~~
satmandu
Seriously. I tried putting the 16Gb of ram into the 2010 15" mbp, and it would
boot into linux, but not macos.

Running memtest it was clear that there were issues with accessing ram in
various segments, but I didn't have the knowledge to muck around with the acpi
tables to see if that would fix it.

I'd love to give it another shot if possible.

------
glvn
Back in 2012 I had a white MacBook. Apple said it only officially supported
4GB butt there were numerous reports of people getting it to recognize 8GB
without issue. Back then I was still in high school and only semi-technical so
I thought it was some sort of black magic.

~~~
bluedino
The white polycarbonate MacBooks only supported 8GB according to Apple, but
16GB worked fine. Same thing with the 2010+ 13" Unibody MacBooks

~~~
unpixer
Gather 'round, young 'uns: the 1998-vintage Powerbook G3 "PDQ" officially
supported only 192 MB of RAM. Unofficially it was possible, if you bought the
right DIMMs, to upgrade it to 512 MB. Which I did, just for laughs. (It was
also possible, using XPostFacto, to upgrade it past the official OS X 10.2.8.
maximum to 10.4.11. But it was so slow it was practically unusable.)

------
zelon88
Nice find! Reminds me of the Dell Vostro 230. It will "officially" support 8GB
memory but if you buy 8gb "low density" DIMMs it will accept 16GB just fine.
Not nearly as difficult as your setup but similar in nature.

~~~
maaarghk
I had a similar adventure on the Vostro 230, followed by editing the BIOS to
activate the vmx flag so that I could do hardware virtualisation with the Xeon
processor that it shipped with!

------
encore2097
This is how hackintoshs boot! Love the independent discovery of ACPI hacking
:)

------
xaduha
Since it's kind of related to something a wondered about - can you spoof a
device ID with those tools? So an operating system just eats it up? I know
it's possible with VMs and device passthrough.

------
EB66
Wow, I didn't know this was possible...

My every day workstation is a Dell Studio 540 from 2009 that I've upgraded to
the max in every possible way but without changing the motherboard and case.

The only upgrade I haven't pursued (because I thought it was impossible) is
bumping up the RAM beyond 8GB. If anyone has experience bumping 2009 era Dell
motherboards (in particular the M017G motherboard) beyond 8GB RAM and has any
tips to offer, please let me know!

If I could bump up the RAM to 16GB, I might be able to keep using my beloved
desktop for another 10 years :)

~~~
EB66
I just thought I'd provide a follow-up on this in case someone else with a
Dell Studio 540 or Intel G45 chipset tries to upgrade to 16GB memory.

It works!

I ordered 4 x 4GB 2Rx8 PC2-6400U DDR2-800Mhz 240PIN UDIMM from a business on
eBay called Memory Masters and it worked perfectly. No hackery required.

My desktop from 2009 now runs with 16GB RAM and will be hopefully be in use
for another 10 years :)

------
d33
I think I would also run the memtest under the VM to make sure that the memory
map is actually all reachable within Linux and doesn't mess anything up.

~~~
Etheryte
As far as I can tell, the author did run tests on the memory after finishing:

> All I know is it passes my RAM tests.

~~~
d33
I don't know much about kernel memory management, but if he was booting
memtest86+ bare metal, I wouldn't be surprised if he wasn't triggering the
same edge cases Linux would do - which is why I'd prefer to make the actual
system try to allocate as much memory as possible, use it and see if the
results are sane.

~~~
dougg3
I'm the author of the blog post. My first time here on Hacker News...very cool
that it was picked up! I did my memory testing inside of Linux using
memtester. I honestly want to do more thorough testing at some point to prove
that it's actually working okay. If some of the PCI hardware is still paying
attention to that overlapped range, weird stuff could definitely happen.

------
comprev
My MacBook Pro 13 mid-2010 "officially" only supports 8GB RAM maximum - but I
run 16GB - thanks to the research by other folks on the internet related to
the Intel hardware inside. The particular brand & model of sticks had to be
fairly specific, but can confirm it's been rock solid for 3 years and
certainly extended it's useful life for me when money was tight.

------
Florin_Andrei
> _don’t know if the motherboard is actually hardwired to look at those
> addresses for PCI stuff or what. All I know is it passes my RAM tests._

I guess you could allocate a humongous matrix with random cell values and do a
CRC or something (once while you're filling it in, and again from square 1) to
make sure the values are indeed what you think they are.

------
quotemstr
With respect to booting with a conflict in the system memory map: the Windows
behavior is the right one, IMHO. An operating system shouldn't just ignore
self-contradictory system configuration information and try to continue
anyway. Who's to say that the resulting behavior is the right one? You're in
undefined behavior territory. Failing fast when encountering invalid state, as
Windows does, leads to more robustness in the end: fail-fast gets problems
fixed, not swept under the rug.

~~~
wtallis
Fail-fast only has a hope of getting the problem fixed if it occurs with
popular software within a few months of product launch. In the case of using a
motherboard with DIMMs that didn't exist until the MB was obsolete, you're
never going to get the vendor to fix it, unless you have a very expensive
long-term supply and support contract of the sort that doesn't exist for
consumer parts.

------
balls187
I love this stuff.

I remember custom flashing a motherboard to support a pair of SSD's in RAID-0,
and allow it as a boot device.

------
ameyv
Brilliant work! I know this feeling very well..God if i can this everyday at
work it would be just amazing...

------
gpvos
What would happen if he removed the second 8GB but forgot to remove the GRUB
ACPI table patch?

------
drudru11
It would be nice if Linux would avoid using any of the BIOS. I wonder if that
is possible.

------
jadar
I remember messing with ACPI and DSDT when I was into the hackintosh scene.
Good times.

------
randyrand
I wonder if microsoft would be interested in copying the linux approach.

bug report?

~~~
LeonM
I don't think it's a bug, it's a feature (no pun intended).

If there is problem with reported values from a BIOS, it's a good thing
Windows does not continue. BIOS issues (such as a RAM address out of the
reported range) can lead to unpredictable behaviour. Troubleshooting such
issues is next to impossible.

------
dclowd9901
If I were trying to explain to someone who knew computers but not cars why I
would never buy a car with an engine swap, this is exactly the post I would
point them to.

------
_bxg1
Just reading this gave me a headache

~~~
_bxg1
Really? Five downvotes for an innocently tongue-in-cheek comment?

~~~
Dylan16807
Were you making a joke, or just fake-complaining? Five is not a lot either.

~~~
_bxg1
Making a joke about how miserable it is for some of us to deep-dive into
systems to get stuff working. I wasn't expecting any upvotes, but it was
neither a rude nor an idiotic thing to say, so y'all need to chill.

~~~
zaroth
It wasn’t clear you were sympathizing and not actually complaining.

For a second I thought you might say the contrast was too low, and which CSS
style you had to adjust.

------
qwerty456127
In good old days of i440BX it usually took just a BIOS update (and some socket
rewiring for the latest CPUs) to add support for extra RAM and CPUs...

~~~
frabert
That's what it would take in this case as well, it's just that the
manufacturer doesn't provide any.

~~~
qwerty456127
Sure. I've commented before I've read the article. Now I see. In fact the
BIOSes I've ended up using during the last years of my BX PC (before I've
bought a laptop) were community-patched. Now I wonder if it is possible to
patch my Dell E5500 to support more than 4 GiBs or if it's actually an
unbreakable limitation of its chipset...

~~~
nisa
8gb should work fine. 16gb probably not.

