“Is Linux a better choice for old devices?”

Jiong Lu

I have a year 2003 Dell Inspiron 5100 notebook sleeping in the closet for almost 15 years and she is going to turn 19 this year. Recently I took it out and was wondering what I can do with it.  And finally, I decided to do a small project: Find out “Is Linux a better choice for old devices?”.  While following modern path like creating a YouTube video might be quite sounding, I am indeed not confident in shooting or editing so I prefer to stick with the old school style by just writing this article. At least I can learn a lot from the whole experience.

And never forget to Disclaim: this is a very biased article written by a MS engineer, and the research covered just one PC that obviously does not have its statistical significance.   The proper title might be: Is Linux a better choice for an old device owned by a MS engineer?     If that makes us all feel better. LOL

CPU

My Inspiron 5100 comes with a Pentium 4 2.4G (Northwood) CPU.   It is a 32-bit desktop CPU installed on a notebook, hot, slow, and always hungry for power with average DLP of 59.8w.  Starting from 2020, a lot of Linux distros stopped releasing new 32bit versions.   I decided to pick Linux Mint 19.3 as it is Ubuntu 18.04 based and it is yet widely used 32-bit supported OS.

For Windows, since Pentium 4 has SSE2 instruction set (and Pentium III does not), Windows 7 can yet run on it.  And Windows 7 is arguably still supported by Microsoft with ESU licenses (which is a paid service though), as of today, January of 2022.  I have thought of running Windows 8.x or Windows 10/11.   But the video card limitation and the NX bit security requirement shut this option down.

Pentium 4

Technically you can install any kind of end-of-life obsoleted OS onto an old device.  But this is not the point of my test.  My point is to test use the old device in modern days, which requires the OS to at least be still supported, can be security patched.

Conclusion: When comes to Operating Systems choices for CPUs, Linux is not that picky.  For recent new CPUs, kernels can be compiled and optimized to utilize the new features provided by them. But at the same time Linux does not say no to old CPUs.  It just won’t perform as good.  On the other side, Windows does have requirements for CPUs especially NX Bit, SSE2 and SSE3 etc.  And this 19-year-old Dell PC can run Windows 7 at its best.  

Meltdown and Spectre

One interesting thing needs to be pointed out (not relevant to the topic of this article) is that, like most Intel CPUs developed before 2018, this Pentium 4 is vulnerable to Meldown or Spectre (v1, v2) attacks.   And what’s make it worse, is that Pentium 4 (Northwood) uses a 20-stage (for Pentium 4 Prescott model, it will be 31-stage) long pipeline, compared with modern CPUs that only have 14 stages or less.  The 20-stage speculative technology used was specially designed for Pentium 4’s high CPU frequency, so that it can run more instructions per second by putting more in its cache and predicting more to run them simultaneously.  Which made it even more vulnerable to Meldown or Spectre (v1, v2 etc.) attacks.  There are OS patches to mitigate these types of threats, but they have quite a performance hit for speculative technology, especially with those having long pipelines like Pentium 4.     I choose to turn this mitigation off (on both Linux and Windows) and keep telling myself not to store anything important/sensitive on this little old device.  And… it turns out that the performance difference can be felt by human beings.

Video Card

This Dell Inspiron 5100 has a very weak AGP type video card: ATI Mobility Radeon 7500c (RV200 on Linux).    After install Linux, video card hardware acceleration works on Linux Mint when the kernel version is at 5.0.x (or below), but when kernel gets upgraded to 5.4.y (or versions above), only software rendering (by CPU) is used by the display manager, which made the system not usable.  It does not matter what display manager I choose (Mate, Cinnamon, XFCE etc.), it is 100% the kernel that made such difference (well, that is what a kernel should be.  But worth confirming, isn’t it? :))

Mobility Radeon 7500

As a long-time Windows user, I am not familiar with how Linux kernel handles hardware support. But I decided to do further research because Linux is open source. Yeah, why not!   And after some Bing search and code reading, I found it.  Yes, there it is!  I at least found where the driver support difference occurs:  The AGP card support for ATI Mobility Radeon 7500c was dropped by Linux Kernel starting from version 5.4.24.   You may find the details from these 2 patches: [PATCH 5.4 079/152] and [PATCH 5.4 080/152].   The 079 patch removes the AGP card support for amdgpu driver and the 080 patch removes the same for radeon driver.  The approval date of these 2 patches was Mar 03, 2020.  If you also have an AGP type of AMD video card and want to use it on Linux, you will very likely face the same issue.  I didn’t test the same for any AGP type of NVIDIA card though (edited 1/20: there are articles saying AGP support for both AMD and NVIDIA is dropped, around early 2020).  From all the work done above, I really learned a lot on how Linux community manages source codes, their modification histories, and the review / approval procedures.  Very impressive.   And this might also lead to another future project: what if I recompile the kernel to bring the AGP card support back? Edited 1/20: don’t get me wrong, I am not saying reverting these 2 patches will be all needed to do to bring AGP back. There are codes relating to it which do the real work and I am sure there will be quit a lot of them and almost everywhere. The Linux community said that it is difficult to keep maintaining AGP so that’s why it is dropped. Bringing it back will be easy to say, very difficult to do. But it is still on my list for exploring.

Code Change in Linux Kernel 5.4.24

Now, how about Windows then?   Mobility Radeon 7500c on my Inspiron 5100 has only 32M dedicated ram and it only supports DirectX up to version 7.  The most important thing is that the official vendor support just provides the driver for Windows XP.  There is no official driver for Vista or Windows 7.   But it does not prevent you from installing the XP driver onto Windows 7, you get all basic functions but not those Windows 7 dedicated visual effects like aero.   This is called a XDDM driver.   And those official Windows 7 video cards should be using WDDM drivers (supporting DirectX 9 or above, and at least 128m ram).   Starting from Windows 8 and all versions after it, XDDM drivers are no longer supported.  Hence Windows 7 is the highest version this Inspiron 5100 can run (sort of).

