[Problem] My first BIOS brick: What went wrong?

Hello! I’m a new member here. I hope this post is a good fit for this forum and this category. If not, feel free to move it (or remove it). Note that this topic is technically not about modding or using a modded BIOS and then having a bricked BIOS as a result. (Well… someone does have to create or mod something before others can use it, but that’s a topic for philosophy.) This is a BIOS story, as told from an advanced user’s perspective, when updating a BIOS using normal update procedure. With this post, I want to share my frustration and disappointment, and also ask the big question: what went wrong? I will tell the story from the beginning to the end. If you find this boring already, you might find it more interesting to jump straight to the Flash! section. (Just don’t forget to come back and read the fun part of the story!)

Background

So I have this Windows 10 tablet that was working normally, but I had to reinstall Windows on it. It’s not a common brand or model, because it’s a POS terminal. It’s a PartnerTech PAT-120 X2. There are two versions of it, with different specs: one running Windows and one running Android. I believe they’re referred to as X2W and X2A in a datasheet I saw. I have the Windows version, and it came with Windows 10 Enterprise LTSC 2019 operating system and Windows 10 IoT Enterprise LTSC 2019 license. (Because Microsoft never made a dedicated IoT edition of the system for the LTSC 2019 release.)

After obtaining the much needed Windows ISO, and successfully installing and activating this special edition of Windows, I went on looking for drivers. The touchscreen did not work, and there were a number of devices with a warning triangle in Device Manager. Before I even reinstalled Windows, I took precautions and imaged the whole disk to a VHDX file. So before I even visited the manufacturer’s website, I extracted the drivers from the image with DISM, and installed them on the tablet with pnputil. I cleared all the warnings and restored function to touchscreen. But I was too dumb curious for my own good, and went on looking for the manufacturer’s website.

Looking for a newer NIC driver

What I found was that PartnerTech is a Taiwanese company, and a big player in the POS terminal market, with global presence. I found their Australian website first, and on there, they had a Download Center. Unfortunately! As I later found out.

I wanted to see if they had a newer driver for the wireless NIC, because it didn’t reconnect the WiFi sometimes when the tablet woke up from sleep. I found plenty of user complaints about this issue, on the Microsoft Answers website, among other places. (Microsoft Answers is a place where users answer, not Microsoft. They should rename it Microsoft NotAnswers. Hah!)

This issue is reportedly caused by a Broadcom driver. I did visit Broadcom’s website and found their downloads page for drivers, whatever little they had publicly available. But I could not find anything relevant, like a universal driver installer for RF/WiFi devices/chips. I didn’t know the “BCM” model numbers they had a device filter for, but even without that, they didn’t seem to offer many downloads. So I could just scroll through most of it. The impression they made on me was “we don’t do drivers, we only do devices”. So it’s basically up to the OEM to do and provide the drivers. They are that kind of company I suppose (i.e. avoid them when you can). So I was not just being curious, I also had a good reason to find and visit the manufacturer’s website!

Finding a newer BIOS (instead)

I didn’t find a newer NIC driver. I didn’t find any NIC drivers. I think this Broadcom chip, whichever it is, is supported by generic Windows drivers. However, as I was browsing through PartnerTech’s website, I saw that they had a folder for BIOS. I should never have looked in there!

From the “Download Center”, I went to:

  1. “POS Terminal”,
  2. then “PAT-120”,
  3. then “Utility”,
  4. then “PAT-120 BIOS”,
  5. and then “Windows BIOS”.

This is where it gets a bit fuzzy and I would like your comments and thoughts on this. Just, what is this??.. what is it I have downloaded? I’ll get back to that shortly! They have a two option selection here: “Android BIOS”, or “Windows BIOS”. My tablet runs on Windows, so I naturally assumed that “Windows BIOS” is meant for my version of the tablet!

I know I clicked on the “Windows BIOS” folder for PAT-120 on the website, and not the “Android BIOS”. Because I know what I’m doing and what hardware I have. Well… I thought I did, anyway.

There were two files in the “Windows BIOS” folder.

  • One ZIP: TA101611.zip
  • And one DOC: How to Update BIOS from Android platform to Windows platform for PAT-120 Device_20180221.doc