Conclusion: This weak AGP card seems not working well on either Windows or Linux, and for Linux it is already not supported.   In terms of performance, it worked better on Windows 7, compared with cinnamon (on Linux Mint).  On cinnamon, a process called “cinnamon –replace” keeps popping up even at idle which shows that CPU assistance is always required for the DM to render the desktop.  Browsing (with hardware acceleration) is already too much work for this video card on both OS, not to mention opening heavy sites like YouTube.  I did try XFCE or BionicPup32 (Ubuntu based 32-bit Puppy Linux), which runs smoother, but yeah, you can argue the same for using Windows XP to show performance as well. I have also thought of replacing the card with something else, but, nope, that’s just it is (a Radeon 9000 card won’t make much difference either and you cannot go any further).

Wi-Fi Card

The Inspiron 5100 is equipped with an 802.11b/g Dell Truemobile 1150 card (Broadcom chip BCM4306/v2) that requires drivers on both Windows and Linux.   On Windows, the official driver had several version updates, and the latest version enables 802.11b/g/n (for 11n, it is with standard level compatibility but not its speed) so I can turn on 11n mode (for 2.4G) on my Access Point and the card still can communicate with it properly.

On the other hand, Linux driver support was a total headache. The BCM4306/v2 is only supported by b43legacy driver but it is so basic that if I turn on 11n mode (for 2.4G) on the AP, the card just refuses to connect, no matter what channel I assign to it.  Even after I change the AP to 11b mode, the card is so reluctant to work well, keeps dropping packet or returns a ping at level of hundred milli-seconds (it could be because 2.4G channels are so full at my apartment).  And “NO, a NDISWrapper won’t work either” before some of readers may point out.

MiniPCI Wi-Fi Card and MiniPCIe Wi-Fi Card

But the good news is, after I spent less than 5 USD bought a Qualcomm AR9220 Wi-Fi card and plug it in, both Windows and Linux are very happy with it.  No drivers needed and it is 802.11a/b/g/n.  It is just great. Problem solved.  For those who may think these Wi-Fi cards look the same as of today, it is not.  They are all MiniPCI type, which is nearly 4x the size of a modern Mini-PCIe Wi-Fi card.  That is history, in 20 years.  (But wait! If you have an IBM, Toshiba, or some other notebooks, don’t assume a new Wi-Fi card will always work because these makers have locked the Mini-PCI cards using whitelist in their BIOS).

Conclusion: For Wi-Fi devices, Windows and Linux are happy with a lot of old Qualcomm chip equipped cards. When comes to the old legacy Broadcom chip, Windows needed a 3rd party driver, Linux just said no.

RAM

Inspiron 5100 can take up to 2G of RAM if its BIOS gets upgraded to version A32 (latest).   They are the first generation of DDR ram, running at 266Mhz and can work under dual channel (1G each).  They cost me about USD 9 in total. Both Linux Mint and Windows 7 are fine with that 2G of RAM.  At least, they were not the bottleneck. 

It worth mention that the only broken part of this PC after I took her out from the closet, was one of the old RAM sticks (512M).   It caused a BSoD on Windows 7.   I personally have never met with a broken RAM so that was a nice cool experience, which also cost me several further tests to troubleshoot, isolate (make sure it’s not motherboard) and identify which one was bad. And I am not complaining.   One more interesting thing is that the Dell Inspiron 5100 tested the RAM after that crash and decided to lower the capacity of that RAM to just 192M.   I never know that BIOS will do this type of thing, it was funny but yeah, makes sense.

Broken RAM caused a BSoD

HDD or SSD?

The original storage on this device was a 4800rpm 40G Hitachi hard disk.  It is of IDE type (or PATA).  And it is extremely slow. I spent about USD 19 in total bought a 120G mSATA SSD and an adapter to make it work with PATA interface.

mSATA SSD with IDE adapter

This combination works quite well on both Windows 7 and Linux Mint 19.3.  I had to do similar configuration changes on both sides like enabling TRIM, enabling cache, stop disk defragmentation job etc.   But they are fine with all these changes.   The only complain, which was already expected, is that the SSD does not perform because of the IDE interface and/or the bus.  Read/Write peaks at around 20MB/s-ish, and there is not much we can do with it.   Old hardware is just old hardware and changing the motherboard will be considered going too far for these types of projects.

Both Windows 7 and Linux Mint are installed (dual boot) on the SSD.   They became friends.

Conclusion

OK, time to wrap the test up.   If you ask me “Is Linux a better choice for old devices?”, the answer is complicated (yeah, I hate myself saying that):

At least, Linux is not always the last to drop support for old hardware.  In a lot of cases, they drop earlier than Windows do. We cannot just assume Linux or Windows will work on certain old hardware, because very often they don’t.   If you have a Pentium III PC, the experience would be very very different.

There is never anything other than hardware failure that will prevent you install an outdated obsoleted OS to an old device.   You just don’t get security updates and they may lack ability to work with modern standards like Wi-Fi 4+, TLS 1.2, DirectX etc.  

The performance for an old PC to run “Supported” operating system is, honestly, not good.  I can’t think of many use scenarios for them, other than: Run old single-person games / Keep the PC working until they become antiquities.

While these might be considered as total waste of time, for me, it was still a GREAT experience.  Because it gives me opportunity to learn things from the timeline table: where they come from, how do they work, and what they will change into.   Because of it, I started to learn Linux kernel and who are developing and maintaining them. 

This was a FUN project to start 2022.  And all best wishes to you too!