I checked the current BIOS version. It was TA101326.NB6. So it seemed like I would be upgrading from TA101326 to TA101611. What could possibly go wrong, right? I’m not doing a BIOS mod… it’s a routine BIOS update process.

A bit about me

For some added context and as a short introduction: One way or another, I have worked with computers for about 25 years. I have updated or “flashed” the BIOS of many x86 PCs in my life. I have never, ever bricked a BIOS before! This is the first time! But you know the saying? There is a first time for everything. So you can imagine my big surprise when I realized what just happened! I am still puzzled by this! What could possibly have gone wrong? I keep asking myself. Do you remember your first BIOS brick? Please share in the comments.

These are the contents of the downloaded BIOS ZIP file.

TA101611
│   AfuEfix64.efi
│   ifu.efi
│   startup.nsh
│   TA101611.C46
│
└───EFI
    └───BOOT
            BOOTX64.EFI
            BOOTX64A.EFI

You can download it here:
TA101611.zip (4.0 MB)

Preparing to flash the newer BIOS

I downloaded both files, and I made sure to read the DOC first. The process seemed pretty straightforward. Nothing unlike what I have done many times before. I have summarized the main points from the DOC file below.

  1. Make sure the battery is at least at 30% charge.
  2. Use a USB hub to attach a keyboard and a flash drive with the new BIOS.
  3. Extract the ZIP file.
  4. Format the flash drive with FAT32.
  5. Copy the files to flash drive.
  6. Power the tablet on and press DEL to enter Setup.
  7. Disable Secure Boot, save changes and reboot.
  8. Press F11 to access the boot menu.
  9. Select the flash drive and press Enter.
  10. Once done, power off.
  11. Power on and press DEL to enter Setup.
  12. Make sure the new version is installed.
  13. Press F9 to load optimized defaults.
  14. Press F10 to save changes and reboot.
  15. Done.

The steps that are highlighted in bold are the steps that I think are most crucial, and I may have failed one or two of these.

For starters, I had well over 40% battery charge. I already had a USB hub attached for the same purpose of being able to use a physical keyboard, but in Windows. So I only needed to plug in a USB flash drive to it. I used a Kingston DataTraveler Exodia M 64 GB USB 3.2 (USB hub was 2.0 or 1.1 by ST Lab).

I was not able to perform step 7 because such option did not exist in the current/stock BIOS. In other words, these instructions are not well suited for the device model at hand (despite the mention of “PAT-120” in it). I therefore skipped past that step, assuming that Secure Boot was not enabled and did not need to be disabled on this model. (Assumption is the mother of all fuckups. So I heard… recently.)

Flash! A-ah!.. (Uh-oh!)

After step 9, the EFI shell starts, and the script takes care of starting the flashing process. It can be aborted within about 5 seconds. I allowed it to run (regrettably).

The BIOS is Aptio BIOS, made by AMI. It’s UEFI firmware, but I often call it BIOS for old time’s sake. Specifically, it’s compliant with UEFI 2.4; PI 1.3. This is the “AMI Firmware Update Utility” in action. The issued command was: afuefix64.efi TA101611.C46 /P /B /N /X

Reading flash ............... done
- ME Data Size checking . ok
- FFS checksums.......... ok
Erasing Boot Block .......... done
Updating Boot Black ......... done
Verifying Boot Block ........ done
Erasing Main Block .......... done
Uadating Main Block ......... done
Merifying Main Block ........ done
Erasing NVRAM Block ......... done
Updating NVRAM BIock ........ done
Verifying NVRAM Block ....... done

All done and it stopped at the EFI shell prompt. The whole process took no more than 5 minutes. I have it on video actually, but I’m sharing a photo of the last moment it was seen alive.

Bricked (in the wall)

At step 10, after successful erase, update and verify operations on Boot block, Main block and NVRAM block, I failed to power it off. Instead, I rather reflexively gave it the three finger salute : Ctrl + Alt + Del. Is that what bricked it though? It seems unlikely. Either way, it did not boot up again after that. So I was unable to follow through on the rest of the steps and load optimized defaults, which is perhaps what needs to happen to set things in motion again.

The only sign of life now is a power LED on a connected USB hub that comes on when I try to power on. (It doesn’t have a power indicator of its own.) The battery also gets warm. It stays on until I press and hold the power button to power off, and the battery cools off.

This is a 2-in-1 device, with a docking station. But I only use the tablet. I don’t use the docking station, so I had it stored away. Is that a problem perhaps for updating the BIOS? Maybe it’s trying to initialize some of the external components, and when that fails, then so does the rest of the initial procedure like loading optimized defaults? Although, most BIOS systems will fall back on system defaults anyway after a few failed boot attempts. So it seems unlikely to me, but I don’t know… it’s just a thought. At this point, anything is possible.

So these are the BIOS versions:

  • TA101326.NB6 – Last known good BIOS and also stock BIOS that came with the tablet. Unfortunate for me, I don’t have a backup of it. I have requested a copy from the manufacturer. But I’m not sure if that would be the same? I think some things are unique to each BIOS, like the embedded Windows product key. Tell me I’m wrong.

  • TA101611.C46 – This is the bad BIOS that bricked the tablet, after downloading it from PartnerTech Download Center for Australia.

I may be able to roll it back to what it was before, and be happy. But I am totally green when it comes to BIOS recovery and not to mention BIOS modding. Is there no recovery or flashback option for Aptio BIOS? Does anyone here know? I read on some forum for a Chinese brand of tablets/laptops that you can hold down the F7 key with the USB stick in and the right BIOS, and it will boot and recover from that. I don’t know what BIOS they use though. Is something like that possible maybe?

God I hope I don’t need to bring out my floppy drive. There are no new floppy disks being produced, and the new old stocks that are currently sold at extortionate prices are as good as dead. (I read some stories from the past where people had to use floppy drives to recover their BIOS.)

Analyzing the DOC file

It’s only after I bricked it, and after reviewing the DOC file again that I began to question the accuracy of it and the meaning of this title: “How to Update BIOS from Android platform to Windows platform for PAT-120 Device”. What on Earth does that mean? I thought at first this was yet another example of a quickly slapped together “guide” for tech products coming out of China or Taiwan, in a broken English. So I didn’t pay close attention when I first read it.

Does it mean what I think it means?.. the purpose of this BIOS file is to prepare a tablet for conversion “from Android platform to Windows platform” and vice versa? Is that a thing? Is that something companies do? The differences in hardware specifications between the two tablet versions are quite significant. This is what I need your thoughts on.

It would make sense with respect to this naming convention. Please tell me I’m hallucinating!

Please use corresponding PAT-120 BIOS file for BIOS update purpose.
TAxxxxxx.C4A: For PAT-120 Android platform
TAxxxxxx.C46: For PAT-120 Windows 64bit platform

The more I read the DOC file, the more convinced I became that the intended purpose of this BIOS update was not at all what you would expect for a BIOS file.

You can download it here:
How to update BIOS on PAT-120.zip (2.0 MB)

I may be mistaken, but these instructions seem to be written for people higher up the chain at PartnerTech, like maintainers, developers or packagers. Why should I as an end-user or technician ever need to rename these files? They are supposed to be ready-made by the people who produce them and make them available.

The only reason to use a specific file name that I can think of, is as a safety measure, to have the startup script only run when presented with a specific file name and avoid flashing the wrong BIOS. (Like a missile launch switch.)

Here is another clue…

The BIOS version might different from the latest version; please contact FAE Engineer to obtain the latest BIOS version.

How do I as an end-user and customer, contact a “FAE Engineer”?

There is also this…

Due to the BIOS has been change from Android platform to Windows platform for the PAT-120 device,
if the PAT-120 device with Android OS inside the eMMC before, the user might observe below
“OEM1 ACPI table parse error” screen when loading Android system.
(This is normal symptom due to BIOS platform changed)

How on Earth do you change BIOS "from Android platform to Windows platform?.. what does that even mean?

As I’m trying to sort out this BIOS-bricked PartnerTech tablet, I would very much appreciate it if you could straighten out some of these question marks for me.

Lessons learned (this far…)

  • If it’s not broken, don’t fix it!
  • Always backup the current/original/stock BIOS before flashing!
  • Don’t trust the OEM to provide the correct BIOS for your model.
  • Don’t count on the OEM to provide a BIOS on request.
  • Avoid Broadcom chips in products.
  • Avoid PartnerTech products.
  • Stop being so curious!

Seems this is kinda diary post to collect your history and get you thoughts sorted while writing- and that’s just fine.

(In case you expect an answer I assume you’ll have to formulate a lot shorter)

1 Like

Hello! @lfb6
Yes, that’s very observant of you. We can call it a web log, or a case report. Writing helps me think, and I do have a lot of thoughts and questions about this. I am still processing what happened and slowly formulating a plan for a solution. I’m curious though, and if I may ask, how far did you read?

I am not a big fan of one sentence threads or posts, so I didn’t want to spray the forum with many mini questions. I’m a bit more ambitious than that, and not a lazy person. So I decided to compile all my thoughts and questions related to this issue in this one mega post. (Well… I do have even more thoughts and questions at the back of my head, so I could have made it even longer.)

I will try to find the answers on my own. No need for spoon feeding here. But I won’t mind if someone comes along and tries to help me straighten out some of these question marks. I have compiled a TLDR friendly summary with only questions below.

Questions

  1. Is TA101611.C46 a valid BIOS for this PAT-120 Windows tablet?

  2. Just out of curiosity, have you ever bricked a BIOS simply by installing an official update, and just how exactly did you manage to do that?

  3. Would a user failure to power off the device after successful erase, update and verify operations on Boot block, Main block and NVRAM block really result in a bricked device?

  4. Is it really necessary to load optimized defaults after a normal BIOS update procedure, and would a failure to do so result in a bricked device?

  5. Is it really necessary to connect a 2-in-1 device to its docking station for it to successfully flash the BIOS, initialize internal and peripheral components, and load optimized defaults?

  6. Are things like the Windows product key, the MAC address and device serial number stored in the BIOS, and how do you preserve these when updating or reprogramming the BIOS with the manufacturer supplied BIOS image?

  7. Is there no recovery or flashback method for AMI Aptio BIOS, such as holding down the F7 key while powering on, with a USB stick (with a valid BIOS file) in the USB port?

  8. What kind of BIOS update scenario is described in the DOC file, if the authors mention things like,

    • “Update BIOS from Android platform to Windows platform”, and
    • “Due to the BIOS has been change from Android platform to Windows platform for the PAT-120 device”, and
    • “if the PAT-120 device with Android OS inside the eMMC before, the user might observe “OEM1 ACPI table parse error” screen when loading Android system”, and
    • “due to BIOS platform changed”?
  9. Is the TA101611.C46 BIOS update in fact intended to be used for converting an Android tablet to a Windows tablet or the other way around, and is this something companies do?

  10. When or why should I as an end-user or technician ever need to rename the supplied BIOS files, per description in the DOC file and in reference to .C46 and .C4A file name extensions?

You can’t completely exclude that this might be a proper bios, but the file extension is quite different and the screenshot of the original bios main page shows a much newer age than the file in the zip (2021 vs. 2018). In addition you’re refering to the terminal as PAT-120 X2- not finding this X2 anywhere else, but it might point into direction of a newer design?

If you’re interested in recovery you need to dump the exisiting content of the firmware chip (hardware programmer) and have a look into it. Maybe this will give you a clue what happened.

Either there’s really a difference to the written image so that one can conclude with ‘bad flash’ or there may be other differences that can make it plausible that this wasn’t a proper firmware downgrade for this machine.

You’re right to call that into question. The file name extension is NB6 for the original BIOS, as opposed to C46 for the supposedly newer BIOS version.

  • TA101326.NB6
  • TA101611.C46

Just by looking at the numbers, you can see how one would draw the conclusion that TA101611 is newer than TA101326.

In fact, I heard back from a guy that works at their technical support, and I was reassured that TA101611 is “the latest” version for PAT-120. But I don’t feel confident about anything he says.

For one, I kept asking him for “TA101326.NB6” and he kept sending me different versions, including “TA101611.C46”. I even put the name in quotation marks! That didn’t help him understand what I want. After a few e-mail exchanges, I finally persuaded him to send me “TA101326.NB6”. So I have it now.

This is what he sent me, in this order:

  1. TA101611.zip
  2. Windows BIOS_0131C46 by WIN.zip (This contains TA101131.C46)
  3. TA101326.zip

At first, he sent me the same download link for the first two. Both were links for TA101611, so he sent me a new link for the second one. Both of which were not what I had asked for!!

Now… imagine if you were a customer with a completely functional device, and you requested a BIOS update, and he sent you a file for a completely different device… you would have a bricked device like I do right now. You can see why I don’t have a lot confidence in him? (Or in PartnerTech for that matter.) I managed to get him to send me the stock/original BIOS that I needed/wanted, and I am grateful for that. (I suspect part of the reason why he didn’t sent me that the first time, is because the ZIP archive only contains a single file, the BIOS image itself, no scripts and no utilities to make it useful for the common user.)

They used to have an FTP server where you could just go in and download whatever files you needed. But this was more than 10 years ago. Now you have to beg them for a simple BIOS file. I wish they would publish all their BIOS versions publicly, so I can serve myself. Wishful thinking.

I later found that their EU/Europe website has a link to a NextCloud share that hosts over 200 GB worth of files, including 85 GB for POS terminals, and including the PAT-120. But guess what? They don’t host BIOS files of any version, at all. The download links that he sent me were for a NextCloud instance too (the same one I think). So they have the BIOS files on there, but they are hidden. They have to generate and share a link for external access.

Assuming that these TA numbers are serialized and if file name extensions have no significance, we’re looking at following versions in chronological order.

Image file Last modified
TA101131.C46 January ‎31, ‎2018
TA101326.NB6 ‎ March ‎26, ‎2021
TA101611.C46 ‎ June ‎11, ‎2018

The last modified date for the second one matches the build date of the original BIOS, as seen on the setup screen.

Thank you for pointing this out. Although, I’m not sure what significance, if any, these file name extensions have. When or why do manufacturers use different file name extensions? Is it to avoid flashing the wrong device?

That’s a good point. I think X2 is just a different name for PAT-120. The heading for the product page is “X2” on their Australian website, but the item number they use is PAT-120 (it’s in the URL also).

Specifications can be seen here:
https://www.partner-tech.com.au/portfolio-items/pat-120/

The datasheet link is now a 404, since it was pointing to wp-content on their partner.com.tw website, and they have migrated to partnertechcorp.com. But I grabbed a copy from Internet Archive. I had to repair it though. Have a look here.

PAT-120-Tablet-W-190530_repaired.zip (1.0 MB)

Even in this datasheet, it’s referred to as PAT-120. I think they use these “X” names for their portable or detachable POS terminals. For example, they have one “X3w” (Windows) and one “X3a” (Android). But it’s all the same “EM-300” item number.

https://www.partner-tech.com.au/portfolio-items/x3w/

https://www.partner-tech.com.au/portfolio-items/x3a/

They don’t show the “X2” as X2w and X2a on the product page or in the datasheet, but you can see by this other example that it follows the same nomenclature. I think I saw it in another datasheet, on another regional website.

What I wonder about is if they ever revised the PAT-120, perhaps introducing an Android version of it later on. And also, if it’s really possible or even necessary to convert the BIOS to switch platforms. If I have a regular consumer tablet from HP let’s say, and it runs on Android, would I have to convert the BIOS on it to enable installation of Windows? It’s a quiet interesting question in itself, I think.

I plan on doing this next. Now that I have the right BIOS file. (Presumably the same version as I had before.) I have ordered a CH341A with a SOIC8 test clip and a 1.8V adapter. I’m hoping I don’t have to desolder the chip.

So after I dump the contents of the chip with a programmer, I will be doing a hex file comparison against the original BIOS file I received? What are the expectations? If they match 100% then there will be no byte of difference? Otherwise, I look at the differences and try to do some deep dive into what those are and so on?

Pleast attach TA101326.NB6 and TA101131.C46

TA101326

TA101326.zip (3.3 MB)

TA101131

Windows BIOS_0131C46 by WIN.zip (3.2 MB)

Datasheet with “X2 (PAT-120)” designation.

163093351-ca48c2-X2__PAT-120__DS_ENG.zip (475.1 KB)

Datasheet downloaded from https://cdn.abicart.com/shop/ws43/43843/art51/163093351-ca48c2-X2__PAT-120__DS_ENG.pdf and published by PartnerTech Europe.

I compared the TA101611.zip that I received from the support guy with the TA101611.zip I had downloaded from PartnerTech Australia website. There is only one difference in the startup.nsh script. The BIOS image files are identical.

startup.nsh in TA101611.zip received from support:

fs1:
afuefix64.efi TA101611.C46 /P /B /N /X
fs3:
afuefix64.efi TA101611.C46 /P /B /N /X

startup.nsh in TA101611.zip downloaded from the web:

fs3:
afuefix64.efi TA101611.C46 /P /B /N /X

I am totally green on this, so excuse my incompetence, but why would you need both a an “fs1” and a “fs3” if the command lines are identical? All I know just by looking at this, is that “fs” stands for file system and that /B flags to erase the boot block. Is the former creating two filesystems perhaps, and is that necessary for when you want to erase the Boot block? Which one is right and which one is wrong or just bad practice? And if you have made sure to have one “fs1” and one “fs3”, then where is your fs2?..

fs1: / fs3:
Might be a different EFI shell which maps the drives/ filesystems differently.

If you compare the results of UEFIExtract for TA101326.NB6 and TA101611.C46 the structure is identical, some modules have another checksum. ME region and FD are identical, NVRAM standard settings, too, µcodes as well.

So there’s no strong indication for an incompatible firmware. The third firmware seems to be older(?), some modules missing. According to date the original firmware was latest.

So it’s he dump of the actual content which possibly will give the answer.

(Regarding the machine specific data there are several ways to store them, since the firmwares used up to now have similar structure there’s hope that the areas with machine specific information aren’t overwritten.)

I’m not sure I understand this. Can you elaborate on that a little bit? Are you saying that the “EFI shell” is something inherent to the BIOS image that can change from one version to the next?

I don’t know where to find all the things you mention. I have never worked with this before. But I downloaded UEFIExtract_NE_A68_win64 from GitHub.

I then extracted the two files using the simplest command possible (no options), and got a result that looks like this (TA101326.NB6.dump on the left and TA101611.C46.dump on the right).

I can see that ME is identical, and that BIOS is not. Where are the modules you mentioned and their checksums? Are those represented by differing folders? Where is FD, NVRAM and microcode (µcode)?

Yes, according to last modified date (ZIP preserves timestamps), the original BIOS (or firmware) was the latest. (Unless of course who ever built that had the wrong calendar settings in the system, or has harnessed time travel.)

Image file Last modified
TA101131.C46 January ‎31, ‎2018
TA101326.NB6 March ‎26, ‎2021
TA101611.C46 June ‎11, ‎2018

So I’m guessing that’s what screwed it up. Although… flashing an older BIOS over a newer one should not cause a corruption, right?

Right. I see what you mean. You mean content from the chip itself. I will look into that.

Could it be that the chip itself is bad? Perhaps from old age or something like that? I don’t think it’s that old though. I believe this device model is from 2019, maybe 2018 if these BIOS modification dates are anything to go by. I believe I saw the year 2019 in one of the datasheets. My particular example is from around 2021, maybe 2022. So that would make it about 3 to 4 years old, and it matches well with the BIOS date for TA101326.NB6. They must be very bad if they die so soon.

Just out of curiosity, and as a reality check… have you ever seen a BIOS chip that won’t take a flash because it’s old and sick?

Is this what padding is used for? To skip past memory addresses where such info may be stored? And if it is erased, then this is where SLIC comes into play? Can we add custom SLIC later on to rectify this problem? I’ve only heard of SLIC as a way to activate Windows 7.